├── .gitignore ├── pdf ├── chinese.pdf ├── example.pdf └── password.pdf ├── src ├── images │ ├── grab.cur │ ├── shadow.png │ ├── grabbing.cur │ ├── texture.png │ ├── loading-icon.gif │ ├── loading-small.png │ ├── loading-small@2x.png │ ├── findbarButton-next.png │ ├── treeitem-collapsed.png │ ├── treeitem-expanded.png │ ├── findbarButton-next@2x.png │ ├── toolbarButton-pageUp.png │ ├── toolbarButton-print.png │ ├── toolbarButton-search.png │ ├── toolbarButton-zoomIn.png │ ├── toolbarButton-zoomOut.png │ ├── treeitem-collapsed@2x.png │ ├── treeitem-expanded@2x.png │ ├── findbarButton-next-rtl.png │ ├── findbarButton-previous.png │ ├── toolbarButton-bookmark.png │ ├── toolbarButton-download.png │ ├── toolbarButton-openFile.png │ ├── toolbarButton-pageDown.png │ ├── toolbarButton-pageUp@2x.png │ ├── toolbarButton-print@2x.png │ ├── toolbarButton-search@2x.png │ ├── toolbarButton-zoomIn@2x.png │ ├── treeitem-collapsed-rtl.png │ ├── findbarButton-next-rtl@2x.png │ ├── findbarButton-previous-rtl.png │ ├── findbarButton-previous@2x.png │ ├── toolbarButton-bookmark@2x.png │ ├── toolbarButton-download@2x.png │ ├── toolbarButton-menuArrows.png │ ├── toolbarButton-openFile@2x.png │ ├── toolbarButton-pageDown-rtl.png │ ├── toolbarButton-pageDown@2x.png │ ├── toolbarButton-pageUp-rtl.png │ ├── toolbarButton-viewOutline.png │ ├── toolbarButton-zoomOut@2x.png │ ├── treeitem-collapsed-rtl@2x.png │ ├── toolbarButton-menuArrows@2x.png │ ├── toolbarButton-pageUp-rtl@2x.png │ ├── toolbarButton-sidebarToggle.png │ ├── toolbarButton-viewOutline@2x.png │ ├── toolbarButton-viewThumbnail.png │ ├── findbarButton-previous-rtl@2x.png │ ├── secondaryToolbarButton-handTool.png │ ├── secondaryToolbarButton-lastPage.png │ ├── secondaryToolbarButton-rotateCw.png │ ├── toolbarButton-pageDown-rtl@2x.png │ ├── toolbarButton-presentationMode.png │ ├── toolbarButton-sidebarToggle-rtl.png │ ├── toolbarButton-sidebarToggle@2x.png │ ├── toolbarButton-viewAttachments.png │ ├── toolbarButton-viewOutline-rtl.png │ ├── toolbarButton-viewThumbnail@2x.png │ ├── secondaryToolbarButton-firstPage.png │ ├── secondaryToolbarButton-rotateCcw.png │ ├── toolbarButton-presentationMode@2x.png │ ├── toolbarButton-viewAttachments@2x.png │ ├── toolbarButton-viewOutline-rtl@2x.png │ ├── secondaryToolbarButton-firstPage@2x.png │ ├── secondaryToolbarButton-handTool@2x.png │ ├── secondaryToolbarButton-lastPage@2x.png │ ├── secondaryToolbarButton-rotateCcw@2x.png │ ├── secondaryToolbarButton-rotateCw@2x.png │ ├── toolbarButton-secondaryToolbarToggle.png │ ├── toolbarButton-sidebarToggle-rtl@2x.png │ ├── secondaryToolbarButton-documentProperties.png │ ├── toolbarButton-secondaryToolbarToggle-rtl.png │ ├── toolbarButton-secondaryToolbarToggle@2x.png │ ├── toolbarButton-secondaryToolbarToggle-rtl@2x.png │ ├── secondaryToolbarButton-documentProperties@2x.png │ ├── annotation-noicon.svg │ ├── annotation-insert.svg │ ├── annotation-check.svg │ ├── annotation-newparagraph.svg │ ├── annotation-comment.svg │ ├── annotation-paragraph.svg │ ├── annotation-note.svg │ ├── annotation-key.svg │ └── annotation-help.svg ├── index.js ├── locale │ ├── locale.properties │ ├── ja │ │ └── viewer.properties │ ├── zh-CN │ │ └── viewer.properties │ ├── zh-TW │ │ └── viewer.properties │ ├── ko │ │ └── viewer.properties │ ├── en-GB │ │ └── viewer.properties │ └── en-US │ │ └── viewer.properties ├── pdfviewer.js ├── index.html └── viewer.css ├── test ├── index.html └── index.js ├── config ├── webpack.prod.js ├── webpack.dev.js ├── webpack.test.js └── webpack.common.js ├── LICENSE ├── package.json └── README.md /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | dist 3 | -------------------------------------------------------------------------------- /pdf/chinese.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/pdf/chinese.pdf -------------------------------------------------------------------------------- /pdf/example.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/pdf/example.pdf -------------------------------------------------------------------------------- /pdf/password.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/pdf/password.pdf -------------------------------------------------------------------------------- /src/images/grab.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/grab.cur -------------------------------------------------------------------------------- /src/images/shadow.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/shadow.png -------------------------------------------------------------------------------- /src/images/grabbing.cur: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/grabbing.cur -------------------------------------------------------------------------------- /src/images/texture.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/texture.png -------------------------------------------------------------------------------- /src/images/loading-icon.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/loading-icon.gif -------------------------------------------------------------------------------- /src/images/loading-small.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/loading-small.png -------------------------------------------------------------------------------- /src/images/loading-small@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/loading-small@2x.png -------------------------------------------------------------------------------- /src/images/findbarButton-next.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/findbarButton-next.png -------------------------------------------------------------------------------- /src/images/treeitem-collapsed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/treeitem-collapsed.png -------------------------------------------------------------------------------- /src/images/treeitem-expanded.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/treeitem-expanded.png -------------------------------------------------------------------------------- /src/images/findbarButton-next@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/findbarButton-next@2x.png -------------------------------------------------------------------------------- /src/images/toolbarButton-pageUp.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-pageUp.png -------------------------------------------------------------------------------- /src/images/toolbarButton-print.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-print.png -------------------------------------------------------------------------------- /src/images/toolbarButton-search.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-search.png -------------------------------------------------------------------------------- /src/images/toolbarButton-zoomIn.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-zoomIn.png -------------------------------------------------------------------------------- /src/images/toolbarButton-zoomOut.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-zoomOut.png -------------------------------------------------------------------------------- /src/images/treeitem-collapsed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/treeitem-collapsed@2x.png -------------------------------------------------------------------------------- /src/images/treeitem-expanded@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/treeitem-expanded@2x.png -------------------------------------------------------------------------------- /src/images/findbarButton-next-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/findbarButton-next-rtl.png -------------------------------------------------------------------------------- /src/images/findbarButton-previous.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/findbarButton-previous.png -------------------------------------------------------------------------------- /src/images/toolbarButton-bookmark.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-bookmark.png -------------------------------------------------------------------------------- /src/images/toolbarButton-download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-download.png -------------------------------------------------------------------------------- /src/images/toolbarButton-openFile.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-openFile.png -------------------------------------------------------------------------------- /src/images/toolbarButton-pageDown.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-pageDown.png -------------------------------------------------------------------------------- /src/images/toolbarButton-pageUp@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-pageUp@2x.png -------------------------------------------------------------------------------- /src/images/toolbarButton-print@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-print@2x.png -------------------------------------------------------------------------------- /src/images/toolbarButton-search@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-search@2x.png -------------------------------------------------------------------------------- /src/images/toolbarButton-zoomIn@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-zoomIn@2x.png -------------------------------------------------------------------------------- /src/images/treeitem-collapsed-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/treeitem-collapsed-rtl.png -------------------------------------------------------------------------------- /src/images/findbarButton-next-rtl@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/findbarButton-next-rtl@2x.png -------------------------------------------------------------------------------- /src/images/findbarButton-previous-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/findbarButton-previous-rtl.png -------------------------------------------------------------------------------- /src/images/findbarButton-previous@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/findbarButton-previous@2x.png -------------------------------------------------------------------------------- /src/images/toolbarButton-bookmark@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-bookmark@2x.png -------------------------------------------------------------------------------- /src/images/toolbarButton-download@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-download@2x.png -------------------------------------------------------------------------------- /src/images/toolbarButton-menuArrows.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-menuArrows.png -------------------------------------------------------------------------------- /src/images/toolbarButton-openFile@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-openFile@2x.png -------------------------------------------------------------------------------- /src/images/toolbarButton-pageDown-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-pageDown-rtl.png -------------------------------------------------------------------------------- /src/images/toolbarButton-pageDown@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-pageDown@2x.png -------------------------------------------------------------------------------- /src/images/toolbarButton-pageUp-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-pageUp-rtl.png -------------------------------------------------------------------------------- /src/images/toolbarButton-viewOutline.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-viewOutline.png -------------------------------------------------------------------------------- /src/images/toolbarButton-zoomOut@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-zoomOut@2x.png -------------------------------------------------------------------------------- /src/images/treeitem-collapsed-rtl@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/treeitem-collapsed-rtl@2x.png -------------------------------------------------------------------------------- /src/images/toolbarButton-menuArrows@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-menuArrows@2x.png -------------------------------------------------------------------------------- /src/images/toolbarButton-pageUp-rtl@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-pageUp-rtl@2x.png -------------------------------------------------------------------------------- /src/images/toolbarButton-sidebarToggle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-sidebarToggle.png -------------------------------------------------------------------------------- /src/images/toolbarButton-viewOutline@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-viewOutline@2x.png -------------------------------------------------------------------------------- /src/images/toolbarButton-viewThumbnail.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-viewThumbnail.png -------------------------------------------------------------------------------- /src/images/findbarButton-previous-rtl@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/findbarButton-previous-rtl@2x.png -------------------------------------------------------------------------------- /src/images/secondaryToolbarButton-handTool.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/secondaryToolbarButton-handTool.png -------------------------------------------------------------------------------- /src/images/secondaryToolbarButton-lastPage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/secondaryToolbarButton-lastPage.png -------------------------------------------------------------------------------- /src/images/secondaryToolbarButton-rotateCw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/secondaryToolbarButton-rotateCw.png -------------------------------------------------------------------------------- /src/images/toolbarButton-pageDown-rtl@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-pageDown-rtl@2x.png -------------------------------------------------------------------------------- /src/images/toolbarButton-presentationMode.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-presentationMode.png -------------------------------------------------------------------------------- /src/images/toolbarButton-sidebarToggle-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-sidebarToggle-rtl.png -------------------------------------------------------------------------------- /src/images/toolbarButton-sidebarToggle@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-sidebarToggle@2x.png -------------------------------------------------------------------------------- /src/images/toolbarButton-viewAttachments.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-viewAttachments.png -------------------------------------------------------------------------------- /src/images/toolbarButton-viewOutline-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-viewOutline-rtl.png -------------------------------------------------------------------------------- /src/images/toolbarButton-viewThumbnail@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-viewThumbnail@2x.png -------------------------------------------------------------------------------- /src/images/secondaryToolbarButton-firstPage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/secondaryToolbarButton-firstPage.png -------------------------------------------------------------------------------- /src/images/secondaryToolbarButton-rotateCcw.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/secondaryToolbarButton-rotateCcw.png -------------------------------------------------------------------------------- /src/images/toolbarButton-presentationMode@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-presentationMode@2x.png -------------------------------------------------------------------------------- /src/images/toolbarButton-viewAttachments@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-viewAttachments@2x.png -------------------------------------------------------------------------------- /src/images/toolbarButton-viewOutline-rtl@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-viewOutline-rtl@2x.png -------------------------------------------------------------------------------- /src/images/secondaryToolbarButton-firstPage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/secondaryToolbarButton-firstPage@2x.png -------------------------------------------------------------------------------- /src/images/secondaryToolbarButton-handTool@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/secondaryToolbarButton-handTool@2x.png -------------------------------------------------------------------------------- /src/images/secondaryToolbarButton-lastPage@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/secondaryToolbarButton-lastPage@2x.png -------------------------------------------------------------------------------- /src/images/secondaryToolbarButton-rotateCcw@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/secondaryToolbarButton-rotateCcw@2x.png -------------------------------------------------------------------------------- /src/images/secondaryToolbarButton-rotateCw@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/secondaryToolbarButton-rotateCw@2x.png -------------------------------------------------------------------------------- /src/images/toolbarButton-secondaryToolbarToggle.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-secondaryToolbarToggle.png -------------------------------------------------------------------------------- /src/images/toolbarButton-sidebarToggle-rtl@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-sidebarToggle-rtl@2x.png -------------------------------------------------------------------------------- /src/images/secondaryToolbarButton-documentProperties.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/secondaryToolbarButton-documentProperties.png -------------------------------------------------------------------------------- /src/images/toolbarButton-secondaryToolbarToggle-rtl.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-secondaryToolbarToggle-rtl.png -------------------------------------------------------------------------------- /src/images/toolbarButton-secondaryToolbarToggle@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-secondaryToolbarToggle@2x.png -------------------------------------------------------------------------------- /src/images/toolbarButton-secondaryToolbarToggle-rtl@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/toolbarButton-secondaryToolbarToggle-rtl@2x.png -------------------------------------------------------------------------------- /src/images/secondaryToolbarButton-documentProperties@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/teambition/pdfviewer/HEAD/src/images/secondaryToolbarButton-documentProperties@2x.png -------------------------------------------------------------------------------- /src/images/annotation-noicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 7 | 8 | -------------------------------------------------------------------------------- /src/index.js: -------------------------------------------------------------------------------- 1 | require('./viewer.css') 2 | 3 | var pdfjsLib = require('pdfjs-dist') 4 | window.pdfjsDistBuildPdf = pdfjsLib 5 | window.pdfjsDistBuildPdf.PDFJS.workerSrc = './index.worker.js' 6 | window.pdfjsDistBuildPdf.PDFJS.cMapUrl = './cmaps/' 7 | 8 | require('pdfjs-dist/web/compatibility') 9 | require('webl10n') 10 | require('./viewer') 11 | -------------------------------------------------------------------------------- /src/locale/locale.properties: -------------------------------------------------------------------------------- 1 | [en-GB] 2 | @import url(en-GB/viewer.properties) 3 | 4 | [en-US] 5 | @import url(en-US/viewer.properties) 6 | 7 | [ja] 8 | @import url(ja/viewer.properties) 9 | 10 | [ko] 11 | @import url(ko/viewer.properties) 12 | 13 | [zh-CN] 14 | @import url(zh-CN/viewer.properties) 15 | 16 | [zh-TW] 17 | @import url(zh-TW/viewer.properties) 18 | -------------------------------------------------------------------------------- /test/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 |
6 |
7 |
8 |
9 | 10 | 11 | -------------------------------------------------------------------------------- /src/images/annotation-insert.svg: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 11 | -------------------------------------------------------------------------------- /src/images/annotation-check.svg: -------------------------------------------------------------------------------- 1 | 2 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /src/images/annotation-newparagraph.svg: -------------------------------------------------------------------------------- 1 | 2 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /test/index.js: -------------------------------------------------------------------------------- 1 | var PdfViewer = require('../src/pdfviewer.js') 2 | 3 | var staticHost = 'http://localhost:9000' 4 | 5 | // normal case 6 | var config1 = { 7 | pdfUrl: '/example.pdf', 8 | download: false, 9 | staticHost: staticHost, 10 | } 11 | new PdfViewer(config1).embed(document.getElementById('container1')) 12 | 13 | // password: 123456 14 | var config2 = { 15 | pdfUrl: '/password.pdf', 16 | staticHost: staticHost, 17 | download: true, 18 | } 19 | 20 | new PdfViewer(config2).embed(document.getElementById('container2')) 21 | 22 | // chinese 23 | var config3 = { 24 | pdfUrl: '/chinese.pdf', 25 | staticHost: staticHost, 26 | } 27 | 28 | new PdfViewer(config3).embed(document.getElementById('container3')) 29 | 30 | // no file 31 | var config4 = { 32 | pdfUrl: '/nofile.pdf', 33 | staticHost: staticHost, 34 | onerror: console.error.bind(console) 35 | } 36 | 37 | new PdfViewer(config4).embed(document.getElementById('container4')) 38 | -------------------------------------------------------------------------------- /src/images/annotation-comment.svg: -------------------------------------------------------------------------------- 1 | 2 | 7 | 13 | 16 | 17 | -------------------------------------------------------------------------------- /config/webpack.prod.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const webpack = require('webpack') 4 | const merge = require('webpack-merge') 5 | const path = require ('path') 6 | const CleanWebpackPlugin = require('clean-webpack-plugin'); 7 | const ExtractTextPlugin = require('extract-text-webpack-plugin') 8 | const HtmlWebpackPlugin = require('html-webpack-plugin') 9 | 10 | const commonConfig = require('./webpack.common.js') 11 | 12 | module.exports = merge(commonConfig, { 13 | plugins: [ 14 | new HtmlWebpackPlugin({ 15 | template: 'src/index.html', 16 | inject: 'head', 17 | minify: {} 18 | }), 19 | 20 | new webpack.DefinePlugin({ 21 | __PROD__: true 22 | }), 23 | 24 | new CleanWebpackPlugin(['dist'], { 25 | root: path.resolve(__dirname, '../'), 26 | verbose: true, 27 | dry: false 28 | }), 29 | 30 | new webpack.optimize.UglifyJsPlugin({ 31 | compress: {warnings: false, sequences: false}, 32 | sourceMap: false 33 | }), 34 | 35 | new webpack.optimize.DedupePlugin() 36 | ] 37 | 38 | }) 39 | -------------------------------------------------------------------------------- /config/webpack.dev.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const webpack = require('webpack') 4 | const merge = require('webpack-merge') 5 | const CopyWebpackPlugin = require('copy-webpack-plugin') 6 | const HtmlWebpackPlugin = require('html-webpack-plugin') 7 | 8 | const commonConfig = require('./webpack.common.js') 9 | 10 | module.exports = merge(commonConfig, { 11 | delay: 50, 12 | 13 | debug: true, 14 | 15 | devtool: 'eval', 16 | 17 | devServer: { 18 | stats: 'errors-only' 19 | }, 20 | 21 | entry: { 22 | 'index': [ 23 | './src/index.js', 24 | 'webpack/hot/dev-server', 25 | 'webpack-dev-server/client?http://localhost:9000/' 26 | ] 27 | }, 28 | 29 | output: { 30 | pathinfo: true 31 | }, 32 | 33 | plugins: [ 34 | new HtmlWebpackPlugin({ 35 | template: 'src/index.html', 36 | inject: 'head' 37 | }), 38 | 39 | new webpack.DefinePlugin({ 40 | __PROD__: false 41 | }), 42 | 43 | new CopyWebpackPlugin([{ 44 | from: 'pdf' 45 | }]), 46 | 47 | new webpack.HotModuleReplacementPlugin() 48 | ] 49 | 50 | }) 51 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2015 teambition 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /config/webpack.test.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const webpack = require('webpack') 4 | const path = require('path') 5 | const CopyWebpackPlugin = require('copy-webpack-plugin') 6 | const ExtractTextPlugin = require('extract-text-webpack-plugin') 7 | const HtmlWebpackPlugin = require('html-webpack-plugin') 8 | 9 | module.exports = { 10 | 11 | errorDetails: true, 12 | 13 | delay: 50, 14 | 15 | debug: true, 16 | 17 | devtool: 'eval', 18 | 19 | devServer: { 20 | stats: 'errors-only' 21 | }, 22 | 23 | entry: { 24 | 'index': [ 25 | './test/index.js', 26 | 'webpack/hot/dev-server', 27 | 'webpack-dev-server/client?http://localhost:9001/' 28 | ] 29 | }, 30 | 31 | output: { 32 | filename: '[name].js', 33 | pathinfo: true 34 | }, 35 | 36 | resolve: { 37 | extensions: ['', '.js'], 38 | root: [ 39 | path.resolve('./test') 40 | ], 41 | moduleDirectories: ['node_modules'] 42 | }, 43 | 44 | plugins: [ 45 | new HtmlWebpackPlugin({ 46 | template: 'test/index.html', 47 | inject: 'body' 48 | }), 49 | 50 | new webpack.HotModuleReplacementPlugin(), 51 | 52 | new webpack.NoErrorsPlugin() 53 | ] 54 | } 55 | -------------------------------------------------------------------------------- /src/images/annotation-paragraph.svg: -------------------------------------------------------------------------------- 1 | 2 | 7 | 13 | 16 | 17 | -------------------------------------------------------------------------------- /src/images/annotation-note.svg: -------------------------------------------------------------------------------- 1 | 2 | 7 | 14 | 21 | 28 | 35 | 42 | 43 | -------------------------------------------------------------------------------- /config/webpack.common.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | const webpack = require('webpack') 4 | const path = require('path') 5 | const CopyWebpackPlugin = require('copy-webpack-plugin') 6 | const ExtractTextPlugin = require('extract-text-webpack-plugin') 7 | 8 | module.exports = { 9 | 10 | errorDetails: true, 11 | 12 | entry: { 13 | 'index': './src/index.js', 14 | 'index.worker': 'pdfjs-dist/build/pdf.worker.entry.js' 15 | }, 16 | 17 | output: { 18 | filename: '[name].js', 19 | path: path.resolve('./dist'), 20 | }, 21 | 22 | resolve: { 23 | extensions: ['', '.js'], 24 | root: [ 25 | path.resolve('./src') 26 | ], 27 | moduleDirectories: ['node_modules'] 28 | }, 29 | 30 | module: { 31 | loaders: [ 32 | { 33 | test: /\.css$/, 34 | loader: ExtractTextPlugin.extract('css') 35 | }, 36 | { 37 | test: /\.(png|gif|cur)/, 38 | loader: 'url' 39 | } 40 | ] 41 | }, 42 | 43 | plugins: [ 44 | new ExtractTextPlugin('[name].css'), 45 | 46 | new CopyWebpackPlugin([{ 47 | from: 'src/locale', 48 | to: 'locale' 49 | }]), 50 | 51 | new CopyWebpackPlugin([{ 52 | from: 'src/images', 53 | to: 'images' 54 | }]), 55 | 56 | new CopyWebpackPlugin([{ 57 | from: 'node_modules/pdfjs-dist/cmaps', 58 | to: 'cmaps' 59 | }]), 60 | 61 | new webpack.NoErrorsPlugin() 62 | ] 63 | } 64 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "pdfviewer", 3 | "version": "1.1.0", 4 | "description": "PDF Viewer using Mozila PDF JS.", 5 | "main": "src/pdfviewer.js", 6 | "repository": { 7 | "type": "git", 8 | "url": "git@github.com:teambition/pdfviewer.git" 9 | }, 10 | "homepage": "https://github.com/teambition/pdfviewer", 11 | "scripts": { 12 | "build": "webpack --progress --config ./config/webpack.prod.js", 13 | "dev-server": "webpack-dev-server --hot --progress --port 9000 --config ./config/webpack.dev.js", 14 | "test-server": "webpack-dev-server --hot --progress --port 9001 --config ./config/webpack.test.js", 15 | "start": "run-p dev-server test-server", 16 | "prepublish": "npm run build" 17 | }, 18 | "keywords": [ 19 | "pdf" 20 | ], 21 | "author": "Boshen ", 22 | "license": "MIT", 23 | "devDependencies": { 24 | "clean-webpack-plugin": "^0.1.9", 25 | "copy-webpack-plugin": "^3.0.0", 26 | "css-loader": "^0.23.1", 27 | "extract-text-webpack-plugin": "^1.0.1", 28 | "file-loader": "^0.8.5", 29 | "html-webpack-plugin": "^2.17.0", 30 | "npm-run-all": "^2.1.1", 31 | "pdfjs-dist": "^1.9.646", 32 | "url-loader": "^0.5.7", 33 | "webl10n": "^1.0.0", 34 | "webpack": "^1.13.0", 35 | "webpack-dev-server": "^1.14.1", 36 | "webpack-merge": "^0.12.0" 37 | }, 38 | "files": [ 39 | "src/pdfviewer.js", 40 | "dist/" 41 | ] 42 | } 43 | -------------------------------------------------------------------------------- /src/images/annotation-key.svg: -------------------------------------------------------------------------------- 1 | 2 | 7 | 11 | 12 | -------------------------------------------------------------------------------- /src/pdfviewer.js: -------------------------------------------------------------------------------- 1 | 'use strict' 2 | 3 | var PdfViewer = function(opts) { 4 | this.pdfUrl = opts.pdfUrl || '' 5 | this.onerror = opts.onerror || null 6 | this.staticHost = opts.staticHost || '' 7 | this.download = opts.download || '' 8 | } 9 | 10 | PdfViewer.prototype.embed = function(container) { 11 | this.container = container 12 | 13 | var iframe = document.createElement('iframe') 14 | iframe.height = '100%' 15 | iframe.width = '100%' 16 | iframe.frameBorder = 'none' 17 | iframe.src = this.staticHost + '?file=' + encodeURIComponent(this.pdfUrl) + '&width=' + container.clientWidth + '&download=' + this.download 18 | 19 | container.innerHTML = '' 20 | container.appendChild(iframe) 21 | 22 | var self = this, receiveMessage 23 | 24 | if (typeof self.onerror !== 'function') { return } 25 | 26 | this.receiveMessage = receiveMessage = function (event) { 27 | var origin = event.origin 28 | var error = event.data 29 | if(self.staticHost.indexOf(origin) == -1) { return } 30 | self.onerror(error) 31 | window.removeEventListener('message', receiveMessage, false) 32 | } 33 | 34 | window.addEventListener('message', receiveMessage, false) 35 | 36 | return this 37 | 38 | } 39 | 40 | PdfViewer.prototype.destroy = function() { 41 | if (this.container) { 42 | this.container.innerHTML = '' 43 | } 44 | if (this.receiveMessage) { 45 | window.removeEventListener('message', this.receiveMessage, false) 46 | } 47 | } 48 | 49 | module.exports = PdfViewer 50 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | PDF Viewer 2 | ==== 3 | Lightweight PDF viewer using Mozilla's [PDF JS](https://github.com/mozilla/pdf.js). 4 | 5 | [![NPM version][npm-image]][npm-url] 6 | [![Build Status][travis-image]][travis-url] 7 | 8 | ## Screenshot 9 | 10 | !['screenshot'](examples/screenshot.png) 11 | 12 | ## Pre-requirments 13 | 14 | ``` 15 | npm install 16 | npm run build 17 | ``` 18 | 19 | Deploy `dist` to your own static server. 20 | 21 | ## Usage 22 | 23 | See example in [test](./test) directory 24 | 25 | ## Options 26 | 27 | The options `PdfViewer` accepts are: 28 | 29 | 1. **pdfUrl**(required): 30 | URL to your pdf file, can be relative or absolute. If it is a cross-domain path, the remote server must support [CORS](https://developer.mozilla.org/en-US/docs/Web/HTTP/Access_control_CORS). 31 | 32 | 2. **staticHost**(required): 33 | Static files host, PdfViewer dependents on Mozila's `PDF.js` and our `viewer.js`, which must be served. 34 | 35 | 3. **onerror**(optional): 36 | A custom `onerror` callback function, if error occurs when reading or rendering your pdf file, this function will be called. 37 | If omitted, our viewer's default error handler will be used. 38 | 39 | ## Examples 40 | 41 | To get a demo: 42 | 43 | 1. Run command: 44 | ```shell 45 | npm start 46 | ``` 47 | 48 | 2. Test viewer.js: 49 | ``` 50 | http://localhost:9000 51 | ``` 52 | 53 | 3. Test pdfviewer.js (viewer.js in iframe): 54 | ``` 55 | http://localhost:9001 56 | ``` 57 | 58 | ## Who's using 59 | 60 | + Teambition: https://www.teambition.com/ 61 | 62 | [npm-url]: https://npmjs.org/package/pdfviewer 63 | [npm-image]: http://img.shields.io/npm/v/pdfviewer.svg 64 | 65 | [travis-url]: https://travis-ci.org/teambition/pdfviewer 66 | [travis-image]: http://img.shields.io/travis/teambition/pdfviewer.svg 67 | -------------------------------------------------------------------------------- /src/images/annotation-help.svg: -------------------------------------------------------------------------------- 1 | 2 | 7 | 10 | 16 | 18 | 21 | 24 | 25 | 26 | 27 | -------------------------------------------------------------------------------- /src/locale/ja/viewer.properties: -------------------------------------------------------------------------------- 1 | # Copyright 2012 Mozilla Foundation 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | # Main toolbar buttons (tooltips and alt text for images) 16 | previous.title=前のページへ戻ります 17 | previous_label=前へ 18 | next.title=次のページへ進みます 19 | next_label=次へ 20 | 21 | # LOCALIZATION NOTE (page_label, page_of): 22 | # These strings are concatenated to form the "Page: X of Y" string. 23 | # Do not translate "{{pageCount}}", it will be substituted with a number 24 | # representing the total number of pages. 25 | page_label=ページ: 26 | page_of=/ {{pageCount}} 27 | 28 | zoom_out.title=表示を縮小します 29 | zoom_out_label=縮小 30 | zoom_in.title=表示を拡大します 31 | zoom_in_label=拡大 32 | zoom.title=拡大/縮小 33 | presentation_mode.title=プレゼンテーションモードに切り替えます 34 | presentation_mode_label=プレゼンテーションモード 35 | open_file.title=ファイルを指定して開きます 36 | open_file_label=開く 37 | print.title=印刷します 38 | print_label=印刷 39 | download.title=ダウンロードします 40 | download_label=ダウンロード 41 | bookmark.title=現在のビューの URL です (コピーまたは新しいウィンドウに開く) 42 | bookmark_label=現在のビュー 43 | 44 | # Secondary toolbar and context menu 45 | tools.title=ツール 46 | tools_label=ツール 47 | first_page.title=最初のページへ移動します 48 | first_page.label=最初のページへ移動 49 | first_page_label=最初のページへ移動 50 | last_page.title=最後のページへ移動します 51 | last_page.label=最後のページへ移動 52 | last_page_label=最後のページへ移動 53 | page_rotate_cw.title=ページを右へ回転します 54 | page_rotate_cw.label=右回転 55 | page_rotate_cw_label=右回転 56 | page_rotate_ccw.title=ページを左へ回転します 57 | page_rotate_ccw.label=左回転 58 | page_rotate_ccw_label=左回転 59 | 60 | hand_tool_enable.title=手のひらツールを有効にします 61 | hand_tool_enable_label=手のひらツールを有効にする 62 | hand_tool_disable.title=手のひらツールを無効にします 63 | hand_tool_disable_label=手のひらツールを無効にする 64 | 65 | # Document properties dialog box 66 | document_properties.title=文書のプロパティ... 67 | document_properties_label=文書のプロパティ... 68 | document_properties_file_name=ファイル名: 69 | document_properties_file_size=ファイルサイズ: 70 | document_properties_kb={{size_kb}} KB ({{size_b}} bytes) 71 | document_properties_mb={{size_mb}} MB ({{size_b}} bytes) 72 | document_properties_title=タイトル: 73 | document_properties_author=作成者: 74 | document_properties_subject=件名: 75 | document_properties_keywords=キーワード: 76 | document_properties_creation_date=作成日: 77 | document_properties_modification_date=更新日: 78 | document_properties_date_string={{date}}, {{time}} 79 | document_properties_creator=アプリケーション: 80 | document_properties_producer=PDF 作成: 81 | document_properties_version=PDF のバージョン: 82 | document_properties_page_count=ページ数: 83 | document_properties_close=閉じる 84 | 85 | # Tooltips and alt text for side panel toolbar buttons 86 | # (the _label strings are alt text for the buttons, the .title strings are 87 | # tooltips) 88 | toggle_sidebar.title=サイドバー表示を切り替えます 89 | toggle_sidebar_label=サイドバーの切り替え 90 | outline.title=文書の目次を表示します 91 | outline_label=文書の目次 92 | attachments.title=添付ファイルを表示します 93 | attachments_label=添付ファイル 94 | thumbs.title=縮小版を表示します 95 | thumbs_label=縮小版 96 | findbar.title=文書内を検索します 97 | findbar_label=検索 98 | 99 | # Thumbnails panel item (tooltip and alt text for images) 100 | # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page 101 | # number. 102 | thumb_page_title={{page}} ページ 103 | # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page 104 | # number. 105 | thumb_page_canvas=ページの縮小版 {{page}} 106 | 107 | # Find panel button title and messages 108 | find_label=検索: 109 | find_previous.title=指定文字列に一致する 1 つ前の部分を検索します 110 | find_previous_label=前へ 111 | find_next.title=指定文字列に一致する次の部分を検索します 112 | find_next_label=次へ 113 | find_highlight=すべて強調表示 114 | find_match_case_label=大文字/小文字を区別 115 | find_reached_top=文書先頭に到達したので末尾に戻って検索しました。 116 | find_reached_bottom=文書末尾に到達したので先頭に戻って検索しました。 117 | find_not_found=見つかりませんでした。 118 | 119 | # Error panel labels 120 | error_more_info=詳細情報 121 | error_less_info=詳細情報の非表示 122 | error_close=閉じる 123 | # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be 124 | # replaced by the PDF.JS version and build ID. 125 | error_version_info=PDF.js v{{version}} (ビルド: {{build}}) 126 | # LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an 127 | # english string describing the error. 128 | error_message=メッセージ: {{message}} 129 | # LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack 130 | # trace. 131 | error_stack=スタック: {{stack}} 132 | # LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename 133 | error_file=ファイル: {{file}} 134 | # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number 135 | error_line=行: {{line}} 136 | rendering_error=ページのレンダリング中にエラーが発生しました 137 | 138 | # Predefined zoom values 139 | page_scale_width=幅に合わせる 140 | page_scale_fit=ページのサイズに合わせる 141 | page_scale_auto=自動ズーム 142 | page_scale_actual=実際のサイズ 143 | # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a 144 | # numerical scale value. 145 | page_scale_percent={{scale}}% 146 | 147 | # Loading indicator messages 148 | loading_error_indicator=エラー 149 | loading_error=PDF の読み込み中にエラーが発生しました 150 | invalid_file_error=無効または破損した PDF ファイル 151 | missing_file_error=PDF ファイルが見つかりません。 152 | unexpected_response_error=サーバから予期せぬ応答がありました。 153 | 154 | # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. 155 | # "{{type}}" will be replaced with an annotation type from a list defined in 156 | # the PDF spec (32000-1:2008 Table 169 – Annotation types). 157 | # Some common types are e.g.: "Check", "Text", "Comment", "Note" 158 | text_annotation_type.alt=[{{type}} 注釈] 159 | password_label=この PDF ファイルを開くためのパスワードを入力してください。 160 | password_invalid=無効なパスワードです。もう一度やり直してください。 161 | password_ok=OK 162 | password_cancel=キャンセル 163 | 164 | printing_not_supported=警告: このブラウザでは印刷が完全にサポートされていません 165 | printing_not_ready=警告: PDF を印刷するための読み込みが終了していません 166 | web_fonts_disabled=Web フォントが無効になっています: 埋め込まれた PDF のフォントを使用できません 167 | document_colors_disabled=PDF 文書は、Web ページが指定した配色を使用することができません: \u0027Web ページが指定した配色\u0027 はブラウザで無効になっています。 168 | -------------------------------------------------------------------------------- /src/locale/zh-CN/viewer.properties: -------------------------------------------------------------------------------- 1 | # Copyright 2012 Mozilla Foundation 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | # Main toolbar buttons (tooltips and alt text for images) 16 | previous.title=上一页 17 | previous_label=上一页 18 | next.title=下一页 19 | next_label=下一页 20 | 21 | # LOCALIZATION NOTE (page_label, page_of): 22 | # These strings are concatenated to form the "Page: X of Y" string. 23 | # Do not translate "{{pageCount}}", it will be substituted with a number 24 | # representing the total number of pages. 25 | page_label=页面: 26 | page_of=/ {{pageCount}} 27 | 28 | zoom_out.title=缩小 29 | zoom_out_label=缩小 30 | zoom_in.title=放大 31 | zoom_in_label=放大 32 | zoom.title=缩放 33 | presentation_mode.title=切换到演示模式 34 | presentation_mode_label=演示模式 35 | open_file.title=打开文件 36 | open_file_label=打开 37 | print.title=打印 38 | print_label=打印 39 | download.title=下载 40 | download_label=下载 41 | bookmark.title=当前视图(复制或在新窗口中打开) 42 | bookmark_label=当前视图 43 | 44 | # Secondary toolbar and context menu 45 | tools.title=工具 46 | tools_label=工具 47 | first_page.title=转到第一页 48 | first_page.label=转到第一页 49 | first_page_label=转到第一页 50 | last_page.title=转到最后一页 51 | last_page.label=转到最后一页 52 | last_page_label=转到最后一页 53 | page_rotate_cw.title=顺时针旋转 54 | page_rotate_cw.label=顺时针旋转 55 | page_rotate_cw_label=顺时针旋转 56 | page_rotate_ccw.title=逆时针旋转 57 | page_rotate_ccw.label=逆时针旋转 58 | page_rotate_ccw_label=逆时针旋转 59 | 60 | hand_tool_enable.title=启用手形工具 61 | hand_tool_enable_label=启用手形工具 62 | hand_tool_disable.title=禁用手形工具 63 | hand_tool_disable_label=禁用手形工具 64 | 65 | # Document properties dialog box 66 | document_properties.title=文档属性… 67 | document_properties_label=文档属性… 68 | document_properties_file_name=文件名: 69 | document_properties_file_size=文件大小: 70 | # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" 71 | # will be replaced by the PDF file size in kilobytes, respectively in bytes. 72 | document_properties_kb={{size_kb}} KB ({{size_b}} 字节) 73 | # LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" 74 | # will be replaced by the PDF file size in megabytes, respectively in bytes. 75 | document_properties_mb={{size_mb}} MB ({{size_b}} 字节) 76 | document_properties_title=标题: 77 | document_properties_author=作者: 78 | document_properties_subject=主题: 79 | document_properties_keywords=关键词: 80 | document_properties_creation_date=创建日期: 81 | document_properties_modification_date=修改日期: 82 | # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" 83 | # will be replaced by the creation/modification date, and time, of the PDF file. 84 | document_properties_date_string={{date}}, {{time}} 85 | document_properties_creator=创建者: 86 | document_properties_producer=PDF 制作者: 87 | document_properties_version=PDF 版本: 88 | document_properties_page_count=页数: 89 | document_properties_close=关闭 90 | 91 | # Tooltips and alt text for side panel toolbar buttons 92 | # (the _label strings are alt text for the buttons, the .title strings are 93 | # tooltips) 94 | toggle_sidebar.title=切换侧栏 95 | toggle_sidebar_label=切换侧栏 96 | outline.title=显示文档大纲 97 | outline_label=文档大纲 98 | attachments.title=显示附件 99 | attachments_label=附件 100 | thumbs.title=显示缩略图 101 | thumbs_label=缩略图 102 | findbar.title=在文档中查找 103 | findbar_label=查找 104 | 105 | # Thumbnails panel item (tooltip and alt text for images) 106 | # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page 107 | # number. 108 | thumb_page_title=页码 {{page}} 109 | # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page 110 | # number. 111 | thumb_page_canvas=页面 {{page}} 的缩略图 112 | 113 | # Find panel button title and messages 114 | find_label=查找: 115 | find_previous.title=查找词语上一次出现的位置 116 | find_previous_label=上一页 117 | find_next.title=查找词语后一次出现的位置 118 | find_next_label=下一页 119 | find_highlight=全部高亮显示 120 | find_match_case_label=区分大小写 121 | find_reached_top=到达文档开头,从末尾继续 122 | find_reached_bottom=到达文档末尾,从开头继续 123 | find_not_found=词语未找到 124 | 125 | # Error panel labels 126 | error_more_info=更多信息 127 | error_less_info=更少信息 128 | error_close=关闭 129 | # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be 130 | # replaced by the PDF.JS version and build ID. 131 | error_version_info=PDF.js v{{version}} (build: {{build}}) 132 | # LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an 133 | # english string describing the error. 134 | error_message=信息:{{message}} 135 | # LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack 136 | # trace. 137 | error_stack=堆栈:{{stack}} 138 | # LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename 139 | error_file=文件:{{file}} 140 | # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number 141 | error_line=行号:{{line}} 142 | rendering_error=渲染页面时发生错误。 143 | 144 | # Predefined zoom values 145 | page_scale_width=适合页宽 146 | page_scale_fit=适合页面 147 | page_scale_auto=自动缩放 148 | page_scale_actual=实际大小 149 | # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a 150 | # numerical scale value. 151 | page_scale_percent={{scale}}% 152 | 153 | # Loading indicator messages 154 | loading_error_indicator=错误 155 | loading_error=载入PDF时发生错误。 156 | invalid_file_error=无效或损坏的PDF文件。 157 | missing_file_error=缺少PDF文件。 158 | unexpected_response_error=意外的服务器响应。 159 | 160 | # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. 161 | # "{{type}}" will be replaced with an annotation type from a list defined in 162 | # the PDF spec (32000-1:2008 Table 169 – Annotation types). 163 | # Some common types are e.g.: "Check", "Text", "Comment", "Note" 164 | text_annotation_type.alt=[{{type}} 注解] 165 | password_label=输入密码以打开此 PDF 文件。 166 | password_invalid=密码无效。请重试。 167 | password_ok=确定 168 | password_cancel=取消 169 | 170 | printing_not_supported=警告:打印功能不完全支持此浏览器。 171 | printing_not_ready=警告:该 PDF 未完全加载以供打印。 172 | web_fonts_disabled=Web 字体已被禁用:无法使用嵌入的PDF字体。 173 | document_colors_not_allowed=不允许 PDF 文档使用自己的颜色:浏览器中“允许页面选择自己的颜色”的选项已停用。 174 | -------------------------------------------------------------------------------- /src/locale/zh-TW/viewer.properties: -------------------------------------------------------------------------------- 1 | # Copyright 2012 Mozilla Foundation 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | # Main toolbar buttons (tooltips and alt text for images) 16 | previous.title=上一頁 17 | previous_label=上一頁 18 | next.title=下一頁 19 | next_label=下一頁 20 | 21 | # LOCALIZATION NOTE (page_label, page_of): 22 | # These strings are concatenated to form the "Page: X of Y" string. 23 | # Do not translate "{{pageCount}}", it will be substituted with a number 24 | # representing the total number of pages. 25 | page_label=頁: 26 | page_of=/ {{pageCount}} 27 | 28 | zoom_out.title=縮小 29 | zoom_out_label=縮小 30 | zoom_in.title=放大 31 | zoom_in_label=放大 32 | zoom.title=縮放 33 | presentation_mode.title=切換至簡報模式 34 | presentation_mode_label=簡報模式 35 | open_file.title=開啟檔案 36 | open_file_label=開啟 37 | print.title=列印 38 | print_label=列印 39 | download.title=下載 40 | download_label=下載 41 | bookmark.title=目前檢視的內容(複製或開啟於新視窗) 42 | bookmark_label=目前檢視 43 | 44 | # Secondary toolbar and context menu 45 | tools.title=工具 46 | tools_label=工具 47 | first_page.title=跳到第一頁 48 | first_page.label=跳到第一頁 49 | first_page_label=跳到第一頁 50 | last_page.title=跳到最後一頁 51 | last_page.label=跳到最後一頁 52 | last_page_label=跳到最後一頁 53 | page_rotate_cw.title=順時針旋轉 54 | page_rotate_cw.label=順時針旋轉 55 | page_rotate_cw_label=順時針旋轉 56 | page_rotate_ccw.title=逆時針旋轉 57 | page_rotate_ccw.label=逆時針旋轉 58 | page_rotate_ccw_label=逆時針旋轉 59 | 60 | hand_tool_enable.title=啟用掌型工具 61 | hand_tool_enable_label=啟用掌型工具 62 | hand_tool_disable.title=停用掌型工具 63 | hand_tool_disable_label=停用掌型工具 64 | 65 | # Document properties dialog box 66 | document_properties.title=文件內容… 67 | document_properties_label=文件內容… 68 | document_properties_file_name=檔案名稱: 69 | document_properties_file_size=檔案大小: 70 | # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" 71 | # will be replaced by the PDF file size in kilobytes, respectively in bytes. 72 | document_properties_kb={{size_kb}} KB({{size_b}} 位元組) 73 | # LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" 74 | # will be replaced by the PDF file size in megabytes, respectively in bytes. 75 | document_properties_mb={{size_mb}} MB({{size_b}} 位元組) 76 | document_properties_title=標題: 77 | document_properties_author=作者: 78 | document_properties_subject=主旨: 79 | document_properties_keywords=關鍵字: 80 | document_properties_creation_date=建立日期: 81 | document_properties_modification_date=修改日期: 82 | # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" 83 | # will be replaced by the creation/modification date, and time, of the PDF file. 84 | document_properties_date_string={{date}}, {{time}} 85 | document_properties_creator=建立者: 86 | document_properties_producer=PDF 產生器: 87 | document_properties_version=PDF 版本: 88 | document_properties_page_count=頁數: 89 | document_properties_close=關閉 90 | 91 | # Tooltips and alt text for side panel toolbar buttons 92 | # (the _label strings are alt text for the buttons, the .title strings are 93 | # tooltips) 94 | toggle_sidebar.title=切換側邊欄 95 | toggle_sidebar_label=切換側邊欄 96 | outline.title=顯示文件大綱 97 | outline_label=文件大綱 98 | attachments.title=顯示附件 99 | attachments_label=附件 100 | thumbs.title=顯示縮圖 101 | thumbs_label=縮圖 102 | findbar.title=在文件中尋找 103 | findbar_label=尋找 104 | 105 | # Thumbnails panel item (tooltip and alt text for images) 106 | # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page 107 | # number. 108 | thumb_page_title=頁 {{page}} 109 | # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page 110 | # number. 111 | thumb_page_canvas=頁 {{page}} 的縮圖 112 | 113 | # Find panel button title and messages 114 | find_label=尋找: 115 | find_previous.title=尋找文字前次出現的位置 116 | find_previous_label=上一個 117 | find_next.title=尋找文字下次出現的位置 118 | find_next_label=下一個 119 | find_highlight=全部強調標示 120 | find_match_case_label=區分大小寫 121 | find_reached_top=已搜尋至文件頂端,自底端繼續搜尋 122 | find_reached_bottom=已搜尋至文件底端,自頂端繼續搜尋 123 | find_not_found=找不到指定文字 124 | 125 | # Error panel labels 126 | error_more_info=更多資訊 127 | error_less_info=更少資訊 128 | error_close=關閉 129 | # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be 130 | # replaced by the PDF.JS version and build ID. 131 | error_version_info=PDF.js v{{version}} (build: {{build}}) 132 | # LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an 133 | # english string describing the error. 134 | error_message=訊息: {{message}} 135 | # LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack 136 | # trace. 137 | error_stack=堆疊: {{stack}} 138 | # LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename 139 | error_file=檔案: {{file}} 140 | # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number 141 | error_line=行: {{line}} 142 | rendering_error=描繪頁面時發生錯誤。 143 | 144 | # Predefined zoom values 145 | page_scale_width=頁面寬度 146 | page_scale_fit=縮放至頁面大小 147 | page_scale_auto=自動縮放 148 | page_scale_actual=實際大小 149 | # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a 150 | # numerical scale value. 151 | page_scale_percent={{scale}}% 152 | 153 | # Loading indicator messages 154 | loading_error_indicator=錯誤 155 | loading_error=載入 PDF 時發生錯誤。 156 | invalid_file_error=無效或毀損的 PDF 檔案。 157 | missing_file_error=找不到 PDF 檔案。 158 | unexpected_response_error=伺服器回應未預期的內容。 159 | 160 | # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. 161 | # "{{type}}" will be replaced with an annotation type from a list defined in 162 | # the PDF spec (32000-1:2008 Table 169 – Annotation types). 163 | # Some common types are e.g.: "Check", "Text", "Comment", "Note" 164 | text_annotation_type.alt=[{{type}} 註解] 165 | password_label=請輸入用來開啟此 PDF 檔案的密碼。 166 | password_invalid=密碼不正確,請再試一次。 167 | password_ok=確定 168 | password_cancel=取消 169 | 170 | printing_not_supported=警告: 此瀏覽器未完整支援列印功能。 171 | printing_not_ready=警告: 此 PDF 未完成下載以供列印。 172 | web_fonts_disabled=已停用網路字型 (Web fonts): 無法使用 PDF 內嵌字型。 173 | document_colors_not_allowed=不允許 PDF 文件使用自訂色彩: 已停用瀏覽器的「優先使用網頁指定的色彩」設定。 174 | 175 | -------------------------------------------------------------------------------- /src/locale/ko/viewer.properties: -------------------------------------------------------------------------------- 1 | # Copyright 2012 Mozilla Foundation 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | # Main toolbar buttons (tooltips and alt text for images) 16 | previous.title=이전 페이지 17 | previous_label=이전 18 | next.title=다음 페이지 19 | next_label=다음 20 | 21 | # LOCALIZATION NOTE (page_label, page_of): 22 | # These strings are concatenated to form the "Page: X of Y" string. 23 | # Do not translate "{{pageCount}}", it will be substituted with a number 24 | # representing the total number of pages. 25 | page_label=페이지: 26 | page_of=/{{pageCount}} 27 | 28 | zoom_out.title=축소 29 | zoom_out_label=축소 30 | zoom_in.title=확대 31 | zoom_in_label=확대 32 | zoom.title=크기 33 | presentation_mode.title=발표 모드로 전환 34 | presentation_mode_label=발표 모드 35 | open_file.title=파일 열기 36 | open_file_label=열기 37 | print.title=인쇄 38 | print_label=인쇄 39 | download.title=다운로드 40 | download_label=다운로드 41 | bookmark.title=지금 보이는 그대로 (복사하거나 새 창에 열기) 42 | bookmark_label=지금 보이는 그대로 43 | 44 | # Secondary toolbar and context menu 45 | tools.title=도구 46 | tools_label=도구 47 | first_page.title=첫 페이지로 이동 48 | first_page.label=첫 페이지로 이동 49 | first_page_label=첫 페이지로 이동 50 | last_page.title=마지막 페이지로 이동 51 | last_page.label=마지막 페이지로 이동 52 | last_page_label=마지막 페이지로 이동 53 | page_rotate_cw.title=시계방향으로 회전 54 | page_rotate_cw.label=시계방향으로 회전 55 | page_rotate_cw_label=시계방향으로 회전 56 | page_rotate_ccw.title=시계 반대방향으로 회전 57 | page_rotate_ccw.label=시계 반대방향으로 회전 58 | page_rotate_ccw_label=시계 반대방향으로 회전 59 | 60 | hand_tool_enable.title=손 도구 켜기 61 | hand_tool_enable_label=손 도구 켜기 62 | hand_tool_disable.title=손 도구 끄기 63 | hand_tool_disable_label=손 도구 끄기 64 | 65 | # Document properties dialog box 66 | document_properties.title=문서 속성… 67 | document_properties_label=문서 속성… 68 | document_properties_file_name=파일 이름: 69 | document_properties_file_size=파일 사이즈: 70 | # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" 71 | # will be replaced by the PDF file size in kilobytes, respectively in bytes. 72 | document_properties_kb={{size_kb}} KB ({{size_b}}바이트) 73 | # LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" 74 | # will be replaced by the PDF file size in megabytes, respectively in bytes. 75 | document_properties_mb={{size_mb}} MB ({{size_b}}바이트) 76 | document_properties_title=제목: 77 | document_properties_author=저자: 78 | document_properties_subject=주제: 79 | document_properties_keywords=키워드: 80 | document_properties_creation_date=생성일: 81 | document_properties_modification_date=수정일: 82 | # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" 83 | # will be replaced by the creation/modification date, and time, of the PDF file. 84 | document_properties_date_string={{date}}, {{time}} 85 | document_properties_creator=생성자: 86 | document_properties_producer=PDF 생성기: 87 | document_properties_version=PDF 버전: 88 | document_properties_page_count=총 페이지: 89 | document_properties_close=닫기 90 | 91 | # Tooltips and alt text for side panel toolbar buttons 92 | # (the _label strings are alt text for the buttons, the .title strings are 93 | # tooltips) 94 | toggle_sidebar.title=탐색창 열고 닫기 95 | toggle_sidebar_label=탐색창 열고 닫기 96 | outline.title=문서 개요 보기 97 | outline_label=문서 개요 98 | attachments.title=첨부파일 보기 99 | attachments_label=첨부파일 100 | thumbs.title=미리보기 101 | thumbs_label=미리보기 102 | findbar.title=검색 103 | findbar_label=검색 104 | 105 | # Thumbnails panel item (tooltip and alt text for images) 106 | # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page 107 | # number. 108 | thumb_page_title={{page}}쪽 109 | # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page 110 | # number. 111 | thumb_page_canvas={{page}}쪽 미리보기 112 | 113 | # Find panel button title and messages 114 | find_label=검색: 115 | find_previous.title=지정 문자열에 일치하는 1개 부분을 검색 116 | find_previous_label=이전 117 | find_next.title=지정 문자열에 일치하는 다음 부분을 검색 118 | find_next_label=다음 119 | find_highlight=모두 강조 표시 120 | find_match_case_label=대문자/소문자 구별 121 | find_reached_top=문서 처음까지 검색하고 끝으로 돌아와 검색했습니다. 122 | find_reached_bottom=문서 끝까지 검색하고 앞으로 돌아와 검색했습니다. 123 | find_not_found=검색 결과 없음 124 | 125 | # Error panel labels 126 | error_more_info=정보 더 보기 127 | error_less_info=정보 간단히 보기 128 | error_close=닫기 129 | # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be 130 | # replaced by the PDF.JS version and build ID. 131 | error_version_info=PDF.js v{{version}} (빌드: {{build}}) 132 | # LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an 133 | # english string describing the error. 134 | error_message=메시지: {{message}} 135 | # LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack 136 | # trace. 137 | error_stack=스택: {{stack}} 138 | # LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename 139 | error_file=파일: {{file}} 140 | # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number 141 | error_line=줄 번호: {{line}} 142 | rendering_error=페이지를 렌더링하다 오류가 났습니다. 143 | 144 | # Predefined zoom values 145 | page_scale_width=페이지 너비에 맞춤 146 | page_scale_fit=페이지에 맞춤 147 | page_scale_auto=알아서 맞춤 148 | page_scale_actual=실제 크기에 맞춤 149 | # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a 150 | # numerical scale value. 151 | page_scale_percent={{scale}}% 152 | 153 | # Loading indicator messages 154 | loading_error_indicator=오류 155 | loading_error=PDF를 읽는 중 오류가 생겼습니다. 156 | invalid_file_error=유효하지 않거나 파손된 PDF 파일 157 | missing_file_error=PDF 파일이 없습니다. 158 | unexpected_response_error=알 수 없는 서버 응답입니다. 159 | 160 | # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. 161 | # "{{type}}" will be replaced with an annotation type from a list defined in 162 | # the PDF spec (32000-1:2008 Table 169 – Annotation types). 163 | # Some common types are e.g.: "Check", "Text", "Comment", "Note" 164 | text_annotation_type.alt=[{{type}} 주석] 165 | password_label=이 PDF 파일을 열 수 있는 암호를 입력하십시오. 166 | password_invalid=잘못된 암호입니다. 다시 시도해 주십시오. 167 | password_ok=확인 168 | password_cancel=취소 169 | 170 | printing_not_supported=경고: 이 브라우저는 인쇄를 완전히 지원하지 않습니다. 171 | printing_not_ready=경고: 이 PDF를 인쇄를 할 수 있을 정도로 읽어들이지 못했습니다. 172 | web_fonts_disabled=웹 폰트가 꺼져있음: 내장된 PDF 글꼴을 쓸 수 없습니다. 173 | document_colors_disabled=PDF 문서의 색상을 쓰지 못하게 되어 있음: \'웹 페이지 자체 색상 사용 허용\'이 브라우저에서 꺼져 있습니다. 174 | -------------------------------------------------------------------------------- /src/locale/en-GB/viewer.properties: -------------------------------------------------------------------------------- 1 | # Copyright 2012 Mozilla Foundation 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | # Main toolbar buttons (tooltips and alt text for images) 16 | previous.title=Previous Page 17 | previous_label=Previous 18 | next.title=Next Page 19 | next_label=Next 20 | 21 | # LOCALIZATION NOTE (page_label, page_of): 22 | # These strings are concatenated to form the "Page: X of Y" string. 23 | # Do not translate "{{pageCount}}", it will be substituted with a number 24 | # representing the total number of pages. 25 | page_label=Page: 26 | page_of=of {{pageCount}} 27 | 28 | zoom_out.title=Zoom Out 29 | zoom_out_label=Zoom Out 30 | zoom_in.title=Zoom In 31 | zoom_in_label=Zoom In 32 | zoom.title=Zoom 33 | presentation_mode.title=Switch to Presentation Mode 34 | presentation_mode_label=Presentation Mode 35 | open_file.title=Open File 36 | open_file_label=Open 37 | print.title=Print 38 | print_label=Print 39 | download.title=Download 40 | download_label=Download 41 | bookmark.title=Current view (copy or open in new window) 42 | bookmark_label=Current View 43 | 44 | # Secondary toolbar and context menu 45 | tools.title=Tools 46 | tools_label=Tools 47 | first_page.title=Go to First Page 48 | first_page.label=Go to First Page 49 | first_page_label=Go to First Page 50 | last_page.title=Go to Last Page 51 | last_page.label=Go to Last Page 52 | last_page_label=Go to Last Page 53 | page_rotate_cw.title=Rotate Clockwise 54 | page_rotate_cw.label=Rotate Clockwise 55 | page_rotate_cw_label=Rotate Clockwise 56 | page_rotate_ccw.title=Rotate Anti-Clockwise 57 | page_rotate_ccw.label=Rotate Anti-Clockwise 58 | page_rotate_ccw_label=Rotate Anti-Clockwise 59 | 60 | hand_tool_enable.title=Enable hand tool 61 | hand_tool_enable_label=Enable hand tool 62 | hand_tool_disable.title=Disable hand tool 63 | hand_tool_disable_label=Disable hand tool 64 | 65 | # Document properties dialog box 66 | document_properties.title=Document Properties… 67 | document_properties_label=Document Properties… 68 | document_properties_file_name=File name: 69 | document_properties_file_size=File size: 70 | document_properties_kb={{size_kb}} kB ({{size_b}} bytes) 71 | document_properties_mb={{size_mb}} MB ({{size_b}} bytes) 72 | document_properties_title=Title: 73 | document_properties_author=Author: 74 | document_properties_subject=Subject: 75 | document_properties_keywords=Keywords: 76 | document_properties_creation_date=Creation Date: 77 | document_properties_modification_date=Modification Date: 78 | document_properties_date_string={{date}}, {{time}} 79 | document_properties_creator=Creator: 80 | document_properties_producer=PDF Producer: 81 | document_properties_version=PDF Version: 82 | document_properties_page_count=Page Count: 83 | document_properties_close=Close 84 | 85 | # Tooltips and alt text for side panel toolbar buttons 86 | # (the _label strings are alt text for the buttons, the .title strings are 87 | # tooltips) 88 | toggle_sidebar.title=Toggle Sidebar 89 | toggle_sidebar_label=Toggle Sidebar 90 | outline.title=Show Document Outline 91 | outline_label=Document Outline 92 | attachments.title=Show Attachments 93 | attachments_label=Attachments 94 | thumbs.title=Show Thumbnails 95 | thumbs_label=Thumbnails 96 | findbar.title=Find in Document 97 | findbar_label=Find 98 | 99 | # Thumbnails panel item (tooltip and alt text for images) 100 | # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page 101 | # number. 102 | thumb_page_title=Page {{page}} 103 | # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page 104 | # number. 105 | thumb_page_canvas=Thumbnail of Page {{page}} 106 | 107 | # Find panel button title and messages 108 | find_label=Find: 109 | find_previous.title=Find the previous occurrence of the phrase 110 | find_previous_label=Previous 111 | find_next.title=Find the next occurrence of the phrase 112 | find_next_label=Next 113 | find_highlight=Highlight all 114 | find_match_case_label=Match case 115 | find_reached_top=Reached top of document, continued from bottom 116 | find_reached_bottom=Reached end of document, continued from top 117 | find_not_found=Phrase not found 118 | 119 | # Error panel labels 120 | error_more_info=More Information 121 | error_less_info=Less Information 122 | error_close=Close 123 | # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be 124 | # replaced by the PDF.JS version and build ID. 125 | error_version_info=PDF.js v{{version}} (build: {{build}}) 126 | # LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an 127 | # english string describing the error. 128 | error_message=Message: {{message}} 129 | # LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack 130 | # trace. 131 | error_stack=Stack: {{stack}} 132 | # LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename 133 | error_file=File: {{file}} 134 | # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number 135 | error_line=Line: {{line}} 136 | rendering_error=An error occurred while rendering the page. 137 | 138 | # Predefined zoom values 139 | page_scale_width=Page Width 140 | page_scale_fit=Page Fit 141 | page_scale_auto=Automatic Zoom 142 | page_scale_actual=Actual Size 143 | # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a 144 | # numerical scale value. 145 | page_scale_percent={{scale}}% 146 | 147 | # Loading indicator messages 148 | loading_error_indicator=Error 149 | loading_error=An error occurred while loading the PDF. 150 | invalid_file_error=Invalid or corrupted PDF file. 151 | missing_file_error=Missing PDF file. 152 | unexpected_response_error=Unexpected server response. 153 | 154 | # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. 155 | # "{{type}}" will be replaced with an annotation type from a list defined in 156 | # the PDF spec (32000-1:2008 Table 169 – Annotation types). 157 | # Some common types are e.g.: "Check", "Text", "Comment", "Note" 158 | text_annotation_type.alt=[{{type}} Annotation] 159 | password_label=Enter the password to open this PDF file. 160 | password_invalid=Invalid password. Please try again. 161 | password_ok=OK 162 | password_cancel=Cancel 163 | 164 | printing_not_supported=Warning: Printing is not fully supported by this browser. 165 | printing_not_ready=Warning: The PDF is not fully loaded for printing. 166 | web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. 167 | document_colors_disabled=PDF documents are not allowed to use their own colours: 'Allow pages to choose their own colours' is deactivated in the browser. 168 | -------------------------------------------------------------------------------- /src/locale/en-US/viewer.properties: -------------------------------------------------------------------------------- 1 | # Copyright 2012 Mozilla Foundation 2 | # 3 | # Licensed under the Apache License, Version 2.0 (the "License"); 4 | # you may not use this file except in compliance with the License. 5 | # You may obtain a copy of the License at 6 | # 7 | # http://www.apache.org/licenses/LICENSE-2.0 8 | # 9 | # Unless required by applicable law or agreed to in writing, software 10 | # distributed under the License is distributed on an "AS IS" BASIS, 11 | # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | # See the License for the specific language governing permissions and 13 | # limitations under the License. 14 | 15 | # Main toolbar buttons (tooltips and alt text for images) 16 | previous.title=Previous Page 17 | previous_label=Previous 18 | next.title=Next Page 19 | next_label=Next 20 | 21 | # LOCALIZATION NOTE (page_label, page_of): 22 | # These strings are concatenated to form the "Page: X of Y" string. 23 | # Do not translate "{{pageCount}}", it will be substituted with a number 24 | # representing the total number of pages. 25 | page_label=Page: 26 | page_of=of {{pageCount}} 27 | 28 | zoom_out.title=Zoom Out 29 | zoom_out_label=Zoom Out 30 | zoom_in.title=Zoom In 31 | zoom_in_label=Zoom In 32 | zoom.title=Zoom 33 | presentation_mode.title=Switch to Presentation Mode 34 | presentation_mode_label=Presentation Mode 35 | open_file.title=Open File 36 | open_file_label=Open 37 | print.title=Print 38 | print_label=Print 39 | download.title=Download 40 | download_label=Download 41 | bookmark.title=Current view (copy or open in new window) 42 | bookmark_label=Current View 43 | 44 | # Secondary toolbar and context menu 45 | tools.title=Tools 46 | tools_label=Tools 47 | first_page.title=Go to First Page 48 | first_page.label=Go to First Page 49 | first_page_label=Go to First Page 50 | last_page.title=Go to Last Page 51 | last_page.label=Go to Last Page 52 | last_page_label=Go to Last Page 53 | page_rotate_cw.title=Rotate Clockwise 54 | page_rotate_cw.label=Rotate Clockwise 55 | page_rotate_cw_label=Rotate Clockwise 56 | page_rotate_ccw.title=Rotate Counterclockwise 57 | page_rotate_ccw.label=Rotate Counterclockwise 58 | page_rotate_ccw_label=Rotate Counterclockwise 59 | 60 | hand_tool_enable.title=Enable hand tool 61 | hand_tool_enable_label=Enable hand tool 62 | hand_tool_disable.title=Disable hand tool 63 | hand_tool_disable_label=Disable hand tool 64 | 65 | # Document properties dialog box 66 | document_properties.title=Document Properties… 67 | document_properties_label=Document Properties… 68 | document_properties_file_name=File name: 69 | document_properties_file_size=File size: 70 | # LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}" 71 | # will be replaced by the PDF file size in kilobytes, respectively in bytes. 72 | document_properties_kb={{size_kb}} KB ({{size_b}} bytes) 73 | # LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}" 74 | # will be replaced by the PDF file size in megabytes, respectively in bytes. 75 | document_properties_mb={{size_mb}} MB ({{size_b}} bytes) 76 | document_properties_title=Title: 77 | document_properties_author=Author: 78 | document_properties_subject=Subject: 79 | document_properties_keywords=Keywords: 80 | document_properties_creation_date=Creation Date: 81 | document_properties_modification_date=Modification Date: 82 | # LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}" 83 | # will be replaced by the creation/modification date, and time, of the PDF file. 84 | document_properties_date_string={{date}}, {{time}} 85 | document_properties_creator=Creator: 86 | document_properties_producer=PDF Producer: 87 | document_properties_version=PDF Version: 88 | document_properties_page_count=Page Count: 89 | document_properties_close=Close 90 | 91 | # Tooltips and alt text for side panel toolbar buttons 92 | # (the _label strings are alt text for the buttons, the .title strings are 93 | # tooltips) 94 | toggle_sidebar.title=Toggle Sidebar 95 | toggle_sidebar_label=Toggle Sidebar 96 | outline.title=Show Document Outline 97 | outline_label=Document Outline 98 | attachments.title=Show Attachments 99 | attachments_label=Attachments 100 | thumbs.title=Show Thumbnails 101 | thumbs_label=Thumbnails 102 | findbar.title=Find in Document 103 | findbar_label=Find 104 | 105 | # Thumbnails panel item (tooltip and alt text for images) 106 | # LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page 107 | # number. 108 | thumb_page_title=Page {{page}} 109 | # LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page 110 | # number. 111 | thumb_page_canvas=Thumbnail of Page {{page}} 112 | 113 | # Find panel button title and messages 114 | find_label=Find: 115 | find_previous.title=Find the previous occurrence of the phrase 116 | find_previous_label=Previous 117 | find_next.title=Find the next occurrence of the phrase 118 | find_next_label=Next 119 | find_highlight=Highlight all 120 | find_match_case_label=Match case 121 | find_reached_top=Reached top of document, continued from bottom 122 | find_reached_bottom=Reached end of document, continued from top 123 | find_not_found=Phrase not found 124 | 125 | # Error panel labels 126 | error_more_info=More Information 127 | error_less_info=Less Information 128 | error_close=Close 129 | # LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be 130 | # replaced by the PDF.JS version and build ID. 131 | error_version_info=PDF.js v{{version}} (build: {{build}}) 132 | # LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an 133 | # english string describing the error. 134 | error_message=Message: {{message}} 135 | # LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack 136 | # trace. 137 | error_stack=Stack: {{stack}} 138 | # LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename 139 | error_file=File: {{file}} 140 | # LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number 141 | error_line=Line: {{line}} 142 | rendering_error=An error occurred while rendering the page. 143 | 144 | # Predefined zoom values 145 | page_scale_width=Page Width 146 | page_scale_fit=Page Fit 147 | page_scale_auto=Automatic Zoom 148 | page_scale_actual=Actual Size 149 | # LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a 150 | # numerical scale value. 151 | page_scale_percent={{scale}}% 152 | 153 | # Loading indicator messages 154 | loading_error_indicator=Error 155 | loading_error=An error occurred while loading the PDF. 156 | invalid_file_error=Invalid or corrupted PDF file. 157 | missing_file_error=Missing PDF file. 158 | unexpected_response_error=Unexpected server response. 159 | 160 | # LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip. 161 | # "{{type}}" will be replaced with an annotation type from a list defined in 162 | # the PDF spec (32000-1:2008 Table 169 – Annotation types). 163 | # Some common types are e.g.: "Check", "Text", "Comment", "Note" 164 | text_annotation_type.alt=[{{type}} Annotation] 165 | password_label=Enter the password to open this PDF file. 166 | password_invalid=Invalid password. Please try again. 167 | password_ok=OK 168 | password_cancel=Cancel 169 | 170 | printing_not_supported=Warning: Printing is not fully supported by this browser. 171 | printing_not_ready=Warning: The PDF is not fully loaded for printing. 172 | web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts. 173 | document_colors_not_allowed=PDF documents are not allowed to use their own colors: 'Allow pages to choose their own colors' is deactivated in the browser. 174 | -------------------------------------------------------------------------------- /src/index.html: -------------------------------------------------------------------------------- 1 | 2 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | PDF.js viewer 30 | 31 | 32 | 33 | 34 | 35 |
36 | 37 |
38 |
39 |
40 | 43 | 46 | 49 |
50 |
51 |
52 |
53 |
54 | 56 | 58 |
59 |
60 | 61 |
62 | 81 | 82 | 127 | 128 |
129 |
130 |
131 |
132 | 135 |
136 | 139 |
140 | 143 |
144 | 147 |
148 | 149 | 150 | 151 |
152 |
153 | 156 | 157 | 160 | 161 | 164 | 165 |
166 | 167 | 170 |
171 |
172 |
173 |
174 | 177 |
178 | 181 |
182 | 183 | 198 | 199 |
200 |
201 |
202 |
203 |
204 |
205 |
206 |
207 |
208 |
209 |
210 | 211 | 212 | 214 | 216 | 218 | 220 | 221 | 222 |
223 |
224 |
225 | 226 | 244 |
245 | 246 | 308 | 309 |
310 |
311 | 390 | 391 | 392 | 393 | -------------------------------------------------------------------------------- /src/viewer.css: -------------------------------------------------------------------------------- 1 | /* Copyright 2014 Mozilla Foundation 2 | * 3 | * Licensed under the Apache License, Version 2.0 (the "License"); 4 | * you may not use this file except in compliance with the License. 5 | * You may obtain a copy of the License at 6 | * 7 | * http://www.apache.org/licenses/LICENSE-2.0 8 | * 9 | * Unless required by applicable law or agreed to in writing, software 10 | * distributed under the License is distributed on an "AS IS" BASIS, 11 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12 | * See the License for the specific language governing permissions and 13 | * limitations under the License. 14 | */ 15 | 16 | .textLayer { 17 | position: absolute; 18 | left: 0; 19 | top: 0; 20 | right: 0; 21 | bottom: 0; 22 | overflow: hidden; 23 | opacity: 0.2; 24 | line-height: 1.0; 25 | } 26 | 27 | .textLayer > div { 28 | color: transparent; 29 | position: absolute; 30 | white-space: pre; 31 | cursor: text; 32 | -webkit-transform-origin: 0% 0%; 33 | -moz-transform-origin: 0% 0%; 34 | -o-transform-origin: 0% 0%; 35 | -ms-transform-origin: 0% 0%; 36 | transform-origin: 0% 0%; 37 | } 38 | 39 | .textLayer .highlight { 40 | margin: -1px; 41 | padding: 1px; 42 | 43 | background-color: rgb(180, 0, 170); 44 | border-radius: 4px; 45 | } 46 | 47 | .textLayer .highlight.begin { 48 | border-radius: 4px 0px 0px 4px; 49 | } 50 | 51 | .textLayer .highlight.end { 52 | border-radius: 0px 4px 4px 0px; 53 | } 54 | 55 | .textLayer .highlight.middle { 56 | border-radius: 0px; 57 | } 58 | 59 | .textLayer .highlight.selected { 60 | background-color: rgb(0, 100, 0); 61 | } 62 | 63 | .textLayer ::selection { background: rgb(0,0,255); } 64 | .textLayer ::-moz-selection { background: rgb(0,0,255); } 65 | 66 | .textLayer .endOfContent { 67 | display: block; 68 | position: absolute; 69 | left: 0px; 70 | top: 100%; 71 | right: 0px; 72 | bottom: 0px; 73 | z-index: -1; 74 | cursor: default; 75 | -webkit-user-select: none; 76 | -ms-user-select: none; 77 | -moz-user-select: none; 78 | } 79 | 80 | .textLayer .endOfContent.active { 81 | top: 0px; 82 | } 83 | 84 | 85 | .annotationLayer section { 86 | position: absolute; 87 | } 88 | 89 | .annotationLayer .linkAnnotation > a { 90 | position: absolute; 91 | font-size: 1em; 92 | top: 0; 93 | left: 0; 94 | width: 100%; 95 | height: 100%; 96 | } 97 | 98 | .annotationLayer .linkAnnotation > a /* -ms-a */ { 99 | background: url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7") 0 0 repeat; 100 | } 101 | 102 | .annotationLayer .linkAnnotation > a:hover { 103 | opacity: 0.2; 104 | background: #ff0; 105 | box-shadow: 0px 2px 10px #ff0; 106 | } 107 | 108 | .annotationLayer .textAnnotation img { 109 | position: absolute; 110 | cursor: pointer; 111 | } 112 | 113 | .annotationLayer .popupWrapper { 114 | position: absolute; 115 | width: 20em; 116 | } 117 | 118 | .annotationLayer .popup { 119 | position: absolute; 120 | z-index: 200; 121 | max-width: 20em; 122 | background-color: #FFFF99; 123 | box-shadow: 0px 2px 5px #333; 124 | border-radius: 2px; 125 | padding: 0.6em; 126 | margin-left: 5px; 127 | cursor: pointer; 128 | word-wrap: break-word; 129 | } 130 | 131 | .annotationLayer .popup h1 { 132 | font-size: 1em; 133 | border-bottom: 1px solid #000000; 134 | padding-bottom: 0.2em; 135 | } 136 | 137 | .annotationLayer .popup p { 138 | padding-top: 0.2em; 139 | } 140 | 141 | .annotationLayer .highlightAnnotation, 142 | .annotationLayer .underlineAnnotation, 143 | .annotationLayer .squigglyAnnotation, 144 | .annotationLayer .strikeoutAnnotation, 145 | .annotationLayer .fileAttachmentAnnotation { 146 | cursor: pointer; 147 | } 148 | 149 | .pdfViewer .canvasWrapper { 150 | overflow: hidden; 151 | } 152 | 153 | .pdfViewer .page { 154 | direction: ltr; 155 | width: 816px; 156 | height: 1056px; 157 | margin: 1px auto -8px auto; 158 | position: relative; 159 | overflow: visible; 160 | border: 9px solid transparent; 161 | background-clip: content-box; 162 | border-image: url(images/shadow.png) 9 9 repeat; 163 | background-color: white; 164 | } 165 | 166 | .pdfViewer.removePageBorders .page { 167 | margin: 0px auto 10px auto; 168 | border: none; 169 | } 170 | 171 | .pdfViewer.singlePageView { 172 | display: inline-block; 173 | } 174 | 175 | .pdfViewer.singlePageView .page { 176 | margin: 0; 177 | border: none; 178 | } 179 | 180 | .pdfViewer .page canvas { 181 | margin: 0; 182 | display: block; 183 | } 184 | 185 | .pdfViewer .page .loadingIcon { 186 | position: absolute; 187 | display: block; 188 | left: 0; 189 | top: 0; 190 | right: 0; 191 | bottom: 0; 192 | background: url('images/loading-icon.gif') center no-repeat; 193 | } 194 | 195 | .pdfPresentationMode:-webkit-full-screen .pdfViewer .page { 196 | margin-bottom: 100%; 197 | border: 0; 198 | } 199 | 200 | .pdfPresentationMode:-moz-full-screen .pdfViewer .page { 201 | margin-bottom: 100%; 202 | border: 0; 203 | } 204 | 205 | .pdfPresentationMode:-ms-fullscreen .pdfViewer .page { 206 | margin-bottom: 100% !important; 207 | border: 0; 208 | } 209 | 210 | .pdfPresentationMode:fullscreen .pdfViewer .page { 211 | margin-bottom: 100%; 212 | border: 0; 213 | } 214 | 215 | * { 216 | padding: 0; 217 | margin: 0; 218 | } 219 | 220 | html { 221 | height: 100%; 222 | width: 100%; 223 | /* Font size is needed to make the activity bar the correct size. */ 224 | font-size: 10px; 225 | } 226 | 227 | body { 228 | height: 100%; 229 | width: 100%; 230 | background-color: #404040; 231 | background-image: url(images/texture.png); 232 | } 233 | 234 | body, 235 | input, 236 | button, 237 | select { 238 | font: message-box; 239 | outline: none; 240 | } 241 | 242 | .hidden { 243 | display: none !important; 244 | } 245 | [hidden] { 246 | display: none !important; 247 | } 248 | 249 | #viewerContainer.pdfPresentationMode:-webkit-full-screen { 250 | top: 0px; 251 | border-top: 2px solid transparent; 252 | background-color: #000; 253 | width: 100%; 254 | height: 100%; 255 | overflow: hidden; 256 | cursor: none; 257 | -webkit-user-select: none; 258 | } 259 | 260 | #viewerContainer.pdfPresentationMode:-moz-full-screen { 261 | top: 0px; 262 | border-top: 2px solid transparent; 263 | background-color: #000; 264 | width: 100%; 265 | height: 100%; 266 | overflow: hidden; 267 | cursor: none; 268 | -moz-user-select: none; 269 | } 270 | 271 | #viewerContainer.pdfPresentationMode:-ms-fullscreen { 272 | top: 0px !important; 273 | border-top: 2px solid transparent; 274 | width: 100%; 275 | height: 100%; 276 | overflow: hidden !important; 277 | cursor: none; 278 | -ms-user-select: none; 279 | } 280 | 281 | #viewerContainer.pdfPresentationMode:-ms-fullscreen::-ms-backdrop { 282 | background-color: #000; 283 | } 284 | 285 | #viewerContainer.pdfPresentationMode:fullscreen { 286 | top: 0px; 287 | border-top: 2px solid transparent; 288 | background-color: #000; 289 | width: 100%; 290 | height: 100%; 291 | overflow: hidden; 292 | cursor: none; 293 | -webkit-user-select: none; 294 | -moz-user-select: none; 295 | -ms-user-select: none; 296 | } 297 | 298 | .pdfPresentationMode:-webkit-full-screen a:not(.internalLink) { 299 | display: none; 300 | } 301 | 302 | .pdfPresentationMode:-moz-full-screen a:not(.internalLink) { 303 | display: none; 304 | } 305 | 306 | .pdfPresentationMode:-ms-fullscreen a:not(.internalLink) { 307 | display: none !important; 308 | } 309 | 310 | .pdfPresentationMode:fullscreen a:not(.internalLink) { 311 | display: none; 312 | } 313 | 314 | .pdfPresentationMode:-webkit-full-screen .textLayer > div { 315 | cursor: none; 316 | } 317 | 318 | .pdfPresentationMode:-moz-full-screen .textLayer > div { 319 | cursor: none; 320 | } 321 | 322 | .pdfPresentationMode:-ms-fullscreen .textLayer > div { 323 | cursor: none; 324 | } 325 | 326 | .pdfPresentationMode:fullscreen .textLayer > div { 327 | cursor: none; 328 | } 329 | 330 | .pdfPresentationMode.pdfPresentationModeControls > *, 331 | .pdfPresentationMode.pdfPresentationModeControls .textLayer > div { 332 | cursor: default; 333 | } 334 | 335 | /* outer/inner center provides horizontal center */ 336 | .outerCenter { 337 | pointer-events: none; 338 | position: relative; 339 | } 340 | html[dir='ltr'] .outerCenter { 341 | float: right; 342 | right: 50%; 343 | } 344 | html[dir='rtl'] .outerCenter { 345 | float: left; 346 | left: 50%; 347 | } 348 | .innerCenter { 349 | pointer-events: auto; 350 | position: relative; 351 | } 352 | html[dir='ltr'] .innerCenter { 353 | float: right; 354 | right: -50%; 355 | } 356 | html[dir='rtl'] .innerCenter { 357 | float: left; 358 | left: -50%; 359 | } 360 | 361 | #outerContainer { 362 | width: 100%; 363 | height: 100%; 364 | position: relative; 365 | } 366 | 367 | #sidebarContainer { 368 | position: absolute; 369 | top: 0; 370 | bottom: 0; 371 | width: 200px; 372 | visibility: hidden; 373 | -webkit-transition-duration: 200ms; 374 | -webkit-transition-timing-function: ease; 375 | transition-duration: 200ms; 376 | transition-timing-function: ease; 377 | 378 | } 379 | html[dir='ltr'] #sidebarContainer { 380 | -webkit-transition-property: left; 381 | transition-property: left; 382 | left: -200px; 383 | } 384 | html[dir='rtl'] #sidebarContainer { 385 | -webkit-transition-property: right; 386 | transition-property: right; 387 | right: -200px; 388 | } 389 | 390 | #outerContainer.sidebarMoving > #sidebarContainer, 391 | #outerContainer.sidebarOpen > #sidebarContainer { 392 | visibility: visible; 393 | } 394 | html[dir='ltr'] #outerContainer.sidebarOpen > #sidebarContainer { 395 | left: 0px; 396 | } 397 | html[dir='rtl'] #outerContainer.sidebarOpen > #sidebarContainer { 398 | right: 0px; 399 | } 400 | 401 | #mainContainer { 402 | position: absolute; 403 | top: 0; 404 | right: 0; 405 | bottom: 0; 406 | left: 0; 407 | min-width: 320px; 408 | -webkit-transition-duration: 200ms; 409 | -webkit-transition-timing-function: ease; 410 | transition-duration: 200ms; 411 | transition-timing-function: ease; 412 | } 413 | html[dir='ltr'] #outerContainer.sidebarOpen > #mainContainer { 414 | -webkit-transition-property: left; 415 | transition-property: left; 416 | left: 200px; 417 | } 418 | html[dir='rtl'] #outerContainer.sidebarOpen > #mainContainer { 419 | -webkit-transition-property: right; 420 | transition-property: right; 421 | right: 200px; 422 | } 423 | 424 | #sidebarContent { 425 | top: 32px; 426 | bottom: 0; 427 | overflow: auto; 428 | -webkit-overflow-scrolling: touch; 429 | position: absolute; 430 | width: 200px; 431 | background-color: hsla(0,0%,0%,.1); 432 | } 433 | html[dir='ltr'] #sidebarContent { 434 | left: 0; 435 | box-shadow: inset -1px 0 0 hsla(0,0%,0%,.25); 436 | } 437 | html[dir='rtl'] #sidebarContent { 438 | right: 0; 439 | box-shadow: inset 1px 0 0 hsla(0,0%,0%,.25); 440 | } 441 | 442 | #viewerContainer { 443 | overflow: auto; 444 | -webkit-overflow-scrolling: touch; 445 | position: absolute; 446 | top: 32px; 447 | right: 0; 448 | bottom: 0; 449 | left: 0; 450 | outline: none; 451 | } 452 | html[dir='ltr'] #viewerContainer { 453 | box-shadow: inset 1px 0 0 hsla(0,0%,100%,.05); 454 | } 455 | html[dir='rtl'] #viewerContainer { 456 | box-shadow: inset -1px 0 0 hsla(0,0%,100%,.05); 457 | } 458 | 459 | .toolbar { 460 | position: relative; 461 | left: 0; 462 | right: 0; 463 | z-index: 9999; 464 | cursor: default; 465 | } 466 | 467 | #toolbarContainer { 468 | width: 100%; 469 | } 470 | 471 | #toolbarSidebar { 472 | width: 200px; 473 | height: 32px; 474 | background-color: #424242; /* fallback */ 475 | background-image: url(images/texture.png), 476 | linear-gradient(hsla(0,0%,30%,.99), hsla(0,0%,25%,.95)); 477 | } 478 | html[dir='ltr'] #toolbarSidebar { 479 | box-shadow: inset -1px 0 0 rgba(0, 0, 0, 0.25), 480 | inset 0 -1px 0 hsla(0,0%,100%,.05), 481 | 0 1px 0 hsla(0,0%,0%,.15), 482 | 0 0 1px hsla(0,0%,0%,.1); 483 | } 484 | html[dir='rtl'] #toolbarSidebar { 485 | box-shadow: inset 1px 0 0 rgba(0, 0, 0, 0.25), 486 | inset 0 1px 0 hsla(0,0%,100%,.05), 487 | 0 1px 0 hsla(0,0%,0%,.15), 488 | 0 0 1px hsla(0,0%,0%,.1); 489 | } 490 | 491 | #toolbarContainer, .findbar, .secondaryToolbar { 492 | position: relative; 493 | height: 32px; 494 | background-color: #474747; /* fallback */ 495 | background-image: url(images/texture.png), 496 | linear-gradient(hsla(0,0%,32%,.99), hsla(0,0%,27%,.95)); 497 | } 498 | html[dir='ltr'] #toolbarContainer, .findbar, .secondaryToolbar { 499 | box-shadow: inset 1px 0 0 hsla(0,0%,100%,.08), 500 | inset 0 1px 1px hsla(0,0%,0%,.15), 501 | inset 0 -1px 0 hsla(0,0%,100%,.05), 502 | 0 1px 0 hsla(0,0%,0%,.15), 503 | 0 1px 1px hsla(0,0%,0%,.1); 504 | } 505 | html[dir='rtl'] #toolbarContainer, .findbar, .secondaryToolbar { 506 | box-shadow: inset -1px 0 0 hsla(0,0%,100%,.08), 507 | inset 0 1px 1px hsla(0,0%,0%,.15), 508 | inset 0 -1px 0 hsla(0,0%,100%,.05), 509 | 0 1px 0 hsla(0,0%,0%,.15), 510 | 0 1px 1px hsla(0,0%,0%,.1); 511 | } 512 | 513 | #toolbarViewer { 514 | height: 32px; 515 | } 516 | 517 | #loadingBar { 518 | position: relative; 519 | width: 100%; 520 | height: 4px; 521 | background-color: #333; 522 | border-bottom: 1px solid #333; 523 | } 524 | 525 | #loadingBar .progress { 526 | position: absolute; 527 | top: 0; 528 | left: 0; 529 | width: 0%; 530 | height: 100%; 531 | background-color: #ddd; 532 | overflow: hidden; 533 | -webkit-transition: width 200ms; 534 | transition: width 200ms; 535 | } 536 | 537 | @-webkit-keyframes progressIndeterminate { 538 | 0% { left: -142px; } 539 | 100% { left: 0; } 540 | } 541 | 542 | @keyframes progressIndeterminate { 543 | 0% { left: -142px; } 544 | 100% { left: 0; } 545 | } 546 | 547 | #loadingBar .progress.indeterminate { 548 | background-color: #999; 549 | -webkit-transition: none; 550 | transition: none; 551 | } 552 | 553 | #loadingBar .progress.indeterminate .glimmer { 554 | position: absolute; 555 | top: 0; 556 | left: 0; 557 | height: 100%; 558 | width: calc(100% + 150px); 559 | 560 | background: repeating-linear-gradient(135deg, 561 | #bbb 0, #999 5px, 562 | #999 45px, #ddd 55px, 563 | #ddd 95px, #bbb 100px); 564 | 565 | -webkit-animation: progressIndeterminate 950ms linear infinite; 566 | animation: progressIndeterminate 950ms linear infinite; 567 | } 568 | 569 | .findbar, .secondaryToolbar { 570 | top: 32px; 571 | position: absolute; 572 | z-index: 10000; 573 | height: 32px; 574 | 575 | min-width: 16px; 576 | padding: 0px 6px 0px 6px; 577 | margin: 4px 2px 4px 2px; 578 | color: hsl(0,0%,85%); 579 | font-size: 12px; 580 | line-height: 14px; 581 | text-align: left; 582 | cursor: default; 583 | } 584 | 585 | html[dir='ltr'] .findbar { 586 | left: 68px; 587 | } 588 | 589 | html[dir='rtl'] .findbar { 590 | right: 68px; 591 | } 592 | 593 | .findbar label { 594 | -webkit-user-select: none; 595 | -moz-user-select: none; 596 | } 597 | 598 | #findInput[data-status="pending"] { 599 | background-image: url(images/loading-small.png); 600 | background-repeat: no-repeat; 601 | background-position: right; 602 | } 603 | html[dir='rtl'] #findInput[data-status="pending"] { 604 | background-position: left; 605 | } 606 | 607 | .secondaryToolbar { 608 | padding: 6px; 609 | height: auto; 610 | z-index: 30000; 611 | } 612 | html[dir='ltr'] .secondaryToolbar { 613 | right: 4px; 614 | } 615 | html[dir='rtl'] .secondaryToolbar { 616 | left: 4px; 617 | } 618 | 619 | #secondaryToolbarButtonContainer { 620 | max-width: 200px; 621 | max-height: 400px; 622 | overflow-y: auto; 623 | -webkit-overflow-scrolling: touch; 624 | margin-bottom: -4px; 625 | } 626 | 627 | .doorHanger, 628 | .doorHangerRight { 629 | border: 1px solid hsla(0,0%,0%,.5); 630 | border-radius: 2px; 631 | box-shadow: 0 1px 4px rgba(0, 0, 0, 0.3); 632 | } 633 | .doorHanger:after, .doorHanger:before, 634 | .doorHangerRight:after, .doorHangerRight:before { 635 | bottom: 100%; 636 | border: solid transparent; 637 | content: " "; 638 | height: 0; 639 | width: 0; 640 | position: absolute; 641 | pointer-events: none; 642 | } 643 | .doorHanger:after, 644 | .doorHangerRight:after { 645 | border-bottom-color: hsla(0,0%,32%,.99); 646 | border-width: 8px; 647 | } 648 | .doorHanger:before, 649 | .doorHangerRight:before { 650 | border-bottom-color: hsla(0,0%,0%,.5); 651 | border-width: 9px; 652 | } 653 | 654 | html[dir='ltr'] .doorHanger:after, 655 | html[dir='rtl'] .doorHangerRight:after { 656 | left: 13px; 657 | margin-left: -8px; 658 | } 659 | 660 | html[dir='ltr'] .doorHanger:before, 661 | html[dir='rtl'] .doorHangerRight:before { 662 | left: 13px; 663 | margin-left: -9px; 664 | } 665 | 666 | html[dir='rtl'] .doorHanger:after, 667 | html[dir='ltr'] .doorHangerRight:after { 668 | right: 13px; 669 | margin-right: -8px; 670 | } 671 | 672 | html[dir='rtl'] .doorHanger:before, 673 | html[dir='ltr'] .doorHangerRight:before { 674 | right: 13px; 675 | margin-right: -9px; 676 | } 677 | 678 | #findResultsCount { 679 | background-color: hsl(0, 0%, 85%); 680 | color: hsl(0, 0%, 32%); 681 | text-align: center; 682 | padding: 3px 4px; 683 | } 684 | 685 | #findMsg { 686 | font-style: italic; 687 | color: #A6B7D0; 688 | } 689 | 690 | #findInput.notFound { 691 | background-color: rgb(255, 102, 102); 692 | } 693 | 694 | html[dir='ltr'] #toolbarViewerLeft { 695 | margin-left: -1px; 696 | } 697 | html[dir='rtl'] #toolbarViewerRight { 698 | margin-right: -1px; 699 | } 700 | 701 | html[dir='ltr'] #toolbarViewerLeft, 702 | html[dir='rtl'] #toolbarViewerRight { 703 | position: absolute; 704 | top: 0; 705 | left: 0; 706 | } 707 | html[dir='ltr'] #toolbarViewerRight, 708 | html[dir='rtl'] #toolbarViewerLeft { 709 | position: absolute; 710 | top: 0; 711 | right: 0; 712 | } 713 | html[dir='ltr'] #toolbarViewerLeft > *, 714 | html[dir='ltr'] #toolbarViewerMiddle > *, 715 | html[dir='ltr'] #toolbarViewerRight > *, 716 | html[dir='ltr'] .findbar > * { 717 | position: relative; 718 | float: left; 719 | } 720 | html[dir='rtl'] #toolbarViewerLeft > *, 721 | html[dir='rtl'] #toolbarViewerMiddle > *, 722 | html[dir='rtl'] #toolbarViewerRight > *, 723 | html[dir='rtl'] .findbar > * { 724 | position: relative; 725 | float: right; 726 | } 727 | 728 | html[dir='ltr'] .splitToolbarButton { 729 | margin: 3px 2px 4px 0; 730 | display: inline-block; 731 | } 732 | html[dir='rtl'] .splitToolbarButton { 733 | margin: 3px 0 4px 2px; 734 | display: inline-block; 735 | } 736 | html[dir='ltr'] .splitToolbarButton > .toolbarButton { 737 | border-radius: 0; 738 | float: left; 739 | } 740 | html[dir='rtl'] .splitToolbarButton > .toolbarButton { 741 | border-radius: 0; 742 | float: right; 743 | } 744 | 745 | .toolbarButton, 746 | .secondaryToolbarButton, 747 | .overlayButton { 748 | border: 0 none; 749 | background: none; 750 | width: 32px; 751 | height: 25px; 752 | } 753 | 754 | .toolbarButton > span { 755 | display: inline-block; 756 | width: 0; 757 | height: 0; 758 | overflow: hidden; 759 | } 760 | 761 | .toolbarButton[disabled], 762 | .secondaryToolbarButton[disabled], 763 | .overlayButton[disabled] { 764 | opacity: .5; 765 | } 766 | 767 | .toolbarButton.group { 768 | margin-right: 0; 769 | } 770 | 771 | .splitToolbarButton.toggled .toolbarButton { 772 | margin: 0; 773 | } 774 | 775 | .splitToolbarButton:hover > .toolbarButton, 776 | .splitToolbarButton:focus > .toolbarButton, 777 | .splitToolbarButton.toggled > .toolbarButton, 778 | .toolbarButton.textButton { 779 | background-color: hsla(0,0%,0%,.12); 780 | background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); 781 | background-clip: padding-box; 782 | border: 1px solid hsla(0,0%,0%,.35); 783 | border-color: hsla(0,0%,0%,.32) hsla(0,0%,0%,.38) hsla(0,0%,0%,.42); 784 | box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, 785 | 0 0 1px hsla(0,0%,100%,.15) inset, 786 | 0 1px 0 hsla(0,0%,100%,.05); 787 | -webkit-transition-property: background-color, border-color, box-shadow; 788 | -webkit-transition-duration: 150ms; 789 | -webkit-transition-timing-function: ease; 790 | transition-property: background-color, border-color, box-shadow; 791 | transition-duration: 150ms; 792 | transition-timing-function: ease; 793 | 794 | } 795 | .splitToolbarButton > .toolbarButton:hover, 796 | .splitToolbarButton > .toolbarButton:focus, 797 | .dropdownToolbarButton:hover, 798 | .overlayButton:hover, 799 | .overlayButton:focus, 800 | .toolbarButton.textButton:hover, 801 | .toolbarButton.textButton:focus { 802 | background-color: hsla(0,0%,0%,.2); 803 | box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, 804 | 0 0 1px hsla(0,0%,100%,.15) inset, 805 | 0 0 1px hsla(0,0%,0%,.05); 806 | z-index: 199; 807 | } 808 | .splitToolbarButton > .toolbarButton { 809 | position: relative; 810 | } 811 | html[dir='ltr'] .splitToolbarButton > .toolbarButton:first-child, 812 | html[dir='rtl'] .splitToolbarButton > .toolbarButton:last-child { 813 | position: relative; 814 | margin: 0; 815 | margin-right: -1px; 816 | border-top-left-radius: 2px; 817 | border-bottom-left-radius: 2px; 818 | border-right-color: transparent; 819 | } 820 | html[dir='ltr'] .splitToolbarButton > .toolbarButton:last-child, 821 | html[dir='rtl'] .splitToolbarButton > .toolbarButton:first-child { 822 | position: relative; 823 | margin: 0; 824 | margin-left: -1px; 825 | border-top-right-radius: 2px; 826 | border-bottom-right-radius: 2px; 827 | border-left-color: transparent; 828 | } 829 | .splitToolbarButtonSeparator { 830 | padding: 8px 0; 831 | width: 1px; 832 | background-color: hsla(0,0%,0%,.5); 833 | z-index: 99; 834 | box-shadow: 0 0 0 1px hsla(0,0%,100%,.08); 835 | display: inline-block; 836 | margin: 5px 0; 837 | } 838 | html[dir='ltr'] .splitToolbarButtonSeparator { 839 | float: left; 840 | } 841 | html[dir='rtl'] .splitToolbarButtonSeparator { 842 | float: right; 843 | } 844 | .splitToolbarButton:hover > .splitToolbarButtonSeparator, 845 | .splitToolbarButton.toggled > .splitToolbarButtonSeparator { 846 | padding: 12px 0; 847 | margin: 1px 0; 848 | box-shadow: 0 0 0 1px hsla(0,0%,100%,.03); 849 | -webkit-transition-property: padding; 850 | -webkit-transition-duration: 10ms; 851 | -webkit-transition-timing-function: ease; 852 | transition-property: padding; 853 | transition-duration: 10ms; 854 | transition-timing-function: ease; 855 | } 856 | 857 | .toolbarButton, 858 | .dropdownToolbarButton, 859 | .secondaryToolbarButton, 860 | .overlayButton { 861 | min-width: 16px; 862 | padding: 2px 6px 0; 863 | border: 1px solid transparent; 864 | border-radius: 2px; 865 | color: hsla(0,0%,100%,.8); 866 | font-size: 12px; 867 | line-height: 14px; 868 | -webkit-user-select: none; 869 | -moz-user-select: none; 870 | -ms-user-select: none; 871 | /* Opera does not support user-select, use <... unselectable="on"> instead */ 872 | cursor: default; 873 | -webkit-transition-property: background-color, border-color, box-shadow; 874 | -webkit-transition-duration: 150ms; 875 | -webkit-transition-timing-function: ease; 876 | transition-property: background-color, border-color, box-shadow; 877 | transition-duration: 150ms; 878 | transition-timing-function: ease; 879 | } 880 | 881 | html[dir='ltr'] .toolbarButton, 882 | html[dir='ltr'] .overlayButton, 883 | html[dir='ltr'] .dropdownToolbarButton { 884 | margin: 3px 2px 4px 0; 885 | } 886 | html[dir='rtl'] .toolbarButton, 887 | html[dir='rtl'] .overlayButton, 888 | html[dir='rtl'] .dropdownToolbarButton { 889 | margin: 3px 0 4px 2px; 890 | } 891 | 892 | .toolbarButton:hover, 893 | .toolbarButton:focus, 894 | .dropdownToolbarButton, 895 | .overlayButton, 896 | .secondaryToolbarButton:hover, 897 | .secondaryToolbarButton:focus { 898 | background-color: hsla(0,0%,0%,.12); 899 | background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); 900 | background-clip: padding-box; 901 | border: 1px solid hsla(0,0%,0%,.35); 902 | border-color: hsla(0,0%,0%,.32) hsla(0,0%,0%,.38) hsla(0,0%,0%,.42); 903 | box-shadow: 0 1px 0 hsla(0,0%,100%,.05) inset, 904 | 0 0 1px hsla(0,0%,100%,.15) inset, 905 | 0 1px 0 hsla(0,0%,100%,.05); 906 | } 907 | 908 | .toolbarButton:hover:active, 909 | .overlayButton:hover:active, 910 | .dropdownToolbarButton:hover:active, 911 | .secondaryToolbarButton:hover:active { 912 | background-color: hsla(0,0%,0%,.2); 913 | background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); 914 | border-color: hsla(0,0%,0%,.35) hsla(0,0%,0%,.4) hsla(0,0%,0%,.45); 915 | box-shadow: 0 1px 1px hsla(0,0%,0%,.1) inset, 916 | 0 0 1px hsla(0,0%,0%,.2) inset, 917 | 0 1px 0 hsla(0,0%,100%,.05); 918 | -webkit-transition-property: background-color, border-color, box-shadow; 919 | -webkit-transition-duration: 10ms; 920 | -webkit-transition-timing-function: linear; 921 | transition-property: background-color, border-color, box-shadow; 922 | transition-duration: 10ms; 923 | transition-timing-function: linear; 924 | } 925 | 926 | .toolbarButton.toggled, 927 | .splitToolbarButton.toggled > .toolbarButton.toggled, 928 | .secondaryToolbarButton.toggled { 929 | background-color: hsla(0,0%,0%,.3); 930 | background-image: linear-gradient(hsla(0,0%,100%,.05), hsla(0,0%,100%,0)); 931 | border-color: hsla(0,0%,0%,.4) hsla(0,0%,0%,.45) hsla(0,0%,0%,.5); 932 | box-shadow: 0 1px 1px hsla(0,0%,0%,.1) inset, 933 | 0 0 1px hsla(0,0%,0%,.2) inset, 934 | 0 1px 0 hsla(0,0%,100%,.05); 935 | -webkit-transition-property: background-color, border-color, box-shadow; 936 | -webkit-transition-duration: 10ms; 937 | -webkit-transition-timing-function: linear; 938 | transition-property: background-color, border-color, box-shadow; 939 | transition-duration: 10ms; 940 | transition-timing-function: linear; 941 | } 942 | 943 | .toolbarButton.toggled:hover:active, 944 | .splitToolbarButton.toggled > .toolbarButton.toggled:hover:active, 945 | .secondaryToolbarButton.toggled:hover:active { 946 | background-color: hsla(0,0%,0%,.4); 947 | border-color: hsla(0,0%,0%,.4) hsla(0,0%,0%,.5) hsla(0,0%,0%,.55); 948 | box-shadow: 0 1px 1px hsla(0,0%,0%,.2) inset, 949 | 0 0 1px hsla(0,0%,0%,.3) inset, 950 | 0 1px 0 hsla(0,0%,100%,.05); 951 | } 952 | 953 | .dropdownToolbarButton { 954 | width: 120px; 955 | max-width: 120px; 956 | padding: 0; 957 | overflow: hidden; 958 | background: url(images/toolbarButton-menuArrows.png) no-repeat; 959 | } 960 | html[dir='ltr'] .dropdownToolbarButton { 961 | background-position: 95%; 962 | } 963 | html[dir='rtl'] .dropdownToolbarButton { 964 | background-position: 5%; 965 | } 966 | 967 | .dropdownToolbarButton > select { 968 | min-width: 140px; 969 | font-size: 12px; 970 | color: hsl(0,0%,95%); 971 | margin: 0; 972 | padding: 3px 2px 2px; 973 | border: none; 974 | background: rgba(0,0,0,0); /* Opera does not support 'transparent'