diff --git a/README.md b/README.md
index 62f34f4..10c9f05 100644
--- a/README.md
+++ b/README.md
@@ -43,15 +43,15 @@ Include `viewer.html` using [SSI](http://httpd.apache.org/docs/2.4/howto/ssi.htm
## Upgrading the source
-Normally mozilla's PDF js viewer, will only run as standalone. This version is patched so you can include it within a
+Normally mozilla's PDF js viewer, will only run as standalone. We forked the project and patched it, so you can include it within a
page.
-To update this version, get the pdf.js source code and build the project
+To update this version, get the patched pdf.js source code and build the project
- git clone https://github.com/mozilla/pdf.js.git
+ git https://github.com/legalthings/pdf.js.git
cd pdf.js
npm install
- node make generic
+ gulp generic
cd ..
And update the files from source and patch them
@@ -59,215 +59,3 @@ And update the files from source and patch them
cd pdf.js-viewer
npm install
./build.sh ../pdf.js/build/generic/
-
-### Manual patching
-
-When updating to a new minor (or major) version, it's likely than one or more of the chunks can't be applied. This
-means you need to do these modifications manually.
-
-
-#### function getL10nData()
-
-The viewer uses `l10n.js` with a `` header for internationalization. This
-chunk makes using that optional.
-
- function getL10nData(key, args, fallback) {
- var data = gL10nData[key];
- if (!data) {
- - console.warn('#' + key + ' is undefined.');
- + if (Object.keys(gL10nData).length > 0) {
- + console.warn('#' + key + ' is undefined.');
- + }
- if (!fallback) {
- return null;
- }
-
-#### Dynamic paths
-
-The viewer uses relative paths to JavaScript files. This doesn't work when the viewer is embedded on a web page.
-Instead the paths are determined based on the path of the current JavaScript file.
-
- -PDFJS.imageResourcesPath = './images/';
- - PDFJS.workerSrc = '../build/pdf.worker.js';
- - PDFJS.cMapUrl = '../web/cmaps/';
- - PDFJS.cMapPacked = true;
- +var scriptTagContainer = document.body ||
- + document.getElementsByTagName('head')[0];
- +var pdfjsSrc = scriptTagContainer.lastChild.src;
- +
- +if (pdfjsSrc) {
- + PDFJS.imageResourcesPath = pdfjsSrc.replace(/pdf\.js$/i, 'images/');
- + PDFJS.workerSrc = pdfjsSrc.replace(/pdf\.js$/i, 'pdf.worker.js');
- + PDFJS.cMapUrl = pdfjsSrc.replace(/pdf\.js$/i, 'cmaps/');
- +}
- +
- +PDFJS.cMapPacked = true;
-
-#### Explicitly load a PDF document
-
-The viewer shouldn't start loading a (default) document when it's loaded. Instead we want to expose the initialization,
-so it can be called in JavaScript with `PDFJS.webViewerLoad()`.
-
- -document.addEventListener('DOMContentLoaded', webViewerLoad, true);
- +// document.addEventListener('DOMContentLoaded', webViewerLoad, true);
- +PDFJS.webViewerLoad = function (src) {
- + if (src) DEFAULT_URL = src;
- +
- + webViewerLoad();
- +}
-
-On several places the code assumes that a PDF is loaded, which (because of the explicit load) might not be the case. We
-need to check if `pdfDocument` is set before using it.
-
-##### PDFViewerApplication.pagesCount() and PDFLinkService.pagesCount()
-
- get pagesCount() {
- - return this.pdfDocument.numPages;
- + return this.pdfDocument ? this.pdfDocument.numPages : 0;
- },
-
-_The pagesCount method for both `PDFViewerApplication` and `PDFLinkService`. Both need to be patched._
-
-##### PDFViewerApplication.cleanup()
-
- cleanup: function pdfViewCleanup() {
- this.pdfViewer.cleanup();
- this.pdfThumbnailViewer.cleanup();
- - this.pdfDocument.cleanup();
- + if (this.pdfDocument) {
- + this.pdfDocument.cleanup();
- + }
- },
-
-#### overlayManagerRegister
-
-The overlay is registered when the viewer is loaded. The original code will only do this once and give an error on each
-subsequent call. Escpecially with single-page applications (eg an Angular app), the viewer may be loaded multiple times.
-This patch causes pdf.js to unregister an unusued (closed) overlay.
-
- register: function overlayManagerRegister(name, callerCloseMethod, canForceClose) {
- return new Promise(function (resolve) {
- var element, container;
- if (!name || !(element = document.getElementById(name)) ||
- !(container = element.parentNode)) {
- throw new Error('Not enough parameters.');
- } else if (this.overlays[name]) {
- - throw new Error('The overlay is already registered.');
- + if (this.active !== name) {
- + this.unregister(name);
- + } else {
- + throw new Error('The overlay is already registered and active.');
- + }
- }
-
-#### webViewerChange trigger on file upload dialog
-
-Whenever a file dialog is used (so with any `` on the page), the file is loaded into the pdf.js
-viewer. We don't want this behaviour, so comment it out.
-
- -window.addEventListener('change', function webViewerChange(evt) {
- +/*window.addEventListener('change', function webViewerChange(evt) {
- var files = evt.target.files;
- if (!files || files.length === 0) {
- return;
- @@ -17627,7 +17647,7 @@
- setAttribute('hidden', 'true');
- document.getElementById('download').setAttribute('hidden', 'true');
- document.getElementById('secondaryDownload').setAttribute('hidden', 'true');
- -}, true);
- +}, true);*/
-
-#### handleMouseWheel()
-
-The JavaScript pdf.js file might be loaded while the viewer isn't being displayed. This causes an error on mouse move.
-We need to check if the viewer is initialized, before handling the event.
-
- function handleMouseWheel(evt) {
- + // Ignore mousewheel event if pdfViewer isn't loaded
- + if (!PDFViewerApplication.pdfViewer) return;
-
-#### Load code for worker using AJAX if needed
-
-A [Web Worker](https://developer.mozilla.org/en-US/docs/Web/API/Web_Workers_API/Using_web_workers) can't use code from
-a same-origin domain. The CORS headers don't apply.
-
-he patch will cause pdf.js to first try to create the Worker the regular way, with a URL to the JavaScript source. If
-this fails, the source if fetched using AJAX and used to create an
-[object url](https://developer.mozilla.org/en-US/docs/Web/API/URL/createObjectURL). If this also fails, pdf.js will go
-onto it's last resort by calling `setupFakeWorker()`.
-
- + /**
- + * Needed because workers cannot load scripts outside of the current origin (as of firefox v45).
- + * This patch does require the worker script to be served with a (Access-Control-Allow-Origin: *) header
- + * @patch
- + */
- + var loadWorkerXHR = function(){
- + var url = PDFJS.workerSrc;
- + var jsdfd = PDFJS.createPromiseCapability();
- +
- + if (url.match(/^blob:/) || typeof URL.createObjectURL === 'undefined') {
- + jsdfd.reject(); // Failed loading using blob
- + }
- +
- + var xmlhttp;
- + xmlhttp = new XMLHttpRequest();
- +
- + xmlhttp.onreadystatechange = function(){
- + if (xmlhttp.readyState != 4) return;
- +
- + if (xmlhttp.status == 200) {
- + info('Loaded worker source through XHR.');
- + var workerJSBlob = new Blob([xmlhttp.responseText], { type: 'text/javascript' });
- + jsdfd.resolve(window.URL.createObjectURL(workerJSBlob));
- + } else {
- + jsdfd.reject();
- + }
- + };
- +
- + xmlhttp.open('GET', url, true);
- + xmlhttp.send();
- + return jsdfd.promise;
- + }
- +
- + var workerError = function() {
- + loadWorkerXHR().then(function(blob) {
- + PDFJS.workerSrc = blob;
- + loadWorker();
- + }, function() {
- + this.setupFakeWorker();
- + }.bind(this));
- + }.bind(this);
- +
-
- - if (!globalScope.PDFJS.disableWorker && typeof Worker !== 'undefined') {
- + var loadWorker = function() {
- var workerSrc = PDFJS.workerSrc;
- if (!workerSrc) {
- error('No PDFJS.workerSrc specified');
- @@ -3559,6 +3603,8 @@
- // Some versions of FF can't create a worker on localhost, see:
- // https://bugzilla.mozilla.org/show_bug.cgi?id=683280
- var worker = new Worker(workerSrc);
- + worker.onerror = workerError;
- +
- var messageHandler = new MessageHandler('main', worker);
- this.messageHandler = messageHandler;
-
- @@ -3589,11 +3635,16 @@
- return;
- } catch (e) {
- info('The worker has been disabled.');
- + workerError();
- }
- - }
- + }.bind(this);
- // Either workers are disabled, not supported or have thrown an exception.
- // Thus, we fallback to a faked worker.
- - this.setupFakeWorker();
- + if (!globalScope.PDFJS.disableWorker && typeof Worker !== 'undefined') {
- + loadWorker();
- + } else {
- + this.setupFakeWorker();
- + }
- }
-
diff --git a/build.sh b/build.sh
index ba82654..aa7d47f 100755
--- a/build.sh
+++ b/build.sh
@@ -12,17 +12,16 @@ if [[ ! -f "$source/build/pdf.js" ]]; then
exit 1
fi
-cat "$source/web/l10n.js" "$source/build/pdf.js" "$source/web/compatibility.js" "$source/web/debugger.js" "$source/web/viewer.js" > pdf.js
-patch pdf.js < pdf.js.patch
+cat "$source/web/l10n.js" "$source/build/pdf.js" "$source/web/debugger.js" "$source/web/viewer.js" > pdf.js
cp "$source/build/pdf.worker.js" .
-patch pdf.worker.js < pdf.worker.js.patch
-uglifycss "$source/web/viewer.css" > viewer.css
+cat "$source/web/viewer.html" | tr '\n' '\f' | sed -r 's/^.+
]*>//' | sed -r 's/<\/body>.+$/<\/pdfjs-wrapper>/' | tr '\f' '\n' > ./viewer.html
+
+node node_modules/uglifycss/uglifycss "$source/web/viewer.css" > viewer.css
node grunt/css-prefix.js viewer.css viewer.css pdfjs
+cat viewer-overwrites.css >> viewer.css;
-sed -r 's/url\((")?images\//url\(\1@pdfjsImagePath\//g' < "$source/web/viewer.css" | uglifycss > viewer.less
-node grunt/css-prefix.js viewer.less viewer.less pdfjs
+sed -r 's/url\((")?images\//url\(\1@pdfjsImagePath\//g' < viewer.css > viewer.less
cp "$source/web/cmaps/" "$source/web/images/" "$source/web/locale/" . -a
-
diff --git a/images/texture.png b/images/texture.png
index eb5ccb5..12bae83 100644
Binary files a/images/texture.png and b/images/texture.png differ
diff --git a/images/toolbarButton-menuArrows.png b/images/toolbarButton-menuArrows.png
index 306eb43..e50ca4e 100644
Binary files a/images/toolbarButton-menuArrows.png and b/images/toolbarButton-menuArrows.png differ
diff --git a/images/toolbarButton-viewAttachments@2x.png b/images/toolbarButton-viewAttachments@2x.png
index b979e52..4a5e2b8 100644
Binary files a/images/toolbarButton-viewAttachments@2x.png and b/images/toolbarButton-viewAttachments@2x.png differ
diff --git a/images/toolbarButton-viewThumbnail@2x.png b/images/toolbarButton-viewThumbnail@2x.png
index fb7db93..a0208b4 100644
Binary files a/images/toolbarButton-viewThumbnail@2x.png and b/images/toolbarButton-viewThumbnail@2x.png differ
diff --git a/images/treeitem-collapsed-rtl.png b/images/treeitem-collapsed-rtl.png
new file mode 100644
index 0000000..0496b35
Binary files /dev/null and b/images/treeitem-collapsed-rtl.png differ
diff --git a/images/treeitem-collapsed-rtl@2x.png b/images/treeitem-collapsed-rtl@2x.png
new file mode 100644
index 0000000..6ad9ebc
Binary files /dev/null and b/images/treeitem-collapsed-rtl@2x.png differ
diff --git a/images/treeitem-collapsed.png b/images/treeitem-collapsed.png
new file mode 100644
index 0000000..06d4d37
Binary files /dev/null and b/images/treeitem-collapsed.png differ
diff --git a/images/treeitem-collapsed@2x.png b/images/treeitem-collapsed@2x.png
new file mode 100644
index 0000000..eec1e58
Binary files /dev/null and b/images/treeitem-collapsed@2x.png differ
diff --git a/images/treeitem-expanded.png b/images/treeitem-expanded.png
new file mode 100644
index 0000000..c8d5573
Binary files /dev/null and b/images/treeitem-expanded.png differ
diff --git a/images/treeitem-expanded@2x.png b/images/treeitem-expanded@2x.png
new file mode 100644
index 0000000..3b3b610
Binary files /dev/null and b/images/treeitem-expanded@2x.png differ
diff --git a/locale/ach/viewer.properties b/locale/ach/viewer.properties
index 04cb71a..1b1f491 100644
--- a/locale/ach/viewer.properties
+++ b/locale/ach/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Mukato
next.title=Pot buk malubo
next_label=Malubo
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Pot buk:
-page_of=pi {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Pot buk
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=pi {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} me {{pagesCount}})
zoom_out.title=Jwik Matidi
zoom_out_label=Jwik Matidi
@@ -67,7 +70,11 @@ document_properties.title=Jami me gin acoya…
document_properties_label=Jami me gin acoya…
document_properties_file_name=Nying pwail:
document_properties_file_size=Dit pa pwail:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=Wiye:
document_properties_author=Ngat mucoyo:
@@ -75,6 +82,8 @@ document_properties_subject=Lok:
document_properties_keywords=Lok mapire tek:
document_properties_creation_date=Nino dwe me cwec:
document_properties_modification_date=Nino dwe me yub:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Lacwec:
document_properties_producer=Layub PDF:
@@ -82,13 +91,18 @@ document_properties_version=Kit PDF:
document_properties_page_count=Kwan me pot buk:
document_properties_close=Lor
+print_progress_message=Yubo coc me agoya…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Juki
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Lok gintic ma inget
toggle_sidebar_label=Lok gintic ma inget
-outline.title=Nyut rek pa gin acoya
-outline_label=Pek pa gin acoya
+document_outline_label=Pek pa gin acoya
attachments.title=Nyut twec
attachments_label=Twec
thumbs.title=Nyut cal
@@ -149,7 +163,7 @@ loading_error_indicator=Bal
loading_error=Bal otime kun cano PDF.
invalid_file_error=Pwail me PDF ma pe atir onyo obale woko.
missing_file_error=Pwail me PDF tye ka rem.
-unexpected_response_error=Lagam mape kigeno pa lapok tic
+unexpected_response_error=Lagam mape kigeno pa lapok tic.
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
@@ -159,9 +173,9 @@ text_annotation_type.alt=[{{type}} Lok angea manok]
password_label=Ket mung me donyo me yabo pwail me PDF man.
password_invalid=Mung me donyo pe atir. Tim ber i tem doki.
password_ok=OK
-password_cancel=Juk
+password_cancel=Juki
printing_not_supported=Ciko: Layeny ma pe teno goyo liweng.
printing_not_ready=Ciko: PDF pe ocane weng me agoya.
web_fonts_disabled=Kijuko dit pa coc me kakube woko: pe romo tic ki dit pa coc me PDF ma kiketo i kine.
-document_colors_disabled=Pe ki ye ki gin acoya me PDF me tic ki rangi gi kengi: 'Ye pot buk me yero rangi mamegi kengi' kijuko woko i layeny.
+document_colors_not_allowed=Pe ki yee ki gin acoya me PDF me tic ki rangi gi kengi: Kijuko woko “Yee pot buk me yero rangi mamegi kengi” ki i layeny.
diff --git a/locale/af/viewer.properties b/locale/af/viewer.properties
index d866b4d..2429e3c 100644
--- a/locale/af/viewer.properties
+++ b/locale/af/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Vorige
next.title=Volgende bladsy
next_label=Volgende
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Bladsy:
-page_of=van {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Bladsy
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=van {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} van {{pagesCount}})
zoom_out.title=Zoem uit
zoom_out_label=Zoem uit
@@ -67,7 +70,11 @@ document_properties.title=Dokumenteienskappe…
document_properties_label=Dokumenteienskappe…
document_properties_file_name=Lêernaam:
document_properties_file_size=Lêergrootte:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} kG ({{size_b}} grepe)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MG ({{size_b}} grepe)
document_properties_title=Titel:
document_properties_author=Outeur:
@@ -75,6 +82,8 @@ document_properties_subject=Onderwerp:
document_properties_keywords=Sleutelwoorde:
document_properties_creation_date=Skeppingsdatum:
document_properties_modification_date=Wysigingsdatum:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Skepper:
document_properties_producer=PDF-vervaardiger:
@@ -82,13 +91,19 @@ document_properties_version=PDF-weergawe:
document_properties_page_count=Aantal bladsye:
document_properties_close=Sluit
+print_progress_message=Berei tans dokument voor om te druk…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Kanselleer
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Sypaneel aan/af
toggle_sidebar_label=Sypaneel aan/af
-outline.title=Wys dokumentoorsig
-outline_label=Dokumentoorsig
+document_outline.title=Wys dokumentskema (dubbelklik om alle items oop/toe te vou)
+document_outline_label=Dokumentoorsig
attachments.title=Wys aanhegsels
attachments_label=Aanhegsels
thumbs.title=Wys duimnaels
@@ -155,7 +170,7 @@ unexpected_response_error=Onverwagse antwoord van bediener.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
-text_annotation_type.alt=[{{type}}-annotasie
+text_annotation_type.alt=[{{type}}-annotasie]
password_label=Gee die wagwoord om dié PDF-lêer mee te open.
password_invalid=Ongeldige wagwoord. Probeer gerus weer.
password_ok=OK
@@ -164,4 +179,4 @@ password_cancel=Kanselleer
printing_not_supported=Waarskuwing: Dié blaaier ondersteun nie drukwerk ten volle nie.
printing_not_ready=Waarskuwing: Die PDF is nog nie volledig gelaai vir drukwerk nie.
web_fonts_disabled=Webfonte is gedeaktiveer: kan nie PDF-fonte wat ingebed is, gebruik nie.
-document_colors_disabled=PDF-dokumente word nie toegelaat om hul eie kleure te gebruik nie: 'Laat bladsye toe om hul eie kleure te kies' is gedeaktiveer in die blaaier.
+document_colors_not_allowed=PDF-dokumente word nie toegelaat om hul eie kleure te gebruik nie: “Laat bladsye toe om hul eie kleure te kies” is gedeaktiveer in die blaaier.
diff --git a/locale/ak/viewer.properties b/locale/ak/viewer.properties
index 883c2ab..ed7b70f 100644
--- a/locale/ak/viewer.properties
+++ b/locale/ak/viewer.properties
@@ -18,12 +18,12 @@ previous_label=Ekyiri-baako
next.title=Krataafa a edi so baako
next_label=Dea-ɛ-di-so-baako
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Krataafa:
-page_of=wɔ {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
zoom_out.title=Zuum pue
zoom_out_label=Zuum ba abɔnten
@@ -45,15 +45,23 @@ bookmark_label=Seisei nhwɛ
# Document properties dialog box
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_title=Ti asɛm:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
+
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Sɔ anaaso dum saedbaa
toggle_sidebar_label=Sɔ anaaso dum saedbaa
-outline.title=Kyerɛ dɔkomɛnt bɔbea
-outline_label=Dɔkomɛnt bɔbea
+document_outline_label=Dɔkomɛnt bɔbea
thumbs.title=Kyerɛ mfoniwaa
thumbs_label=Mfoniwaa
findbar.title=Hu wɔ dɔkomɛnt no mu
@@ -102,6 +110,8 @@ page_scale_width=Krataafa tɛtrɛtɛ
page_scale_fit=Krataafa ehimtwa
page_scale_auto=Zuum otomatik
page_scale_actual=Kɛseyɛ ankasa
+# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
+# numerical scale value.
# Loading indicator messages
loading_error_indicator=Mfomso
@@ -115,9 +125,8 @@ missing_file_error=PDF fael no ayera.
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[{{type}} Tɛkst-nyiano]
password_ok=OK
-password_cancel=Twa-mu
printing_not_supported=Kɔkɔbɔ: Brawsa yi nnhyɛ daa mma prent ho kwan.
printing_not_ready=Kɔkɔbɔ: Wɔnntwee PDF fael no nyinara mmbaee ama wo ɛ tumi aprente.
web_fonts_disabled=Ɔedum wɛb-mfɔnt: nntumi mmfa PDF mfɔnt a wɔhyɛ mu nndi dwuma.
-document_colors_disabled=Wɔmma ho kwan sɛ PDF adɔkomɛnt de wɔn ara wɔn ahosu bɛdi dwuma: wɔ adum 'Ma ho kwan ma nkrataafa mpaw wɔn ara wɔn ahosu' wɔ brawsa yi mu.
+document_colors_not_allowed=Wɔmma ho kwan sɛ PDF adɔkomɛnt de wɔn ara wɔn ahosu bɛdi dwuma: wɔ adum 'Ma ho kwan ma nkrataafa mpaw wɔn ara wɔn ahosu' wɔ brawsa yi mu.
diff --git a/locale/an/viewer.properties b/locale/an/viewer.properties
index d9b7f66..65b6a60 100644
--- a/locale/an/viewer.properties
+++ b/locale/an/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Anterior
next.title=Pachina siguient
next_label=Siguient
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Pachina:
-page_of=de {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Pachina
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=de {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} de {{pagesCount}})
zoom_out.title=Achiquir
zoom_out_label=Achiquir
@@ -67,7 +70,11 @@ document_properties.title=Propiedatz d'o documento...
document_properties_label=Propiedatz d'o documento...
document_properties_file_name=Nombre de fichero:
document_properties_file_size=Grandaria d'o fichero:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=Titol:
document_properties_author=Autor:
@@ -75,6 +82,8 @@ document_properties_subject=Afer:
document_properties_keywords=Parolas clau:
document_properties_creation_date=Calendata de creyación:
document_properties_modification_date=Calendata de modificación:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Creyador:
document_properties_producer=Creyador de PDF:
@@ -82,13 +91,19 @@ document_properties_version=Versión de PDF:
document_properties_page_count=Numero de pachinas:
document_properties_close=Zarrar
+print_progress_message=Se ye preparando la documentación pa imprentar…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Cancelar
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Amostrar u amagar a barra lateral
toggle_sidebar_label=Amostrar a barra lateral
-outline.title=Amostrar o esquema d'o documento
-outline_label=Esquema d'o documento
+document_outline.title=Amostrar esquema d'o documento (fer doble clic pa expandir/compactar totz los items)
+document_outline_label=Esquema d'o documento
attachments.title=Amostrar os adchuntos
attachments_label=Adchuntos
thumbs.title=Amostrar as miniaturas
@@ -164,4 +179,4 @@ password_cancel=Cancelar
printing_not_supported=Pare cuenta: Iste navegador no maneya totalment as impresions.
printing_not_ready=Aviso: Encara no se ha cargau completament o PDF ta imprentar-lo.
web_fonts_disabled=As fuents web son desactivadas: no se puet incrustar fichers PDF.
-document_colors_disabled=Os documentos PDF no pueden fer servir as suyas propias colors: 'Permitir que as pachinas triguen as suyas propias colors' ye desactivau en o navegador.
+document_colors_not_allowed=Los documentos PDF no pueden fer servir las suyas propias colors: 'Permitir que as pachinas triguen as suyas propias colors' ye desactivau en o navegador.
diff --git a/locale/ar/viewer.properties b/locale/ar/viewer.properties
index d114bbb..ab62e35 100644
--- a/locale/ar/viewer.properties
+++ b/locale/ar/viewer.properties
@@ -18,12 +18,15 @@ previous_label=السابقة
next.title=الصفحة التالية
next_label=التالية
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=صفحة:
-page_of=من {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=صفحة
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=من {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} من {{pagesCount}})
zoom_out.title=بعّد
zoom_out_label=بعّد
@@ -67,7 +70,11 @@ document_properties.title=خصائص المستند…
document_properties_label=خصائص المستند…
document_properties_file_name=اسم الملف:
document_properties_file_size=حجم الملف:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} ك.بايت ({{size_b}} بايت)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} م.بايت ({{size_b}} بايت)
document_properties_title=العنوان:
document_properties_author=المؤلف:
@@ -75,6 +82,8 @@ document_properties_subject=الموضوع:
document_properties_keywords=الكلمات الأساسية:
document_properties_creation_date=تاريخ الإنشاء:
document_properties_modification_date=تاريخ التعديل:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}، {{time}}
document_properties_creator=المنشئ:
document_properties_producer=منتج PDF:
@@ -82,13 +91,19 @@ document_properties_version=إصدارة PDF:
document_properties_page_count=عدد الصفحات:
document_properties_close=أغلق
+print_progress_message=يُحضّر المستند للطباعة…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}٪
+print_progress_close=ألغِ
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=بدّل الشريط الجانبي
toggle_sidebar_label=بدّل الشريط الجانبي
-outline.title=اعرض مخطط المستند
-outline_label=مخطط المستند
+document_outline.title=اعرض فهرس المستند (نقر مزدوج لتمديد أو تقليص كل العناصر)
+document_outline_label=مخطط المستند
attachments.title=اعرض المرفقات
attachments_label=المُرفقات
thumbs.title=اعرض مُصغرات
@@ -164,4 +179,4 @@ password_cancel=ألغِ
printing_not_supported=تحذير: لا يدعم هذا المتصفح الطباعة بشكل كامل.
printing_not_ready=تحذير: ملف PDF لم يُحمّل كاملًا للطباعة.
web_fonts_disabled=خطوط الوب مُعطّلة: تعذّر استخدام خطوط PDF المُضمّنة.
-document_colors_disabled=ليس مسموحًا لملفات PDF باستخدام ألوانها الخاصة: خيار 'اسمح للصفحات باختيار ألوانها الخاصة' ليس مُفعّلًا في المتصفح.
+document_colors_not_allowed=ليس مسموحًا لملفات PDF باستخدام ألوانها الخاصة: خيار ”اسمح للصفحات باختيار ألوانها الخاصة“ ليس مُفعّلًا في المتصفح.
diff --git a/locale/as/viewer.properties b/locale/as/viewer.properties
index a0d637f..f0e4d9e 100644
--- a/locale/as/viewer.properties
+++ b/locale/as/viewer.properties
@@ -18,12 +18,12 @@ previous_label=পূৰ্বৱৰ্তী
next.title=পৰৱৰ্তী পৃষ্ঠা
next_label=পৰৱৰ্তী
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=পৃষ্ঠা:
-page_of=ৰ {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
zoom_out.title=জুম আউট
zoom_out_label=জুম আউট
@@ -67,7 +67,11 @@ document_properties.title=দস্তাবেজৰ বৈশিষ্ট্
document_properties_label=দস্তাবেজৰ বৈশিষ্ট্যসমূহ…
document_properties_file_name=ফাইল নাম:
document_properties_file_size=ফাইলৰ আকাৰ:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=শীৰ্ষক:
document_properties_author=লেখক:
@@ -75,6 +79,8 @@ document_properties_subject=বিষয়:
document_properties_keywords=কিৱাৰ্ডসমূহ:
document_properties_creation_date=সৃষ্টিৰ তাৰিখ:
document_properties_modification_date=পৰিবৰ্তনৰ তাৰিখ:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=সৃষ্টিকৰ্তা:
document_properties_producer=PDF উৎপাদক:
@@ -82,13 +88,15 @@ document_properties_version=PDF সংস্কৰণ:
document_properties_page_count=পৃষ্ঠাৰ গণনা:
document_properties_close=বন্ধ কৰক
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=কাষবাৰ টগল কৰক
toggle_sidebar_label=কাষবাৰ টগল কৰক
-outline.title=দস্তাবেজ আউটলাইন দেখুৱাওক
-outline_label=দস্তাবেজ আউটলাইন
+document_outline_label=দস্তাবেজ আউটলাইন
attachments.title=এটাচমেন্টসমূহ দেখুৱাওক
attachments_label=এটাচমেন্টসমূহ
thumbs.title=থাম্বনেইলসমূহ দেখুৱাওক
@@ -140,6 +148,8 @@ page_scale_width=পৃষ্ঠাৰ প্ৰস্থ
page_scale_fit=পৃষ্ঠা খাপ
page_scale_auto=স্বচালিত জুম
page_scale_actual=প্ৰকৃত আকাৰ
+# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
+# numerical scale value.
# Loading indicator messages
loading_error_indicator=ত্ৰুটি
@@ -156,9 +166,8 @@ text_annotation_type.alt=[{{type}} টোকা]
password_label=এই PDF ফাইল খোলিবলৈ পাছৱৰ্ড সুমুৱাওক।
password_invalid=অবৈধ পাছৱৰ্ড। অনুগ্ৰহ কৰি পুনৰ চেষ্টা কৰক।
password_ok=ঠিক আছে
-password_cancel=বাতিল কৰক
printing_not_supported=সতৰ্কবাৰ্তা: প্ৰিন্টিং এই ব্ৰাউছাৰ দ্বাৰা সম্পূৰ্ণভাৱে সমৰ্থিত নহয়।
printing_not_ready=সতৰ্কবাৰ্তা: PDF প্ৰিন্টিংৰ বাবে সম্পূৰ্ণভাৱে ল'ডেড নহয়।
web_fonts_disabled=ৱেব ফন্টসমূহ অসামৰ্থবান কৰা আছে: অন্তৰ্ভুক্ত PDF ফন্টসমূহ ব্যৱহাৰ কৰিবলে অক্ষম।
-document_colors_disabled=PDF দস্তাবেজসমূহৰ সিহতৰ নিজস্ব ৰঙ ব্যৱহাৰ কৰাৰ অনুমতি নাই: ব্ৰাউছাৰত 'পৃষ্ঠাসমূহক সিহতৰ নিজস্ব ৰঙ নিৰ্বাচন কৰাৰ অনুমতি দিয়ক' অসামৰ্থবান কৰা আছে।
+document_colors_not_allowed=PDF দস্তাবেজসমূহৰ সিহতৰ নিজস্ব ৰঙ ব্যৱহাৰ কৰাৰ অনুমতি নাই: ব্ৰাউছাৰত 'পৃষ্ঠাসমূহক সিহতৰ নিজস্ব ৰঙ নিৰ্বাচন কৰাৰ অনুমতি দিয়ক' অসামৰ্থবান কৰা আছে।
diff --git a/locale/ast/viewer.properties b/locale/ast/viewer.properties
index 2346c54..8c82496 100644
--- a/locale/ast/viewer.properties
+++ b/locale/ast/viewer.properties
@@ -1,111 +1,182 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
-previous.title = Páxina anterior
-previous_label = Anterior
-next.title = Páxina siguiente
-next_label = Siguiente
-page_label = Páxina:
-page_of = de {{pageCount}}
-zoom_out.title = Reducir
-zoom_out_label = Reducir
-zoom_in.title = Aumentar
-zoom_in_label = Aumentar
-zoom.title = Tamañu
-print.title = Imprentar
-print_label = Imprentar
-open_file.title = Abrir ficheru
-open_file_label = Abrir
-download.title = Descargar
-download_label = Descargar
-bookmark.title = Vista actual (copiar o abrir nuna nueva ventana)
-bookmark_label = Vista actual
-outline.title = Amosar l'esquema del documentu
-outline_label = Esquema del documentu
-thumbs.title = Amosar miniatures
-thumbs_label = Miniatures
-thumb_page_title = Páxina {{page}}
-thumb_page_canvas = Miniatura de la páxina {{page}}
-error_more_info = Más información
-error_less_info = Menos información
-error_close = Zarrar
-error_message = Mensaxe: {{message}}
-error_stack = Pila: {{stack}}
-error_file = Ficheru: {{file}}
-error_line = Llinia: {{line}}
-rendering_error = Hebo un fallu al renderizar la páxina.
-page_scale_width = Anchor de la páxina
-page_scale_fit = Axuste de la páxina
-page_scale_auto = Tamañu automáticu
-page_scale_actual = Tamañu actual
-loading_error_indicator = Fallu
-loading_error = Hebo un fallu al cargar el PDF.
-printing_not_supported = Avisu: Imprentar nun tien sofitu téunicu completu nesti navegador.
-presentation_mode_label =
-presentation_mode.title =
-page_rotate_cw.label =
-page_rotate_ccw.label =
-last_page.label = Dir a la cabera páxina
-invalid_file_error = Ficheru PDF inválidu o corruptu.
-first_page.label = Dir a la primer páxina
-findbar_label = Guetar
-findbar.title = Guetar nel documentu
-find_previous_label = Anterior
-find_previous.title = Alcontrar l'anterior apaición de la fras
-find_not_found = Frase non atopada
-find_next_label = Siguiente
-find_next.title = Alcontrar la siguiente apaición d'esta fras
-find_match_case_label = Coincidencia de mayús./minús.
-find_label = Guetar:
-find_highlight = Remarcar toos
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Páxina anterior
+previous_label=Anterior
+next.title=Páxina siguiente
+next_label=Siguiente
+
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Páxina
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=de {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} de {{pagesCount}})
+
+zoom_out.title=Reducir
+zoom_out_label=Reducir
+zoom_in.title=Aumentar
+zoom_in_label=Aumentar
+zoom.title=Tamañu
+presentation_mode.title=
+presentation_mode_label=
+open_file.title=Abrir ficheru
+open_file_label=Abrir
+print.title=Imprentar
+print_label=Imprentar
+download.title=Descargar
+download_label=Descargar
+bookmark.title=Vista actual (copiar o abrir nuna nueva ventana)
+bookmark_label=Vista actual
+
+# Secondary toolbar and context menu
+tools.title=Ferramientes
+tools_label=Ferramientes
+first_page.title=Dir a la primer páxina
+first_page.label=Dir a la primer páxina
+first_page_label=Dir a la primer páxina
+last_page.title=Dir a la postrer páxina
+last_page.label=Dir a la cabera páxina
+last_page_label=Dir a la postrer páxina
+page_rotate_cw.title=Xirar en sen horariu
+page_rotate_cw.label=
+page_rotate_cw_label=Xirar en sen horariu
+page_rotate_ccw.title=Xirar en sen antihorariu
+page_rotate_ccw.label=
+page_rotate_ccw_label=Xirar en sen antihorariu
+
+hand_tool_enable.title=Activar ferramienta mano
+hand_tool_enable_label=Activar ferramienta mano
+hand_tool_disable.title=Desactivar ferramienta mano
+hand_tool_disable_label=Desactivar ferramienta mano
+
+# Document properties dialog box
+document_properties.title=Propiedaes del documentu…
+document_properties_label=Propiedaes del documentu…
+document_properties_file_name=Nome de ficheru:
+document_properties_file_size=Tamañu de ficheru:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
+document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=Títulu:
+document_properties_author=Autor:
+document_properties_subject=Asuntu:
+document_properties_keywords=Pallabres clave:
+document_properties_creation_date=Data de creación:
+document_properties_modification_date=Data de modificación:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Creador:
+document_properties_producer=Productor PDF:
+document_properties_version=Versión PDF:
+document_properties_page_count=Númberu de páxines:
+document_properties_close=Zarrar
+
+print_progress_message=Tresnando documentu pa imprentar…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Encaboxar
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Camudar barra llateral
+toggle_sidebar_label=Camudar barra llateral
+document_outline.title=Amosar esquema del documentu (duble clic pa espander/contrayer tolos elementos)
+document_outline_label=Esquema del documentu
+attachments.title=Amosar axuntos
+attachments_label=Axuntos
+thumbs.title=Amosar miniatures
+thumbs_label=Miniatures
+findbar.title=Guetar nel documentu
+findbar_label=Guetar
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Páxina {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Miniatura de la páxina {{page}}
+
+# Find panel button title and messages
+find_label=Guetar:
+find_previous.title=Alcontrar l'anterior apaición de la fras
+find_previous_label=Anterior
+find_next.title=Alcontrar la siguiente apaición d'esta fras
+find_next_label=Siguiente
+find_highlight=Remarcar toos
+find_match_case_label=Coincidencia de mayús./minús.
find_reached_top=Algamóse'l principiu del documentu, siguir dende'l final
find_reached_bottom=Algamóse'l final del documentu, siguir dende'l principiu
-web_fonts_disabled = Les fontes web tán desactivaes: ye imposible usar les fontes PDF embebíes.
-toggle_sidebar_label = Camudar barra llateral
-toggle_sidebar.title = Camudar barra llateral
-missing_file_error = Nun hai ficheru PDF.
-error_version_info = PDF.js v{{version}} (build: {{build}})
-printing_not_ready = Avisu: Esti PDF nun se cargó completamente pa poder imprentase.
-text_annotation_type.alt = [Anotación {{type}}]
-document_colors_disabled = Los documentos PDF nun tienen permitío usar los sos propios colores: 'Permitir a les páxines elexir los sos propios colores' ta desactivao nel navegador.
-tools_label = Ferramientes
-tools.title = Ferramientes
-password_ok = Aceutar
-password_label = Introduz la contraseña p'abrir esti ficheru PDF
-password_invalid = Contraseña non válida. Vuelvi a intentalo.
-password_cancel = Encaboxar
-page_rotate_cw_label = Xirar en sen horariu
-page_rotate_cw.title = Xirar en sen horariu
-page_rotate_ccw_label = Xirar en sen antihorariu
-page_rotate_ccw.title = Xirar en sen antihorariu
-last_page_label = Dir a la postrer páxina
-last_page.title = Dir a la postrer páxina
-hand_tool_enable_label = Activar ferramienta mano
-hand_tool_enable.title = Activar ferramienta mano
-hand_tool_disable_label = Desactivar ferramienta mano
-hand_tool_disable.title = Desactivar ferramienta mano
-first_page_label = Dir a la primer páxina
-first_page.title = Dir a la primer páxina
-document_properties_version = Versión PDF:
-document_properties_title = Títulu:
-document_properties_subject = Asuntu:
-document_properties_producer = Productor PDF:
-document_properties_page_count = Númberu de páxines:
-document_properties_modification_date = Data de modificación:
-document_properties_mb = {{size_mb}} MB ({{size_b}} bytes)
-document_properties_label = Propiedaes del documentu…
-document_properties_keywords = Pallabres clave:
-document_properties_kb = {{size_kb}} KB ({{size_b}} bytes)
-document_properties_file_size = Tamañu de ficheru:
-document_properties_file_name = Nome de ficheru:
-document_properties_date_string = {{date}}, {{time}}
-document_properties_creator = Creador:
-document_properties_creation_date = Data de creación:
-document_properties_close = Zarrar
-document_properties_author = Autor:
-document_properties.title = Propiedaes del documentu…
-attachments_label = Axuntos
-attachments.title = Amosar axuntos
-unexpected_response_error = Rempuesta inesperada del sirvidor.
-page_scale_percent = {{scale}}%
+find_not_found=Frase non atopada
+
+# Error panel labels
+error_more_info=Más información
+error_less_info=Menos información
+error_close=Zarrar
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Mensaxe: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Pila: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Ficheru: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Llinia: {{line}}
+rendering_error=Hebo un fallu al renderizar la páxina.
+
+# Predefined zoom values
+page_scale_width=Anchor de la páxina
+page_scale_fit=Axuste de la páxina
+page_scale_auto=Tamañu automáticu
+page_scale_actual=Tamañu actual
+# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
+# numerical scale value.
+page_scale_percent={{scale}}%
+
+# Loading indicator messages
+loading_error_indicator=Fallu
+loading_error=Hebo un fallu al cargar el PDF.
+invalid_file_error=Ficheru PDF inválidu o corruptu.
+missing_file_error=Nun hai ficheru PDF.
+unexpected_response_error=Rempuesta inesperada del sirvidor.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[Anotación {{type}}]
+password_label=Introduz la contraseña p'abrir esti ficheru PDF
+password_invalid=Contraseña non válida. Vuelvi a intentalo.
+password_ok=Aceutar
+password_cancel=Encaboxar
+
+printing_not_supported=Alvertencia: La imprentación entá nun ta sofitada dafechu nesti restolador.
+printing_not_ready=Avisu: Esti PDF nun se cargó completamente pa poder imprentase.
+web_fonts_disabled=Les fontes web tán desactivaes: ye imposible usar les fontes PDF embebíes.
+document_colors_not_allowed=Los documentos PDF nun tienen permisu pa usar les sos colores: «Permitir que les páxines escueyan les sos colores» ta desactivao nel restolador.
diff --git a/locale/az/viewer.properties b/locale/az/viewer.properties
index ef77c64..c1f3a93 100644
--- a/locale/az/viewer.properties
+++ b/locale/az/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Əvvəlkini tap
next.title=Növbəti səhifə
next_label=İrəli
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Səhifə:
-page_of=/ {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Səhifə
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=/ {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} / {{pagesCount}})
zoom_out.title=Uzaqlaş
zoom_out_label=Uzaqlaş
@@ -67,7 +70,11 @@ document_properties.title=Sənəd xüsusiyyətləri…
document_properties_label=Sənəd xüsusiyyətləri…
document_properties_file_name=Fayl adı:
document_properties_file_size=Fayl ölçüsü:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bayt)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bayt)
document_properties_title=Başlık:
document_properties_author=Müəllif:
@@ -75,6 +82,8 @@ document_properties_subject=Mövzu:
document_properties_keywords=Açar sözlər:
document_properties_creation_date=Yaradılış Tarixi :
document_properties_modification_date=Dəyişdirilmə Tarixi :
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Yaradan:
document_properties_producer=PDF yaradıcısı:
@@ -82,19 +91,25 @@ document_properties_version=PDF versiyası:
document_properties_page_count=Səhifə sayı:
document_properties_close=Qapat
+print_progress_message=Sənəd çap üçün hazırlanır…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Ləğv et
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Yan Paneli Aç/Bağla
toggle_sidebar_label=Yan Paneli Aç/Bağla
-outline.title=Sənəd struktunu göstər
-outline_label=Sənəd strukturu
+document_outline.title=Sənədin eskizini göstər (bütün bəndləri açmaq/yığmaq üçün iki dəfə klikləyin)
+document_outline_label=Sənəd strukturu
attachments.title=Bağlamaları göstər
attachments_label=Bağlamalar
thumbs.title=Kiçik şəkilləri göstər
thumbs_label=Kiçik şəkillər
findbar.title=Sənəddə Tap
-findbar_label=Axtar
+findbar_label=Tap
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
@@ -158,10 +173,10 @@ unexpected_response_error=Gözlənilməz server cavabı.
text_annotation_type.alt=[{{type}} Annotasiyası]
password_label=Bu PDF faylı açmaq üçün şifrəni daxil edin.
password_invalid=Şifrə yanlışdır. Bir daha sınayın.
-password_ok=OK
+password_ok=Tamam
password_cancel=Ləğv et
printing_not_supported=Xəbərdarlıq: Çap bu səyyah tərəfindən tam olaraq dəstəklənmir.
printing_not_ready=Xəbərdarlıq: PDF çap üçün tam yüklənməyib.
web_fonts_disabled=Web Şriftlər söndürülüb: yerləşdirilmiş PDF şriftlərini istifadə etmək mümkün deyil.
-document_colors_disabled=PDF sənədlərə öz rənglərini işlətməyə icazə verilmir: 'Səhifələrə öz rənglərini istifadə etməyə icazə vermə' səyyahda söndürülüb.
+document_colors_not_allowed=PDF sənədlərə öz rənglərini işlətməyə icazə verilmir: “Səhifələrə öz rənglərini istifadə etməyə icazə ver”mə səyyahda söndürülüb.
diff --git a/locale/be/viewer.properties b/locale/be/viewer.properties
index 031b1df..049e858 100644
--- a/locale/be/viewer.properties
+++ b/locale/be/viewer.properties
@@ -1,105 +1,182 @@
-previous.title = Папярэдняя старонка
-previous_label = Папярэдняя
-next.title = Наступная старонка
-next_label = Наступная
-page_label = Старонка:
-page_of = з {{pageCount}}
-zoom_out.title = Паменшыць
-zoom_out_label = Паменшыць
-zoom_in.title = Павялічыць
-zoom_in_label = Павялічыць
-zoom.title = Павялічэнне тэксту
-presentation_mode.title = Пераключыцца ў рэжым паказу
-presentation_mode_label = Рэжым паказу
-open_file.title = Адчыніць файл
-open_file_label = Адчыніць
-print.title = Друкаваць
-print_label = Друкаваць
-download.title = Загрузка
-download_label = Загрузка
-bookmark.title = Цяперашняя праява (скапіяваць або адчыніць у новым акне)
-bookmark_label = Цяперашняя праява
-tools.title = Прылады
-tools_label = Прылады
-first_page.title = Перайсці на першую старонку
-first_page.label = Перайсці на першую старонку
-first_page_label = Перайсці на першую старонку
-last_page.title = Перайсці на апошнюю старонку
-last_page.label = Перайсці на апошнюю старонку
-last_page_label = Перайсці на апошнюю старонку
-page_rotate_cw.title = Павярнуць па гадзіннікавай стрэлцы
-page_rotate_cw.label = Павярнуць па гадзіннікавай стрэлцы
-page_rotate_cw_label = Павярнуць па гадзіннікавай стрэлцы
-page_rotate_ccw.title = Павярнуць супраць гадзіннікавай стрэлкі
-page_rotate_ccw.label = Павярнуць супраць гадзіннікавай стрэлкі
-page_rotate_ccw_label = Павярнуць супраць гадзіннікавай стрэлкі
-hand_tool_enable.title = Дазволіць ручную прыладу
-hand_tool_enable_label = Дазволіць ручную прыладу
-hand_tool_disable.title = Забараніць ручную прыладу
-hand_tool_disable_label = Забараніць ручную прыладу
-document_properties.title = Уласцівасці дакумента…
-document_properties_label = Уласцівасці дакумента…
-document_properties_file_name = Назва файла:
-document_properties_file_size = Памер файла:
-document_properties_kb = {{size_kb}} КБ ({{size_b}} байт)
-document_properties_mb = {{size_mb}} МБ ({{size_b}} байт)
-document_properties_title = Загаловак:
-document_properties_author = Аўтар:
-document_properties_subject = Тэма:
-document_properties_keywords = Ключавыя словы:
-document_properties_creation_date = Дата стварэння:
-document_properties_modification_date = Дата змянення:
-document_properties_date_string = {{date}}, {{time}}
-document_properties_creator = Стваральнік:
-document_properties_producer = Вырабнік PDF:
-document_properties_version = Версія PDF:
-document_properties_page_count = Колькасць старонак:
-document_properties_close = Зачыніць
-toggle_sidebar.title = Пераключэнне палічкі
-toggle_sidebar_label = Пераключыць палічку
-outline.title = Паказ будовы дакумента
-outline_label = Будова дакумента
-attachments.title = Паказаць далучэнні
-attachments_label = Далучэнні
-thumbs.title = Паказ накідаў
-thumbs_label = Накіды
-findbar.title = Пошук у дакуменце
-findbar_label = Знайсці
-thumb_page_title = Старонка {{page}}
-thumb_page_canvas = Накід старонкі {{page}}
-find_label = Пошук:
-find_previous.title = Знайсці папярэдні выпадак выразу
-find_previous_label = Папярэдні
-find_next.title = Знайсці наступны выпадак выразу
-find_next_label = Наступны
-find_highlight = Падфарбаваць усе
-find_match_case_label = Адрозніваць вялікія/малыя літары
-find_reached_top = Дасягнуты пачатак дакумента, працяг з канца
-find_reached_bottom = Дасягнуты канец дакумента, працяг з пачатку
-find_not_found = Выраз не знойдзены
-error_more_info = Падрабязней
-error_less_info = Сцісла
-error_close = Закрыць
-error_version_info = PDF.js в{{version}} (пабудова: {{build}})
-error_message = Паведамленне: {{message}}
-error_stack = Стос: {{stack}}
-error_file = Файл: {{file}}
-error_line = Радок: {{line}}
-rendering_error = Здарылася памылка падчас адлюстравання старонкі.
-page_scale_width = Шырыня старонкі
-page_scale_fit = Уцісненне старонкі
-page_scale_auto = Самастойнае павялічэнне
-page_scale_actual = Сапраўдны памер
-loading_error_indicator = Памылка
-loading_error = Здарылася памылка падчас загрузкі PDF.
-invalid_file_error = Няспраўны або пашкоджаны файл PDF.
-missing_file_error = Адсутны файл PDF.
-text_annotation_type.alt = [{{type}} Annotation]
-password_label = Увядзіце пароль, каб адчыніць гэты файл PDF.
-password_invalid = Крывы пароль. Паспрабуйце зноў.
-password_ok = Добра
-password_cancel = Скасаваць
-printing_not_supported = Папярэджанне: друк не падтрымлівацца цалкам гэтым азіральнікам.
-printing_not_ready = Увага: PDF не сцягнуты цалкам для друкавання.
-web_fonts_disabled = Шрыфты Сеціва забаронены: немгчыма ўжываць укладзеныя шрыфты PDF.
-document_colors_disabled = Дакументам PDF не дазволена карыстацца сваімі ўласнымі колерамі: 'Дазволіць старонкам выбіраць свае ўласныя колеры' абяздзейнена ў азіральніку.
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Папярэдняя старонка
+previous_label=Папярэдняя
+next.title=Наступная старонка
+next_label=Наступная
+
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Старонка
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=з {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} з {{pagesCount}})
+
+zoom_out.title=Паменшыць
+zoom_out_label=Паменшыць
+zoom_in.title=Павялічыць
+zoom_in_label=Павялічыць
+zoom.title=Павялічэнне тэксту
+presentation_mode.title=Пераключыцца ў рэжым паказу
+presentation_mode_label=Рэжым паказу
+open_file.title=Адкрыць файл
+open_file_label=Адкрыць
+print.title=Друкаваць
+print_label=Друкаваць
+download.title=Загрузка
+download_label=Загрузка
+bookmark.title=Цяперашняя праява (скапіяваць або адчыніць у новым акне)
+bookmark_label=Цяперашняя праява
+
+# Secondary toolbar and context menu
+tools.title=Прылады
+tools_label=Прылады
+first_page.title=Перайсці на першую старонку
+first_page.label=Перайсці на першую старонку
+first_page_label=Перайсці на першую старонку
+last_page.title=Перайсці на апошнюю старонку
+last_page.label=Перайсці на апошнюю старонку
+last_page_label=Перайсці на апошнюю старонку
+page_rotate_cw.title=Павярнуць па сонцу
+page_rotate_cw.label=Павярнуць па сонцу
+page_rotate_cw_label=Павярнуць па сонцу
+page_rotate_ccw.title=Павярнуць супраць сонца
+page_rotate_ccw.label=Павярнуць супраць сонца
+page_rotate_ccw_label=Павярнуць супраць сонца
+
+hand_tool_enable.title=Дазволіць ручную прыладу
+hand_tool_enable_label=Дазволіць ручную прыладу
+hand_tool_disable.title=Забараніць ручную прыладу
+hand_tool_disable_label=Забараніць ручную прыладу
+
+# Document properties dialog box
+document_properties.title=Уласцівасці дакумента…
+document_properties_label=Уласцівасці дакумента…
+document_properties_file_name=Назва файла:
+document_properties_file_size=Памер файла:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
+document_properties_kb={{size_kb}} КБ ({{size_b}} байт)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
+document_properties_mb={{size_mb}} МБ ({{size_b}} байт)
+document_properties_title=Загаловак:
+document_properties_author=Аўтар:
+document_properties_subject=Тэма:
+document_properties_keywords=Ключавыя словы:
+document_properties_creation_date=Дата стварэння:
+document_properties_modification_date=Дата змянення:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Стваральнік:
+document_properties_producer=Вырабнік PDF:
+document_properties_version=Версія PDF:
+document_properties_page_count=Колькасць старонак:
+document_properties_close=Закрыць
+
+print_progress_message=Падрыхтоўка дакумента да друку…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Скасаваць
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Пераключэнне палічкі
+toggle_sidebar_label=Пераключыць палічку
+document_outline.title=Паказаць структуру дакумента (двайная пстрычка, каб разгарнуць /згарнуць усе элементы)
+document_outline_label=Структура дакумента
+attachments.title=Паказаць далучэнні
+attachments_label=Далучэнні
+thumbs.title=Паказ мініяцюр
+thumbs_label=Мініяцюры
+findbar.title=Пошук у дакуменце
+findbar_label=Знайсці
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Старонка {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Мініяцюра старонкі {{page}}
+
+# Find panel button title and messages
+find_label=Пошук:
+find_previous.title=Знайсці папярэдні выпадак выразу
+find_previous_label=Папярэдні
+find_next.title=Знайсці наступны выпадак выразу
+find_next_label=Наступны
+find_highlight=Падфарбаваць усе
+find_match_case_label=Адрозніваць вялікія/малыя літары
+find_reached_top=Дасягнуты пачатак дакумента, працяг з канца
+find_reached_bottom=Дасягнуты канец дакумента, працяг з пачатку
+find_not_found=Выраз не знойдзены
+
+# Error panel labels
+error_more_info=Падрабязней
+error_less_info=Сцісла
+error_close=Закрыць
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js в{{version}} (пабудова: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Паведамленне: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Стос: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Файл: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Радок: {{line}}
+rendering_error=Здарылася памылка падчас адлюстравання старонкі.
+
+# Predefined zoom values
+page_scale_width=Шырыня старонкі
+page_scale_fit=Уцісненне старонкі
+page_scale_auto=Самастойнае павялічэнне
+page_scale_actual=Сапраўдны памер
+# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
+# numerical scale value.
+page_scale_percent={{scale}}%
+
+# Loading indicator messages
+loading_error_indicator=Памылка
+loading_error=Здарылася памылка падчас загрузкі PDF.
+invalid_file_error=Няспраўны або пашкоджаны файл PDF.
+missing_file_error=Адсутны файл PDF.
+unexpected_response_error=Нечаканы адказ сервера.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} Annotation]
+password_label=Увядзіце пароль, каб адкрыць гэты файл PDF.
+password_invalid=Нядзейсны пароль. Паспрабуйце зноў.
+password_ok=Добра
+password_cancel=Скасаваць
+
+printing_not_supported=Папярэджанне: друк не падтрымліваецца цалкам гэтым браўзерам.
+printing_not_ready=Увага: PDF не сцягнуты цалкам для друкавання.
+web_fonts_disabled=Шрыфты Сеціва забаронены: немагчыма ўжываць укладзеныя шрыфты PDF.
+document_colors_not_allowed=PDF-дакументам не дазволена выкарыстоўваць свае колеры: у браўзеры адключаны параметр "Дазволіць вэб-сайтам выкарыстоўваць свае колеры".
diff --git a/locale/bg/viewer.properties b/locale/bg/viewer.properties
index 80059f5..80dc6d5 100644
--- a/locale/bg/viewer.properties
+++ b/locale/bg/viewer.properties
@@ -18,17 +18,20 @@ previous_label=Предишна
next.title=Следваща страница
next_label=Следваща
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Страница:
-page_of=от {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Страница
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=от {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} от {{pagesCount}})
-zoom_out.title=Отдалечаване
-zoom_out_label=Отдалечаване
-zoom_in.title=Приближаване
-zoom_in_label=Приближаване
+zoom_out.title=Намаляване
+zoom_out_label=Намаляване
+zoom_in.title=Увеличаване
+zoom_in_label=Увеличаване
zoom.title=Мащабиране
presentation_mode.title=Превключване към режим на представяне
presentation_mode_label=Режим на представяне
@@ -67,7 +70,11 @@ document_properties.title=Свойства на документа…
document_properties_label=Свойства на документа…
document_properties_file_name=Име на файл:
document_properties_file_size=Големина на файл:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} КБ ({{size_b}} байта)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} МБ ({{size_b}} байта)
document_properties_title=Заглавие:
document_properties_author=Автор:
@@ -75,6 +82,8 @@ document_properties_subject=Тема:
document_properties_keywords=Ключови думи:
document_properties_creation_date=Дата на създаване:
document_properties_modification_date=Дата на промяна:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Създател:
document_properties_producer=PDF произведен от:
@@ -82,13 +91,19 @@ document_properties_version=PDF версия:
document_properties_page_count=Брой страници:
document_properties_close=Затваряне
+print_progress_message=Подготвяне на документа за отпечатване…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Отказ
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Превключване на страничната лента
toggle_sidebar_label=Превключване на страничната лента
-outline.title=Показване на очертанията на документа
-outline_label=Очертание на документа
+document_outline.title=Показване на структурата на документа (двукратно щракване за свиване/разгъване на всичко)
+document_outline_label=Структура на документа
attachments.title=Показване на притурките
attachments_label=Притурки
thumbs.title=Показване на миниатюрите
@@ -106,11 +121,11 @@ thumb_page_canvas=Миниатюра на страница {{page}}
# Find panel button title and messages
find_label=Търсене:
-find_previous.title=Намиране на предното споменаване на тази фраза
+find_previous.title=Намиране на предишно съвпадение на фразата
find_previous_label=Предишна
-find_next.title=Намиране на следващото споменаване на тази фраза
+find_next.title=Намиране на следващо съвпадение на фразата
find_next_label=Следваща
-find_highlight=Маркирай всички
+find_highlight=Открояване на всички
find_match_case_label=Точно съвпадения
find_reached_top=Достигнато е началото на документа, продължаване от края
find_reached_bottom=Достигнат е краят на документа, продължаване от началото
@@ -147,7 +162,7 @@ page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=Грешка
loading_error=Получи се грешка при зареждане на PDF-а.
-invalid_file_error=Невалиден или повреден PDF файл
+invalid_file_error=Невалиден или повреден PDF файл.
missing_file_error=Липсващ PDF файл.
unexpected_response_error=Неочакван отговор от сървъра.
@@ -164,4 +179,4 @@ password_cancel=Отказ
printing_not_supported=Внимание: Този браузър няма пълна поддръжка на отпечатване.
printing_not_ready=Внимание: Този PDF файл не е напълно зареден за печат.
web_fonts_disabled=Уеб-шрифтовете са забранени: разрешаване на използването на вградените PDF шрифтове.
-document_colors_disabled=На PDF-документите не е разрешено да използват собствени цветове: „Разрешаване на страниците да избират собствени цветове“ е изключено в браузъра.
+document_colors_not_allowed=На PDF-документите не е разрешено да използват собствени цветове: „Разрешаване на страниците да избират собствени цветове“ е изключено в браузъра.
diff --git a/locale/bn-BD/viewer.properties b/locale/bn-BD/viewer.properties
index 6577a36..9b660f6 100644
--- a/locale/bn-BD/viewer.properties
+++ b/locale/bn-BD/viewer.properties
@@ -18,12 +18,15 @@ previous_label=পূর্ববর্তী
next.title=পরবর্তী পৃষ্ঠা
next_label=পরবর্তী
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=পৃষ্ঠা:
-page_of={{pageCount}} এর
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=পাতা
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages={{pagesCount}} এর
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pagesCount}} এর {{pageNumber}})
zoom_out.title=ছোট আকারে প্রদর্শন
zoom_out_label=ছোট আকারে প্রদর্শন
@@ -57,17 +60,52 @@ page_rotate_ccw.title=ঘড়ির কাঁটার বিপরীতে
page_rotate_ccw.label=ঘড়ির কাঁটার বিপরীতে ঘোরাও
page_rotate_ccw_label=ঘড়ির কাঁটার বিপরীতে ঘোরাও
+hand_tool_enable.title=হ্যান্ড টুল সক্রিয় করুন
+hand_tool_enable_label=হ্যান্ড টুল সক্রিয় করুন
+hand_tool_disable.title=হ্যান্ড টুল নিস্ক্রিয় করুন
+hand_tool_disable_label=হ্যান্ড টুল নিস্ক্রিয় করুন
# Document properties dialog box
+document_properties.title=নথি বৈশিষ্ট্য…
+document_properties_label=নথি বৈশিষ্ট্য…
+document_properties_file_name=ফাইলের নাম:
+document_properties_file_size=ফাইলের আকার:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
+document_properties_kb={{size_kb}} কেবি ({{size_b}} বাইট)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
+document_properties_mb={{size_mb}} এমবি ({{size_b}} বাইট)
document_properties_title=শিরোনাম:
+document_properties_author=লেখক:
+document_properties_subject=বিষয়:
+document_properties_keywords=কীওয়ার্ড:
+document_properties_creation_date=তৈরির তারিখ:
+document_properties_modification_date=পরিবর্তনের তারিখ:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=প্রস্তুতকারক:
+document_properties_producer=পিডিএফ প্রস্তুতকারক:
+document_properties_version=পিডিএফ সংষ্করণ:
+document_properties_page_count=মোট পাতা:
+document_properties_close=বন্ধ
+
+print_progress_message=মুদ্রণের জন্য নথি প্রস্তুত করা হচ্ছে…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=বাতিল
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=সাইডবার টগল করুন
toggle_sidebar_label=সাইডবার টগল করুন
-outline.title=নথির রূপরেখা প্রদর্শন করুন
-outline_label=নথির রূপরেখা
+document_outline.title=নথির আউটলাইন দেখাও (সব আইটেম প্রসারিত/সঙ্কুচিত করতে ডবল ক্লিক করুন)
+document_outline_label=নথির রূপরেখা
+attachments.title=সংযুক্তি দেখাও
+attachments_label=সংযুক্তি
thumbs.title=থাম্বনেইল সমূহ প্রদর্শন করুন
thumbs_label=থাম্বনেইল সমূহ
findbar.title=নথির মধ্যে খুঁজুন
@@ -96,6 +134,7 @@ find_not_found=বাক্যাংশ পাওয়া যায়নি
# Error panel labels
error_more_info=আরও তথ্য
error_less_info=কম তথ্য
+error_close=বন্ধ
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
error_version_info=PDF.js v{{version}} (build: {{build}})
@@ -116,12 +155,16 @@ page_scale_width=পৃষ্ঠার প্রস্থ
page_scale_fit=পৃষ্ঠা ফিট করুন
page_scale_auto=স্বয়ংক্রিয় জুম
page_scale_actual=প্রকৃত আকার
+# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
+# numerical scale value.
+page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=ত্রুটি
loading_error=পিডিএফ লোড করার সময় ত্রুটি দেখা দিয়েছে।
invalid_file_error=অকার্যকর অথবা ক্ষতিগ্রস্ত পিডিএফ ফাইল।
-missing_file_error=পিডিএফ ফাইল পাওয়া যাচ্ছে না।
+missing_file_error=নিখোঁজ PDF ফাইল।
+unexpected_response_error=অপ্রত্যাশীত সার্ভার প্রতিক্রিয়া।
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
@@ -136,4 +179,4 @@ password_cancel=বাতিল
printing_not_supported=সতর্কতা: এই ব্রাউজারে মুদ্রণ সম্পূর্ণভাবে সমর্থিত নয়।
printing_not_ready=সতর্কীকরণ: পিডিএফটি মুদ্রণের জন্য সম্পূর্ণ লোড হয়নি।
web_fonts_disabled=ওয়েব ফন্ট নিষ্ক্রিয়: সংযুক্ত পিডিএফ ফন্ট ব্যবহার করা যাচ্ছে না।
-document_colors_disabled=পিডিএফ ডকুমেন্টকে তাদের নিজস্ব রঙ ব্যবহারে অনুমতি নেই: 'পাতা তাদের নিজেস্ব রঙ নির্বাচন করতে অনুমতি দিন' এই ব্রাউজারে নিষ্ক্রিয় রয়েছে।
+document_colors_not_allowed=পিডিএফ ডকুমেন্টকে তাদের নিজস্ব রঙ ব্যবহারে অনুমতি নেই: 'পাতা তাদের নিজেস্ব রঙ নির্বাচন করতে অনুমতি দিন' এই ব্রাউজারে নিষ্ক্রিয় রয়েছে।
diff --git a/locale/bn-IN/viewer.properties b/locale/bn-IN/viewer.properties
index 84391bf..3fe4fc3 100644
--- a/locale/bn-IN/viewer.properties
+++ b/locale/bn-IN/viewer.properties
@@ -18,12 +18,15 @@ previous_label=পূর্ববর্তী
next.title=পরবর্তী পৃষ্ঠা
next_label=পরবর্তী
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=পৃষ্ঠা:
-page_of=সর্বমোট {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=পেজ
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages={{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pagesCount}} এর {{pageNumber}})
zoom_out.title=ছোট মাপে প্রদর্শন
zoom_out_label=ছোট মাপে প্রদর্শন
@@ -67,7 +70,11 @@ document_properties.title=নথির বৈশিষ্ট্য…
document_properties_label=নথির বৈশিষ্ট্য…
document_properties_file_name=ফাইলের নাম:
document_properties_file_size=ফাইলের মাপ:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} মেগাবাইট ({{size_b}} bytes)
document_properties_title=শিরোনাম:
document_properties_author=লেখক:
@@ -75,6 +82,8 @@ document_properties_subject=বিষয়:
document_properties_keywords=নির্দেশক শব্দ:
document_properties_creation_date=নির্মাণের তারিখ:
document_properties_modification_date=পরিবর্তনের তারিখ:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=নির্মাতা:
document_properties_producer=PDF নির্মাতা:
@@ -82,13 +91,19 @@ document_properties_version=PDF সংস্করণ:
document_properties_page_count=মোট পৃষ্ঠা:
document_properties_close=বন্ধ করুন
+print_progress_message=ডকুমেন্ট প্রিন্টিং-র জন্য তৈরি করা হচ্ছে...
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=বাতিল
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=সাইডবার টগল করুন
toggle_sidebar_label=সাইডবার টগল করুন
-outline.title=নথির রূপরেখা প্রদর্শন
-outline_label=নথির রূপরেখা প্রদর্শন
+document_outline.title=ডকুমেন্ট আউটলাইন দেখান (দুবার ক্লিক করুন বাড়াতে//collapse সমস্ত আইটেম)
+document_outline_label=ডকুমেন্ট আউটলাইন
attachments.title=সংযুক্তিসমূহ দেখান
attachments_label=সংযুক্ত বস্তু
thumbs.title=থাম্ব-নেইল প্রদর্শন
@@ -164,4 +179,4 @@ password_cancel=বাতিল করুন
printing_not_supported=সতর্কবার্তা: এই ব্রাউজার দ্বারা প্রিন্ট ব্যবস্থা সম্পূর্ণরূপে সমর্থিত নয়।
printing_not_ready=সতর্কবাণী: পিডিএফ সম্পূর্ণরূপে মুদ্রণের জন্য লোড করা হয় না.
web_fonts_disabled=ওয়েব ফন্ট নিষ্ক্রিয় করা হয়েছে: এমবেডেড পিডিএফ ফন্ট ব্যবহার করতে অক্ষম.
-document_colors_disabled=পিডিএফ নথি তাদের নিজস্ব রং ব্যবহার করার জন্য অনুমতিপ্রাপ্ত নয়: ব্রাউজারে নিষ্ক্রিয় করা হয়েছে য়েন 'পেজ তাদের নিজস্ব রং নির্বাচন করার অনুমতি প্রদান করা য়ায়।'
+document_colors_not_allowed=পিডিএফ নথি তাদের নিজস্ব রং ব্যবহার করার জন্য অনুমতিপ্রাপ্ত নয়: ব্রাউজারে নিষ্ক্রিয় করা হয়েছে য়েন 'পেজ তাদের নিজস্ব রং নির্বাচন করার অনুমতি প্রদান করা য়ায়।'
diff --git a/locale/br/viewer.properties b/locale/br/viewer.properties
index 7f7926c..b7f0d99 100644
--- a/locale/br/viewer.properties
+++ b/locale/br/viewer.properties
@@ -18,12 +18,15 @@ previous_label=A-raok
next.title=Pajenn war-lerc'h
next_label=War-lerc'h
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Pajenn :
-page_of=eus {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Pajenn
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=eus {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} war {{pagesCount}})
zoom_out.title=Zoum bihanaat
zoom_out_label=Zoum bihanaat
@@ -67,7 +70,11 @@ document_properties.title=Perzhioù an teul…
document_properties_label=Perzhioù an teul…
document_properties_file_name=Anv restr :
document_properties_file_size=Ment ar restr :
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} Ke ({{size_b}} eizhbit)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} Me ({{size_b}} eizhbit)
document_properties_title=Titl :
document_properties_author=Aozer :
@@ -75,6 +82,8 @@ document_properties_subject=Danvez :
document_properties_keywords=Gerioù-alc'hwez :
document_properties_creation_date=Deiziad krouiñ :
document_properties_modification_date=Deiziad kemmañ :
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Krouer :
document_properties_producer=Kenderc'her PDF :
@@ -82,13 +91,19 @@ document_properties_version=Handelv PDF :
document_properties_page_count=Niver a bajennoù :
document_properties_close=Serriñ
+print_progress_message=O prientiñ an teul evit moullañ...
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Nullañ
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Diskouez/kuzhat ar varrenn gostez
toggle_sidebar_label=Diskouez/kuzhat ar varrenn gostez
-outline.title=Diskouez ar sinedoù
-outline_label=Sinedoù an teuliad
+document_outline.title=Diskouez steuñv an teul (daouglikit evit brasaat/bihanaat an holl elfennoù)
+document_outline_label=Sinedoù an teuliad
attachments.title=Diskouez ar c'henstagadurioù
attachments_label=Kenstagadurioù
thumbs.title=Diskouez ar melvennoù
@@ -164,4 +179,4 @@ password_cancel=Nullañ
printing_not_supported=Kemenn : N'eo ket skoret penn-da-benn ar moullañ gant ar merdeer-mañ.
printing_not_ready=Kemenn : N'hall ket bezañ moullet ar restr PDF rak n'eo ket karget penn-da-benn.
web_fonts_disabled=Diweredekaet eo an nodrezhoù web : n'haller ket arverañ an nodrezhoù PDF enframmet.
-document_colors_disabled=N'eo ket aotreet an teuliadoù PDF da arverañ o livioù dezho : diweredekaet eo 'Aotren ar pajennoù da zibab o livioù dezho' e-barzh ar merdeer.
+document_colors_not_allowed=N'eo ket aotreet an teuliadoù PDF da arverañ o livioù dezho : diweredekaet eo “Aotren ar pajennoù da zibab o livioù dezho” e-barzh ar merdeer.
diff --git a/locale/bs/viewer.properties b/locale/bs/viewer.properties
index a89bf7a..0dcbe7a 100644
--- a/locale/bs/viewer.properties
+++ b/locale/bs/viewer.properties
@@ -18,36 +18,94 @@ previous_label=Prethodna
next.title=Sljedeća strna
next_label=Sljedeća
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Strana:
-page_of=od {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Strana
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=od {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} od {{pagesCount}})
zoom_out.title=Umanji
zoom_out_label=Umanji
zoom_in.title=Uvećaj
zoom_in_label=Uvećaj
zoom.title=Uvećanje
-print.title=Štampaj
-print_label=Štampaj
presentation_mode.title=Prebaci se u prezentacijski režim
presentation_mode_label=Prezentacijski režim
open_file.title=Otvori fajl
open_file_label=Otvori
+print.title=Štampaj
+print_label=Štampaj
download.title=Preuzmi
download_label=Preuzmi
bookmark.title=Trenutni prikaz (kopiraj ili otvori u novom prozoru)
bookmark_label=Trenutni prikaz
+# Secondary toolbar and context menu
+tools.title=Alati
+tools_label=Alati
+first_page.title=Idi na prvu stranu
+first_page.label=Idi na prvu stranu
+first_page_label=Idi na prvu stranu
+last_page.title=Idi na zadnju stranu
+last_page.label=Idi na zadnju stranu
+last_page_label=Idi na zadnju stranu
+page_rotate_cw.title=Rotiraj u smjeru kazaljke na satu
+page_rotate_cw.label=Rotiraj u smjeru kazaljke na satu
+page_rotate_cw_label=Rotiraj u smjeru kazaljke na satu
+page_rotate_ccw.title=Rotiraj suprotno smjeru kazaljke na satu
+page_rotate_ccw.label=Rotiraj suprotno smjeru kazaljke na satu
+page_rotate_ccw_label=Rotiraj suprotno smjeru kazaljke na satu
+
+hand_tool_enable.title=Omogući ručni alat
+hand_tool_enable_label=Omogući ručni alat
+hand_tool_disable.title=Onemogući ručni alat
+hand_tool_disable_label=Onemogući ručni alat
+
+# Document properties dialog box
+document_properties.title=Svojstva dokumenta...
+document_properties_label=Svojstva dokumenta...
+document_properties_file_name=Naziv fajla:
+document_properties_file_size=Veličina fajla:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
+document_properties_kb={{size_kb}} KB ({{size_b}} bajta)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
+document_properties_mb={{size_mb}} MB ({{size_b}} bajta)
+document_properties_title=Naslov:
+document_properties_author=Autor:
+document_properties_subject=Predmet:
+document_properties_keywords=Ključne riječi:
+document_properties_creation_date=Datum kreiranja:
+document_properties_modification_date=Datum promjene:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Kreator:
+document_properties_producer=PDF stvaratelj:
+document_properties_version=PDF verzija:
+document_properties_page_count=Broj stranica:
+document_properties_close=Zatvori
+
+print_progress_message=Pripremam dokument za štampu…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Otkaži
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Uključi/isključi bočnu traku
toggle_sidebar_label=Uključi/isključi bočnu traku
-outline.title=Prikaži konture dokumenta
-outline_label=Konture dokumenta
+document_outline.title=Prikaži outline dokumenta (dvoklik za skupljanje/širenje svih stavki)
+document_outline_label=Konture dokumenta
+attachments.title=Prikaži priloge
+attachments_label=Prilozi
thumbs.title=Prikaži thumbnailove
thumbs_label=Thumbnailovi
findbar.title=Pronađi u dokumentu
@@ -61,12 +119,6 @@ thumb_page_title=Strana {{page}}
# number.
thumb_page_canvas=Thumbnail strane {{page}}
-# Context menu
-first_page.label=Idi na prvu stranu
-last_page.label=Idi na zadnju stranu
-page_rotate_cw.label=Rotiraj u smjeru kazaljke na satu
-page_rotate_ccw.label=Rotiraj suprotno smjeru kazaljke na satu
-
# Find panel button title and messages
find_label=Pronađi:
find_previous.title=Pronađi prethodno pojavljivanje fraze
@@ -103,23 +155,28 @@ page_scale_width=Širina strane
page_scale_fit=Uklopi stranu
page_scale_auto=Automatsko uvećanje
page_scale_actual=Stvarna veličina
+# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
+# numerical scale value.
+page_scale_percent={{scale}}%
# Loading indicator messages
-# LOCALIZATION NOTE (error_line): "{{[percent}}" will be replaced with a percentage
loading_error_indicator=Greška
loading_error=Došlo je do greške prilikom učitavanja PDF-a.
invalid_file_error=Neispravan ili oštećen PDF fajl.
missing_file_error=Nedostaje PDF fajl.
+unexpected_response_error=Neočekivani odgovor servera.
-# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
-# "{{[type}}" will be replaced with an annotation type from a list defined in
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[{{type}} pribilješka]
-request_password=PDF je zaštićen lozinkom:
-invalid_password=Pogrešna lozinka.
+password_label=Upišite lozinku da biste otvorili ovaj PDF fajl.
+password_invalid=Pogrešna lozinka. Pokušajte ponovo.
+password_ok=OK
+password_cancel=Otkaži
printing_not_supported=Upozorenje: Štampanje nije u potpunosti podržano u ovom browseru.
printing_not_ready=Upozorenje: PDF nije u potpunosti učitan za štampanje.
web_fonts_disabled=Web fontovi su onemogućeni: nemoguće koristiti ubačene PDF fontove.
-document_colors_disabled=PDF dokumentima nije dozvoljeno da koriste vlastite boje: \'Dozvoli stranicama da izaberu vlastite boje\' je deaktivirano u browseru.
+document_colors_not_allowed=PDF dokumentima nije dozvoljeno da koriste vlastite boje: 'Dozvoli stranicama da izaberu vlastite boje' je deaktivirano u browseru.
diff --git a/locale/ca/viewer.properties b/locale/ca/viewer.properties
index 93b3b76..f360b34 100644
--- a/locale/ca/viewer.properties
+++ b/locale/ca/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Anterior
next.title=Pàgina següent
next_label=Següent
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Pàgina:
-page_of=de {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Pàgina
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=de {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} de {{pagesCount}})
zoom_out.title=Allunya
zoom_out_label=Allunya
@@ -67,7 +70,11 @@ document_properties.title=Propietats del document…
document_properties_label=Propietats del document…
document_properties_file_name=Nom del fitxer:
document_properties_file_size=Mida del fitxer:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=Títol:
document_properties_author=Autor:
@@ -75,6 +82,8 @@ document_properties_subject=Assumpte:
document_properties_keywords=Paraules clau:
document_properties_creation_date=Data de creació:
document_properties_modification_date=Data de modificació:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Creador:
document_properties_producer=Generador de PDF:
@@ -82,13 +91,19 @@ document_properties_version=Versió de PDF:
document_properties_page_count=Nombre de pàgines:
document_properties_close=Tanca
+print_progress_message=S'està preparant la impressió del document…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Cancel·la
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Mostra/amaga la barra lateral
toggle_sidebar_label=Mostra/amaga la barra lateral
-outline.title=Mostra el contorn del document
-outline_label=Contorn del document
+document_outline.title=Mostra l'esquema del document (doble clic per ampliar/reduir tots els elements)
+document_outline_label=Contorn del document
attachments.title=Mostra les adjuncions
attachments_label=Adjuncions
thumbs.title=Mostra les miniatures
@@ -163,5 +178,5 @@ password_cancel=Cancel·la
printing_not_supported=Avís: la impressió no és plenament funcional en aquest navegador.
printing_not_ready=Atenció: el PDF no s'ha acabat de carregar per imprimir-lo.
-web_fonts_disabled=Les fonts web estan inhabilitades: no es poden incrustar fitxers PDF.
-document_colors_disabled=Els documents PDF no poden usar els seus colors propis: «Permet a les pàgines triar els colors propis» es troba desactivat al navegador.
+web_fonts_disabled=Els tipus de lletra web estan desactivats: no es poden utilitzar els tipus de lletra incrustats al PDF.
+document_colors_not_allowed=Els documents PDF no poden usar els seus colors propis: «Permet a les pàgines triar els colors propis» es troba desactivat al navegador.
diff --git a/locale/cs/viewer.properties b/locale/cs/viewer.properties
index 2033c5a..f247a4a 100644
--- a/locale/cs/viewer.properties
+++ b/locale/cs/viewer.properties
@@ -13,24 +13,27 @@
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
-previous.title=Předchozí stránka
+previous.title=Přejde na předchozí stránku
previous_label=Předchozí
-next.title=Další stránka
+next.title=Přejde na následující stránku
next_label=Další
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Stránka:
-page_of=z {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Stránka
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=z {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} z {{pagesCount}})
zoom_out.title=Zmenší velikost
zoom_out_label=Zmenšit
zoom_in.title=Zvětší velikost
zoom_in_label=Zvětšit
zoom.title=Nastaví velikost
-presentation_mode.title=Přepne režimu prezentace
+presentation_mode.title=Přepne do režimu prezentace
presentation_mode_label=Režim prezentace
open_file.title=Otevře soubor
open_file_label=Otevřít
@@ -38,8 +41,8 @@ print.title=Vytiskne dokument
print_label=Tisk
download.title=Stáhne dokument
download_label=Stáhnout
-bookmark.title=Aktuální pohled (kopírovat nebo otevřít v novém okně)
-bookmark_label=Aktuální pohled
+bookmark.title=Současný pohled (kopírovat nebo otevřít v novém okně)
+bookmark_label=Současný pohled
# Secondary toolbar and context menu
tools.title=Nástroje
@@ -57,9 +60,9 @@ page_rotate_ccw.title=Otočí proti směru hodin
page_rotate_ccw.label=Otočit proti směru hodin
page_rotate_ccw_label=Otočit proti směru hodin
-hand_tool_enable.title=Povolit nástroj ručička
+hand_tool_enable.title=Povolí nástroj ručička
hand_tool_enable_label=Povolit nástroj ručička
-hand_tool_disable.title=Zakázat nástroj ručička
+hand_tool_disable.title=Zakáže nástroj ručička
hand_tool_disable_label=Zakázat nástroj ručička
# Document properties dialog box
@@ -67,14 +70,20 @@ document_properties.title=Vlastnosti dokumentu…
document_properties_label=Vlastnosti dokumentu…
document_properties_file_name=Název souboru:
document_properties_file_size=Velikost souboru:
-document_properties_kb={{size_kb}} kB ({{size_b}} bajtů)
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
+document_properties_kb={{size_kb}} KB ({{size_b}} bajtů)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bajtů)
document_properties_title=Nadpis:
document_properties_author=Autor:
-document_properties_subject=Subjekt:
+document_properties_subject=Předmět:
document_properties_keywords=Klíčová slova:
document_properties_creation_date=Datum vytvoření:
document_properties_modification_date=Datum úpravy:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Vytvořil:
document_properties_producer=Tvůrce PDF:
@@ -82,13 +91,19 @@ document_properties_version=Verze PDF:
document_properties_page_count=Počet stránek:
document_properties_close=Zavřít
+print_progress_message=Příprava dokumentu pro tisk…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}} %
+print_progress_close=Zrušit
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Postranní lišta
toggle_sidebar_label=Postranní lišta
-outline.title=Zobrazí osnovu dokumentu
-outline_label=Osnova dokumentu
+document_outline.title=Zobrazit osnovu dokumentu (dvojité klepnutí rozbalí/sbalí všechny položky)
+document_outline_label=Osnova dokumentu
attachments.title=Zobrazí přílohy
attachments_label=Přílohy
thumbs.title=Zobrazí náhledy
@@ -106,15 +121,15 @@ thumb_page_canvas=Náhled strany {{page}}
# Find panel button title and messages
find_label=Najít:
-find_previous.title=Najde předchozí výskyt hledaného spojení
+find_previous.title=Najde předchozí výskyt hledaného textu
find_previous_label=Předchozí
-find_next.title=Najde další výskyt hledaného spojení
+find_next.title=Najde další výskyt hledaného textu
find_next_label=Další
find_highlight=Zvýraznit
find_match_case_label=Rozlišovat velikost
find_reached_top=Dosažen začátek dokumentu, pokračuje se od konce
-find_reached_bottom=Dosažen konec dokumentu, pokračuje se o začátku
-find_not_found=Hledané spojení nenalezeno
+find_reached_bottom=Dosažen konec dokumentu, pokračuje se od začátku
+find_not_found=Hledaný text nenalezen
# Error panel labels
error_more_info=Více informací
@@ -132,14 +147,14 @@ error_stack=Zásobník: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=Soubor: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
-error_line=Řádka: {{line}}
+error_line=Řádek: {{line}}
rendering_error=Při vykreslování stránky nastala chyba.
# Predefined zoom values
page_scale_width=Podle šířky
page_scale_fit=Podle výšky
page_scale_auto=Automatická velikost
-page_scale_actual=Aktuální velikost
+page_scale_actual=Skutečná velikost
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
page_scale_percent={{scale}}%
@@ -164,4 +179,4 @@ password_cancel=Zrušit
printing_not_supported=Upozornění: Tisk není v tomto prohlížeči plně podporován.
printing_not_ready=Upozornění: Dokument PDF není kompletně načten.
web_fonts_disabled=Webová písma jsou zakázána, proto není možné použít vložená písma PDF.
-document_colors_disabled=PDF dokumenty nemají povoleny používání vlastních barev: volba "Povolit stránkám používat vlastní barvy namísto výše zvolených" je v prohlížeči deaktivována.
+document_colors_not_allowed=PDF dokumenty nemají povoleno používat vlastní barvy: volba 'Povolit stránkám používat vlastní barvy' je v prohlížeči deaktivována.
diff --git a/locale/cy/viewer.properties b/locale/cy/viewer.properties
index 3ba7cef..3ded4bc 100644
--- a/locale/cy/viewer.properties
+++ b/locale/cy/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Blaenorol
next.title=Tudalen Nesaf
next_label=Nesaf
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Tudalen:
-page_of=o {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Tudalen
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=o {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} o {{pagesCount}})
zoom_out.title=Chwyddo Allan
zoom_out_label=Chwyddo Allan
@@ -67,7 +70,11 @@ document_properties.title=Priodweddau Dogfen…
document_properties_label=Priodweddau Dogfen…
document_properties_file_name=Enw ffeil:
document_properties_file_size=Maint ffeil:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} beit)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} beit)
document_properties_title=Teitl:
document_properties_author=Awdur:
@@ -75,6 +82,8 @@ document_properties_subject=Pwnc:
document_properties_keywords=Allweddair:
document_properties_creation_date=Dyddiad Creu:
document_properties_modification_date=Dyddiad Addasu:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Crewr:
document_properties_producer=Cynhyrchydd PDF:
@@ -82,13 +91,19 @@ document_properties_version=Fersiwn PDF:
document_properties_page_count=Cyfrif Tudalen:
document_properties_close=Cau
+print_progress_message=Paratoi dogfen ar gyfer ei hargraffu…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Diddymu
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Toglo'r Bar Ochr
toggle_sidebar_label=Toglo'r Bar Ochr
-outline.title=Dangos Amlinell Dogfen
-outline_label=Amlinelliad Dogfen
+document_outline.title=Dangos Amlinell Dogfen (clic dwbl i ymestyn/cau pob eitem)
+document_outline_label=Amlinelliad Dogfen
attachments.title=Dangos Atodiadau
attachments_label=Atodiadau
thumbs.title=Dangos Lluniau Bach
@@ -163,5 +178,5 @@ password_cancel=Diddymu
printing_not_supported=Rhybudd: Nid yw argraffu yn cael ei gynnal yn llawn gan y porwr.
printing_not_ready=Rhybudd: Nid yw'r PDF wedi ei lwytho'n llawn ar gyfer argraffu.
-web_fonts_disabled=Ffontiau gwe wedi eu hanablu: methu defnyddio ffontiau PDF mewnblanedig.
-document_colors_disabled=Nid oes caniatâd i ddogfennau PDF i ddefnyddio eu lliwiau eu hunain: Mae 'Caniatáu i dudalennau ddefnyddio eu lliwiau eu hunain' wedi ei atal yn y porwr.
+web_fonts_disabled=Ffontiau gwe wedi eu hanalluogi: methu defnyddio ffontiau PDF mewnblanedig.
+document_colors_not_allowed=Nid oes caniatâd i ddogfennau PDF i ddefnyddio eu lliwiau eu hunain: Mae “Caniatáu i dudalennau ddefnyddio eu lliwiau eu hunain” wedi ei atal yn y porwr.
diff --git a/locale/da/viewer.properties b/locale/da/viewer.properties
index ddd428b..4c788e9 100644
--- a/locale/da/viewer.properties
+++ b/locale/da/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Forrige
next.title=Næste side
next_label=Næste
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Side:
-page_of=af {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Side
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=af {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} af {{pagesCount}})
zoom_out.title=Zoom ud
zoom_out_label=Zoom ud
@@ -67,7 +70,11 @@ document_properties.title=Dokumentegenskaber…
document_properties_label=Dokumentegenskaber…
document_properties_file_name=Filnavn:
document_properties_file_size=Filstørrelse:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=Titel:
document_properties_author=Forfatter:
@@ -75,6 +82,8 @@ document_properties_subject=Emne:
document_properties_keywords=Nøgleord:
document_properties_creation_date=Oprettet:
document_properties_modification_date=Redigeret:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Program:
document_properties_producer=PDF-producent:
@@ -82,13 +91,19 @@ document_properties_version=PDF-version:
document_properties_page_count=Antal sider:
document_properties_close=Luk
+print_progress_message=Forbereder dokument til udskrivning…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Annuller
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Slå sidepanel til eller fra
toggle_sidebar_label=Slå sidepanel til eller fra
-outline.title=Vis dokumentets disposition
-outline_label=Dokument-disposition
+document_outline.title=Vis dokumentets disposition (dobbeltklik for at vise/skjule alle elementer)
+document_outline_label=Dokument-dosposition
attachments.title=Vis vedhæftede filer
attachments_label=Vedhæftede filer
thumbs.title=Vis miniaturer
@@ -164,4 +179,4 @@ password_cancel=Fortryd
printing_not_supported=Advarsel: Udskrivning er ikke fuldt understøttet af browseren.
printing_not_ready=Advarsel: PDF-filen er ikke fuldt indlæst til udskrivning.
web_fonts_disabled=Webskrifttyper er deaktiverede. De indlejrede skrifttyper i PDF-filen kan ikke anvendes.
-document_colors_disabled=PDF-dokumenter må ikke bruge deres egne farver: \u0022'Tillad sider at vælge deres egne farver\u0022' er deaktiveret i browseren.
+document_colors_not_allowed=PDF-dokumenter må ikke bruge deres egne farver: 'Tillad sider at vælge deres egne farver' er deaktiveret i browseren.
diff --git a/locale/de/viewer.properties b/locale/de/viewer.properties
index 685154c..a0382ab 100644
--- a/locale/de/viewer.properties
+++ b/locale/de/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Zurück
next.title=Eine Seite vor
next_label=Vor
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Seite:
-page_of=von {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Seite
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=von {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} von {{pagesCount}})
zoom_out.title=Verkleinern
zoom_out_label=Verkleinern
@@ -67,7 +70,11 @@ document_properties.title=Dokumenteigenschaften
document_properties_label=Dokumenteigenschaften…
document_properties_file_name=Dateiname:
document_properties_file_size=Dateigröße:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} Bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} Bytes)
document_properties_title=Titel:
document_properties_author=Autor:
@@ -75,6 +82,8 @@ document_properties_subject=Thema:
document_properties_keywords=Stichwörter:
document_properties_creation_date=Erstelldatum:
document_properties_modification_date=Bearbeitungsdatum:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}} {{time}}
document_properties_creator=Anwendung:
document_properties_producer=PDF erstellt mit:
@@ -82,13 +91,19 @@ document_properties_version=PDF-Version:
document_properties_page_count=Seitenzahl:
document_properties_close=Schließen
+print_progress_message=Dokument wird für Drucken vorbereitet…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Abbrechen
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Sidebar umschalten
toggle_sidebar_label=Sidebar umschalten
-outline.title=Dokumentstruktur anzeigen
-outline_label=Dokumentstruktur
+document_outline.title=Dokumentstruktur anzeigen (Doppelklicken, um alle Einträge aus- bzw. einzuklappen)
+document_outline_label=Dokumentstruktur
attachments.title=Anhänge anzeigen
attachments_label=Anhänge
thumbs.title=Miniaturansichten anzeigen
@@ -106,9 +121,9 @@ thumb_page_canvas=Miniaturansicht von Seite {{page}}
# Find panel button title and messages
find_label=Suchen:
-find_previous.title=Vorheriges Auftreten des Suchbegriffs finden
+find_previous.title=Vorheriges Vorkommen des Suchbegriffs finden
find_previous_label=Zurück
-find_next.title=Nächstes Auftreten des Suchbegriffs finden
+find_next.title=Nächstes Vorkommen des Suchbegriffs finden
find_next_label=Weiter
find_highlight=Alle hervorheben
find_match_case_label=Groß-/Kleinschreibung beachten
@@ -164,4 +179,4 @@ password_cancel=Abbrechen
printing_not_supported=Warnung: Die Drucken-Funktion wird durch diesen Browser nicht vollständig unterstützt.
printing_not_ready=Warnung: Die PDF-Datei ist nicht vollständig geladen, dies ist für das Drucken aber empfohlen.
web_fonts_disabled=Web-Schriftarten sind deaktiviert: Eingebettete PDF-Schriftarten konnten nicht geladen werden.
-document_colors_disabled=PDF-Dokumenten ist es nicht erlaubt, ihre eigenen Farben zu verwenden: \'Seiten das Verwenden von eigenen Farben erlauben\' ist im Browser deaktiviert.
+document_colors_not_allowed=PDF-Dokumenten ist es nicht erlaubt, ihre eigenen Farben zu verwenden: 'Seiten das Verwenden von eigenen Farben erlauben' ist im Browser deaktiviert.
diff --git a/locale/el/viewer.properties b/locale/el/viewer.properties
index 36723c2..ffe464c 100644
--- a/locale/el/viewer.properties
+++ b/locale/el/viewer.properties
@@ -1,6 +1,16 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Προηγούμενη σελίδα
@@ -8,36 +18,98 @@ previous_label=Προηγούμενη
next.title=Επόμενη σελίδα
next_label=Επόμενη
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Σελίδα:
-page_of= {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Σελίδα
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=από {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} από {{pagesCount}})
zoom_out.title=Σμίκρυνση
zoom_out_label=Σμίκρυνση
zoom_in.title=Μεγέθυνση
zoom_in_label=Μεγέθυνση
-zoom.title=Μεγέθυνση
-print.title=Εκτύπωση
-print_label=Εκτύπωση
+zoom.title=Ζουμ
+presentation_mode.title=Εναλλαγή σε λειτουργία παρουσίασης
+presentation_mode_label=Λειτουργία παρουσίασης
open_file.title=Άνοιγμα αρχείου
open_file_label=Άνοιγμα
+print.title=Εκτύπωση
+print_label=Εκτύπωση
download.title=Λήψη
download_label=Λήψη
-bookmark.title=Τρέχουσα προβολή (αντίγραφο ή άνοιγμα σε νέο παράθυρο)
+bookmark.title=Τρέχουσα προβολή (αντιγραφή ή άνοιγμα σε νέο παράθυρο)
bookmark_label=Τρέχουσα προβολή
+# Secondary toolbar and context menu
+tools.title=Εργαλεία
+tools_label=Εργαλεία
+first_page.title=Μετάβαση στην πρώτη σελίδα
+first_page.label=Μετάβαση στην πρώτη σελίδα
+first_page_label=Μετάβαση στην πρώτη σελίδα
+last_page.title=Μετάβαση στη τελευταία σελίδα
+last_page.label=Μετάβαση στη τελευταία σελίδα
+last_page_label=Μετάβαση στη τελευταία σελίδα
+page_rotate_cw.title=Δεξιόστροφη περιστροφή
+page_rotate_cw.label=Δεξιόστροφη περιστροφή
+page_rotate_cw_label=Δεξιόστροφη περιστροφή
+page_rotate_ccw.title=Αριστερόστροφη περιστροφή
+page_rotate_ccw.label=Αριστερόστροφη περιστροφή
+page_rotate_ccw_label=Αριστερόστροφη περιστροφή
+
+hand_tool_enable.title=Ενεργοποίηση εργαλείου χεριού
+hand_tool_enable_label=Ενεργοποίηση εργαλείου χεριού
+hand_tool_disable.title=Απενεργοποίηση εργαλείου χεριού
+hand_tool_disable_label=Απενεργοποίηση εργαλείου χεριού
+
+# Document properties dialog box
+document_properties.title=Ιδιότητες εγγράφου…
+document_properties_label=Ιδιότητες εγγράφου…
+document_properties_file_name=Όνομα αρχείου:
+document_properties_file_size=Μέγεθος αρχείου:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
+document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
+document_properties_title=Τίτλος:
+document_properties_author=Συγγραφέας:
+document_properties_subject=Θέμα:
+document_properties_keywords=Λέξεις κλειδιά:
+document_properties_creation_date=Ημερομηνία δημιουργίας:
+document_properties_modification_date=Ημερομηνία τροποποίησης:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Δημιουργός:
+document_properties_producer=Παραγωγός PDF:
+document_properties_version=Έκδοση PDF:
+document_properties_page_count=Αριθμός σελίδων:
+document_properties_close=Κλείσιμο
+
+print_progress_message=Προετοιμασία του εγγράφου για εκτύπωση…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Άκυρο
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
-outline.title=Προβολή διάρθρωσης κειμένου
-outline_label=Διάρθρωση κειμένου
+toggle_sidebar.title=Εναλλαγή προβολής πλευρικής στήλης
+toggle_sidebar_label=Εναλλαγή προβολής πλευρικής στήλης
+document_outline.title=Εμφάνιση διάρθρωσης εγγράφου (διπλό κλικ για ανάπτυξη/σύμπτυξη όλων των στοιχείων)
+document_outline_label=Διάρθρωση εγγράφου
+attachments.title=Προβολή συνημμένων
+attachments_label=Συνημμένα
thumbs.title=Προβολή μικρογραφιών
thumbs_label=Μικρογραφίες
-
-
+findbar.title=Εύρεση στο έγγραφο
+findbar_label=Εύρεση
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
@@ -47,22 +119,35 @@ thumb_page_title=Σελίδα {{page}}
# number.
thumb_page_canvas=Μικρογραφία της σελίδας {{page}}
-first_page.label=Μετάβαση στην πρώτη σελίδα
+# Find panel button title and messages
+find_label=Εύρεση:
+find_previous.title=Εύρεση της προηγούμενης εμφάνισης της φράσης
+find_previous_label=Προηγούμενο
+find_next.title=Εύρεση της επόμενης εμφάνισης της φράσης
+find_next_label=Επόμενο
+find_highlight=Επισήμανση όλων
+find_match_case_label=Ταίριασμα χαρακτήρα
+find_reached_top=Έλευση στην αρχή του εγγράφου, συνέχεια από το τέλος
+find_reached_bottom=Έλευση στο τέλος του εγγράφου, συνέχεια από την αρχή
+find_not_found=Η φράση δεν βρέθηκε
# Error panel labels
error_more_info=Περισσότερες πληροφορίες
error_less_info=Λιγότερες πληροφορίες
error_close=Κλείσιμο
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=Μήνυμα: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
-error_stack=Stack: {{stack}}
+error_stack=Στοίβα: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=Αρχείο: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
-error_line=Line: {{line}}
+error_line=Γραμμή: {{line}}
rendering_error=Προέκυψε σφάλμα κατά την ανάλυση της σελίδας.
# Predefined zoom values
@@ -70,62 +155,28 @@ page_scale_width=Πλάτος σελίδας
page_scale_fit=Μέγεθος σελίδας
page_scale_auto=Αυτόματη μεγέθυνση
page_scale_actual=Πραγματικό μέγεθος
-
-
-# Context menu
-page_rotate_cw.label=Δεξιόστροφη περιστροφή
-page_rotate_ccw.label=Αριστερόστροφη περιστροφή
-
-presentation_mode.title=Μετάβαση σε λειτουργία παρουσίασης
-presentation_mode_label=Λειτουργία παρουσίασης
+# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
+# numerical scale value.
+page_scale_percent={{scale}}%
# Loading indicator messages
-# LOCALIZATION NOTE (error_line): "{{[percent}}" will be replaced with a percentage
-
loading_error_indicator=Σφάλμα
loading_error=Προέκυψε ένα σφάλμα κατά τη φόρτωση του PDF.
-
-request_password=Το PDF προστατεύεται από κωδικό:
-
-printing_not_supported=Προειδοποίηση: Η εκτύπωση δεν υποστηρίζεται πλήρως από αυτόν τον περιηγητή.
-
-
-
-findbar.title=Εύρεση στο έγγραφο
-findbar_label=Εύρεση
-
-
-# Find panel button title and messages
-find_label=Εύρεση:
-find_previous.title=Εύρεση της προηγούμενης εμφάνισης της φράσης
-find_previous_label=Προηγούμενο
-find_next.title=Εύρεση της επόμενης εμφάνισης της φράσης
-find_next_label=Επόμενο
-find_highlight=Επισήμανση όλων
-find_match_case_label=Ταίριασμα χαρακτήρα
-find_reached_top=Έλευση στην αρχή του εγγράφου, συνέχεια από το τέλος
-find_reached_bottom=Έλευση στο τέλος του εγγράφου, συνέχεια από την αρχή
-find_not_found=Η φράση δεν βρέθηκε
-
invalid_file_error=Μη έγκυρο ή κατεστραμμένο αρχείο PDF.
-last_page.label=Μετάβαση στη τελευταία σελίδα
-
-# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
-# replaced by the PDF.JS version and build ID.
-error_version_info=PDF.js v{{version}} (build: {{build}})
-
missing_file_error=Λείπει αρχείο PDF.
+unexpected_response_error=Μη αναμενόμενη απόκριση από το διακομιστή.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} Σχόλιο]
+password_label=Εισαγωγή κωδικού για το άνοιγμα του PDF αρχείου.
+password_invalid=Μη έγκυρος κωδικός. Προσπαθείστε ξανά.
+password_ok=ΟΚ
+password_cancel=Ακύρωση
-
-toggle_sidebar.title=Εναλλαγή προβολής πλευρικής στήλης
-toggle_sidebar_label=Εναλλαγή προβολής πλευρικής στήλης
-
-web_fonts_disabled=Οι γραμματοσειρές Web απενεργοποιημένες: αδυναμία χρήσης των ενσωματωμένων γραμματοσειρών PDF.
-
+printing_not_supported=Προειδοποίηση: Η εκτύπωση δεν υποστηρίζεται πλήρως από αυτόν τον περιηγητή.
printing_not_ready=Προειδοποίηση: Το PDF δεν φορτώθηκε πλήρως για εκτύπωση.
-
-document_colors_disabled=Δεν επιτρέπεται στα έγγραφα PDF να χρησιμοποιούν τα δικά τους χρώματα: Η επιλογή \'Να επιτρέπεται η χρήση χρωμάτων της σελίδας\' δεν είναι ενεργή στην εφαρμογή.
-
-invalid_password=Μη έγκυρος κωδικός.
-text_annotation_type.alt=[{{type}} Annotation]
-
+web_fonts_disabled=Οι γραμματοσειρές Web απενεργοποιημένες: αδυναμία χρήσης των ενσωματωμένων γραμματοσειρών PDF.
+document_colors_not_allowed=Στα PDF έγγραφα δεν επιτρέπεται να χρησιμοποιούν τα δικά τους χρώματα: Το “Να επιτρέπεται στις σελίδες να επιλέγουν τα δικά τους χρώματα” είναι απενεργοποιημένο στον περιηγητή.
diff --git a/locale/en-GB/viewer.properties b/locale/en-GB/viewer.properties
index f9e1dfb..c6fee1f 100644
--- a/locale/en-GB/viewer.properties
+++ b/locale/en-GB/viewer.properties
@@ -18,12 +18,12 @@ previous_label=Previous
next.title=Next Page
next_label=Next
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Page:
-page_of=of {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
zoom_out.title=Zoom Out
zoom_out_label=Zoom Out
@@ -67,7 +67,11 @@ document_properties.title=Document Properties…
document_properties_label=Document Properties…
document_properties_file_name=File name:
document_properties_file_size=File size:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} kB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=Title:
document_properties_author=Author:
@@ -75,6 +79,8 @@ document_properties_subject=Subject:
document_properties_keywords=Keywords:
document_properties_creation_date=Creation Date:
document_properties_modification_date=Modification Date:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Creator:
document_properties_producer=PDF Producer:
@@ -82,13 +88,14 @@ document_properties_version=PDF Version:
document_properties_page_count=Page Count:
document_properties_close=Close
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Toggle Sidebar
toggle_sidebar_label=Toggle Sidebar
-outline.title=Show Document Outline
-outline_label=Document Outline
attachments.title=Show Attachments
attachments_label=Attachments
thumbs.title=Show Thumbnails
@@ -164,4 +171,4 @@ password_cancel=Cancel
printing_not_supported=Warning: Printing is not fully supported by this browser.
printing_not_ready=Warning: The PDF is not fully loaded for printing.
web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts.
-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.
+document_colors_not_allowed=PDF documents are not allowed to use their own colours: 'Allow pages to choose their own colours' is deactivated in the browser.
diff --git a/locale/en-US/viewer.properties b/locale/en-US/viewer.properties
index 4a3a6aa..da5442c 100644
--- a/locale/en-US/viewer.properties
+++ b/locale/en-US/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Previous
next.title=Next Page
next_label=Next
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Page:
-page_of=of {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Page
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=of {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} of {{pagesCount}})
zoom_out.title=Zoom Out
zoom_out_label=Zoom Out
@@ -67,7 +70,11 @@ document_properties.title=Document Properties…
document_properties_label=Document Properties…
document_properties_file_name=File name:
document_properties_file_size=File size:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=Title:
document_properties_author=Author:
@@ -75,6 +82,8 @@ document_properties_subject=Subject:
document_properties_keywords=Keywords:
document_properties_creation_date=Creation Date:
document_properties_modification_date=Modification Date:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Creator:
document_properties_producer=PDF Producer:
@@ -82,13 +91,20 @@ document_properties_version=PDF Version:
document_properties_page_count=Page Count:
document_properties_close=Close
+print_progress_message=Preparing document for printing…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Cancel
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Toggle Sidebar
+toggle_sidebar_notification.title=Toggle Sidebar (document contains outline/attachments)
toggle_sidebar_label=Toggle Sidebar
-outline.title=Show Document Outline
-outline_label=Document Outline
+document_outline.title=Show Document Outline (double-click to expand/collapse all items)
+document_outline_label=Document Outline
attachments.title=Show Attachments
attachments_label=Attachments
thumbs.title=Show Thumbnails
@@ -164,4 +180,4 @@ password_cancel=Cancel
printing_not_supported=Warning: Printing is not fully supported by this browser.
printing_not_ready=Warning: The PDF is not fully loaded for printing.
web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts.
-document_colors_disabled=PDF documents are not allowed to use their own colors: \'Allow pages to choose their own colors\' is deactivated in the browser.
+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.
diff --git a/locale/en-ZA/viewer.properties b/locale/en-ZA/viewer.properties
index 6c063a4..4f9a886 100644
--- a/locale/en-ZA/viewer.properties
+++ b/locale/en-ZA/viewer.properties
@@ -18,12 +18,12 @@ previous_label=Previous
next.title=Next Page
next_label=Next
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Page:
-page_of=of {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
zoom_out.title=Zoom Out
zoom_out_label=Zoom Out
@@ -67,7 +67,11 @@ document_properties.title=Document Properties…
document_properties_label=Document Properties…
document_properties_file_name=File name:
document_properties_file_size=File size:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=Title:
document_properties_author=Author:
@@ -75,6 +79,8 @@ document_properties_subject=Subject:
document_properties_keywords=Keywords:
document_properties_creation_date=Creation Date:
document_properties_modification_date=Modification Date:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Creator:
document_properties_producer=PDF Producer:
@@ -82,13 +88,16 @@ document_properties_version=PDF Version:
document_properties_page_count=Page Count:
document_properties_close=Close
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Toggle Sidebar
toggle_sidebar_label=Toggle Sidebar
-outline.title=Show Document Outline
-outline_label=Document Outline
+document_outline.title=Show Document Outline (double-click to expand/collapse all items)
+document_outline_label=Document Outline
attachments.title=Show Attachments
attachments_label=Attachments
thumbs.title=Show Thumbnails
@@ -140,12 +149,16 @@ page_scale_width=Page Width
page_scale_fit=Page Fit
page_scale_auto=Automatic Zoom
page_scale_actual=Actual Size
+# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
+# numerical scale value.
+page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=Error
loading_error=An error occurred while loading the PDF.
invalid_file_error=Invalid or corrupted PDF file.
missing_file_error=Missing PDF file.
+unexpected_response_error=Unexpected server response.
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
@@ -155,9 +168,8 @@ text_annotation_type.alt=[{{type}} Annotation]
password_label=Enter the password to open this PDF file.
password_invalid=Invalid password. Please try again.
password_ok=OK
-password_cancel=Cancel
printing_not_supported=Warning: Printing is not fully supported by this browser.
printing_not_ready=Warning: The PDF is not fully loaded for printing.
web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts.
-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.
+document_colors_not_allowed=PDF documents are not allowed to use their own colours: “Allow pages to choose their own colours” is deactivated in the browser.
diff --git a/locale/eo/viewer.properties b/locale/eo/viewer.properties
index 65bb15f..8ebe179 100644
--- a/locale/eo/viewer.properties
+++ b/locale/eo/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Malantaŭen
next.title=Venonta paĝo
next_label=Antaŭen
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Paĝo:
-page_of=el {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Paĝo
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=el {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} el {{pagesCount}})
zoom_out.title=Malpligrandigi
zoom_out_label=Malpligrandigi
@@ -67,7 +70,11 @@ document_properties.title=Atributoj de dokumento…
document_properties_label=Atributoj de dokumento…
document_properties_file_name=Nomo de dosiero:
document_properties_file_size=Grado de dosiero:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KO ({{size_b}} oktetoj)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MO ({{size_b}} oktetoj)
document_properties_title=Titolo:
document_properties_author=Aŭtoro:
@@ -75,6 +82,8 @@ document_properties_subject=Temo:
document_properties_keywords=Ŝlosilvorto:
document_properties_creation_date=Dato de kreado:
document_properties_modification_date=Dato de modifo:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Kreinto:
document_properties_producer=Produktinto de PDF:
@@ -82,13 +91,19 @@ document_properties_version=Versio de PDF:
document_properties_page_count=Nombro de paĝoj:
document_properties_close=Fermi
+print_progress_message=Preparo de dokumento por presi ĝin …
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Nuligi
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Montri/kaŝi flankan strion
toggle_sidebar_label=Montri/kaŝi flankan strion
-outline.title=Montri skemon de dokumento
-outline_label=Skemo de dokumento
+document_outline.title=Montri la konturon de dokumento (alklaku duoble por faldi/malfaldi ĉiujn elementojn)
+document_outline_label=Konturo de dokumento
attachments.title=Montri kunsendaĵojn
attachments_label=Kunsendaĵojn
thumbs.title=Montri miniaturojn
@@ -161,7 +176,7 @@ password_invalid=Nevalida pasvorto. Bonvolu provi denove.
password_ok=Akcepti
password_cancel=Nuligi
-printing_not_supported=Averto: tiu ĉi retesplorilo ne plene subtenas presadon.
-printing_not_ready=Warning: La PDF dosiero ne estas plene ŝargita por presado.
+printing_not_supported=Averto: tiu ĉi retumilo ne plene subtenas presadon.
+printing_not_ready=Averto: La PDF dosiero ne estas plene ŝargita por presado.
web_fonts_disabled=Neaktivaj teksaĵaj tiparoj: ne elbas uzi enmetitajn tiparojn de PDF.
-document_colors_disabled=Dokumentoj PDF ne rajtas havi siajn proprajn kolorojn: \'Permesi al paĝoj elekti siajn proprajn kolorojn\' estas malaktiva en la retesplorilo.
+document_colors_not_allowed=PDF dokumentoj ne rajtas uzi siajn proprajn kolorojn: 'Permesi al paĝoj uzi siajn proprajn kolorojn' ne estas aktiva en la retumilo.
diff --git a/locale/es-AR/viewer.properties b/locale/es-AR/viewer.properties
index 733be7b..f2e2a3c 100644
--- a/locale/es-AR/viewer.properties
+++ b/locale/es-AR/viewer.properties
@@ -18,24 +18,27 @@ previous_label=Anterior
next.title=Página siguiente
next_label=Siguiente
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Página:
-page_of=de {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Página
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=de {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=( {{pageNumber}} de {{pagesCount}} )
zoom_out.title=Alejar
zoom_out_label=Alejar
zoom_in.title=Acercar
zoom_in_label=Acercar
zoom.title=Zoom
-print.title=Imprimir
-print_label=Imprimir
presentation_mode.title=Cambiar a modo presentación
presentation_mode_label=Modo presentación
open_file.title=Abrir archivo
open_file_label=Abrir
+print.title=Imprimir
+print_label=Imprimir
download.title=Descargar
download_label=Descargar
bookmark.title=Vista actual (copiar o abrir en nueva ventana)
@@ -67,7 +70,11 @@ document_properties.title=Propiedades del documento…
document_properties_label=Propiedades del documento…
document_properties_file_name=Nombre de archivo:
document_properties_file_size=Tamaño de archovo:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=Título:
document_properties_author=Autor:
@@ -75,6 +82,8 @@ document_properties_subject=Asunto:
document_properties_keywords=Palabras clave:
document_properties_creation_date=Fecha de creación:
document_properties_modification_date=Fecha de modificación:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Creador:
document_properties_producer=PDF Productor:
@@ -82,13 +91,19 @@ document_properties_version=Versión de PDF:
document_properties_page_count=Cantidad de páginas:
document_properties_close=Cerrar
+print_progress_message=Preparando documento para imprimir…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Cancelar
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Alternar barra lateral
toggle_sidebar_label=Alternar barra lateral
-outline.title=Mostrar esquema del documento
-outline_label=Esquema del documento
+document_outline.title=Mostrar esquema del documento (doble clic para expandir/colapsar todos los ítems)
+document_outline_label=Esquema del documento
attachments.title=Mostrar adjuntos
attachments_label=Adjuntos
thumbs.title=Mostrar miniaturas
@@ -164,4 +179,4 @@ password_cancel=Cancelar
printing_not_supported=Advertencia: La impresión no está totalmente soportada por este navegador.
printing_not_ready=Advertencia: El PDF no está completamente cargado para impresión.
web_fonts_disabled=Tipografía web deshabilitada: no se pueden usar tipos incrustados en PDF.
-document_colors_disabled=Los documentos PDF no tienen permitido usar sus propios colores: \'Permitir a las páginas elegir sus propios colores\' está desactivado en el navegador.
+document_colors_not_allowed=Los documentos PDF no tienen permitido usar sus propios colores: 'Permitir a las páginas elegir sus propios colores' está desactivado en el navegador.
diff --git a/locale/es-CL/viewer.properties b/locale/es-CL/viewer.properties
index f5660c3..ddfbe90 100644
--- a/locale/es-CL/viewer.properties
+++ b/locale/es-CL/viewer.properties
@@ -12,27 +12,39 @@
# See the License for the specific language governing permissions and
# limitations under the License.
-previous.title = Página anterior
-previous_label = Anterior
-next.title = Página siguiente
-next_label = Siguiente
-page_label = Página:
-page_of = de {{pageCount}}
-zoom_out.title = Alejar
-zoom_out_label = Alejar
-zoom_in.title = Acercar
-zoom_in_label = Acercar
-zoom.title = Ampliación
-print.title = Imprimir
-print_label = Imprimir
-presentation_mode.title = Cambiar al modo de presentación
-presentation_mode_label = Modo de presentación
-open_file.title = Abrir archivo
-open_file_label = Abrir
-download.title = Descargar
-download_label = Descargar
-bookmark.title = Vista actual (copiar o abrir en nueva ventana)
-bookmark_label = Vista actual
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Página anterior
+previous_label=Anterior
+next.title=Página siguiente
+next_label=Siguiente
+
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Página
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=de {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} de {{pagesCount}})
+
+zoom_out.title=Alejar
+zoom_out_label=Alejar
+zoom_in.title=Acercar
+zoom_in_label=Acercar
+zoom.title=Ampliación
+presentation_mode.title=Cambiar al modo de presentación
+presentation_mode_label=Modo de presentación
+open_file.title=Abrir archivo
+open_file_label=Abrir
+print.title=Imprimir
+print_label=Imprimir
+download.title=Descargar
+download_label=Descargar
+bookmark.title=Vista actual (copiar o abrir en nueva ventana)
+bookmark_label=Vista actual
+
+# Secondary toolbar and context menu
tools.title=Herramientas
tools_label=Herramientas
first_page.title=Ir a la primera página
@@ -53,11 +65,16 @@ hand_tool_enable_label=Activar herramienta de mano
hand_tool_disable.title=Desactivar herramienta de mano
hand_tool_disable_label=Desactivar herramienta de mano
+# Document properties dialog box
document_properties.title=Propiedades del documento…
document_properties_label=Propiedades del documento…
-document_properties_file_name=Nombre del archivo:
+document_properties_file_name=Nombre de archivo:
document_properties_file_size=Tamaño del archivo:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=Título:
document_properties_author=Autor:
@@ -65,6 +82,8 @@ document_properties_subject=Asunto:
document_properties_keywords=Palabras clave:
document_properties_creation_date=Fecha de creación:
document_properties_modification_date=Fecha de modificación:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Creador:
document_properties_producer=Productor del PDF:
@@ -72,59 +91,92 @@ document_properties_version=Versión de PDF:
document_properties_page_count=Cantidad de páginas:
document_properties_close=Cerrar
+print_progress_message=Preparando documento para impresión…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Cancelar
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
toggle_sidebar.title=Barra lateral
toggle_sidebar_label=Mostrar u ocultar la barra lateral
-outline.title = Mostrar esquema del documento
-outline_label = Esquema del documento
+document_outline.title=Mostrar esquema del documento (doble clic para expandir/contraer todos los elementos)
+document_outline_label=Esquema del documento
attachments.title=Mostrar adjuntos
attachments_label=Adjuntos
-thumbs.title = Mostrar miniaturas
-thumbs_label = Miniaturas
-findbar.title = Buscar en el documento
-findbar_label = Buscar
-thumb_page_title = Página {{page}}
-thumb_page_canvas = Miniatura de la página {{page}}
-first_page.label = Ir a la primera página
-last_page.label = Ir a la última página
-page_rotate_cw.label = Rotar en sentido de los punteros del reloj
-page_rotate_ccw.label = Rotar en sentido contrario a los punteros del reloj
-find_label = Buscar:
-find_previous.title = Encontrar la aparición anterior de la frase
-find_previous_label = Previo
-find_next.title = Encontrar la siguiente aparición de la frase
-find_next_label = Siguiente
-find_highlight = Destacar todos
-find_match_case_label = Coincidir mayús./minús.
+thumbs.title=Mostrar miniaturas
+thumbs_label=Miniaturas
+findbar.title=Buscar en el documento
+findbar_label=Buscar
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Página {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Miniatura de la página {{page}}
+
+# Find panel button title and messages
+find_label=Buscar:
+find_previous.title=Buscar la aparición anterior de la frase
+find_previous_label=Previo
+find_next.title=Buscar la siguiente aparición de la frase
+find_next_label=Siguiente
+find_highlight=Destacar todos
+find_match_case_label=Coincidir mayús./minús.
find_reached_top=Se alcanzó el inicio del documento, continuando desde el final
find_reached_bottom=Se alcanzó el final del documento, continuando desde el inicio
-find_not_found = Frase no encontrada
-error_more_info = Más información
-error_less_info = Menos información
-error_close = Cerrar
+find_not_found=Frase no encontrada
+
+# Error panel labels
+error_more_info=Más información
+error_less_info=Menos información
+error_close=Cerrar
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
error_version_info=PDF.js v{{version}} (compilación: {{build}})
-error_message = Mensaje: {{message}}
-error_stack = Pila: {{stack}}
-error_file = Archivo: {{file}}
-error_line = Línea: {{line}}
-rendering_error = Ha ocurrido un error al renderizar la página.
-page_scale_width = Ancho de página
-page_scale_fit = Ajuste de página
-page_scale_auto = Aumento automático
-page_scale_actual = Tamaño actual
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Mensaje: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Pila: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Archivo: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Línea: {{line}}
+rendering_error=Ha ocurrido un error al renderizar la página.
+
+# Predefined zoom values
+page_scale_width=Ancho de página
+page_scale_fit=Ajuste de página
+page_scale_auto=Aumento automático
+page_scale_actual=Tamaño actual
+# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
+# numerical scale value.
page_scale_percent={{scale}}%
-loading_error_indicator = Error
-loading_error = Ha ocurrido un error al cargar el PDF.
-invalid_file_error = Archivo PDF inválido o corrupto.
+
+# Loading indicator messages
+loading_error_indicator=Error
+loading_error=Ha ocurrido un error al cargar el PDF.
+invalid_file_error=Archivo PDF inválido o corrupto.
missing_file_error=Falta el archivo PDF.
unexpected_response_error=Respuesta del servidor inesperada.
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[{{type}} Anotación]
password_label=Ingrese la contraseña para abrir este archivo PDF.
-password_invalid=Contraseña inválida. Por favor, vuelva a intentarlo.
+password_invalid=Contraseña inválida. Por favor, vuelve a intentarlo.
password_ok=Aceptar
password_cancel=Cancelar
-printing_not_supported = Advertencia: Imprimir no está soportado completamente por este navegador.
+printing_not_supported=Advertencia: Imprimir no está soportado completamente por este navegador.
printing_not_ready=Advertencia: El PDF no está completamente cargado para ser impreso.
-web_fonts_disabled=Las fuentes web están desactivadas: imposible usar las fuentes PDF embebidas.
-document_colors_disabled=Los documentos PDF no tienen permitido usar sus propios colores: 'Permitir a las páginas elegir sus propios colores' está desactivado en el navegador.
+web_fonts_disabled=Las tipografías web están desactivadas: imposible usar las fuentes PDF embebidas.
+document_colors_not_allowed=Los documentos PDF no tienen permitido usar sus propios colores: 'Permitir a las páginas elegir sus propios colores' está desactivado en el navegador.
diff --git a/locale/es-ES/viewer.properties b/locale/es-ES/viewer.properties
index d147c7a..edbd31c 100644
--- a/locale/es-ES/viewer.properties
+++ b/locale/es-ES/viewer.properties
@@ -6,8 +6,9 @@ previous.title = Página anterior
previous_label = Anterior
next.title = Página siguiente
next_label = Siguiente
-page_label = Página:
-page_of = de {{pageCount}}
+page.title = Página
+of_pages = de {{pagesCount}}
+page_of_pages = ({{pageNumber}} de {{pagesCount}})
zoom_out.title = Reducir
zoom_out_label = Reducir
zoom_in.title = Aumentar
@@ -59,10 +60,13 @@ document_properties_producer = Productor PDF:
document_properties_version = Versión PDF:
document_properties_page_count = Número de páginas:
document_properties_close = Cerrar
+print_progress_message = Preparando documento para impresión…
+print_progress_percent = {{progress}}%
+print_progress_close = Cancelar
toggle_sidebar.title = Cambiar barra lateral
toggle_sidebar_label = Cambiar barra lateral
-outline.title = Mostrar el esquema del documento
-outline_label = Esquema del documento
+document_outline.title = Mostrar resumen del documento (doble clic para expandir/contraer todos los elementos)
+document_outline_label = Resumen de documento
attachments.title = Mostrar adjuntos
attachments_label = Adjuntos
thumbs.title = Mostrar miniaturas
@@ -77,9 +81,9 @@ find_previous_label = Anterior
find_next.title = Encontrar la siguiente aparición de esta frase
find_next_label = Siguiente
find_highlight = Resaltar todos
-find_match_case_label = Concordar mayús./minús.
+find_match_case_label = Coincidencia de mayús./minús.
find_reached_top = Se alcanzó el inicio del documento, se continúa desde el final
-find_reached_bottom = Fin del documento alcanzado, se continúa desde arriba
+find_reached_bottom = Se alcanzó el final del documento, se continúa desde el inicio
find_not_found = Frase no encontrada
error_more_info = Más información
error_less_info = Menos información
@@ -108,4 +112,4 @@ password_cancel = Cancelar
printing_not_supported = Advertencia: Imprimir no está totalmente soportado por este navegador.
printing_not_ready = Advertencia: Este PDF no se ha cargado completamente para poder imprimirse.
web_fonts_disabled = Las tipografías web están desactivadas: es imposible usar las tipografías PDF embebidas.
-document_colors_disabled = Los documentos PDF no tienen permitido usar sus propios colores: 'Permitir a las páginas elegir sus propios colores' está desactivado en el navegador.
+document_colors_not_allowed = Los documentos PDF no tienen permitido usar sus propios colores: 'Permitir a las páginas elegir sus propios colores' está desactivado en el navegador.
diff --git a/locale/es-MX/viewer.properties b/locale/es-MX/viewer.properties
index f0b3e7a..483b9a7 100644
--- a/locale/es-MX/viewer.properties
+++ b/locale/es-MX/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Anterior
next.title=Página siguiente
next_label=Siguiente
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Página:
-page_of=de {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Página
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=de {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} de {{pagesCount}})
zoom_out.title=Reducir
zoom_out_label=Reducir
@@ -67,7 +70,11 @@ document_properties.title=Propiedades del documento…
document_properties_label=Propiedades del documento…
document_properties_file_name=Nombre del archivo:
document_properties_file_size=Tamaño del archivo:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=Título:
document_properties_author=Autor:
@@ -75,6 +82,8 @@ document_properties_subject=Asunto:
document_properties_keywords=Palabras claves:
document_properties_creation_date=Fecha de creación:
document_properties_modification_date=Fecha de modificación:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Creador:
document_properties_producer=Productor PDF:
@@ -82,13 +91,19 @@ document_properties_version=Versión PDF:
document_properties_page_count=Número de páginas:
document_properties_close=Cerrar
+print_progress_message=Preparando documento para impresión…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Cancelar
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Cambiar barra lateral
toggle_sidebar_label=Cambiar barra lateral
-outline.title=Mostrar esquema del documento
-outline_label=Esquema del documento
+document_outline.title=Mostrar esquema del documento (doble clic para expandir/contraer todos los elementos)
+document_outline_label=Esquema del documento
attachments.title=Mostrar adjuntos
attachments_label=Adjuntos
thumbs.title=Mostrar miniaturas
@@ -164,4 +179,4 @@ password_cancel=Cancelar
printing_not_supported=Advertencia: La impresión no esta completamente soportada por este navegador.
printing_not_ready=Advertencia: El PDF no cargo completamente para impresión.
web_fonts_disabled=Las fuentes web están desactivadas: es imposible usar las fuentes PDF embebidas.
-document_colors_disabled=Los documentos PDF no tienen permiso de usar sus propios colores: 'Permitir que las páginas elijan sus propios colores' esta desactivada en el navegador.
+document_colors_not_allowed=Los documentos PDF no tienen permiso de usar sus propios colores: 'Permitir que las páginas elijan sus propios colores' esta desactivada en el navegador.
diff --git a/locale/et/viewer.properties b/locale/et/viewer.properties
index 83da357..1b52857 100644
--- a/locale/et/viewer.properties
+++ b/locale/et/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Eelmine
next.title=Järgmine lehekülg
next_label=Järgmine
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Lehekülg:
-page_of=(kokku {{pageCount}})
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Leht
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=/ {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}}/{{pagesCount}})
zoom_out.title=Vähenda
zoom_out_label=Vähenda
@@ -67,7 +70,11 @@ document_properties.title=Dokumendi omadused…
document_properties_label=Dokumendi omadused…
document_properties_file_name=Faili nimi:
document_properties_file_size=Faili suurus:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KiB ({{size_b}} baiti)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MiB ({{size_b}} baiti)
document_properties_title=Pealkiri:
document_properties_author=Autor:
@@ -75,6 +82,8 @@ document_properties_subject=Teema:
document_properties_keywords=Märksõnad:
document_properties_creation_date=Loodud:
document_properties_modification_date=Muudetud:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}} {{time}}
document_properties_creator=Looja:
document_properties_producer=Generaator:
@@ -82,13 +91,19 @@ document_properties_version=Generaatori versioon:
document_properties_page_count=Lehekülgi:
document_properties_close=Sulge
+print_progress_message=Dokumendi ettevalmistamine printimiseks…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Loobu
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Näita külgriba
toggle_sidebar_label=Näita külgriba
-outline.title=Näita sisukorda
-outline_label=Näita sisukorda
+document_outline.title=Näita sisukorda (kõigi punktide laiendamiseks/ahendamiseks topeltklõpsa)
+document_outline_label=Näita sisukorda
attachments.title=Näita manuseid
attachments_label=Manused
thumbs.title=Näita pisipilte
@@ -151,7 +166,7 @@ invalid_file_error=Vigane või rikutud PDF-fail.
missing_file_error=PDF-fail puudub.
unexpected_response_error=Ootamatu vastus serverilt.
-# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
@@ -164,4 +179,4 @@ password_cancel=Loobu
printing_not_supported=Hoiatus: printimine pole selle brauseri poolt täielikult toetatud.
printing_not_ready=Hoiatus: PDF pole printimiseks täielikult laaditud.
web_fonts_disabled=Veebifondid on keelatud: PDFiga kaasatud fonte pole võimalik kasutada.
-document_colors_disabled=PDF-dokumentidel pole oma värvide kasutamine lubatud: \'Veebilehtedel on lubatud kasutada oma värve\' on brauseris deaktiveeritud.
+document_colors_not_allowed=PDF-dokumentidel pole oma värvide kasutamine lubatud: “Veebilehtedel on lubatud kasutada oma värve” on brauseris deaktiveeritud.
diff --git a/locale/eu/viewer.properties b/locale/eu/viewer.properties
index 52d50ba..2054068 100644
--- a/locale/eu/viewer.properties
+++ b/locale/eu/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Aurrekoa
next.title=Hurrengo orria
next_label=Hurrengoa
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Orria:
-page_of=/ {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Orria
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=/ {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages={{pagesCount}})/({{pageNumber}}
zoom_out.title=Urrundu zooma
zoom_out_label=Urrundu zooma
@@ -67,7 +70,11 @@ document_properties.title=Dokumentuaren propietateak…
document_properties_label=Dokumentuaren propietateak…
document_properties_file_name=Fitxategi-izena:
document_properties_file_size=Fitxategiaren tamaina:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} byte)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} byte)
document_properties_title=Izenburua:
document_properties_author=Egilea:
@@ -75,6 +82,8 @@ document_properties_subject=Gaia:
document_properties_keywords=Gako-hitzak:
document_properties_creation_date=Sortze-data:
document_properties_modification_date=Aldatze-data:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Sortzailea:
document_properties_producer=PDFaren ekoizlea:
@@ -82,13 +91,19 @@ document_properties_version=PDF bertsioa:
document_properties_page_count=Orrialde kopurua:
document_properties_close=Itxi
+print_progress_message=Dokumentua inprimatzeko prestatzen…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent=%{{progress}}
+print_progress_close=Utzi
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Txandakatu alboko barra
toggle_sidebar_label=Txandakatu alboko barra
-outline.title=Erakutsi dokumentuaren eskema
-outline_label=Dokumentuaren eskema
+document_outline.title=Erakutsi dokumentuaren eskema (klik bikoitza elementu guztiak zabaltzeko/tolesteko)
+document_outline_label=Dokumentuaren eskema
attachments.title=Erakutsi eranskinak
attachments_label=Eranskinak
thumbs.title=Erakutsi koadro txikiak
@@ -164,4 +179,4 @@ password_cancel=Utzi
printing_not_supported=Abisua: inprimatzeko euskarria ez da erabatekoa nabigatzaile honetan.
printing_not_ready=Abisua: PDFa ez dago erabat kargatuta inprimatzeko.
web_fonts_disabled=Webeko letra-tipoak desgaituta daude: ezin dira kapsulatutako PDF letra-tipoak erabili.
-document_colors_disabled=PDF dokumentuek ez dute beraien koloreak erabiltzeko baimenik: 'Baimendu orriak beraien letra-tipoak aukeratzea' desaktibatuta dago nabigatzailean.
+document_colors_not_allowed=PDF dokumentuek ez dute beraien koloreak erabiltzeko baimenik: 'Baimendu orriak beraien letra-tipoak aukeratzea' desaktibatuta dago nabigatzailean.
diff --git a/locale/fa/viewer.properties b/locale/fa/viewer.properties
index 1988978..50815a7 100644
--- a/locale/fa/viewer.properties
+++ b/locale/fa/viewer.properties
@@ -18,12 +18,15 @@ previous_label=قبلی
next.title=صفحهٔ بعدی
next_label=بعدی
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=صفحه:
-page_of=از {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=صفحه
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=از {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}}از {{pagesCount}})
zoom_out.title=کوچکنمایی
zoom_out_label=کوچکنمایی
@@ -38,7 +41,7 @@ print.title=چاپ
print_label=چاپ
download.title=بارگیری
download_label=بارگیری
-bookmark.title=نمای فعلی (کپی کن، یا در پنجرۀ دیگری نشان بده)
+bookmark.title=نمای فعلی (رونوشت و یا نشان دادن در پنجره جدید)
bookmark_label=نمای فعلی
# Secondary toolbar and context menu
@@ -67,7 +70,11 @@ document_properties.title=خصوصیات سند...
document_properties_label=خصوصیات سند...
document_properties_file_name=نام فایل:
document_properties_file_size=حجم پرونده:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} کیلوبایت ({{size_b}} بایت)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} مگابایت ({{size_b}} بایت)
document_properties_title=عنوان:
document_properties_author=نویسنده:
@@ -75,6 +82,8 @@ document_properties_subject=موضوع:
document_properties_keywords=کلیدواژهها:
document_properties_creation_date=تاریخ ایجاد:
document_properties_modification_date=تاریخ ویرایش:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}، {{time}}
document_properties_creator=ایجاد کننده:
document_properties_producer=ایجاد کننده PDF:
@@ -82,13 +91,19 @@ document_properties_version=نسخه PDF:
document_properties_page_count=تعداد صفحات:
document_properties_close=بستن
+print_progress_message=آماده سازی مدارک برای چاپ کردن…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=لغو
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=باز و بسته کردن نوار کناری
toggle_sidebar_label=تغییرحالت نوارکناری
-outline.title=نمایش طرح نوشتار
-outline_label=طرح نوشتار
+document_outline.title=نمایش رئوس مطالب مدارک(برای بازشدن/جمع شدن همه موارد دوبار کلیک کنید)
+document_outline_label=طرح نوشتار
attachments.title=نمایش پیوستها
attachments_label=پیوستها
thumbs.title=نمایش تصاویر بندانگشتی
@@ -146,7 +161,7 @@ page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=خطا
-loading_error=هنگام بارگیری پرونده (PDF) خطایی رخ داد.
+loading_error=هنگام بارگیری پرونده PDF خطایی رخ داد.
invalid_file_error=پرونده PDF نامعتبر یامعیوب میباشد.
missing_file_error=پرونده PDF یافت نشد.
unexpected_response_error=پاسخ پیش بینی نشده سرور
@@ -159,9 +174,9 @@ text_annotation_type.alt=[{{type}} Annotation]
password_label=جهت باز کردن پرونده PDF گذرواژه را وارد نمائید.
password_invalid=گذرواژه نامعتبر. لطفا مجددا تلاش کنید.
password_ok=تأیید
-password_cancel=انصراف
+password_cancel=لغو
printing_not_supported=هشدار: قابلیت چاپ بهطور کامل در این مرورگر پشتیبانی نمیشود.
printing_not_ready=اخطار: پرونده PDF بطور کامل بارگیری نشده و امکان چاپ وجود ندارد.
web_fonts_disabled=فونت های تحت وب غیر فعال شده اند: امکان استفاده از نمایش دهنده داخلی PDF وجود ندارد.
-document_colors_disabled=فایلهای PDF نمیتوانند که رنگ های خود را داشته باشند. لذا گزینه 'اجازه تغییر رنگ" در مرورگر غیر فعال شده است.
+document_colors_not_allowed=فایلهای PDF اجازه ندارند تا از رنگهای خود استفاده کنند: گزینه «به صفحات اجازه بده تا از رنگهای خود استفاده کنند» در مرورگر غیر فعال است.
diff --git a/locale/ff/viewer.properties b/locale/ff/viewer.properties
index 8a64098..c73fc96 100644
--- a/locale/ff/viewer.properties
+++ b/locale/ff/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Ɓennuɗo
next.title=Hello faango
next_label=Yeeso
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Hello:
-page_of=e nder {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Hello
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=e nder {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} of {{pagesCount}})
zoom_out.title=Lonngo Woɗɗa
zoom_out_label=Lonngo Woɗɗa
@@ -67,7 +70,11 @@ document_properties.title=Keeroraaɗi Winndannde…
document_properties_label=Keeroraaɗi Winndannde…
document_properties_file_name=Innde fiilde:
document_properties_file_size=Ɓetol fiilde:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bite)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bite)
document_properties_title=Tiitoonde:
document_properties_author=Binnduɗo:
@@ -75,6 +82,8 @@ document_properties_subject=Toɓɓere:
document_properties_keywords=Kelmekele jiytirɗe:
document_properties_creation_date=Ñalnde Sosaa:
document_properties_modification_date=Ñalnde Waylaa:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Cosɗo:
document_properties_producer=Paggiiɗo PDF:
@@ -82,13 +91,19 @@ document_properties_version=Yamre PDF:
document_properties_page_count=Limoore Kelle:
document_properties_close=Uddu
+print_progress_message=Nana heboo winnditaade fiilannde…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Haaytu
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Toggilo Palal Sawndo
toggle_sidebar_label=Toggilo Palal Sawndo
-outline.title=Hollu Toɓɓe Fiilannde
-outline_label=Toɓɓe Fiilannde
+document_outline.title=Hollu Ƴiyal Fiilannde (dobdobo ngam wertude/taggude teme fof)
+document_outline_label=Toɓɓe Fiilannde
attachments.title=Hollu Ɗisanɗe
attachments_label=Ɗisanɗe
thumbs.title=Hollu Dooɓe
@@ -164,4 +179,4 @@ password_cancel=Haaytu
printing_not_supported=Reentino: Winnditagol tammbitaaka no feewi e ndee wanngorde.
printing_not_ready=Reentino: PDF oo loowaaki haa timmi ngam winnditagol.
web_fonts_disabled=Ponte geese ko daaƴaaɗe: horiima huutoraade ponte PDF coomtoraaɗe.
-document_colors_disabled=Piilanɗe PDF njamiraaka yoo kuutoro goobuuji mum'en keeriiɗi: 'Yamir kello yoo kuutoro goobuuki keeriiɗi' koko daaƴaa e wanngorde ndee.
+document_colors_not_allowed=Piilanɗe PDF njamiraaka yoo kuutoro goobuuji mum'en keeriiɗi: 'Yamir kello yoo kuutoro goobuuki keeriiɗi' koko daaƴaa e wanngorde ndee.
diff --git a/locale/fi/viewer.properties b/locale/fi/viewer.properties
index d64a0a8..1db4e86 100644
--- a/locale/fi/viewer.properties
+++ b/locale/fi/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Edellinen
next.title=Seuraava sivu
next_label=Seuraava
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Sivu:
-page_of=/ {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Sivu
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=/ {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} / {{pagesCount}})
zoom_out.title=Loitonna
zoom_out_label=Loitonna
@@ -67,7 +70,11 @@ document_properties.title=Dokumentin ominaisuudet…
document_properties_label=Dokumentin ominaisuudet…
document_properties_file_name=Tiedostonimi:
document_properties_file_size=Tiedoston koko:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} kt ({{size_b}} tavua)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} Mt ({{size_b}} tavua)
document_properties_title=Otsikko:
document_properties_author=Tekijä:
@@ -75,6 +82,8 @@ document_properties_subject=Aihe:
document_properties_keywords=Avainsanat:
document_properties_creation_date=Luomispäivämäärä:
document_properties_modification_date=Muokkauspäivämäärä:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Luoja:
document_properties_producer=PDF-tuottaja:
@@ -82,13 +91,19 @@ document_properties_version=PDF-versio:
document_properties_page_count=Sivujen määrä:
document_properties_close=Sulje
+print_progress_message=Valmistellaan dokumenttia tulostamista varten…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}} %
+print_progress_close=Peruuta
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Näytä/piilota sivupaneeli
toggle_sidebar_label=Näytä/piilota sivupaneeli
-outline.title=Näytä dokumentin rakenne
-outline_label=Dokumentin rakenne
+document_outline.title=Näytä dokumentin sisällys (laajenna tai kutista kohdat kaksoisnapsauttamalla)
+document_outline_label=Dokumentin sisällys
attachments.title=Näytä liitteet
attachments_label=Liitteet
thumbs.title=Näytä pienoiskuvat
@@ -164,4 +179,4 @@ password_cancel=Peruuta
printing_not_supported=Varoitus: Selain ei tue kaikkia tulostustapoja.
printing_not_ready=Varoitus: PDF-tiedosto ei ole vielä latautunut kokonaan, eikä sitä voi vielä tulostaa.
web_fonts_disabled=Verkkosivujen omat kirjasinlajit on estetty: ei voida käyttää upotettuja PDF-kirjasinlajeja.
-document_colors_disabled=PDF-dokumenttien ei ole sallittua käyttää omia värejään: Asetusta "Sivut saavat käyttää omia värejään oletusten sijaan" ei ole valittu selaimen asetuksissa.
+document_colors_not_allowed=PDF-dokumenttien ei ole sallittua käyttää omia värejään: Asetusta ”Sivut saavat käyttää omia värejään oletusten sijaan” ei ole valittu selaimen asetuksissa.
diff --git a/locale/fr/viewer.properties b/locale/fr/viewer.properties
index a65e06d..57e81d3 100644
--- a/locale/fr/viewer.properties
+++ b/locale/fr/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Précédent
next.title=Page suivante
next_label=Suivant
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Page :
-page_of=sur {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Page
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=sur {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} sur {{pagesCount}})
zoom_out.title=Zoom arrière
zoom_out_label=Zoom arrière
@@ -57,39 +60,21 @@ page_rotate_ccw.title=Rotation anti-horaire
page_rotate_ccw.label=Rotation anti-horaire
page_rotate_ccw_label=Rotation anti-horaire
-# Tooltips and alt text for side panel toolbar buttons
-# (the _label strings are alt text for the buttons, the .title strings are
-# tooltips)
-toggle_sidebar.title=Afficher/Masquer le panneau latéral
-toggle_sidebar_label=Afficher/Masquer le panneau latéral
-outline.title=Afficher les signets
-outline_label=Signets du document
-attachments.title=Afficher les pièces jointes
-attachments_label=Pièces jointes
-thumbs.title=Afficher les vignettes
-thumbs_label=Vignettes
-findbar.title=Rechercher dans le document
-findbar_label=Rechercher
-
-# Thumbnails panel item (tooltip and alt text for images)
-# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
-# number.
-thumb_page_title=Page {{page}}
-# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
-# number.
-thumb_page_canvas=Vignette de la page {{page}}
-
-hand_tool_enable.title=Activer l'outil main
-hand_tool_enable_label=Activer l'outil main
-hand_tool_disable.title=Désactiver l'outil main
-hand_tool_disable_label=Désactiver l'outil main
+hand_tool_enable.title=Activer l’outil main
+hand_tool_enable_label=Activer l’outil main
+hand_tool_disable.title=Désactiver l’outil main
+hand_tool_disable_label=Désactiver l’outil main
# Document properties dialog box
document_properties.title=Propriétés du document…
document_properties_label=Propriétés du document…
document_properties_file_name=Nom du fichier :
document_properties_file_size=Taille du fichier :
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} Ko ({{size_b}} octets)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} Mo ({{size_b}} octets)
document_properties_title=Titre :
document_properties_author=Auteur :
@@ -97,6 +82,8 @@ document_properties_subject=Sujet :
document_properties_keywords=Mots-clés :
document_properties_creation_date=Date de création :
document_properties_modification_date=Modifié le :
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}} à {{time}}
document_properties_creator=Créé par :
document_properties_producer=Outil de conversion PDF :
@@ -104,9 +91,37 @@ document_properties_version=Version PDF :
document_properties_page_count=Nombre de pages :
document_properties_close=Fermer
+print_progress_message=Préparation du document pour l’impression…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}} %
+print_progress_close=Annuler
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Afficher/Masquer le panneau latéral
+toggle_sidebar_label=Afficher/Masquer le panneau latéral
+document_outline.title=Afficher les signets du document (double-cliquer pour développer/réduire tous les éléments)
+document_outline_label=Signets du document
+attachments.title=Afficher les pièces jointes
+attachments_label=Pièces jointes
+thumbs.title=Afficher les vignettes
+thumbs_label=Vignettes
+findbar.title=Rechercher dans le document
+findbar_label=Rechercher
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Page {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Vignette de la page {{page}}
+
# Find panel button title and messages
find_label=Rechercher :
-find_previous.title=Trouver l'occurrence précédente de la phrase
+find_previous.title=Trouver l’occurrence précédente de la phrase
find_previous_label=Précédent
find_next.title=Trouver la prochaine occurrence de la phrase
find_next_label=Suivant
@@ -117,8 +132,8 @@ find_reached_bottom=Bas de la page atteint, poursuite au début
find_not_found=Phrase introuvable
# Error panel labels
-error_more_info=Plus d'informations
-error_less_info=Moins d'informations
+error_more_info=Plus d’informations
+error_less_info=Moins d’informations
error_close=Fermer
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
@@ -133,7 +148,7 @@ error_stack=Pile : {{stack}}
error_file=Fichier : {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Ligne : {{line}}
-rendering_error=Une erreur s'est produite lors de l'affichage de la page.
+rendering_error=Une erreur s’est produite lors de l’affichage de la page.
# Predefined zoom values
page_scale_width=Pleine largeur
@@ -146,7 +161,7 @@ page_scale_percent={{scale}} %
# Loading indicator messages
loading_error_indicator=Erreur
-loading_error=Une erreur s'est produite lors du chargement du fichier PDF.
+loading_error=Une erreur s’est produite lors du chargement du fichier PDF.
invalid_file_error=Fichier PDF invalide ou corrompu.
missing_file_error=Fichier PDF manquant.
unexpected_response_error=Réponse inattendue du serveur.
@@ -161,7 +176,7 @@ password_invalid=Mot de passe incorrect. Veuillez réessayer.
password_ok=OK
password_cancel=Annuler
-printing_not_supported=Attention : l'impression n'est pas totalement prise en charge par ce navigateur.
-printing_not_ready=Attention : le PDF n'est pas entièrement chargé pour pouvoir l'imprimer.
-web_fonts_disabled=Les polices web sont désactivées : impossible d'utiliser les polices intégrées au PDF.
-document_colors_disabled=Les documents PDF ne peuvent pas utiliser leurs propres couleurs : « Autoriser les pages web à utiliser leurs propres couleurs » est désactivé dans le navigateur.
+printing_not_supported=Attention : l’impression n’est pas totalement prise en charge par ce navigateur.
+printing_not_ready=Attention : le PDF n’est pas entièrement chargé pour pouvoir l’imprimer.
+web_fonts_disabled=Les polices web sont désactivées : impossible d’utiliser les polices intégrées au PDF.
+document_colors_not_allowed=Les documents PDF ne peuvent pas utiliser leurs propres couleurs : « Autoriser les pages web à utiliser leurs propres couleurs » est désactivé dans le navigateur.
diff --git a/locale/fy-NL/viewer.properties b/locale/fy-NL/viewer.properties
index d81561c..ed82764 100644
--- a/locale/fy-NL/viewer.properties
+++ b/locale/fy-NL/viewer.properties
@@ -18,26 +18,29 @@ previous_label=Foarige
next.title=Folgjende side
next_label=Folgjende
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=side:
-page_of=fan {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Side
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=fa {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} fan {{pagesCount}})
zoom_out.title=Utzoome
zoom_out_label=Utzoome
zoom_in.title=Ynzoome
zoom_in_label=Ynzoome
zoom.title=Zoome
-print.title=Ofdrukke
-print_label=Ofdrukke
-presentation_mode.title=Wikselje nei presintaasjemoadus
-presentation_mode_label=Presintaasjemoadus
+presentation_mode.title=Wikselje nei presintaasjemodus
+presentation_mode_label=Presintaasjemodus
open_file.title=Bestân iepenje
open_file_label=Iepenje
-download.title=Ynlade
-download_label=Ynlade
+print.title=Ofdrukke
+print_label=Ofdrukke
+download.title=Downloade
+download_label=Downloade
bookmark.title=Aktuele finster (kopiearje of iepenje yn nij finster)
bookmark_label=Aktuele finster
@@ -45,17 +48,17 @@ bookmark_label=Aktuele finster
tools.title=Ark
tools_label=Ark
first_page.title=Gean nei earste side
-first_page.label=Gean nei earste side
+first_page.label=Nei earste side gean
first_page_label=Gean nei earste side
last_page.title=Gean nei lêste side
-last_page.label=Gean nei lêste side
+last_page.label=Nei lêste side gean
last_page_label=Gean nei lêste side
page_rotate_cw.title=Rjochtsom draaie
page_rotate_cw.label=Rjochtsom draaie
page_rotate_cw_label=Rjochtsom draaie
-page_rotate_ccw.title=Linksom draaie
-page_rotate_ccw.label=Linksom draaie
-page_rotate_ccw_label=Linksom draaie
+page_rotate_ccw.title=Loftsom draaie
+page_rotate_ccw.label=Loftsom draaie
+page_rotate_ccw_label=Loftsom draaie
hand_tool_enable.title=Hânark ynskeakelje
hand_tool_enable_label=Hânark ynskeakelje
@@ -67,7 +70,11 @@ document_properties.title=Dokuminteigenskippen…
document_properties_label=Dokuminteigenskippen…
document_properties_file_name=Bestânsnamme:
document_properties_file_size=Bestânsgrutte:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=Titel:
document_properties_author=Auteur:
@@ -75,6 +82,8 @@ document_properties_subject=Underwerp:
document_properties_keywords=Kaaiwurden:
document_properties_creation_date=Oanmaakdatum:
document_properties_modification_date=Bewurkingsdatum:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Makker:
document_properties_producer=PDF-makker:
@@ -82,13 +91,19 @@ document_properties_version=PDF-ferzje:
document_properties_page_count=Siden:
document_properties_close=Slute
+print_progress_message=Dokumint tariede oar ôfdrukken…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Annulearje
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Sidebalke yn-/útskeakelje
toggle_sidebar_label=Sidebalke yn-/útskeakelje
-outline.title=Dokumint ynhâldsopjefte toane
-outline_label=Dokumint ynhâldsopjefte
+document_outline.title=Dokumintoersjoch toane (dûbelklik om alle items út/yn te klappen)
+document_outline_label=Dokumintoersjoch
attachments.title=Bylagen toane
attachments_label=Bylagen
thumbs.title=Foarbylden toane
@@ -104,12 +119,6 @@ thumb_page_title=Side {{page}}
# number.
thumb_page_canvas=Foarbyld fan side {{page}}
-# Context menu
-first_page.label=Nei earste side gean
-last_page.label=Nei lêste side gean
-page_rotate_cw.label=Rjochtsom draaie
-page_rotate_ccw.label=Linksom draaie
-
# Find panel button title and messages
find_label=Sykje:
find_previous.title=It foarige foarkommen fan de tekst sykje
@@ -118,8 +127,8 @@ find_next.title=It folgjende foarkommen fan de tekst sykje
find_next_label=Folgjende
find_highlight=Alles markearje
find_match_case_label=Haadlettergefoelich
-find_reached_top=Boppekant fan dokumint berikt, trochgien fanôf ûnder
-find_reached_bottom=Ein fan dokumint berikt, trochgien fanôf boppe
+find_reached_top=Boppekant fan dokumint berikt, trochgien fan ûnder ôf
+find_reached_bottom=Ein fan dokumint berikt, trochgien fan boppe ôf
find_not_found=Tekst net fûn
# Error panel labels
@@ -145,7 +154,7 @@ rendering_error=Der is in flater bard by it renderjen fan de side.
page_scale_width=Sidebreedte
page_scale_fit=Hiele side
page_scale_auto=Automatysk zoome
-page_scale_actual=Wurklike grutte
+page_scale_actual=Werklike grutte
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
page_scale_percent={{scale}}%
@@ -155,7 +164,7 @@ loading_error_indicator=Flater
loading_error=Der is in flater bard by it laden fan de PDF.
invalid_file_error=Ynfalide of korruptearre PDF-bestân.
missing_file_error=PDF-bestân ûntbrekt.
-unexpected_response_error=Unferwacht tsjinnerantwurd.
+unexpected_response_error=Unferwacht serverantwurd.
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
@@ -170,4 +179,4 @@ password_cancel=Annulearje
printing_not_supported=Warning: Printen is net folslein stipe troch dizze browser.
printing_not_ready=Warning: PDF is net folslein laden om ôf te drukken.
web_fonts_disabled=Weblettertypen binne útskeakele: gebrûk fan ynsluten PDF-lettertypen is net mooglik.
-document_colors_disabled=PDF-dokuminten binne net tastien om har eigen kleuren te brûken: ‘Siden tastean har eigen kleuren te kiezen’ is útskeakele yn de browser.
+document_colors_not_allowed=PDF-dokuminten meie harren eigen kleuren net brûke: ‘Siden tastean om harren eigen kleuren te kiezen’ is útskeakele yn de browser.
diff --git a/locale/ga-IE/viewer.properties b/locale/ga-IE/viewer.properties
index 0381959..820194b 100644
--- a/locale/ga-IE/viewer.properties
+++ b/locale/ga-IE/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Roimhe Seo
next.title=An Chéad Leathanach Eile
next_label=Ar Aghaidh
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Leathanach:
-page_of=as {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Leathanach
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=as {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} as {{pagesCount}})
zoom_out.title=Súmáil Amach
zoom_out_label=Súmáil Amach
@@ -67,7 +70,11 @@ document_properties.title=Airíonna na Cáipéise…
document_properties_label=Airíonna na Cáipéise…
document_properties_file_name=Ainm an chomhaid:
document_properties_file_size=Méid an chomhaid:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} kB ({{size_b}} beart)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} beart)
document_properties_title=Teideal:
document_properties_author=Údar:
@@ -75,6 +82,8 @@ document_properties_subject=Ábhar:
document_properties_keywords=Eochairfhocail:
document_properties_creation_date=Dáta Cruthaithe:
document_properties_modification_date=Dáta Athraithe:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Cruthaitheoir:
document_properties_producer=Cruthaitheoir an PDF:
@@ -82,13 +91,19 @@ document_properties_version=Leagan PDF:
document_properties_page_count=Líon Leathanach:
document_properties_close=Dún
+print_progress_message=Cáipéis á hullmhú le priontáil…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Cealaigh
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Scoránaigh an Barra Taoibh
toggle_sidebar_label=Scoránaigh an Barra Taoibh
-outline.title=Taispeáin Creatlach na Cáipéise
-outline_label=Creatlach na Cáipéise
+document_outline.title=Taispeáin Imlíne na Cáipéise (déchliceáil chun chuile rud a leathnú nó a laghdú)
+document_outline_label=Creatlach na Cáipéise
attachments.title=Taispeáin Iatáin
attachments_label=Iatáin
thumbs.title=Taispeáin Mionsamhlacha
@@ -114,7 +129,7 @@ find_highlight=Aibhsigh uile
find_match_case_label=Cásíogair
find_reached_top=Ag barr na cáipéise, ag leanúint ón mbun
find_reached_bottom=Ag bun na cáipéise, ag leanúint ón mbarr
-find_not_found=Abairtín gan aimsiú
+find_not_found=Frása gan aimsiú
# Error panel labels
error_more_info=Tuilleadh Eolais
@@ -149,7 +164,7 @@ loading_error_indicator=Earráid
loading_error=Tharla earráid agus an cháipéis PDF á luchtú.
invalid_file_error=Comhad neamhbhailí nó truaillithe PDF.
missing_file_error=Comhad PDF ar iarraidh.
-unexpected_response_error=Freagra ón bhfreastalaí gan súil leis.
+unexpected_response_error=Freagra ón bhfreastalaí nach rabhthas ag súil leis.
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
@@ -164,4 +179,4 @@ password_cancel=Cealaigh
printing_not_supported=Rabhadh: Ní thacaíonn an brabhsálaí le priontáil go hiomlán.
printing_not_ready=Rabhadh: Ní féidir an PDF a phriontáil go dtí go mbeidh an cháipéis iomlán luchtaithe.
web_fonts_disabled=Tá clófhoirne Gréasáin díchumasaithe: ní féidir clófhoirne leabaithe PDF a úsáid.
-document_colors_disabled=Níl cead ag cáipéisí PDF a ndathanna féin a roghnú; tá 'Tabhair cead do leathanaigh a ndathanna féin a roghnú' díchumasaithe sa mbrabhsálaí.
+document_colors_not_allowed=Níl cead ag cáipéisí PDF a ndathanna féin a roghnú: tá “Tabhair cead do leathanaigh a ndathanna féin a roghnú” díchumasaithe sa mbrabhsálaí.
diff --git a/locale/gd/viewer.properties b/locale/gd/viewer.properties
index c2edf02..bfad09b 100644
--- a/locale/gd/viewer.properties
+++ b/locale/gd/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Air ais
next.title=An ath-dhuilleag
next_label=Air adhart
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Duilleag:
-page_of=à {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Duilleag
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=à {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} à {{pagesCount}})
zoom_out.title=Sùm a-mach
zoom_out_label=Sùm a-mach
@@ -67,7 +70,11 @@ document_properties.title=Roghainnean na sgrìobhainne…
document_properties_label=Roghainnean na sgrìobhainne…
document_properties_file_name=Ainm an fhaidhle:
document_properties_file_size=Meud an fhaidhle:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=Tiotal:
document_properties_author=Ùghdar:
@@ -75,6 +82,8 @@ document_properties_subject=Cuspair:
document_properties_keywords=Faclan-luirg:
document_properties_creation_date=Latha a chruthachaidh:
document_properties_modification_date=Latha atharrachaidh:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Cruthadair:
document_properties_producer=Saothraiche a' PDF:
@@ -82,13 +91,19 @@ document_properties_version=Tionndadh a' PDF:
document_properties_page_count=Àireamh de dhuilleagan:
document_properties_close=Dùin
+print_progress_message=Ag ullachadh na sgrìobhainn airson clò-bhualadh…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Sguir dheth
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Toglaich am bàr-taoibh
toggle_sidebar_label=Toglaich am bàr-taoibh
-outline.title=Seall an sgrìobhainn far loidhne
-outline_label=Oir-loidhne na sgrìobhainne
+document_outline.title=Seall oir-loidhne na sgrìobhainn (dèan briogadh dùbailte airson a h-uile nì a leudachadh/a cho-theannadh)
+document_outline_label=Oir-loidhne na sgrìobhainne
attachments.title=Seall na ceanglachain
attachments_label=Ceanglachain
thumbs.title=Seall na dealbhagan
@@ -164,4 +179,4 @@ password_cancel=Sguir dheth
printing_not_supported=Rabhadh: Chan eil am brabhsair seo a' cur làn-taic ri clò-bhualadh.
printing_not_ready=Rabhadh: Cha deach am PDF a luchdadh gu tur airson clò-bhualadh.
web_fonts_disabled=Tha cruthan-clò lìn à comas: Chan urrainn dhuinn cruthan-clò PDF leabaichte a chleachdadh.
-document_colors_disabled=Chan fhaod sgrìobhainnean PDF na dathan aca fhèin a chleachdadh: Tha "Leig le duilleagan na dathan aca fhèin a chleachdadh" à comas sa bhrabhsair.
+document_colors_not_allowed=Chan fhaod sgrìobhainnean PDF na dathan aca fhèin a chleachdadh: Tha “Leig le duilleagan na dathan aca fhèin a chleachdadh” à comas sa bhrabhsair.
diff --git a/locale/gl/viewer.properties b/locale/gl/viewer.properties
index 0a1f17b..ac088ae 100644
--- a/locale/gl/viewer.properties
+++ b/locale/gl/viewer.properties
@@ -18,12 +18,12 @@ previous_label=Anterior
next.title=Seguinte páxina
next_label=Seguinte
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Páxina:
-page_of=de {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
zoom_out.title=Reducir
zoom_out_label=Reducir
@@ -67,7 +67,11 @@ document_properties.title=Propiedades do documento…
document_properties_label=Propiedades do documento…
document_properties_file_name=Nome do ficheiro:
document_properties_file_size=Tamaño do ficheiro:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=Título:
document_properties_author=Autor:
@@ -75,6 +79,8 @@ document_properties_subject=Asunto:
document_properties_keywords=Palabras clave:
document_properties_creation_date=Data de creación:
document_properties_modification_date=Data de modificación:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Creado por:
document_properties_producer=Xenerador do PDF:
@@ -82,13 +88,14 @@ document_properties_version=Versión de PDF:
document_properties_page_count=Número de páxinas:
document_properties_close=Pechar
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Amosar/agochar a barra lateral
toggle_sidebar_label=Amosar/agochar a barra lateral
-outline.title=Amosar esquema do documento
-outline_label=Esquema do documento
attachments.title=Amosar anexos
attachments_label=Anexos
thumbs.title=Amosar miniaturas
@@ -140,6 +147,9 @@ page_scale_width=Largura da páxina
page_scale_fit=Axuste de páxina
page_scale_auto=Zoom automático
page_scale_actual=Tamaño actual
+# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
+# numerical scale value.
+page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=Erro
@@ -161,4 +171,3 @@ password_cancel=Cancelar
printing_not_supported=Aviso: A impresión non é compatíbel de todo con este navegador.
printing_not_ready=Aviso: O PDF non se cargou completamente para imprimirse.
web_fonts_disabled=Desactiváronse as fontes web: foi imposíbel usar as fontes incrustadas no PDF.
-document_colors_disabled=Non se permite que os documentos PDF usen as súas propias cores: «Permitir que as páxinas escollan as súas propias cores» está desactivado no navegador.
diff --git a/locale/gu-IN/viewer.properties b/locale/gu-IN/viewer.properties
index 1e58d3f..9e69f5a 100644
--- a/locale/gu-IN/viewer.properties
+++ b/locale/gu-IN/viewer.properties
@@ -1,56 +1,132 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=પહેલાનુ પાનું
previous_label=પહેલાનુ
next.title=આગળનુ પાનું
- next_label=આગળનું
+next_label=આગળનું
+
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=પાનું:
-page_of={{pageCount}} નું
zoom_out.title=મોટુ કરો
zoom_out_label=મોટુ કરો
zoom_in.title=નાનું કરો
zoom_in_label=નાનું કરો
zoom.title=નાનું મોટુ કરો
-print.title=છાપો
-print_label=છારો
+presentation_mode.title=રજૂઆત સ્થિતિમાં જાવ
+presentation_mode_label=રજૂઆત સ્થિતિ
open_file.title=ફાઇલ ખોલો
open_file_label=ખોલો
+print.title=છાપો
+print_label=છારો
download.title=ડાઉનલોડ
download_label=ડાઉનલોડ
bookmark.title=વર્તમાન દૃશ્ય (નવી વિન્ડોમાં નકલ કરો અથવા ખોલો)
bookmark_label=વર્તમાન દૃશ્ય
+# Secondary toolbar and context menu
+tools.title=સાધનો
+tools_label=સાધનો
+first_page.label=પહેલાં પાનામાં જાવ
+first_page_label=પ્રથમ પાનાં પર જાવ
+last_page.label=છેલ્લા પાનામાં જાવ
+last_page_label=છેલ્લા પાનાં પર જાવ
+page_rotate_cw.label=ઘડિયાળનાં કાંટાની જેમ ફેરવો
+page_rotate_cw_label=ઘડિયાળનાં કાંટા તરફ ફેરવો
+page_rotate_ccw.label=ઘડિયાળનાં કાંટાની ઉલટી દિશામાં ફેરવો
+page_rotate_ccw_label=ઘડિયાળનાં કાંટાની વિરુદ્દ ફેરવો
+
+hand_tool_enable.title=હાથનાં સાધનને સક્રિય કરો
+hand_tool_enable_label=હાથનાં સાધનને સક્રિય કરો
+hand_tool_disable.title=હાથનાં સાધનને નિષ્ક્રિય કરો
+hand_tool_disable_label=હાથનાં સાધનને નિષ્ક્રિય કરો
+
+# Document properties dialog box
+document_properties.title=દસ્તાવેજ ગુણધર્મો…
+document_properties_label=દસ્તાવેજ ગુણધર્મો…
+document_properties_file_name=ફાઇલ નામ:
+document_properties_file_size=ફાઇલ માપ:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
+document_properties_kb={{size_kb}} KB ({{size_b}} બાઇટ)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
+document_properties_mb={{size_mb}} MB ({{size_b}} બાઇટ)
+document_properties_title=શીર્ષક:
+document_properties_author=લેખક:
+document_properties_subject=વિષય:
+document_properties_keywords=કિવર્ડ:
+document_properties_creation_date=નિર્માણ તારીખ:
+document_properties_modification_date=ફેરફાર તારીખ:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=નિર્માતા:
+document_properties_producer=PDF નિર્માતા:
+document_properties_version=PDF આવૃત્તિ:
+document_properties_page_count=પાનાં ગણતરી:
+document_properties_close=બંધ કરો
+
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
-outline.title=દસ્તાવેજ રૂપરેખા બતાવો
-outline_label=દસ્તાવેજ રૂપરેખા
+toggle_sidebar.title=ટૉગલ બાજુપટ્ટી
+toggle_sidebar_label=ટૉગલ બાજુપટ્ટી
+document_outline_label=દસ્તાવેજ રૂપરેખા
+attachments.title=જોડાણોને બતાવો
+attachments_label=જોડાણો
thumbs.title=થંબનેલ્સ બતાવો
thumbs_label=થંબનેલ્સ
-
-# Document outline messages
-
+findbar.title=દસ્તાવેજમાં શોધો
+findbar_label=શોધો
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
thumb_page_title=પાનું {{page}}
-
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
thumb_page_canvas=પાનાં {{page}} નું થંબનેલ્સ
+
+# Find panel button title and messages
+find_label=શોધો:
+find_previous.title=શબ્દસમૂહની પાછલી ઘટનાને શોધો
+find_previous_label=પહેલાંનુ
+find_next.title=શબ્દસમૂહની આગળની ઘટનાને શોધો
+find_next_label=આગળનું
+find_highlight=બધુ પ્રકાશિત કરો
+find_match_case_label=કેસ બંધબેસાડો
+find_reached_top=દસ્તાવેજનાં ટોચે પહોંચી ગયા, તળિયેથી ચાલુ કરેલ હતુ
+find_reached_bottom=દસ્તાવેજનાં અંતે પહોંચી ગયા, ઉપરથી ચાલુ કરેલ હતુ
+find_not_found=શબ્દસમૂહ મળ્યુ નથી
+
# Error panel labels
error_more_info=વધારે જાણકારી
error_less_info=ઓછી જાણકારી
error_close=બંધ કરો
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=સંદેશો: {{message}}
@@ -62,88 +138,31 @@ error_file=ફાઇલ: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=વાક્ય: {{line}}
rendering_error=ભૂલ ઉદ્ભવી જ્યારે પાનાંનુ રેન્ડ કરી રહ્યા હોય.
+
# Predefined zoom values
page_scale_width=પાનાની પહોળાઇ
page_scale_fit=પાનું બંધબેસતુ
page_scale_auto=આપમેળે નાનુંમોટુ કરો
page_scale_actual=ચોક્કસ માપ
-# Loading indicator messages
-# LOCALIZATION NOTE (error_line): "{{[percent}}" will be replaced with a percentage
+# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
+# numerical scale value.
+# Loading indicator messages
loading_error_indicator=ભૂલ
loading_error=ભૂલ ઉદ્ભવી જ્યારે PDF ને લાવી રહ્યા હોય.
-# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
-# "{{[type}}" will be replaced with an annotation type from a list defined in
-# the PDF spec (32000-1:2008 Table 169 – Annotation types).
-# Some common types are e.g.: "Check", "Text", "Comment", "Note"
-
-printing_not_supported=ચેતવણી: છાપવાનું આ બ્રાઉઝર દ્દારા સંપૂર્ણપણે આધારભૂત નથી.
-
-error_version_info=PDF.js v{{version}} (build: {{build}})
-find_highlight=બધુ પ્રકાશિત કરો
-find_label=શોધો:
-find_match_case_label=કેસ બંધબેસાડો
-find_next.title=શબ્દસમૂહની આગળની ઘટનાને શોધો
-find_next_label=આગળનું
-find_not_found=શબ્દસમૂહ મળ્યુ નથી
-find_previous.title=શબ્દસમૂહની પાછલી ઘટનાને શોધો
-find_previous_label=પહેલાંનુ
-find_reached_bottom=દસ્તાવેજનાં અંતે પહોંચી ગયા, ઉપરથી ચાલુ કરેલ હતુ
-find_reached_top=દસ્તાવેજનાં ટોચે પહોંચી ગયા, તળિયેથી ચાલુ કરેલ હતુ
-findbar.title=દસ્તાવેજમાં શોધો
-findbar_label=શોધો
-first_page.label=પહેલાં પાનામાં જાવ
invalid_file_error=અયોગ્ય અથવા ભાંગેલ PDF ફાઇલ.
-last_page.label=છેલ્લા પાનામાં જાવ
missing_file_error=ગુમ થયેલ PDF ફાઇલ.
-page_rotate_ccw.label=ઘડિયાળનાં કાંટાની ઉલટી દિશામાં ફેરવો
-page_rotate_cw.label=ઘડિયાળનાં કાંટાની જેમ ફેરવો
-presentation_mode.title=રજૂઆત સ્થિતિમાં જાવ
-presentation_mode_label=રજૂઆત સ્થિતિ
-printing_not_ready=Warning: PDF એ છાપવા માટે સંપૂર્ણપણે લાવેલ છે.
-toggle_sidebar.title=ટૉગલ બાજુપટ્ટી
-toggle_sidebar_label=ટૉગલ બાજુપટ્ટી
-web_fonts_disabled=વેબ ફોન્ટ નિષ્ક્રિય થયેલ છે: ઍમ્બેડ થયેલ PDF ફોન્ટને વાપરવાનું અસમર્થ.
-document_colors_disabled=PDF દસ્તાવેજો તેનાં પોતાના રંગોને વાપરવા પરવાનગી આપતા નથી: 'તેનાં પોતાનાં રંગોને પસંદ કરવા માટે પાનાંને પરવાનગી આપો' બ્રાઉઝરમાં નિષ્ક્રિય થયેલ છે.
-text_annotation_type.alt=[{{type}} Annotation]
-attachments.title=જોડાણોને બતાવો
-attachments_label=જોડાણો
-document_properties_author=લેખક:
-document_properties_close=બંધ કરો
-document_properties_creation_date=નિર્માણ તારીખ:
-document_properties_creator=નિર્માતા:
-document_properties_date_string={{date}}, {{time}}
-document_properties_file_name=ફાઇલ નામ:
-document_properties_file_size=ફાઇલ માપ:
-document_properties_kb={{size_kb}} KB ({{size_b}} બાઇટ)
-document_properties_keywords=કિવર્ડ:
-document_properties_label=દસ્તાવેજ ગુણધર્મો…
-document_properties_mb={{size_mb}} MB ({{size_b}} બાઇટ)
-document_properties_modification_date=ફેરફાર તારીખ:
-document_properties_page_count=પાનાં ગણતરી:
-document_properties_producer=PDF નિર્માતા:
-document_properties_subject=વિષય:
-document_properties_title=શીર્ષક:
-first_page.title=પ્રથમ પાનાં પર જાવ
-first_page_label=પ્રથમ પાનાં પર જાવ
-hand_tool_disable.title=હાથનાં સાધનને નિષ્ક્રિય કરો
-hand_tool_disable_label=હાથનાં સાધનને નિષ્ક્રિય કરો
-hand_tool_enable.title=હાથનાં સાધનને સક્રિય કરો
-hand_tool_enable_label=હાથનાં સાધનને સક્રિય કરો
-last_page.title=છેલ્લા પાનાં પર જાવ
-last_page_label=છેલ્લા પાનાં પર જાવ
-page_rotate_ccw.title=ઘડિયાળનાં કાંટાની વિરુદ્દ ફેરવો
-page_rotate_ccw_label=ઘડિયાળનાં કાંટાની વિરુદ્દ ફેરવો
-page_rotate_cw.title=ઘડિયાળનાં કાંટા તરફ ફેરવો
-page_rotate_cw_label=ઘડિયાળનાં કાંટા તરફ ફેરવો
-password_cancel=રદ કરો
-password_invalid=અયોગ્ય પાસવર્ડ. મહેરબાની કરીને ફરી પ્રયત્ન કરો.
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[{{type}} Annotation]
password_label=આ PDF ફાઇલને ખોલવા પાસવર્ડને દાખલ કરો.
+password_invalid=અયોગ્ય પાસવર્ડ. મહેરબાની કરીને ફરી પ્રયત્ન કરો.
password_ok=બરાબર
-tools.title=સાધનો
-tools_label=સાધનો
-
-document_properties_version=PDF આવૃત્તિ:
-document_properties.title=દસ્તાવેજ ગુણધર્મો…
+printing_not_supported=ચેતવણી: છાપવાનું આ બ્રાઉઝર દ્દારા સંપૂર્ણપણે આધારભૂત નથી.
+printing_not_ready=Warning: PDF એ છાપવા માટે સંપૂર્ણપણે લાવેલ છે.
+web_fonts_disabled=વેબ ફોન્ટ નિષ્ક્રિય થયેલ છે: ઍમ્બેડ થયેલ PDF ફોન્ટને વાપરવાનું અસમર્થ.
+document_colors_not_allowed=PDF દસ્તાવેજો તેનાં પોતાના રંગોને વાપરવા પરવાનગી આપતા નથી: 'તેનાં પોતાનાં રંગોને પસંદ કરવા માટે પાનાંને પરવાનગી આપો' બ્રાઉઝરમાં નિષ્ક્રિય થયેલ છે.
diff --git a/locale/he/viewer.properties b/locale/he/viewer.properties
index 6a1116f..ed8c1ce 100644
--- a/locale/he/viewer.properties
+++ b/locale/he/viewer.properties
@@ -1,6 +1,16 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=דף קודם
@@ -8,12 +18,15 @@ previous_label=קודם
next.title=דף הבא
next_label=הבא
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=עמוד:
-page_of=מתוך {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=דף
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=מתוך {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} מתוך {{pagesCount}})
zoom_out.title=התרחקות
zoom_out_label=התרחקות
@@ -57,7 +70,11 @@ document_properties.title=מאפייני מסמך…
document_properties_label=מאפייני מסמך…
document_properties_file_name=שם קובץ:
document_properties_file_size=גודל הקובץ:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} ק״ב ({{size_b}} בתים)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} מ״ב ({{size_b}} בתים)
document_properties_title=כותרת:
document_properties_author=מחבר:
@@ -65,19 +82,28 @@ document_properties_subject=נושא:
document_properties_keywords=מילות מפתח:
document_properties_creation_date=תאריך יצירה:
document_properties_modification_date=תאריך שינוי:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=יוצר:
document_properties_producer=יצרן PDF:
document_properties_version=גרסת PDF:
document_properties_page_count=מספר דפים:
document_properties_close=סגירה
+
+print_progress_message=מסמך בהכנה להדפסה…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=ביטול
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=הצגה/הסתרה של סרגל הצד
toggle_sidebar_label=הצגה/הסתרה של סרגל הצד
-outline.title=הצגת מתאר מסמך
-outline_label=מתאר מסמך
+document_outline.title=הצגת מתאר מסמך (לחיצה כפולה כדי להרחיב או לצמצם את כל הפריטים)
+document_outline_label=מתאר מסמך
attachments.title=הצגת צרופות
attachments_label=צרופות
thumbs.title=הצגת תצוגה מקדימה
@@ -129,12 +155,16 @@ page_scale_width=רוחב העמוד
page_scale_fit=התאמה לעמוד
page_scale_auto=מרחק מתצוגה אוטומטי
page_scale_actual=גודל אמתי
+# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
+# numerical scale value.
+page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=שגיאה
loading_error=אירעה שגיאה בעת טעינת ה־PDF.
invalid_file_error=קובץ PDF פגום או לא תקין.
missing_file_error=קובץ PDF חסר.
+unexpected_response_error=תגובת שרת לא צפויה.
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
@@ -149,4 +179,4 @@ password_cancel=ביטול
printing_not_supported=אזהרה: הדפסה אינה נתמכת במלואה בדפדפן זה.
printing_not_ready=אזהרה: ה־PDF לא ניתן לחלוטין עד מצב שמאפשר הדפסה.
web_fonts_disabled=גופני רשת מנוטרלים: לא ניתן להשתמש בגופני PDF מוטבעים.
-document_colors_disabled=מסמכי PDF לא יכולים להשתמש בצבעים משלהם: האפשרות \\'לאפשר לעמודים לבחור צבעים משלהם\\' אינה פעילה בדפדפן.
\ No newline at end of file
+document_colors_not_allowed=מסמכי PDF אינם מורשים להשתמש בצבעים משלהם: האפשרות „אפשר לעמודים לבחור צבעים משלהם” אינה פעילה בדפדפן.
diff --git a/locale/hi-IN/viewer.properties b/locale/hi-IN/viewer.properties
index 7b8db3e..e5f6f97 100644
--- a/locale/hi-IN/viewer.properties
+++ b/locale/hi-IN/viewer.properties
@@ -18,44 +18,47 @@ previous_label=पिछला
next.title=अगला पृष्ठ
next_label=आगे
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=पृष्ठ:
-page_of={{pageCount}} का
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=पृष्ठ:
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages={{pagesCount}} का
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} of {{pagesCount}})
-zoom_out.title=छोटा करें
-zoom_out_label=छोटा करें
+zoom_out.title=\u0020छोटा करें
+zoom_out_label=\u0020छोटा करें
zoom_in.title=बड़ा करें
zoom_in_label=बड़ा करें
zoom.title=बड़ा-छोटा करें
presentation_mode.title=प्रस्तुति अवस्था में जाएँ
-presentation_mode_label=प्रस्तुति अवस्था
+presentation_mode_label=\u0020प्रस्तुति अवस्था
open_file.title=फ़ाइल खोलें
-open_file_label=खोलें
+open_file_label=\u0020खोलें
print.title=छापें
-print_label=छापें
+print_label=\u0020छापें
download.title=डाउनलोड
download_label=डाउनलोड
bookmark.title=मौजूदा दृश्य (नए विंडो में नक़ल लें या खोलें)
-bookmark_label=मौजूदा दृश्य
+bookmark_label=\u0020मौजूदा दृश्य
# Secondary toolbar and context menu
tools.title=औज़ार
tools_label=औज़ार
first_page.title=प्रथम पृष्ठ पर जाएँ
-first_page.label=प्रथम पृष्ठ पर जाएँ
+first_page.label=\u0020प्रथम पृष्ठ पर जाएँ
first_page_label=प्रथम पृष्ठ पर जाएँ
last_page.title=अंतिम पृष्ठ पर जाएँ
-last_page.label=अंतिम पृष्ठ पर जाएँ
-last_page_label=अंतिम पृष्ठ पर जाएँ
+last_page.label=\u0020अंतिम पृष्ठ पर जाएँ
+last_page_label=\u0020अंतिम पृष्ठ पर जाएँ
page_rotate_cw.title=घड़ी की दिशा में घुमाएँ
page_rotate_cw.label=घड़ी की दिशा में घुमाएँ
page_rotate_cw_label=घड़ी की दिशा में घुमाएँ
page_rotate_ccw.title=घड़ी की दिशा से उल्टा घुमाएँ
page_rotate_ccw.label=घड़ी की दिशा से उल्टा घुमाएँ
-page_rotate_ccw_label=घड़ी की दिशा से उल्टा घुमाएँ
+page_rotate_ccw_label=\u0020घड़ी की दिशा से उल्टा घुमाएँ
hand_tool_enable.title=हाथ औजार सक्रिय करें
hand_tool_enable_label=हाथ औजार सक्रिय करें
@@ -67,14 +70,20 @@ document_properties.title=दस्तावेज़ विशेषता...
document_properties_label=दस्तावेज़ विशेषता...
document_properties_file_name=फ़ाइल नाम:
document_properties_file_size=फाइल आकारः
-document_properties_kb={{size_kb}} KB ({{size_b}} बाइट)
-document_properties_mb={{size_mb}} MB ({{size_b}} बाइट)
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
+document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
+document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=शीर्षक:
document_properties_author=लेखकः
document_properties_subject=विषय:
document_properties_keywords=कुंजी-शब्द:
document_properties_creation_date=निर्माण दिनांक:
document_properties_modification_date=संशोधन दिनांक:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=निर्माता:
document_properties_producer=PDF उत्पादक:
@@ -82,18 +91,24 @@ document_properties_version=PDF संस्करण:
document_properties_page_count=पृष्ठ गिनती:
document_properties_close=बंद करें
+print_progress_message=छपाई के लिए दस्तावेज़ को तैयार किया जा रहा है...
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=रद्द करें
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
-toggle_sidebar.title=स्लाइडर टॉगल करें
+toggle_sidebar.title=\u0020स्लाइडर टॉगल करें
toggle_sidebar_label=स्लाइडर टॉगल करें
-outline.title=दस्तावेज़ आउटलाइन दिखाएँ
-outline_label=दस्तावेज़ आउटलाइन
+document_outline.title=दस्तावेज़ की रूपरेखा दिखाइए (सारी वस्तुओं को फलने अथवा समेटने के लिए दो बार क्लिक करें)
+document_outline_label=दस्तावेज़ आउटलाइन
attachments.title=संलग्नक दिखायें
attachments_label=संलग्नक
thumbs.title=लघुछवियाँ दिखाएँ
thumbs_label=लघु छवि
-findbar.title=दस्तावेज़ में ढूँढ़ें
+findbar.title=\u0020दस्तावेज़ में ढूँढ़ें
findbar_label=ढूँढ़ें
# Thumbnails panel item (tooltip and alt text for images)
@@ -110,7 +125,7 @@ find_previous.title=वाक्यांश की पिछली उपस्
find_previous_label=पिछला
find_next.title=वाक्यांश की अगली उपस्थिति ढूँढ़ें
find_next_label=आगे
-find_highlight=सभी आलोकित करें
+find_highlight=\u0020सभी आलोकित करें
find_match_case_label=मिलान स्थिति
find_reached_top=पृष्ठ के ऊपर पहुंच गया, नीचे से जारी रखें
find_reached_bottom=पृष्ठ के नीचे में जा पहुँचा, ऊपर से जारी
@@ -125,7 +140,7 @@ error_close=बंद करें
error_version_info=PDF.js v{{version}} (build: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
-error_message=संदेश: {{message}}
+error_message=\u0020संदेश: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=स्टैक: {{stack}}
@@ -136,31 +151,32 @@ error_line=पंक्ति: {{line}}
rendering_error=पृष्ठ रेंडरिंग के दौरान त्रुटि आई.
# Predefined zoom values
-page_scale_width=पृष्ठ चौड़ाई
+page_scale_width=\u0020पृष्ठ चौड़ाई
page_scale_fit=पृष्ठ फिट
page_scale_auto=स्वचालित जूम
page_scale_actual=वास्तविक आकार
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
+page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=त्रुटि
-loading_error=पीडीएफ लोड करते समय एक त्रुटि हुई.
+loading_error=PDF लोड करते समय एक त्रुटि हुई.
invalid_file_error=अमान्य या भ्रष्ट PDF फ़ाइल.
-missing_file_error=अनुपस्थित PDF फ़ाइल.
+missing_file_error=\u0020अनुपस्थित PDF फ़ाइल.
unexpected_response_error=अप्रत्याशित सर्वर प्रतिक्रिया.
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
-text_annotation_type.alt=[{{type}} Annotation]
-password_label=इस पीडीएफ फ़ाइल को खोलने के लिए कृपया कूटशब्द भरें.
+text_annotation_type.alt=\u0020[{{type}} Annotation]
+password_label=इस PDF फ़ाइल को खोलने के लिए कृपया कूटशब्द भरें.
password_invalid=अवैध कूटशब्द, कृपया फिर कोशिश करें.
-password_ok=ठीक
+password_ok=OK
password_cancel=रद्द करें
printing_not_supported=चेतावनी: इस ब्राउज़र पर छपाई पूरी तरह से समर्थित नहीं है.
-printing_not_ready=चेतावनी: पीडीएफ छपाई के लिए पूरी तरह से लोड नहीं है.
+printing_not_ready=चेतावनी: PDF छपाई के लिए पूरी तरह से लोड नहीं है.
web_fonts_disabled=वेब फॉन्ट्स निष्क्रिय हैं: अंतःस्थापित PDF फॉन्टस के उपयोग में असमर्थ.
-document_colors_disabled=PDF दस्तावेज़ उनके अपने रंग को उपयोग करने के लिए अनुमति प्राप्त नहीं है: 'पृष्ठों को उनके अपने रंग को चुनने के लिए स्वीकृति दें कि वह उस ब्राउज़र में निष्क्रिय है.
+document_colors_not_allowed=PDF दस्तावेज़ उनके अपने रंग को उपयोग करने के लिए अनुमति प्राप्त नहीं है: "पृष्ठों को उनके अपने रंग को चुनने के लिए स्वीकृति दें" कि वह उस ब्राउज़र में निष्क्रिय है.
diff --git a/locale/hr/viewer.properties b/locale/hr/viewer.properties
index 50a43a7..6503d99 100644
--- a/locale/hr/viewer.properties
+++ b/locale/hr/viewer.properties
@@ -15,19 +15,22 @@
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Prethodna stranica
previous_label=Prethodna
-next.title=Iduća stranica
-next_label=Iduća
+next.title=Sljedeća stranica
+next_label=Sljedeća
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Stranica:
-page_of=od {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Stranica
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=od {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} od {{pagesCount}})
zoom_out.title=Uvećaj
zoom_out_label=Smanji
-zoom_in.title=Uvaćaj
+zoom_in.title=Uvećaj
zoom_in_label=Smanji
zoom.title=Uvećanje
presentation_mode.title=Prebaci u prezentacijski način rada
@@ -67,7 +70,11 @@ document_properties.title=Svojstva dokumenta...
document_properties_label=Svojstva dokumenta...
document_properties_file_name=Naziv datoteke:
document_properties_file_size=Veličina datoteke:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bajtova)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bajtova)
document_properties_title=Naslov:
document_properties_author=Autor:
@@ -75,20 +82,28 @@ document_properties_subject=Predmet:
document_properties_keywords=Ključne riječi:
document_properties_creation_date=Datum stvaranja:
document_properties_modification_date=Datum promjene:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
-document_properties_creator=Stvaralac:
+document_properties_creator=Stvaratelj:
document_properties_producer=PDF stvaratelj:
document_properties_version=PDF inačica:
document_properties_page_count=Broj stranica:
document_properties_close=Zatvori
+print_progress_message=Pripremanje dokumenta za ispis…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Odustani
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Prikaži/sakrij bočnu traku
toggle_sidebar_label=Prikaži/sakrij bočnu traku
-outline.title=Prikaži obris dokumenta
-outline_label=Obris dokumenta
+document_outline.title=Prikaži obris dokumenta (dvostruki klik za proširivanje/skupljanje svih stavki)
+document_outline_label=Obris dokumenta
attachments.title=Prikaži privitke
attachments_label=Privitci
thumbs.title=Prikaži sličice
@@ -109,7 +124,7 @@ find_label=Traži:
find_previous.title=Pronađi prethodno javljanje ovog izraza
find_previous_label=Prethodno
find_next.title=Pronađi iduće javljanje ovog izraza
-find_next_label=Iduće
+find_next_label=Sljedeće
find_highlight=Istankni sve
find_match_case_label=Slučaj podudaranja
find_reached_top=Dosegnut vrh dokumenta, nastavak od dna
@@ -164,4 +179,4 @@ password_cancel=Odustani
printing_not_supported=Upozorenje: Ispisivanje nije potpuno podržano u ovom pregledniku.
printing_not_ready=Upozorenje: PDF nije u potpunosti učitan za ispis.
web_fonts_disabled=Web fontovi su onemogućeni: nije moguće koristiti umetnute PDF fontove.
-document_colors_disabled=PDF dokumenti nemaju dopuštene koristiti vlastite boje: opcija 'Dopusti stranicama da koriste vlastite boje' je deaktivirana.
+document_colors_not_allowed=PDF dokumenti nemaju dopuštene koristiti vlastite boje: opcija 'Dopusti stranicama da koriste vlastite boje' je deaktivirana.
diff --git a/locale/hu/viewer.properties b/locale/hu/viewer.properties
index eda1c88..b244f41 100644
--- a/locale/hu/viewer.properties
+++ b/locale/hu/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Előző
next.title=Következő oldal
next_label=Tovább
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Oldal:
-page_of=összesen: {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Oldal
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=összesen: {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} / {{pagesCount}})
zoom_out.title=Kicsinyítés
zoom_out_label=Kicsinyítés
@@ -67,7 +70,11 @@ document_properties.title=Dokumentum tulajdonságai…
document_properties_label=Dokumentum tulajdonságai…
document_properties_file_name=Fájlnév:
document_properties_file_size=Fájlméret:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bájt)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bájt)
document_properties_title=Cím:
document_properties_author=Szerző:
@@ -75,6 +82,8 @@ document_properties_subject=Tárgy:
document_properties_keywords=Kulcsszavak:
document_properties_creation_date=Létrehozás dátuma:
document_properties_modification_date=Módosítás dátuma:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Létrehozta:
document_properties_producer=PDF előállító:
@@ -82,13 +91,19 @@ document_properties_version=PDF verzió:
document_properties_page_count=Oldalszám:
document_properties_close=Bezárás
+print_progress_message=Dokumentum előkészítése nyomtatáshoz…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Mégse
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Oldalsáv be/ki
toggle_sidebar_label=Oldalsáv be/ki
-outline.title=Dokumentumvázlat megjelenítése
-outline_label=Dokumentumvázlat
+document_outline.title=Dokumentum megjelenítése online (dupla kattintás minden elem kinyitásához/összecsukásához)
+document_outline_label=Dokumentumvázlat
attachments.title=Mellékletek megjelenítése
attachments_label=Van melléklet
thumbs.title=Bélyegképek megjelenítése
@@ -164,4 +179,4 @@ password_cancel=Mégse
printing_not_supported=Figyelmeztetés: Ez a böngésző nem teljesen támogatja a nyomtatást.
printing_not_ready=Figyelmeztetés: A PDF nincs teljesen betöltve a nyomtatáshoz.
web_fonts_disabled=Webes betűkészletek letiltva: nem használhatók a beágyazott PDF betűkészletek.
-document_colors_disabled=A PDF dokumentumok nem használhatják saját színeiket: „Az oldalak a saját maguk által kiválasztott színeket használhatják” beállítás ki van kapcsolva a böngészőben.
+document_colors_not_allowed=A PDF dokumentumok nem használhatják saját színeiket: „Az oldalak a saját maguk által kiválasztott színeket használhatják” beállítás ki van kapcsolva a böngészőben.
diff --git a/locale/hy-AM/viewer.properties b/locale/hy-AM/viewer.properties
index b26af7d..1c02974 100644
--- a/locale/hy-AM/viewer.properties
+++ b/locale/hy-AM/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Նախորդը
next.title=Հաջորդ էջը
next_label=Հաջորդը
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Էջ.
-page_of={{pageCount}}-ից
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Էջ.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages={{pagesCount}}-ից\u0020
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}}-ը {{pagesCount}})-ից
zoom_out.title=Փոքրացնել
zoom_out_label=Փոքրացնել
@@ -67,7 +70,11 @@ document_properties.title=Փաստաթղթի հատկությունները...
document_properties_label=Փաստաթղթի հատկությունները...
document_properties_file_name=Ֆայլի անունը.
document_properties_file_size=Ֆայլի չափը.
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} ԿԲ ({{size_b}} բայթ)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} ՄԲ ({{size_b}} բայթ)
document_properties_title=Վերնագիր.
document_properties_author=Հեղինակ․
@@ -75,6 +82,8 @@ document_properties_subject=Վերնագիր.
document_properties_keywords=Հիմնաբառ.
document_properties_creation_date=Ստեղծելու ամսաթիվը.
document_properties_modification_date=Փոփոխելու ամսաթիվը.
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Ստեղծող.
document_properties_producer=PDF-ի հեղինակը.
@@ -82,13 +91,19 @@ document_properties_version=PDF-ի տարբերակը.
document_properties_page_count=Էջերի քանակը.
document_properties_close=Փակել
+print_progress_message=Նախապատրաստում է փաստաթուղթը տպելուն...
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Չեղարկել
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Բացել/Փակել Կողային վահանակը
toggle_sidebar_label=Բացել/Փակել Կողային վահանակը
-outline.title=Ցուցադրել փաստաթղթի բովանդակությունը
-outline_label=Փաստաթղթի բովանդակությունը
+document_outline.title=Ցուցադրել փաստաթղթի ուրվագիծը (կրկնակի սեղմեք՝ միույթները ընդարձակելու/կոծկելու համար)
+document_outline_label=Փաստաթղթի բովանդակությունը
attachments.title=Ցուցադրել կցորդները
attachments_label=Կցորդներ
thumbs.title=Ցուցադրել Մանրապատկերը
@@ -110,7 +125,7 @@ find_previous.title=Գտնել անրահայտության նախորդ հան
find_previous_label=Նախորդը
find_next.title=Գտիր արտահայտության հաջորդ հանդիպումը
find_next_label=Հաջորդը
-find_highlight=Նշագծել Բոլորը
+find_highlight=Գունանշել բոլորը
find_match_case_label=Մեծ(փոքր)ատառ հաշվի առնել
find_reached_top=Հասել եք փաստաթղթի վերևին, կշարունակվի ներքևից
find_reached_bottom=Հասել եք փաստաթղթի վերջին, կշարունակվի վերևից
@@ -158,10 +173,10 @@ unexpected_response_error=Սպասարկիչի անսպասելի պատասխա
text_annotation_type.alt=[{{type}} Ծանոթություն]
password_label=Մուտքագրեք PDF-ի գաղտնաբառը:
password_invalid=Գաղտնաբառը սխալ է: Կրկին փորձեք:
-password_ok=ԼԱՎ
+password_ok=Լավ
password_cancel=Չեղարկել
printing_not_supported=Զգուշացում. Տպելը ամբողջությամբ չի աջակցվում դիտարկիչի կողմից։
printing_not_ready=Զգուշացում. PDF-ը ամբողջությամբ չի բեռնավորվել տպելու համար:
web_fonts_disabled=Վեբ-տառատեսակները անջատված են. հնարավոր չէ օգտագործել ներկառուցված PDF տառատեսակները:
-document_colors_disabled=PDF փաստաթղթերին թույլատրված չէ օգտագործել իրենց սեփական գույները: 'Թույլատրել էջերին ընտրել իրենց սեփական գույները' ընտրանքը անջատված է դիտարկիչում:
+document_colors_not_allowed=PDF փաստաթղթերին թույլատրված չէ օգտագործել իրենց սեփական գույները: “Թույլատրել էջերին ընտրել իրենց սեփական գույները“ ընտրանքը անջատված է դիտարկիչում:
diff --git a/locale/id/viewer.properties b/locale/id/viewer.properties
index 5984083..2641b87 100644
--- a/locale/id/viewer.properties
+++ b/locale/id/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Sebelumnya
next.title=Laman Selanjutnya
next_label=Selanjutnya
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Laman:
-page_of=dari {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Halaman
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=dari {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} dari {{pagesCount}})
zoom_out.title=Perkecil
zoom_out_label=Perkecil
@@ -67,7 +70,11 @@ document_properties.title=Properti Dokumen…
document_properties_label=Properti Dokumen…
document_properties_file_name=Nama berkas:
document_properties_file_size=Ukuran berkas:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} byte)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} byte)
document_properties_title=Judul:
document_properties_author=Penyusun:
@@ -75,6 +82,8 @@ document_properties_subject=Subjek:
document_properties_keywords=Kata Kunci:
document_properties_creation_date=Tanggal Dibuat:
document_properties_modification_date=Tanggal Dimodifikasi:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Pembuat:
document_properties_producer=Pemroduksi PDF:
@@ -82,13 +91,19 @@ document_properties_version=Versi PDF:
document_properties_page_count=Jumlah Halaman:
document_properties_close=Tutup
+print_progress_message=Menyiapkan dokumen untuk pencetakan…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Batalkan
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Aktif/Nonaktifkan Bilah Samping
toggle_sidebar_label=Aktif/Nonaktifkan Bilah Samping
-outline.title=Buka Kerangka Dokumen
-outline_label=Kerangka Dokumen
+document_outline.title=Tampilkan Kerangka Dokumen (klik ganda untuk membentangkan/menciutkan semua item)
+document_outline_label=Kerangka Dokumen
attachments.title=Tampilkan Lampiran
attachments_label=Lampiran
thumbs.title=Tampilkan Miniatur
@@ -164,4 +179,4 @@ password_cancel=Batal
printing_not_supported=Peringatan: Pencetakan tidak didukung secara lengkap pada peramban ini.
printing_not_ready=Peringatan: Berkas PDF masih belum dimuat secara lengkap untuk dapat dicetak.
web_fonts_disabled=Font web dinonaktifkan: tidak dapat menggunakan font PDF yang tersemat.
-document_colors_disabled=Dokumen PDF tidak diizinkan untuk menggunakan warnanya sendiri karena setelan 'Izinkan laman memilih warna sendiri' dinonaktifkan pada pengaturan.
+document_colors_not_allowed=Dokumen PDF tidak diizinkan untuk menggunakan warnanya sendiri karena setelan 'Izinkan laman memilih warna sendiri' dinonaktifkan pada pengaturan.
diff --git a/locale/is/viewer.properties b/locale/is/viewer.properties
index ffc055a..d80a182 100644
--- a/locale/is/viewer.properties
+++ b/locale/is/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Fyrri
next.title=Næsta síða
next_label=Næsti
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Síða:
-page_of=af {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Síða
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=af {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} af {{pagesCount}})
zoom_out.title=Minnka
zoom_out_label=Minnka
@@ -67,7 +70,11 @@ document_properties.title=Eiginleikar skjals…
document_properties_label=Eiginleikar skjals…
document_properties_file_name=Skráarnafn:
document_properties_file_size=Skrárstærð:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=Titill:
document_properties_author=Hönnuður:
@@ -75,6 +82,8 @@ document_properties_subject=Efni:
document_properties_keywords=Stikkorð:
document_properties_creation_date=Búið til:
document_properties_modification_date=Dags breytingar:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Höfundur:
document_properties_producer=PDF framleiðandi:
@@ -82,13 +91,19 @@ document_properties_version=PDF útgáfa:
document_properties_page_count=Blaðsíðufjöldi:
document_properties_close=Loka
+print_progress_message=Undirbý skjal fyrir prentun…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Hætta við
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Víxla hliðslá
toggle_sidebar_label=Víxla hliðslá
-outline.title=Sýna efniskipan skjals
-outline_label=Efnisskipan skjals
+document_outline.title=Sýna yfirlit skjals (tvísmelltu til að opna/loka öllum hlutum)
+document_outline_label=Efnisskipan skjals
attachments.title=Sýna viðhengi
attachments_label=Viðhengi
thumbs.title=Sýna smámyndir
@@ -164,4 +179,4 @@ password_cancel=Hætta við
printing_not_supported=Aðvörun: Prentun er ekki með fyllilegan stuðning á þessum vafra.
printing_not_ready=Aðvörun: Ekki er búið að hlaða inn allri PDF skránni fyrir prentun.
web_fonts_disabled=Vef leturgerðir eru óvirkar: get ekki notað innbyggðar PDF leturgerðir.
-document_colors_disabled=PDF skjöl hafa ekki leyfi til að nota sína eigin liti: 'Leyfa síðum að velja eigin liti' er óvirkt í vafranum.
+document_colors_not_allowed=PDF skjöl hafa ekki leyfi til að nota sína eigin liti: “Leyfa síðum að velja eigin liti” er óvirkt í vafranum.
diff --git a/locale/it/viewer.properties b/locale/it/viewer.properties
index 91918e6..df6375f 100644
--- a/locale/it/viewer.properties
+++ b/locale/it/viewer.properties
@@ -6,8 +6,9 @@ previous.title = Pagina precedente
previous_label = Precedente
next.title = Pagina successiva
next_label = Successiva
-page_label = Pagina:
-page_of = di {{pageCount}}
+page.title = Pagina
+of_pages = di {{pagesCount}}
+page_of_pages = ({{pageNumber}} di {{pagesCount}})
zoom_out.title = Riduci zoom
zoom_out_label = Riduci zoom
zoom_in.title = Aumenta zoom
@@ -16,7 +17,7 @@ zoom.title = Zoom
presentation_mode.title = Passa alla modalità presentazione
presentation_mode_label = Modalità presentazione
open_file.title = Apri file
-open_file_label = Apri file
+open_file_label = Apri
print.title = Stampa
print_label = Stampa
download.title = Scarica questo documento
@@ -59,10 +60,13 @@ document_properties_producer = Produttore PDF:
document_properties_version = Versione PDF:
document_properties_page_count = Conteggio pagine:
document_properties_close = Chiudi
+print_progress_message = Preparazione documento per la stampa…
+print_progress_percent = {{progress}}%
+print_progress_close = Annulla
toggle_sidebar.title = Attiva/disattiva barra laterale
toggle_sidebar_label = Attiva/disattiva barra laterale
-outline.title = Visualizza la struttura del documento
-outline_label = Struttura documento
+document_outline.title = Visualizza la struttura del documento (doppio clic per visualizzare/nascondere tutti gli elementi)
+document_outline_label = Struttura documento
attachments.title = Visualizza allegati
attachments_label = Allegati
thumbs.title = Mostra le miniature
@@ -81,8 +85,8 @@ find_match_case_label = Maiuscole/minuscole
find_reached_top = Raggiunto l’inizio della pagina, continua dalla fine
find_reached_bottom = Raggiunta la fine della pagina, continua dall’inizio
find_not_found = Testo non trovato
-error_more_info = Più informazioni
-error_less_info = Meno informazioni
+error_more_info = Ulteriori informazioni
+error_less_info = Nascondi dettagli
error_close = Chiudi
error_version_info = PDF.js v{{version}} (build: {{build}})
error_message = Messaggio: {{message}}
@@ -108,4 +112,4 @@ password_cancel = Annulla
printing_not_supported = Attenzione: la stampa non è completamente supportata da questo browser.
printing_not_ready = Attenzione: il PDF non è ancora stato caricato completamente per la stampa.
web_fonts_disabled = I web font risultano disattivati: impossibile utilizzare i caratteri inclusi nel PDF.
-document_colors_disabled = Non è possibile per i documenti PDF utilizzare i propri colori: l’opzione del browser “Permetti alle pagine di scegliere i propri colori invece di quelli impostati” è disattivata.
+document_colors_not_allowed = Non è possibile visualizzare i colori originali definiti nel file PDF: l’opzione del browser “Consenti alle pagine di scegliere i propri colori invece di quelli impostati” è disattivata.
diff --git a/locale/ja/viewer.properties b/locale/ja/viewer.properties
index 10a21d9..e8b3b97 100644
--- a/locale/ja/viewer.properties
+++ b/locale/ja/viewer.properties
@@ -18,12 +18,15 @@ previous_label=前へ
next.title=次のページへ進みます
next_label=次へ
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=ページ:
-page_of=/ {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=ページ
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=/ {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} / {{pagesCount}})
zoom_out.title=表示を縮小します
zoom_out_label=縮小
@@ -67,7 +70,11 @@ document_properties.title=文書のプロパティ...
document_properties_label=文書のプロパティ...
document_properties_file_name=ファイル名:
document_properties_file_size=ファイルサイズ:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=タイトル:
document_properties_author=作成者:
@@ -75,6 +82,8 @@ document_properties_subject=件名:
document_properties_keywords=キーワード:
document_properties_creation_date=作成日:
document_properties_modification_date=更新日:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=アプリケーション:
document_properties_producer=PDF 作成:
@@ -82,13 +91,19 @@ document_properties_version=PDF のバージョン:
document_properties_page_count=ページ数:
document_properties_close=閉じる
+print_progress_message=文書の印刷を準備しています...
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=キャンセル
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=サイドバー表示を切り替えます
toggle_sidebar_label=サイドバーの切り替え
-outline.title=文書の目次を表示します
-outline_label=文書の目次
+document_outline.title=文書の目次を表示します (ダブルクリックで項目を開閉します)
+document_outline_label=文書の目次
attachments.title=添付ファイルを表示します
attachments_label=添付ファイル
thumbs.title=縮小版を表示します
@@ -149,7 +164,7 @@ loading_error_indicator=エラー
loading_error=PDF の読み込み中にエラーが発生しました
invalid_file_error=無効または破損した PDF ファイル
missing_file_error=PDF ファイルが見つかりません。
-unexpected_response_error=サーバから予期せぬ応答がありました。
+unexpected_response_error=サーバーから予期せぬ応答がありました。
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
@@ -161,7 +176,7 @@ password_invalid=無効なパスワードです。もう一度やり直してく
password_ok=OK
password_cancel=キャンセル
-printing_not_supported=警告: このブラウザでは印刷が完全にサポートされていません
+printing_not_supported=警告: このブラウザーでは印刷が完全にサポートされていません
printing_not_ready=警告: PDF を印刷するための読み込みが終了していません
-web_fonts_disabled=Web フォントが無効になっています: 埋め込まれた PDF のフォントを使用できません
-document_colors_disabled=PDF 文書は、Web ページが指定した配色を使用することができません: \u0027Web ページが指定した配色\u0027 はブラウザで無効になっています。
+web_fonts_disabled=ウェブフォントが無効になっています: 埋め込まれた PDF のフォントを使用できません
+document_colors_not_allowed=PDF 文書は、ウェブページが指定した配色を使用することができません: 'ウェブページが指定した配色' はブラウザーで無効になっています。
diff --git a/locale/ka/viewer.properties b/locale/ka/viewer.properties
index f6c68f5..ee3391e 100644
--- a/locale/ka/viewer.properties
+++ b/locale/ka/viewer.properties
@@ -18,38 +18,88 @@ previous_label=წინა
next.title=შემდეგი გვერდი
next_label=შემდეგი
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=გვერდი:
-page_of=of {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
-zoom_out.title=შემცირება
-zoom_out_label=გაზრდა
-zoom_in.title=შემცირება
-zoom_in_label=შემცირება
+zoom_out.title=დაშორება
+zoom_out_label=დაშორება
+zoom_in.title=მიახლოება
+zoom_in_label=მიახლოება
zoom.title=მასშტაბი
-print.title=ამობეჭდვა
-print_label=ამობეჭდვა
-presentation_mode.title=გადართვა პრეზენტაციის რეჟიმზე
+presentation_mode.title=პრეზენტაციის რეჟიმზე გადართვა
presentation_mode_label=პრეზენტაციის რეჟიმი
open_file.title=ფაილის გახსნა
open_file_label=გახსნა
+print.title=დაბეჭდვა
+print_label=დაბეჭდვა
download.title=ჩამოტვირთვა
download_label=ჩამოტვირთვა
-bookmark.title=მიმდინარე ხედი (ასლი ან გახსნა ახალ სარკმელში)
+bookmark.title=მიმდინარე ხედი (კოპირება ან გახსნა ახალ ფანჯარაში)
bookmark_label=მიმდინარე ხედი
+# Secondary toolbar and context menu
+tools.title=ხელსაწყოები
+tools_label=ხელსაწყოები
+first_page.title=პირველ გვერდზე გადასვლა
+first_page.label=პირველ გვერდზე გადასვლა
+first_page_label=პირველ გვერდზე გადასვლა
+last_page.title=ბოლო გვერდზე გადასვლა
+last_page.label=ბოლო გვერდზე გადასვლა
+last_page_label=ბოლო გვერდზე გადასვლა
+page_rotate_cw.title=ისრის მიმართულებით შებრუნება
+page_rotate_cw.label=ისრის მიმართულებით შებრუნება
+page_rotate_cw_label=ისრის მიმართულებით შებრუნება
+page_rotate_ccw.title=ისრის საპირისპიროდ შებრუნება
+page_rotate_ccw.label=ისრის საპირისპიროდ შებრუნება
+page_rotate_ccw_label=ისრის საპირისპიროდ შებრუნება
+
+hand_tool_enable.title=ხელის ხელსაწყოს ჩართვა
+hand_tool_enable_label=ხელის ხელსაწყოს ჩართვა
+hand_tool_disable.title=ხელის ხელსაწყოს გამორთვა
+hand_tool_disable_label=ხელის ხელსაწყოს გამორთვა
+
+# Document properties dialog box
+document_properties.title=დოკუმენტის თვისებები…
+document_properties_label=დოკუმენტის თვისებები…
+document_properties_file_name=ფაილის სახელი:
+document_properties_file_size=ფაილის ზომა:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
+document_properties_kb={{size_kb}} კბ ({{size_b}} ბაიტი)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
+document_properties_mb={{size_mb}} მბ ({{size_b}} ბაიტი)
+document_properties_title=სათაური:
+document_properties_author=ავტორი:
+document_properties_subject=თემა:
+document_properties_keywords=საკვანძო სიტყვები:
+document_properties_creation_date=შექმნის თარიღი:
+document_properties_modification_date=სახეცვალების თარიღი:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=შემქმნელი:
+document_properties_producer=PDF მწარმოებელი:
+document_properties_version=PDF ვერსია:
+document_properties_page_count=გვერდების რაოდენობა:
+document_properties_close=დახურვა
+
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
-toggle_sidebar.title=სტენდის ჩვენება/დამალვა
-toggle_sidebar_label=სტენდის ჩვენება/დამალვა
-outline.title=დოკუმენტის სქემის ჩვენება
-outline_label=დოკუმენტის სქემა
-thumbs.title=მინიატურების ჩვენება
-thumbs_label=მინიატურები
+toggle_sidebar.title=გვერდითა ზოლის ბერკეტი
+toggle_sidebar_label=გვერდითა ზოლის ბერკეტი
+attachments.title=დანართების ჩვენება
+attachments_label=დანართები
+thumbs.title=ესკიზების ჩვენება
+thumbs_label=ესკიზები
findbar.title=პოვნა დოკუმენტში
findbar_label=პოვნა
@@ -59,66 +109,66 @@ findbar_label=პოვნა
thumb_page_title=გვერდი {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
-thumb_page_canvas=მინიატურა გვერდისთვის {{page}}
-
-# Context menu
-first_page.label=გადასვლა პირველ გვერდზე
-last_page.label=გადასვლა ბოლო გვერდზე
-page_rotate_cw.label=დატრიალება
-page_rotate_ccw.label=უკუდატრიალება
+thumb_page_canvas=გვერდის ესკიზი {{page}}
# Find panel button title and messages
find_label=პოვნა:
-find_previous.title=კონტექსტის წინა თანხვედრის პოვნა
+find_previous.title=ფრაზის წინა კონტექსტის პოვნა
find_previous_label=წინა
-find_next.title=კონტექსტის შემდეგი თანხვედრის პოვნა
+find_next.title=ფრაზის შემდეგი კონტექსტის პოვნა
find_next_label=შემდეგი
-find_highlight=ყველას გამოყოფა
-find_match_case_label=მთავრულის გათვალისწინებით
-find_reached_top=დოკუმენტის თავი, გრძელდება დოკუმენტის ბოლოდან
-find_reached_bottom=დოკუმენტის ბოლო, გრძელდება დოკუმენტის თავიდან
+find_highlight=ყველას მონიშვნა
+find_match_case_label=მთავრულის გათვალისწინება
+find_reached_top=მიღწეულია დოკუმენტის უმაღლესი წერტილი, გრძელდება ქვემოდან
+find_reached_bottom=მიღწეულია დოკუმენტის ბოლი, გრძელდება ზემოდან
find_not_found=კონტექსტი ვერ მოიძებნა
# Error panel labels
-error_more_info=დეტალების ჩვენება
-error_less_info=დეტალების დამალვა
+error_more_info=დამატებითი ინფორმაცია
+error_less_info=ნაკლები ინფორმაცია
error_close=დახურვა
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
-error_version_info=PDF.js v{{version}} (აგება: {{build}})
+error_version_info=PDF.js v{{version}} (build: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
-error_message=გზავნილი: {{message}}
+error_message=შეტყობინება: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
-error_stack=მჭიდი: {{stack}}
+error_stack=სტეკი: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=ფაილი: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
-error_line=სტრიქონი: {{line}}
-rendering_error=შეცდომა გვერდის ასახვისას.
+error_line=ხაზი: {{line}}
+rendering_error=გვერდის რენდერისას დაფიქსირდა შეცდომა.
# Predefined zoom values
-page_scale_width=გვერდის სიგანეზე
-page_scale_fit=გვერდის შევსება
-page_scale_auto=თვითმასშტაბი
-page_scale_actual=რეალური ზომა
+page_scale_width=გვერდის სიგანე
+page_scale_fit=გვერდის მორგება
+page_scale_auto=ავტომატური მასშტაბი
+page_scale_actual=აქტუალური ზომა
+# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
+# numerical scale value.
+page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=შეცდომა
-loading_error=შეცდომა PDF ფაილის ჩატვირთვისას.
-invalid_file_error=უმართებლო ან დაზიანებული PDF ფაილი.
-missing_file_error=მცდარი PDF ფაილი.
+loading_error=PDF-ის ჩატვირთვისას დაფიქსირდა შეცდომა.
+invalid_file_error=არამართებული ან დაზიანებული PDF ფაილი.
+missing_file_error=ნაკლული PDF ფაილი.
+unexpected_response_error=სერვერის მოულოდნელი პასუხი.
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[{{type}} ანოტაცია]
-request_password=PDF დაცულია პაროლით:
-invalid_password=პაროლი მცდარია.
+password_label=შეიყვანეთ პაროლი, რათა გახსნათ ეს PDF ფაილი.
+password_invalid=არასწორი პაროლი. გთხოვთ, სცადეთ ხელახლა.
+password_ok=კარგი
+password_cancel=გაუქმება
-printing_not_supported=გაფრთხილება: ამ ბრაუზერში ამობეჭდვის მხარდაჭერა არასრულია .
-printing_not_ready=გაფრთხილება: PDF ფაილი ამოსაბეჭდად სრულად არ ჩატვირთულა.
-web_fonts_disabled=ვებ შრიფტები ამორთულია: ჩადგმული PDF შრიფტებით სარგებლობა ვერ ხერხდება.
-document_colors_disabled=PDF დოკუმენტებს ეკრძალებათ საკუთარი ფერების გამოყენება: ბრაუზერში ამორთულია პარამეტრი - «გვერდებისთვის საკუთარი ფერებით სარგებლობის უფლება».
+printing_not_supported=გაფრთხილება: ამ ბრაუზერის მიერ დაბეჭდვა ბოლომდე მხარდაჭერილი არაა.
+printing_not_ready=გაფრთხილება: PDF ამობეჭდვისთვის ბოლომდე ჩატვირთული არაა.
+web_fonts_disabled=ვებ-შრიფტები გამორთულია: ჩაშენებული PDF შრიფტების გამოყენება ვერ ხერხდება.
+document_colors_not_allowed=PDF დოკუმენტებს არ აქვთ საკუთარი ფერების გამოყენების უფლება: ბრაუზერში გამორთულია "გვერდებისთვის საკუთარი ფერების გამოყენების უფლება".
diff --git a/locale/kk/viewer.properties b/locale/kk/viewer.properties
index c6fbb8d..9860ce2 100644
--- a/locale/kk/viewer.properties
+++ b/locale/kk/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Алдыңғысы
next.title=Келесі парақ
next_label=Келесі
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Парақ:
-page_of={{pageCount}} ішінен
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Парақ
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages={{pagesCount}} ішінен
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=(парақ {{pageNumber}}, {{pagesCount}} ішінен)
zoom_out.title=Кішірейту
zoom_out_label=Кішірейту
@@ -67,7 +70,11 @@ document_properties.title=Құжат қасиеттері…
document_properties_label=Құжат қасиеттері…
document_properties_file_name=Файл аты:
document_properties_file_size=Файл өлшемі:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} КБ ({{size_b}} байт)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} МБ ({{size_b}} байт)
document_properties_title=Тақырыбы...
document_properties_author=Авторы:
@@ -75,6 +82,8 @@ document_properties_subject=Тақырыбы:
document_properties_keywords=Кілт сөздер:
document_properties_creation_date=Жасалған күні:
document_properties_modification_date=Түзету күні:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Жасаған:
document_properties_producer=PDF өндірген:
@@ -82,13 +91,19 @@ document_properties_version=PDF нұсқасы:
document_properties_page_count=Беттер саны:
document_properties_close=Жабу
+print_progress_message=Құжатты баспаға шығару үшін дайындау…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Бас тарту
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Бүйір панелін көрсету/жасыру
toggle_sidebar_label=Бүйір панелін көрсету/жасыру
-outline.title=Құжат құрамасын көрсету
-outline_label=Құжат құрамасы
+document_outline.title=Құжат құрылымын көрсету (барлық нәрселерді жазық қылу/жинау үшін қос шерту керек)
+document_outline_label=Құжат құрамасы
attachments.title=Салынымдарды көрсету
attachments_label=Салынымдар
thumbs.title=Кіші көріністерді көрсету
@@ -164,4 +179,4 @@ password_cancel=Бас тарту
printing_not_supported=Ескерту: Баспаға шығаруды бұл браузер толығымен қолдамайды.
printing_not_ready=Ескерту: Баспаға шығару үшін, бұл PDF толығымен жүктеліп алынбады.
web_fonts_disabled=Веб қаріптері сөндірілген: құрамына енгізілген PDF қаріптерін қолдану мүмкін емес.
-document_colors_disabled=PDF құжаттарына өздік түстерді қолдану рұқсат етілмеген: бұл браузерде 'Веб-сайттарға өздерінің түстерін қолдануға рұқсат беру' мүмкіндігі сөндірулі тұр.
+document_colors_not_allowed=PDF құжаттарына өздік түстерді қолдану рұқсат етілмеген: бұл браузерде 'Веб-сайттарға өздерінің түстерін қолдануға рұқсат беру' мүмкіндігі сөндірулі тұр.
diff --git a/locale/km/viewer.properties b/locale/km/viewer.properties
index 6ea4005..9010963 100644
--- a/locale/km/viewer.properties
+++ b/locale/km/viewer.properties
@@ -18,12 +18,15 @@ previous_label=មុន
next.title=ទំព័របន្ទាប់
next_label=បន្ទាប់
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=ទំព័រ ៖
-page_of=នៃ {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=ទំព័រ
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=នៃ {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} នៃ {{pagesCount}})
zoom_out.title=បង្រួម
zoom_out_label=បង្រួម
@@ -67,14 +70,20 @@ document_properties.title=លក្ខណសម្បត្តិឯកស
document_properties_label=លក្ខណសម្បត្តិឯកសារ…
document_properties_file_name=ឈ្មោះឯកសារ៖
document_properties_file_size=ទំហំឯកសារ៖
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
-document_properties_title=ចំណងជើង ៖
+document_properties_title=ចំណងជើង៖
document_properties_author=អ្នកនិពន្ធ៖
document_properties_subject=ប្រធានបទ៖
document_properties_keywords=ពាក្យគន្លឹះ៖
document_properties_creation_date=កាលបរិច្ឆេទបង្កើត៖
document_properties_modification_date=កាលបរិច្ឆេទកែប្រែ៖
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=អ្នកបង្កើត៖
document_properties_producer=កម្មវិធីបង្កើត PDF ៖
@@ -82,13 +91,19 @@ document_properties_version=កំណែ PDF ៖
document_properties_page_count=ចំនួនទំព័រ៖
document_properties_close=បិទ
+print_progress_message=កំពុងរៀបចំឯកសារសម្រាប់បោះពុម្ព…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=បោះបង់
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=បិទ/បើកគ្រាប់រំកិល
toggle_sidebar_label=បិទ/បើកគ្រាប់រំកិល
-outline.title=បង្ហាញគ្រោងឯកសារ
-outline_label=គ្រោងឯកសារ
+document_outline.title=បង្ហាញគ្រោងឯកសារ (ចុចទ្វេដងដើម្បីពង្រីក/បង្រួមធាតុទាំងអស់)
+document_outline_label=គ្រោងឯកសារ
attachments.title=បង្ហាញឯកសារភ្ជាប់
attachments_label=ឯកសារភ្ជាប់
thumbs.title=បង្ហាញរូបភាពតូចៗ
@@ -164,4 +179,4 @@ password_cancel=បោះបង់
printing_not_supported=ការព្រមាន ៖ ការបោះពុម្ពមិនត្រូវបានគាំទ្រពេញលេញដោយកម្មវិធីរុករកនេះទេ ។
printing_not_ready=ព្រមាន៖ PDF មិនត្រូវបានផ្ទុកទាំងស្រុងដើម្បីបោះពុម្ពទេ។
web_fonts_disabled=បានបិទពុម្ពអក្សរបណ្ដាញ ៖ មិនអាចប្រើពុម្ពអក្សរ PDF ដែលបានបង្កប់បានទេ ។
-document_colors_disabled=ឯកសារ PDF មិនត្រូវបានអនុញ្ញាតឲ្យប្រើពណ៌ផ្ទាល់របស់វាទេ៖ 'អនុញ្ញាតឲ្យទំព័រជ្រើសពណ៌ផ្ទាល់ខ្លួន' ត្រូវបានធ្វើឲ្យអសកម្មក្នុងកម្មវិធីរុករក។
+document_colors_not_allowed=ឯកសារ PDF មិនត្រូវបានអនុញ្ញាតឲ្យប្រើពណ៌ផ្ទាល់របស់វាទេ៖ 'អនុញ្ញាតឲ្យទំព័រជ្រើសពណ៌ផ្ទាល់ខ្លួន' ត្រូវបានធ្វើឲ្យអសកម្មក្នុងកម្មវិធីរុករក។
diff --git a/locale/kn/viewer.properties b/locale/kn/viewer.properties
index c50cd20..620c805 100644
--- a/locale/kn/viewer.properties
+++ b/locale/kn/viewer.properties
@@ -18,12 +18,13 @@ previous_label=ಹಿಂದಿನ
next.title=ಮುಂದಿನ ಪುಟ
next_label=ಮುಂದಿನ
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=ಪುಟ:
-page_of={{pageCount}} ರಲ್ಲಿ
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages={{pagesCount}} ರಲ್ಲಿ
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
zoom_out.title=ಕಿರಿದಾಗಿಸು
zoom_out_label=ಕಿರಿದಾಗಿಸಿ
@@ -67,7 +68,11 @@ document_properties.title=ಡಾಕ್ಯುಮೆಂಟ್ ಗುಣಗಳ
document_properties_label=ಡಾಕ್ಯುಮೆಂಟ್ ಗುಣಗಳು...
document_properties_file_name=ಕಡತದ ಹೆಸರು:
document_properties_file_size=ಕಡತದ ಗಾತ್ರ:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} ಬೈಟ್ಗಳು)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} ಬೈಟ್ಗಳು)
document_properties_title=ಶೀರ್ಷಿಕೆ:
document_properties_author=ಕರ್ತೃ:
@@ -75,6 +80,8 @@ document_properties_subject=ವಿಷಯ:
document_properties_keywords=ಮುಖ್ಯಪದಗಳು:
document_properties_creation_date=ರಚಿಸಿದ ದಿನಾಂಕ:
document_properties_modification_date=ಮಾರ್ಪಡಿಸಲಾದ ದಿನಾಂಕ:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=ರಚಿಸಿದವರು:
document_properties_producer=PDF ಉತ್ಪಾದಕ:
@@ -82,13 +89,15 @@ document_properties_version=PDF ಆವೃತ್ತಿ:
document_properties_page_count=ಪುಟದ ಎಣಿಕೆ:
document_properties_close=ಮುಚ್ಚು
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=ಬದಿಪಟ್ಟಿಯನ್ನು ಹೊರಳಿಸು
toggle_sidebar_label=ಬದಿಪಟ್ಟಿಯನ್ನು ಹೊರಳಿಸು
-outline.title=ದಸ್ತಾವೇಜಿನ ಹೊರರೇಖೆಯನ್ನು ತೋರಿಸು
-outline_label=ದಸ್ತಾವೇಜಿನ ಹೊರರೇಖೆ
+document_outline_label=ದಸ್ತಾವೇಜಿನ ಹೊರರೇಖೆ
attachments.title=ಲಗತ್ತುಗಳನ್ನು ತೋರಿಸು
attachments_label=ಲಗತ್ತುಗಳು
thumbs.title=ಚಿಕ್ಕಚಿತ್ರದಂತೆ ತೋರಿಸು
@@ -159,9 +168,8 @@ text_annotation_type.alt=[{{type}} ಟಿಪ್ಪಣಿ]
password_label=PDF ಅನ್ನು ತೆರೆಯಲು ಗುಪ್ತಪದವನ್ನು ನಮೂದಿಸಿ.
password_invalid=ಅಮಾನ್ಯವಾದ ಗುಪ್ತಪದ, ದಯವಿಟ್ಟು ಇನ್ನೊಮ್ಮೆ ಪ್ರಯತ್ನಿಸಿ.
password_ok=OK
-password_cancel=ರದ್ದು ಮಾಡು
printing_not_supported=ಎಚ್ಚರಿಕೆ: ಈ ಜಾಲವೀಕ್ಷಕದಲ್ಲಿ ಮುದ್ರಣಕ್ಕೆ ಸಂಪೂರ್ಣ ಬೆಂಬಲವಿಲ್ಲ.
printing_not_ready=ಎಚ್ಚರಿಕೆ: PDF ಕಡತವು ಮುದ್ರಿಸಲು ಸಂಪೂರ್ಣವಾಗಿ ಲೋಡ್ ಆಗಿಲ್ಲ.
web_fonts_disabled=ಜಾಲ ಅಕ್ಷರಶೈಲಿಯನ್ನು ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿದೆ: ಅಡಕಗೊಳಿಸಿದ PDF ಅಕ್ಷರಶೈಲಿಗಳನ್ನು ಬಳಸಲು ಸಾಧ್ಯವಾಗಿಲ್ಲ.
-document_colors_disabled=PDF ದಸ್ತಾವೇಜುಗಳು ತಮ್ಮದೆ ಆದ ಬಣ್ಣಗಳನ್ನು ಬಳಸಲು ಅನುಮತಿ ಇರುವುದಿಲ್ಲ: 'ಪುಟಗಳು ತಮ್ಮದೆ ಆದ ಬಣ್ಣವನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಅನುಮತಿಸು' ಅನ್ನು ಜಾಲವೀಕ್ಷಕದಲ್ಲಿ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿರುತ್ತದೆ.
+document_colors_not_allowed=PDF ದಸ್ತಾವೇಜುಗಳು ತಮ್ಮದೆ ಆದ ಬಣ್ಣಗಳನ್ನು ಬಳಸಲು ಅನುಮತಿ ಇರುವುದಿಲ್ಲ: 'ಪುಟಗಳು ತಮ್ಮದೆ ಆದ ಬಣ್ಣವನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಅನುಮತಿಸು' ಅನ್ನು ಜಾಲವೀಕ್ಷಕದಲ್ಲಿ ನಿಷ್ಕ್ರಿಯಗೊಳಿಸಲಾಗಿರುತ್ತದೆ.
diff --git a/locale/ko/viewer.properties b/locale/ko/viewer.properties
index eca6ffa..beea3d4 100644
--- a/locale/ko/viewer.properties
+++ b/locale/ko/viewer.properties
@@ -18,24 +18,27 @@ previous_label=이전
next.title=다음 페이지
next_label=다음
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=페이지:
-page_of=/{{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=페이지
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=전체 {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pagesCount}} 중 {{pageNumber}})
zoom_out.title=축소
zoom_out_label=축소
zoom_in.title=확대
zoom_in_label=확대
zoom.title=크기
-print.title=인쇄
-print_label=인쇄
presentation_mode.title=발표 모드로 전환
presentation_mode_label=발표 모드
open_file.title=파일 열기
open_file_label=열기
+print.title=인쇄
+print_label=인쇄
download.title=다운로드
download_label=다운로드
bookmark.title=지금 보이는 그대로 (복사하거나 새 창에 열기)
@@ -67,7 +70,11 @@ document_properties.title=문서 속성…
document_properties_label=문서 속성…
document_properties_file_name=파일 이름:
document_properties_file_size=파일 사이즈:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}}바이트)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}}바이트)
document_properties_title=제목:
document_properties_author=저자:
@@ -75,6 +82,8 @@ document_properties_subject=주제:
document_properties_keywords=키워드:
document_properties_creation_date=생성일:
document_properties_modification_date=수정일:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=생성자:
document_properties_producer=PDF 생성기:
@@ -82,13 +91,19 @@ document_properties_version=PDF 버전:
document_properties_page_count=총 페이지:
document_properties_close=닫기
+print_progress_message=문서 출력 준비중…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=취소
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=탐색창 열고 닫기
toggle_sidebar_label=탐색창 열고 닫기
-outline.title=문서 개요 보기
-outline_label=문서 개요
+document_outline.title=문서 아웃라인 보기(더블 클릭해서 모든 항목 열고 닫기)
+document_outline_label=문서 아웃라인
attachments.title=첨부파일 보기
attachments_label=첨부파일
thumbs.title=미리보기
@@ -151,8 +166,8 @@ invalid_file_error=유효하지 않거나 파손된 PDF 파일
missing_file_error=PDF 파일이 없습니다.
unexpected_response_error=알 수 없는 서버 응답입니다.
-# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
-# "{{[type}}" will be replaced with an annotation type from a list defined in
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[{{type}} 주석]
@@ -164,4 +179,4 @@ password_cancel=취소
printing_not_supported=경고: 이 브라우저는 인쇄를 완전히 지원하지 않습니다.
printing_not_ready=경고: 이 PDF를 인쇄를 할 수 있을 정도로 읽어들이지 못했습니다.
web_fonts_disabled=웹 폰트가 꺼져있음: 내장된 PDF 글꼴을 쓸 수 없습니다.
-document_colors_disabled=PDF 문서의 색상을 쓰지 못하게 되어 있음: \'웹 페이지 자체 색상 사용 허용\'이 브라우저에서 꺼져 있습니다.
+document_colors_not_allowed=PDF 문서의 색상을 쓰지 못하게 되어 있음: '웹 페이지 자체 색상 사용 허용'이 브라우저에서 꺼져 있습니다.
diff --git a/locale/ku/viewer.properties b/locale/ku/viewer.properties
index c614fa1..6af3ec0 100644
--- a/locale/ku/viewer.properties
+++ b/locale/ku/viewer.properties
@@ -18,12 +18,12 @@ previous_label=Paşve
next.title=Rûpela pêş
next_label=Pêş
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Rûpel:
-page_of=/ {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
zoom_out.title=Dûr bike
zoom_out_label=Dûr bike
@@ -59,15 +59,23 @@ page_rotate_ccw_label=Berevajî aliyê saetê ve bizivirîne
# Document properties dialog box
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_title=Sernav:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
+
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Darikê kêlekê veke/bigire
toggle_sidebar_label=Darikê kêlekê veke/bigire
-outline.title=Şemaya belgeyê nîşan bide
-outline_label=Şemaya belgeyê
+document_outline_label=Şemaya belgeyê
thumbs.title=Wênekokan nîşan bide
thumbs_label=Wênekok
findbar.title=Di belgeyê de bibîne
@@ -116,6 +124,8 @@ page_scale_width=Firehiya rûpelê
page_scale_fit=Di rûpelê de bicî bike
page_scale_auto=Xweber nêzîk bike
page_scale_actual=Mezinahiya rastîn
+# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
+# numerical scale value.
# Loading indicator messages
loading_error_indicator=Xeletî
@@ -131,9 +141,8 @@ text_annotation_type.alt=[Nîşaneya {{type}}ê]
password_label=Ji bo PDFê vekî şîfreyê binivîse.
password_invalid=Şîfre çewt e. Tika ye dîsa biceribîne.
password_ok=Temam
-password_cancel=Betal
printing_not_supported=Hişyarî: Çapkirin ji hêla vê gerokê ve bi temamî nayê destekirin.
printing_not_ready=Hişyarî: PDF bi temamî nehat barkirin û ji bo çapê ne amade ye.
web_fonts_disabled=Fontên Webê neçalak in: Fontên PDFê yên veşartî nayên bikaranîn.
-document_colors_disabled=Destûr tune ye ku belgeyên PDFê rengên xwe bi kar bînin: Di gerokê de 'destûrê bide rûpelan ku rengên xwe bi kar bînin' nehatiye çalakirin.
+document_colors_not_allowed=Destûr tune ye ku belgeyên PDFê rengên xwe bi kar bînin: Di gerokê de 'destûrê bide rûpelan ku rengên xwe bi kar bînin' nehatiye çalakirin.
diff --git a/locale/lg/viewer.properties b/locale/lg/viewer.properties
index 5c88487..e333c4f 100644
--- a/locale/lg/viewer.properties
+++ b/locale/lg/viewer.properties
@@ -16,12 +16,13 @@
previous.title=Omuko Ogubadewo
next.title=Omuko Oguddako
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Omuko:
-page_of=ku {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=ku {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
zoom_out.title=Zimbulukusa
zoom_out_label=Zimbulukusa
@@ -41,12 +42,20 @@ bookmark_label=Endabika Eriwo
# Document properties dialog box
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
+
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
-outline.title=Laga Ensalo ze Kiwandiko
-outline_label=Ensalo ze Ekiwandiko
+document_outline_label=Ensalo ze Ekiwandiko
thumbs.title=Laga Ekifanyi Mubufunze
thumbs_label=Ekifanyi Mubufunze
findbar_label=Zuula
@@ -87,6 +96,8 @@ page_scale_width=Obugazi bwo Omuko
page_scale_fit=Okutuka kwo Omuko
page_scale_auto=Okwefunza no Kwegeza
page_scale_actual=Obunene Obutufu
+# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
+# numerical scale value.
# Loading indicator messages
loading_error_indicator=Ensobi
@@ -98,6 +109,5 @@ loading_error=Wabadewo ensobi mukutika PDF.
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[{{type}} Enyonyola]
password_ok=OK
-password_cancel=Sazaamu
printing_not_supported=Okulaabula: Okulumya empapula tekuwagirwa enonyeso enno.
diff --git a/locale/lij/viewer.properties b/locale/lij/viewer.properties
index dbab0a7..edea4b5 100644
--- a/locale/lij/viewer.properties
+++ b/locale/lij/viewer.properties
@@ -1,116 +1,182 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
-previous.title = Pàgina precedénte
-previous_label = Precedénte
-next.title = Pàgina dòppo
-next_label = Pròscima
-page_label = Pàgina:
-page_of = de {{pageCount}}
-zoom_out.title = Diminoìsci zoom
-zoom_out_label = Diminoìsci zoom
-zoom_in.title = Aoménta zoom
-zoom_in_label = Aoménta zoom
-zoom.title = Zoom
-print.title = Stànpa
-print_label = Stànpa
-open_file.title = Àrvi file
-open_file_label = Àrvi
-download.title = Descaregaménto
-download_label = Descaregaménto
-bookmark.title = Vixón corénte (còpia ò àrvi inte 'n nêuvo barcón)
-bookmark_label = Vixón corénte
-outline.title = Véddi strutûa documénto
-outline_label = Strutûa documénto
-thumbs.title = Móstra miniatûe
-thumbs_label = Miniatûe
-thumb_page_title = Pàgina {{page}}
-thumb_page_canvas = Miniatûa da pàgina {{page}}
-error_more_info = Ciù informaçioìn
-error_less_info = Mêno informaçioìn
-error_version_info = PDF.js v{{version}} (build: {{build}})
-error_close = Særa
-missing_file_error = O file PDF o no gh'é.
-toggle_sidebar.title = Atîva/dizatîva bâra de sciànco
-toggle_sidebar_label = Atîva/dizatîva bâra de sciànco
-error_message = Mesàggio: {{message}}
-error_stack = Stack: {{stack}}
-error_file = File: {{file}}
-error_line = Lìnia: {{line}}
-rendering_error = Gh'é stæto 'n'erô itno rendering da pàgina.
-page_scale_width = Larghéssa pàgina
-page_scale_fit = Adàtta a una pàgina
-page_scale_auto = Zoom aotomàtico
-page_scale_actual = Dimenscioìn efetîve
-loading_error_indicator = Erô
-loading_error = S'é verificòu 'n'erô itno caregaménto do PDF.
-printing_not_supported = Atençión: a stànpa a no l'é conpletaménte soportâ da sto navegatô.
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Pagina primma
+previous_label=Precedente
+next.title=Pagina dòppo
+next_label=Pròscima
-# Context menu
-page_rotate_cw.label=Gîa in sénso do reléuio
-page_rotate_ccw.label=Gîa in sénso do reléuio a-a revèrsa
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Pagina
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=de {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} de {{pagesCount}})
-presentation_mode.title=Vànni into mòddo de prezentaçión
-presentation_mode_label=Mòddo de prezentaçión
+zoom_out.title=Diminoisci zoom
+zoom_out_label=Diminoisci zoom
+zoom_in.title=Aomenta zoom
+zoom_in_label=Aomenta zoom
+zoom.title=Zoom
+presentation_mode.title=Vanni into mòddo de prezentaçion
+presentation_mode_label=Mòddo de prezentaçion
+open_file.title=Arvi file
+open_file_label=Arvi
+print.title=Stanpa
+print_label=Stanpa
+download.title=Descaregamento
+download_label=Descaregamento
+bookmark.title=Vixon corente (còpia ò arvi inte 'n neuvo barcon)
+bookmark_label=Vixon corente
-find_label = Trêuva:
-find_previous.title = Trêuva a ripetiçión precedénte do tèsto da çercâ
-find_previous_label = Precedénte
-find_next.title = Trêuva a ripetiçión dòppo do tèsto da çercâ
-find_next_label = Segoénte
-find_highlight = Evidénçia
-find_match_case_label = Maióscole/minóscole
-find_reached_bottom = Razónto l'inìçio da pàgina, contìnoa da-a fìn
-find_reached_top = Razónto a fìn da pàgina, contìnoa da l'inìçio
-find_not_found = Tèsto no trovòu
-findbar.title = Trêuva into documénto
-findbar_label = Trêuva
-first_page.label = Vànni a-a prìmma pàgina
-last_page.label = Vànni a l'ùrtima pàgina
-invalid_file_error = O file PDF o l'é no vàlido ò aroinòu.
+# Secondary toolbar and context menu
+tools.title=Strumenti
+tools_label=Strumenti
+first_page.title=Vanni a-a primma pagina
+first_page.label=Vanni a-a primma pagina
+first_page_label=Vanni a-a primma pagina
+last_page.title=Vanni a l'urtima pagina
+last_page.label=Vanni a l'urtima pagina
+last_page_label=Vanni a l'urtima pagina
+page_rotate_cw.title=Gia into verso oraio
+page_rotate_cw.label=Gia in senso do releuio
+page_rotate_cw_label=Gia into verso oraio
+page_rotate_ccw.title=Gia into verso antioraio
+page_rotate_ccw.label=Gia in senso do releuio a-a reversa
+page_rotate_ccw_label=Gia into verso antioraio
-web_fonts_disabled = I font do web én dizativæ: inposcìbile adêuviâ i caràteri do PDF.
-printing_not_ready = Atençión: o PDF o no l'é ancón caregòu conpletaménte pe-a stànpa.
+hand_tool_enable.title=Ativa strumento man
+hand_tool_enable_label=Ativa strumento man
+hand_tool_disable.title=Dizativa strumento man
+hand_tool_disable_label=Dizativa strumento man
-document_colors_disabled = No l'é poscìbile adêuviâ i pròpi coî pe-i documénti PDF: l'opçión do navegatô 'Permètti a-e pàgine de çèrne i pròpi coî in càngio de quélli inpostæ' a l'é dizativâ.
-text_annotation_type.alt = [Anotaçión: {{type}}]
+# Document properties dialog box
+document_properties.title=Propietæ do documento…
+document_properties_label=Propietæ do documento…
+document_properties_file_name=Nomme file:
+document_properties_file_size=Dimenscion file:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
+document_properties_kb={{size_kb}} kB ({{size_b}} byte)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
+document_properties_mb={{size_kb}} MB ({{size_b}} byte)
+document_properties_title=Titolo:
+document_properties_author=Aoto:
+document_properties_subject=Ogetto:
+document_properties_keywords=Paròlle ciave:
+document_properties_creation_date=Dæta creaçion:
+document_properties_modification_date=Dæta cangiamento:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Aotô originale:
+document_properties_producer=Produtô PDF:
+document_properties_version=Verscion PDF:
+document_properties_page_count=Contezzo pagine:
+document_properties_close=Særa
-first_page.title = Vànni a-a prìmma pàgina
-first_page_label = Vànni a-a prìmma pàgina
-last_page.title = Vànni a l'ùrtima pàgina
-last_page_label = Vànni a l'ùrtima pàgina
-page_rotate_ccw.title = Gîa into vèrso antiorâio
-page_rotate_ccw_label = Gîa into vèrso antiorâio
-page_rotate_cw.title = Gîa into vèrso orâio
-page_rotate_cw_label = Gîa into vèrso orâio
-tools.title = Struménti
-tools_label = Struménti
-password_label = Dìmme a paròlla segrêta pe arvî sto file PDF.
-password_invalid = Paròlla segrêta sbaliâ. Prêuva tórna.
-password_ok = Va bén
-password_cancel = Anùlla
+print_progress_message=Praparo o documento pe-a stanpa…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Anulla
-document_properties.title = Propietæ do documénto…
-document_properties_label = Propietæ do documénto…
-document_properties_file_name = Nómme file:
-document_properties_file_size = Dimensción file:
-document_properties_kb = {{size_kb}} kB ({{size_b}} byte)
-document_properties_mb = {{size_kb}} MB ({{size_b}} byte)
-document_properties_title = Tìtolo:
-document_properties_author = Aotô:
-document_properties_subject = Ogétto:
-document_properties_keywords = Paròlle ciâve:
-document_properties_creation_date = Dæta creaçión:
-document_properties_modification_date = Dæta cangiaménto:
-document_properties_date_string = {{date}}, {{time}}
-document_properties_creator = Aotô originâle:
-document_properties_producer = Produtô PDF:
-document_properties_version = Versción PDF:
-document_properties_page_count = Contézzo pàgine:
-document_properties_close = Særa
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Ativa/dizativa bara de scianco
+toggle_sidebar_label=Ativa/dizativa bara de scianco
+document_outline.title=Fanni vedde o contorno do documento (scicca doggio pe espande/ridue tutti i elementi)
+document_outline_label=Contorno do documento
+attachments.title=Fanni vedde alegæ
+attachments_label=Alegæ
+thumbs.title=Mostra miniatue
+thumbs_label=Miniatue
+findbar.title=Treuva into documento
+findbar_label=Treuva
-hand_tool_enable.title = Atîva struménto màn
-hand_tool_enable_label = Atîva struménto màn
-hand_tool_disable.title = Dizatîva struménto màn
-hand_tool_disable_label = Dizatîva struménto màn
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Pagina {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Miniatua da pagina {{page}}
+
+# Find panel button title and messages
+find_label=Treuva:
+find_previous.title=Treuva a ripetiçion precedente do testo da çercâ
+find_previous_label=Precedente
+find_next.title=Treuva a ripetiçion dòppo do testo da çercâ
+find_next_label=Segoente
+find_highlight=Evidençia
+find_match_case_label=Maioscole/minoscole
+find_reached_top=Razonto a fin da pagina, continoa da l'iniçio
+find_reached_bottom=Razonto l'iniçio da pagina, continoa da-a fin
+find_not_found=Testo no trovou
+
+# Error panel labels
+error_more_info=Ciù informaçioin
+error_less_info=Meno informaçioin
+error_close=Særa
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Mesaggio: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Stack: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=File: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Linia: {{line}}
+rendering_error=Gh'é stæto 'n'erô itno rendering da pagina.
+
+# Predefined zoom values
+page_scale_width=Larghessa pagina
+page_scale_fit=Adatta a una pagina
+page_scale_auto=Zoom aotomatico
+page_scale_actual=Dimenscioin efetive
+# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
+# numerical scale value.
+page_scale_percent={{scale}}%
+
+# Loading indicator messages
+loading_error_indicator=Erô
+loading_error=S'é verificou 'n'erô itno caregamento do PDF.
+invalid_file_error=O file PDF o l'é no valido ò aroinou.
+missing_file_error=O file PDF o no gh'é.
+unexpected_response_error=Risposta inprevista do-u server
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[Anotaçion: {{type}}]
+password_label=Dimme a paròlla segreta pe arvî sto file PDF.
+password_invalid=Paròlla segreta sbalia. Preuva torna.
+password_ok=Va ben
+password_cancel=Anulla
+
+printing_not_supported=Atençion: a stanpa a no l'é conpletamente soportâ da sto navegatô.
+printing_not_ready=Atençion: o PDF o no l'é ancon caregou conpletamente pe-a stanpa.
+web_fonts_disabled=I font do web en dizativæ: inposcibile adeuviâ i carateri do PDF.
+document_colors_not_allowed=No l'é poscibile adeuviâ i pròpi coî pe-i documenti PDF: l'opçion do navegatô “Permetti a-e pagine de çerne i pròpi coî in cangio de quelli inpostæ” a l'é dizativâ.
diff --git a/locale/lt/viewer.properties b/locale/lt/viewer.properties
index c78f443..e203dee 100644
--- a/locale/lt/viewer.properties
+++ b/locale/lt/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Ankstesnis
next.title=Kitas puslapis
next_label=Kitas
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Puslapis:
-page_of=iš {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Puslapis
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=iš {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} iš {{pagesCount}})
zoom_out.title=Sumažinti
zoom_out_label=Sumažinti
@@ -67,7 +70,11 @@ document_properties.title=Dokumento savybės…
document_properties_label=Dokumento savybės…
document_properties_file_name=Failo vardas:
document_properties_file_size=Failo dydis:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} B)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} B)
document_properties_title=Antraštė:
document_properties_author=Autorius:
@@ -75,6 +82,8 @@ document_properties_subject=Tema:
document_properties_keywords=Reikšminiai žodžiai:
document_properties_creation_date=Sukūrimo data:
document_properties_modification_date=Modifikavimo data:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Kūrėjas:
document_properties_producer=PDF generatorius:
@@ -82,13 +91,19 @@ document_properties_version=PDF versija:
document_properties_page_count=Puslapių skaičius:
document_properties_close=Užverti
+print_progress_message=Dokumentas ruošiamas spausdinimui…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Atsisakyti
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Rodyti / slėpti šoninį polangį
toggle_sidebar_label=Šoninis polangis
-outline.title=Rodyti dokumento metmenis
-outline_label=Dokumento metmenys
+document_outline.title=Rodyti dokumento struktūrą (spustelėkite dukart norėdami išplėsti/suskleisti visus elementus)
+document_outline_label=Dokumento struktūra
attachments.title=Rodyti priedus
attachments_label=Priedai
thumbs.title=Rodyti puslapių miniatiūras
@@ -133,7 +148,7 @@ error_stack=Dėklas: {{stack}}
error_file=Failas: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Eilutė: {{line}}
-rendering_error=Atvaizduojant puslapį, įvyko klaida.
+rendering_error=Atvaizduojant puslapį įvyko klaida.
# Predefined zoom values
page_scale_width=Priderinti prie lapo pločio
@@ -146,7 +161,7 @@ page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=Klaida
-loading_error=Įkeliant PDF failą, įvyko klaida.
+loading_error=Įkeliant PDF failą įvyko klaida.
invalid_file_error=Tai nėra PDF failas arba jis yra sugadintas.
missing_file_error=PDF failas nerastas.
unexpected_response_error=Netikėtas serverio atsakas.
@@ -163,5 +178,5 @@ password_cancel=Atsisakyti
printing_not_supported=Dėmesio! Spausdinimas šioje naršyklėje nėra pilnai realizuotas.
printing_not_ready=Dėmesio! PDF failas dar nėra pilnai įkeltas spausdinimui.
-web_fonts_disabled=Neįgalinti saityno šriftai – šiame PDF faile esančių šriftų naudoti negalima.
-document_colors_disabled=PDF dokumentams neleidžiama nurodyti savo spalvų, nes išjungta naršyklės nuostata „Leisti tinklalapiams nurodyti spalvas“.
+web_fonts_disabled=Saityno šriftai išjungti – PDF faile esančių šriftų naudoti negalima.
+document_colors_not_allowed=PDF dokumentams neleidžiama nurodyti savo spalvų, nes išjungta naršyklės nuostata „Leisti tinklalapiams nurodyti spalvas“.
diff --git a/locale/lv/viewer.properties b/locale/lv/viewer.properties
index ba57762..9da1fce 100644
--- a/locale/lv/viewer.properties
+++ b/locale/lv/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Iepriekšējā
next.title=Nākamā lapa
next_label=Nākamā
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Lapa:
-page_of=no {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Lapa
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=no {{pageCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} no {{pagesCount}})
zoom_out.title=Attālināt\u0020
zoom_out_label=Attālināt
@@ -67,7 +70,11 @@ document_properties.title=Dokumenta iestatījumi…
document_properties_label=Dokumenta iestatījumi…
document_properties_file_name=Faila nosaukums:
document_properties_file_size=Faila izmērs:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} biti)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} biti)
document_properties_title=Nosaukums:
document_properties_author=Autors:
@@ -75,6 +82,8 @@ document_properties_subject=Tēma:
document_properties_keywords=Atslēgas vārdi:
document_properties_creation_date=Izveides datums:
document_properties_modification_date=LAbošanas datums:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Radītājs:
document_properties_producer=PDF producents:
@@ -82,13 +91,19 @@ document_properties_version=PDF versija:
document_properties_page_count=Lapu skaits:
document_properties_close=Aizvērt
+print_progress_message=Gatavo dokumentu drukāšanai...
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Atcelt
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Pārslēgt sānu joslu
toggle_sidebar_label=Pārslēgt sānu joslu
-outline.title=Parādīt dokumenta saturu
-outline_label=Dokumenta saturs
+document_outline.title=Rādīt dokumenta struktūru (veiciet dubultklikšķi lai izvērstu/sakļautu visus vienumus)
+document_outline_label=Dokumenta saturs
attachments.title=Rādīt pielikumus
attachments_label=Pielikumi
thumbs.title=Parādīt sīktēlus
@@ -164,4 +179,4 @@ password_cancel=Atcelt
printing_not_supported=Uzmanību: Drukāšana no šī pārlūka darbojas tikai daļēji.
printing_not_ready=Uzmanību: PDF nav pilnībā ielādēts drukāšanai.
web_fonts_disabled=Tīmekļa fonti nav aktivizēti: Nevar iegult PDF fontus.
-document_colors_disabled=PDF dokumentiem nav atļauts izmantot pašiem savas krāsas: „Atļaut lapām izvēlēties pašām savas krāsas“ ir deaktivēts pārlūkā.
+document_colors_not_allowed=PDF dokumentiem nav atļauts izmantot pašiem savas krāsas: „Atļaut lapām izvēlēties pašām savas krāsas“ ir deaktivēts pārlūkā.
diff --git a/locale/mai/viewer.properties b/locale/mai/viewer.properties
index cebcd75..022d56a 100644
--- a/locale/mai/viewer.properties
+++ b/locale/mai/viewer.properties
@@ -18,12 +18,12 @@ previous_label=पछिला
next.title=अगिला पृष्ठ
next_label=आगाँ
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=पृष्ठ:
-page_of={{pageCount}} क
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
zoom_out.title=छोट करू
zoom_out_label=छोट करू
@@ -67,7 +67,11 @@ document_properties.title=दस्तावेज़ विशेषता...
document_properties_label=दस्तावेज़ विशेषता...
document_properties_file_name=फाइल नाम:
document_properties_file_size=फ़ाइल आकार:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} बाइट)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} बाइट)
document_properties_title=शीर्षक:
document_properties_author=लेखकः
@@ -75,6 +79,8 @@ document_properties_subject=विषय
document_properties_keywords=बीजशब्द
document_properties_creation_date=निर्माण तिथि:
document_properties_modification_date=संशोधन दिनांक:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=सृजक:
document_properties_producer=PDF उत्पादक:
@@ -82,13 +88,15 @@ document_properties_version=PDF संस्करण:
document_properties_page_count=पृष्ठ गिनती:
document_properties_close=बन्न करू
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=स्लाइडर टागल
toggle_sidebar_label=स्लाइडर टागल
-outline.title=दस्तावेज आउटलाइन देखाउ
-outline_label=दस्तावेज खाका
+document_outline_label=दस्तावेज खाका
attachments.title=संलग्नक देखाबू
attachments_label=संलग्नक
thumbs.title=लघु-छवि देखाउ
@@ -149,7 +157,7 @@ loading_error_indicator=त्रुटि
loading_error=पीडीएफ लोड करैत समय एकटा त्रुटि भेल.
invalid_file_error=अमान्य अथवा भ्रष्ट PDF फाइल.
missing_file_error=अनुपस्थित PDF फाइल.
-unexpected_response_error=अप्रत्याशित सर्वर अनुक्रिया.
+unexpected_response_error=सर्वर सँ अप्रत्याशित प्रतिक्रिया.
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
@@ -159,9 +167,8 @@ text_annotation_type.alt=[{{type}} Annotation]
password_label=एहि पीडीएफ फ़ाइल केँ खोलबाक लेल कृपया कूटशब्द भरू.
password_invalid=अवैध कूटशब्द, कृपया फिनु कोशिश करू.
password_ok=बेस
-password_cancel=रद्द करू\u0020
printing_not_supported=चेतावनी: ई ब्राउजर पर छपाइ पूर्ण तरह सँ समर्थित नहि अछि.
printing_not_ready=चेतावनी: पीडीएफ छपाइक लेल पूर्ण तरह सँ लोड नहि अछि.
web_fonts_disabled=वेब फॉन्ट्स निष्क्रिय अछि: अंतःस्थापित PDF फान्टसक उपयोगमे असमर्थ.
-document_colors_disabled=PDF दस्तावेज़ हुकर अपन रंग केँ उपयोग करबाक लेल अनुमति प्राप्त नहि अछि: 'पृष्ठ केँ हुकर अपन रंग केँ चुनबाक लेल स्वीकृति दिअ जे ओ ओहि ब्राउज़र मे निष्क्रिय अछि.
+document_colors_not_allowed=PDF दस्तावेज़ हुकर अपन रंग केँ उपयोग करबाक लेल अनुमति प्राप्त नहि अछि: 'पृष्ठ केँ हुकर अपन रंग केँ चुनबाक लेल स्वीकृति दिअ जे ओ ओहि ब्राउज़र मे निष्क्रिय अछि.
diff --git a/locale/mk/viewer.properties b/locale/mk/viewer.properties
index 18ded89..6200587 100644
--- a/locale/mk/viewer.properties
+++ b/locale/mk/viewer.properties
@@ -1,6 +1,16 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Претходна страница
@@ -8,39 +18,57 @@ previous_label=Претходна
next.title=Следна страница
next_label=Следна
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Страница:
-page_of=од {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
zoom_out.title=Намалување
zoom_out_label=Намали
zoom_in.title=Зголемување
zoom_in_label=Зголеми
zoom.title=Променување на големина
+presentation_mode.title=Премини во презентациски режим
+presentation_mode_label=Презентациски режим
+open_file.title=Отворање датотека
+open_file_label=Отвори
print.title=Печатење
print_label=Печати
-open_file.title=Отварање датотека
-open_file_label=Отвори
download.title=Преземање
download_label=Преземи
bookmark.title=Овој преглед (копирај или отвори во нов прозорец)
bookmark_label=Овој преглед
+# Secondary toolbar and context menu
+tools.title=Алатки
+first_page.label=Оди до првата страница
+last_page.label=Оди до последната страница
+page_rotate_cw.label=Ротирај по стрелките на часовникот
+page_rotate_ccw.label=Ротирај спротивно од стрелките на часовникот
+
+
+# Document properties dialog box
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
+
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
-toggle_slider.title=Вклучување на лизгач
-toggle_slider_label=Вклучи лизгач
-outline.title=Прикажување на содржина на документот
-outline_label=Содржина на документот
+toggle_sidebar.title=Вклучи странична лента
+toggle_sidebar_label=Вклучи странична лента
thumbs.title=Прикажување на икони
thumbs_label=Икони
-
-# Document outline messages
-no_outline=Нема содржина
+findbar.title=Најди во документот
+findbar_label=Најди
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
@@ -50,13 +78,25 @@ thumb_page_title=Страница {{page}}
# number.
thumb_page_canvas=Икона од страница {{page}}
+# Find panel button title and messages
+find_label=Најди:
+find_previous.title=Најди ја предходната појава на фразата
+find_previous_label=Претходно
+find_next.title=Најди ја следната појава на фразата
+find_next_label=Следно
+find_highlight=Означи сѐ
+find_match_case_label=Токму така
+find_reached_top=Барањето стигна до почетокот на документот и почнува од крајот
+find_reached_bottom=Барањето стигна до крајот на документот и почнува од почеток
+find_not_found=Фразата не е пронајдена
+
# Error panel labels
error_more_info=Повеќе информации
error_less_info=Помалку информации
error_close=Затвори
-# LOCALIZATION NOTE (error_build): "{{build}}" will be replaced by the PDF.JS
-# build ID.
-error_build=PDF.JS Build: {{build}}
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (build: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=Порака: {{message}}
@@ -74,53 +114,21 @@ page_scale_width=Ширина на страница
page_scale_fit=Цела страница
page_scale_auto=Автоматска големина
page_scale_actual=Вистинска големина
+# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
+# numerical scale value.
+# Loading indicator messages
loading_error_indicator=Грешка
loading_error=Настана грешка при вчитувањето на PDF-от.
+invalid_file_error=Невалидна или корумпирана PDF датотека.
+missing_file_error=Недостасува PDF документ.
-# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
-# "{{[type}}" will be replaced with an annotation type from a list defined in
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
-text_annotation_type=[{{type}} Забелешка]
-request_password=PDF-от е заштитен со лозинка:
-
printing_not_supported=Предупредување: Печатењето не е целосно поддржано во овој прелистувач.
-
-find_highlight=Означи сѐ
-
-# Find panel button title and messages
-find_label=Најди:
-find_match_case_label=Токму така
-find_next.title=Најди ја следната појава на фразата
-find_next_label=Следно
-find_not_found=Фразата не е пронајдена
-find_previous.title=Најди ја предходната појава на фразата
-find_previous_label=Претходно
-find_reached_bottom=Барањето стигна до крајот на документот и почнува од почеток
-find_reached_top=Барањето стигна до почетокот на документот и почнува од крајот
-findbar.title=Најди во документот
-findbar_label=Најди
-
-# Context menu
-first_page.label=Оди до првата страница
-invalid_file_error=Невалидна или корумпирана PDF датотека.
-last_page.label=Оди до последната страница
-page_rotate_ccw.label=Ротирај спротивно од стрелките на часовникот
-page_rotate_cw.label=Ротирај по стрелките на часовникот
-presentation_mode.title=Премини во презентациски режим
-presentation_mode_label=Презентациски режим
-
-# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
-# replaced by the PDF.JS version and build ID.
-error_version_info=PDF.js v{{version}} (build: {{build}})
-missing_file_error=Недостасува PDF документ.
printing_not_ready=Предупредување: PDF документот не е целосно вчитан за печатење.
-
-# Tooltips and alt text for side panel toolbar buttons
-# (the _label strings are alt text for the buttons, the .title strings are
-# tooltips)
-toggle_sidebar.title=Вклучи странична лента
-toggle_sidebar_label=Вклучи странична лента
web_fonts_disabled=Интернет фонтовите се оневозможени: не може да се користат вградените PDF фонтови.
+document_colors_not_allowed=PDF-документите немаат дозвола да користат сопствени бои: Поставката „Дозволи страниците сами да ги избираат своите бои“ е деактивирана од прелистувачот.
diff --git a/locale/ml/viewer.properties b/locale/ml/viewer.properties
index 1e17a8a..d77d34c 100644
--- a/locale/ml/viewer.properties
+++ b/locale/ml/viewer.properties
@@ -18,12 +18,12 @@ previous_label=മുമ്പു്
next.title=അടുത്ത താള്
next_label=അടുത്തതു്
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=താള്:
-page_of={{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
zoom_out.title=ചെറുതാക്കുക
zoom_out_label=ചെറുതാക്കുക
@@ -67,7 +67,11 @@ document_properties.title=രേഖയുടെ വിശേഷതകള്..
document_properties_label=രേഖയുടെ വിശേഷതകള്...
document_properties_file_name=ഫയലിന്റെ പേര്:
document_properties_file_size=ഫയലിന്റെ വലിപ്പം:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} കെബി ({{size_b}} ബൈറ്റുകള്)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} എംബി ({{size_b}} ബൈറ്റുകള്)
document_properties_title=തലക്കെട്ട്\u0020
document_properties_author=രചയിതാവ്:
@@ -75,6 +79,8 @@ document_properties_subject=വിഷയം:
document_properties_keywords=കീവേര്ഡുകള്:
document_properties_creation_date=പൂര്ത്തിയാകുന്ന തീയതി:
document_properties_modification_date=മാറ്റം വരുത്തിയ തീയതി:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=സൃഷ്ടികര്ത്താവ്:
document_properties_producer=പിഡിഎഫ് പ്രൊഡ്യൂസര്:
@@ -82,13 +88,15 @@ document_properties_version=പിഡിഎഫ് പതിപ്പ്:
document_properties_page_count=താളിന്റെ എണ്ണം:
document_properties_close=അടയ്ക്കുക
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=സൈഡ് ബാറിലേക്കു് മാറ്റുക
toggle_sidebar_label=സൈഡ് ബാറിലേക്കു് മാറ്റുക
-outline.title=രേഖയുടെ ഔട്ട്ലൈന് കാണിയ്ക്കുക
-outline_label=രേഖയുടെ ഔട്ട്ലൈന്
+document_outline_label=രേഖയുടെ ഔട്ട്ലൈന്
attachments.title=അറ്റാച്മെന്റുകള് കാണിയ്ക്കുക
attachments_label=അറ്റാച്മെന്റുകള്
thumbs.title=തംബ്നെയിലുകള് കാണിയ്ക്കുക
@@ -159,9 +167,8 @@ text_annotation_type.alt=[{{type}} Annotation]
password_label=ഈ പിഡിഎഫ് ഫയല് തുറക്കുന്നതിനു് രഹസ്യവാക്ക് നല്കുക.
password_invalid=തെറ്റായ രഹസ്യവാക്ക്, ദയവായി വീണ്ടും ശ്രമിയ്ക്കുക.
password_ok=ശരി
-password_cancel=റദ്ദാക്കുക
printing_not_supported=മുന്നറിയിപ്പു്: ഈ ബ്രൌസര് പൂര്ണ്ണമായി പ്രിന്റിങ് പിന്തുണയ്ക്കുന്നില്ല.
printing_not_ready=മുന്നറിയിപ്പു്: പ്രിന്റ് ചെയ്യുന്നതിനു് പിഡിഎഫ് പൂര്ണ്ണമായി ലഭ്യമല്ല.
web_fonts_disabled=വെബിനുള്ള അക്ഷരസഞ്ചയങ്ങള് പ്രവര്ത്തന രഹിതം: എംബഡ്ഡ് ചെയ്ത പിഡിഎഫ് അക്ഷരസഞ്ചയങ്ങള് ഉപയോഗിയ്ക്കുവാന് സാധ്യമല്ല.
-document_colors_disabled=സ്വന്തം നിറങ്ങള് ഉപയോഗിയ്ക്കുവാന് പിഡിഎഫ് രേഖകള്ക്കു് അനുവാദമില്ല: 'സ്വന്തം നിറങ്ങള് ഉപയോഗിയ്ക്കുവാന് താളുകളെ അനുവദിയ്ക്കുക' എന്നതു് ബ്രൌസറില് നിര്ജീവമാണു്.
+document_colors_not_allowed=സ്വന്തം നിറങ്ങള് ഉപയോഗിയ്ക്കുവാന് പിഡിഎഫ് രേഖകള്ക്കു് അനുവാദമില്ല: 'സ്വന്തം നിറങ്ങള് ഉപയോഗിയ്ക്കുവാന് താളുകളെ അനുവദിയ്ക്കുക' എന്നതു് ബ്രൌസറില് നിര്ജീവമാണു്.
diff --git a/locale/mn/viewer.properties b/locale/mn/viewer.properties
index f036644..138ce3c 100644
--- a/locale/mn/viewer.properties
+++ b/locale/mn/viewer.properties
@@ -14,10 +14,12 @@
# Main toolbar buttons (tooltips and alt text for images)
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
zoom.title=Тэлэлт
open_file.title=Файл нээ
@@ -25,6 +27,20 @@ open_file_label=Нээ
# Secondary toolbar and context menu
+
+# Document properties dialog box
+document_properties_file_name=Файлын нэр:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
+document_properties_title=Гарчиг:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
+
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
@@ -43,7 +59,6 @@ find_not_found=Олдсонгүй
# Error panel labels
error_more_info=Нэмэлт мэдээлэл
-error_close=Хаа
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
@@ -54,6 +69,8 @@ error_close=Хаа
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
# Predefined zoom values
+# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
+# numerical scale value.
# Loading indicator messages
loading_error_indicator=Алдаа
@@ -62,4 +79,5 @@ loading_error_indicator=Алдаа
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+password_ok=OK
diff --git a/locale/mr/viewer.properties b/locale/mr/viewer.properties
index 0e6f72f..f3e9e67 100644
--- a/locale/mr/viewer.properties
+++ b/locale/mr/viewer.properties
@@ -18,12 +18,15 @@ previous_label=मागील
next.title=पुढील पृष्ठ
next_label=पुढील
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=पृष्ठ:
-page_of=पैकी {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=पृष्ठ
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages={{pageCount}}पैकी
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pagesCount}} पैकी {{pageNumber}})
zoom_out.title=छोटे करा
zoom_out_label=छोटे करा
@@ -38,18 +41,18 @@ print.title=छपाई करा
print_label=छपाई करा
download.title=डाउनलोड करा
download_label=डाउनलोड करा
-bookmark.title=सध्याचे अवलोकन (नविन पटलात प्रत बनवा किंवा उघडा)
+bookmark.title=सध्याचे अवलोकन (नवीन पटलात प्रत बनवा किंवा उघडा)
bookmark_label=सध्याचे अवलोकन
# Secondary toolbar and context menu
tools.title=साधने
tools_label=साधने
-first_page.title=पहिल्या पानावर जा
-first_page.label=पहिल्या पानावर जा
-first_page_label=पहिल्या पानावर जा
-last_page.title=शेवटच्या पानावर जा
-last_page.label=शेवटच्या पानावर जा
-last_page_label=शेवटच्या पानावर जा
+first_page.title=पहिल्या पृष्ठावर जा
+first_page.label=पहिल्या पृष्ठावर जा
+first_page_label=पहिल्या पृष्ठावर जा
+last_page.title=शेवटच्या पृष्ठावर जा
+last_page.label=शेवटच्या पृष्ठावर जा
+last_page_label=शेवटच्या पृष्ठावर जा
page_rotate_cw.title=घड्याळाच्या काट्याच्या दिशेने फिरवा
page_rotate_cw.label=घड्याळाच्या काट्याच्या दिशेने फिरवा
page_rotate_cw_label=घड्याळाच्या काट्याच्या दिशेने फिरवा
@@ -67,7 +70,11 @@ document_properties.title=दस्तऐवज गुणधर्म…
document_properties_label=दस्तऐवज गुणधर्म…
document_properties_file_name=फाइलचे नाव:
document_properties_file_size=फाइल आकार:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} बाइट्स)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} बाइट्स)
document_properties_title=शिर्षक:
document_properties_author=लेखक:
@@ -75,6 +82,8 @@ document_properties_subject=विषय:
document_properties_keywords=मुख्यशब्द:
document_properties_creation_date=निर्माण दिनांक:
document_properties_modification_date=दुरूस्ती दिनांक:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=निर्माता:
document_properties_producer=PDF निर्माता:
@@ -82,13 +91,19 @@ document_properties_version=PDF आवृत्ती:
document_properties_page_count=पृष्ठ संख्या:
document_properties_close=बंद करा
+print_progress_message=छपाई करीता पृष्ठ तयार करीत आहे…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=रद्द करा
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=बाजूचीपट्टी टॉगल करा
toggle_sidebar_label=बाजूचीपट्टी टॉगल करा
-outline.title=दस्तऐवज रूपरेषा दाखवा
-outline_label=दस्तऐवज रूपरेषा
+document_outline.title=दस्तऐवज बाह्यरेखा दर्शवा (विस्तृत करण्यासाठी दोनवेळा क्लिक करा /सर्व घटक दाखवा)
+document_outline_label=दस्तऐवज रूपरेषा
attachments.title=जोडपत्र दाखवा
attachments_label=जोडपत्र
thumbs.title=थंबनेल्स् दाखवा
@@ -142,12 +157,14 @@ page_scale_auto=स्वयं लाहन किंवा मोठे कर
page_scale_actual=प्रत्यक्ष आकार
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
+page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=त्रुटी
loading_error=PDF लोड करतेवेळी त्रुटी आढळली.
invalid_file_error=अवैध किंवा दोषीत PDF फाइल.
missing_file_error=न आढळणारी PDF फाइल.
+unexpected_response_error=अनपेक्षित सर्व्हर प्रतिसाद.
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
@@ -159,7 +176,7 @@ password_invalid=अवैध पासवर्ड. कृपया पुन
password_ok=ठीक आहे
password_cancel=रद्द करा
-printing_not_supported=सावधानता: या ब्राउजरतर्फे छपाइ पूर्णपणे समर्थीत नाही.
+printing_not_supported=सावधानता: या ब्राउझरतर्फे छपाइ पूर्णपणे समर्थीत नाही.
printing_not_ready=सावधानता: छपाईकरिता PDF पूर्णतया लोड झाले नाही.
-web_fonts_disabled=वेब फाँट्स असमर्थीत आहेत: एम्बेडेड PDF फाँट्स्चा वापर अशक्य.
-document_colors_disabled=PDF दस्ताएवजांना त्यांचे रंग वापरण्यास अनुमती नाही: ब्राउजरमध्ये ' पानांना त्यांचे रंग निवडण्यास अनुमती द्या' बंद केले आहे.
+web_fonts_disabled=वेब टंक असमर्थीत आहेत: एम्बेडेड PDF टंक वापर अशक्य.
+document_colors_not_allowed=PDF दस्तऐवजांना त्यांचे रंग वापरण्यास अनुमती नाही: ब्राउझरमध्ये ' पृष्ठांना त्यांचे रंग निवडण्यास अनुमती द्या' बंद केले आहे.
diff --git a/locale/ms/viewer.properties b/locale/ms/viewer.properties
index fd15e5d..c99affd 100644
--- a/locale/ms/viewer.properties
+++ b/locale/ms/viewer.properties
@@ -13,24 +13,27 @@
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
-previous.title=Laman Sebelumnya
+previous.title=Halaman Sebelum
previous_label=Terdahulu
-next.title=Laman seterusnya
+next.title=Halaman Seterusnya
next_label=Berikut
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Laman:
-page_of=daripada {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Halaman
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=daripada {{pageCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} daripada {{pagesCount}})
zoom_out.title=Zum Keluar
zoom_out_label=Zum Keluar
zoom_in.title=Zum Masuk
zoom_in_label=Zum Masuk
zoom.title=Zum
-presentation_mode.title=Bertukar ke Mod Persembahan
+presentation_mode.title=Tukar ke Mod Persembahan
presentation_mode_label=Mod Persembahan
open_file.title=Buka Fail
open_file_label=Buka
@@ -38,8 +41,8 @@ print.title=Cetak
print_label=Cetak
download.title=Muat turun
download_label=Muat turun
-bookmark.title=Pandangan semasa (salinan atau dibuka dalam tetingkap baru)
-bookmark_label=Lihat semasa
+bookmark.title=Paparan semasa (salin atau buka dalam tetingkap baru)
+bookmark_label=Paparan Semasa
# Secondary toolbar and context menu
tools.title=Alatan
@@ -57,17 +60,21 @@ page_rotate_ccw.title=Pusing berlawan arah jam
page_rotate_ccw.label=Pusing berlawan arah jam
page_rotate_ccw_label=Pusing berlawan arah jam
-hand_tool_enable.title=Bolehkan alatan tangan
-hand_tool_enable_label=Bolehkan alatan tangan
-hand_tool_disable.title=Lumpuhkan alatan tangan
-hand_tool_disable_label=Lumpuhkan alatan tangan
+hand_tool_enable.title=Dayakan alatan tangan
+hand_tool_enable_label=Dayakan alatan tangan
+hand_tool_disable.title=Nyahdayakan alat tangan
+hand_tool_disable_label=Nyahdayakan alat tangan
# Document properties dialog box
-document_properties.title=Ciri Dokumen…
-document_properties_label=Ciri Dokumen…
+document_properties.title=Sifat Dokumen…
+document_properties_label=Sifat Dokumen…
document_properties_file_name=Nama fail:
document_properties_file_size=Saiz fail:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bait)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bait)
document_properties_title=Tajuk:
document_properties_author=Pengarang:
@@ -75,6 +82,8 @@ document_properties_subject=Subjek:
document_properties_keywords=Kata kunci:
document_properties_creation_date=Masa Dicipta:
document_properties_modification_date=Tarikh Ubahsuai:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Pencipta:
document_properties_producer=Pengeluar PDF:
@@ -82,16 +91,22 @@ document_properties_version=Versi PDF:
document_properties_page_count=Kiraan Laman:
document_properties_close=Tutup
+print_progress_message=Menyediakan dokumen untuk dicetak…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Batal
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Togol Bar Sisi
toggle_sidebar_label=Togol Bar Sisi
-outline.title=Tunjuk Rangka Dokumen
-outline_label=Rangka Dokument
-attachments.title=Tunjuk Lampiran
+document_outline.title=Papar Rangka Dokumen (klik-dua-kali untuk kembangkan/kolaps semua item)
+document_outline_label=Rangka Dokumen
+attachments.title=Papar Lampiran
attachments_label=Lampiran
-thumbs.title=Tunjuk Imej kecil
+thumbs.title=Papar Thumbnails
thumbs_label=Imej kecil
findbar.title=Cari didalam Dokumen
findbar_label=Cari
@@ -142,12 +157,14 @@ page_scale_auto=Zoom Automatik
page_scale_actual=Saiz Sebenar
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
+page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=Ralat
loading_error=Masalah berlaku semasa menuatkan sebuah PDF.
invalid_file_error=Tidak sah atau fail PDF rosak.
missing_file_error=Fail PDF Hilang.
+unexpected_response_error=Respon pelayan yang tidak dijangka.
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
@@ -161,5 +178,5 @@ password_cancel=Batal
printing_not_supported=Amaran: Cetakan ini tidak sepenuhnya disokong oleh pelayar ini.
printing_not_ready=Amaran: PDF tidak sepenuhnya dimuatkan untuk dicetak.
-web_fonts_disabled=Fon web dilumpuhkan: tidak dapat fon PDF terbenam.
-document_colors_disabled=Dokumen PDF tidak dibenarkan untuk menggunakan warna sendiri: 'Benarkan muka surat untuk memilih warna sendiri' telah dinyahaktif dalam pelayar.
+web_fonts_disabled=Fon web dinyahdayakan: tidak dapat menggunakan fon terbenam PDF.
+document_colors_not_allowed=Dokumen PDF tidak dibenarkan untuk menggunakan warna sendiri: “Izinkan halaman untuk memilih warna sendiri” telah dinyahaktifkan dalam pelayar.
diff --git a/locale/my/viewer.properties b/locale/my/viewer.properties
index 18c69e9..a4a30a9 100644
--- a/locale/my/viewer.properties
+++ b/locale/my/viewer.properties
@@ -18,20 +18,23 @@ previous_label=အရင်နေရာ
next.title=ရှေ့ စာမျက်နှာ
next_label=နောက်တခု
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=စာမျက်နှာ -
-page_of=၏ {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=စာမျက်နှာ
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages={{pagesCount}} ၏
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pagesCount}} ၏ {{pageNumber}})
zoom_out.title=ချုံ့ပါ
zoom_out_label=ချုံ့ပါ
zoom_in.title=ချဲ့ပါ
zoom_in_label=ချဲ့ပါ
zoom.title=ချုံ့/ချဲ့ပါ
-presentation_mode.title=Switch to Presentation Mode
-presentation_mode_label=Presentation Mode
+presentation_mode.title=ဆွေးနွေးတင်ပြစနစ်သို့ ကူးပြောင်းပါ
+presentation_mode_label=ဆွေးနွေးတင်ပြစနစ်
open_file.title=ဖိုင်အားဖွင့်ပါ။
open_file_label=ဖွင့်ပါ
print.title=ပုံနှိုပ်ပါ
@@ -67,7 +70,11 @@ document_properties.title=မှတ်တမ်းမှတ်ရာ ဂုဏ
document_properties_label=မှတ်တမ်းမှတ်ရာ ဂုဏ်သတ္တိများ
document_properties_file_name=ဖိုင် :
document_properties_file_size=ဖိုင်ဆိုဒ် :
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} ကီလိုဘိုတ် ({size_kb}}ဘိုတ်)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=ခေါင်းစဉ် -
document_properties_author=ရေးသားသူ:
@@ -75,6 +82,8 @@ document_properties_subject=အကြောင်းအရာ:\u0020
document_properties_keywords=သော့ချက် စာလုံး:
document_properties_creation_date=ထုတ်လုပ်ရက်စွဲ:
document_properties_modification_date=ပြင်ဆင်ရက်စွဲ:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=ဖန်တီးသူ:
document_properties_producer=PDF ထုတ်လုပ်သူ:
@@ -82,13 +91,19 @@ document_properties_version=PDF ဗားရှင်း:
document_properties_page_count=စာမျက်နှာအရေအတွက်:
document_properties_close=ပိတ်
+print_progress_message=Preparing document for printing…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=ပယ်ဖျက်ပါ
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=ဘေးတန်းဖွင့်ပိတ်
toggle_sidebar_label=ဖွင့်ပိတ် ဆလိုက်ဒါ
-outline.title=စာတမ်း မူကြမ်း ကိုပြပါ
-outline_label=စာတမ်း မူကြမ်း
+document_outline.title=စာတမ်းအကျဉ်းချုပ်ကို ပြပါ (စာရင်းအားလုံးကို ချုံ့/ချဲ့ရန် ကလစ်နှစ်ချက်နှိပ်ပါ)
+document_outline_label=စာတမ်းအကျဉ်းချုပ်
attachments.title=တွဲချက်များ ပြပါ
attachments_label=တွဲထားချက်များ
thumbs.title=ပုံရိပ်ငယ်များကို ပြပါ
@@ -142,6 +157,7 @@ page_scale_auto=အလိုအလျောက် ချုံ့ချဲ့
page_scale_actual=အမှန်တကယ်ရှိတဲ့ အရွယ်
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
+page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=အမှား
@@ -163,4 +179,4 @@ password_cancel=ပယ်ဖျက်ပါ
printing_not_supported=သတိပေးချက်၊ပရင့်ထုတ်ခြင်းကိုဤဘယောက်ဆာသည် ပြည့်ဝစွာထောက်ပံ့မထားပါ ။
printing_not_ready=သတိပေးချက်: ယခု PDF ဖိုင်သည် ပုံနှိပ်ရန် မပြည့်စုံပါ
web_fonts_disabled=Web fonts are disabled: unable to use embedded PDF fonts.
-document_colors_disabled=PDF ဖိုင်အား ၎င်းဤ ကိုယ်ပိုင်အရောင်များကို အသုံးပြုခွင့်မပေးထားပါ ။ 'စာမျက်နှာအားလုံးအားအရောင်ရွေးချယ်ခွင့်' အား ယခု ဘယောက်ဆာတွင် ပိတ်ထားခြင်းကြောင့်ဖြစ် သှ်
+document_colors_not_allowed=PDF ဖိုင်အား ၎င်းဤ ကိုယ်ပိုင်အရောင်များကို အသုံးပြုခွင့်မပေးထားပါ ။ 'စာမျက်နှာအားလုံးအားအရောင်ရွေးချယ်ခွင့်' အား ယခု ဘယောက်ဆာတွင် ပိတ်ထားခြင်းကြောင့်ဖြစ် သှ်
diff --git a/locale/nb-NO/viewer.properties b/locale/nb-NO/viewer.properties
index 9b3839f..0be0acb 100644
--- a/locale/nb-NO/viewer.properties
+++ b/locale/nb-NO/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Forrige
next.title=Neste side
next_label=Neste
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Side:
-page_of=av {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Side
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=av {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} av {{pagesCount}})
zoom_out.title=Zoom ut
zoom_out_label=Zoom ut
@@ -67,14 +70,20 @@ document_properties.title=Dokumentegenskaper …
document_properties_label=Dokumentegenskaper …
document_properties_file_name=Filnavn:
document_properties_file_size=Filstørrelse:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
-document_properties_title=Tittel:
+document_properties_title=Dokumentegenskaper …
document_properties_author=Forfatter:
document_properties_subject=Emne:
document_properties_keywords=Nøkkelord:
document_properties_creation_date=Opprettet dato:
document_properties_modification_date=Endret dato:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Opprettet av:
document_properties_producer=PDF-verktøy:
@@ -82,13 +91,19 @@ document_properties_version=PDF-versjon:
document_properties_page_count=Sideantall:
document_properties_close=Lukk
+print_progress_message=Forbereder dokument for utskrift …
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Avbryt
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Slå av/på sidestolpe
toggle_sidebar_label=Slå av/på sidestolpe
-outline.title=Vis dokumentdisposisjon
-outline_label=Dokumentdisposisjon
+document_outline.title=Vis dokumentdisposisjonen (dobbeltklikk for å utvide/skjule alle elementer)
+document_outline_label=Dokumentdisposisjon
attachments.title=Vis vedlegg
attachments_label=Vedlegg
thumbs.title=Vis miniatyrbilde
@@ -164,4 +179,4 @@ password_cancel=Avbryt
printing_not_supported=Advarsel: Utskrift er ikke fullstendig støttet av denne nettleseren.
printing_not_ready=Advarsel: PDF er ikke fullstendig innlastet for utskrift.
web_fonts_disabled=Web-fonter er avslått: Kan ikke bruke innbundne PDF-fonter.
-document_colors_disabled=PDF-dokumenter tillates ikke å bruke deres egne farger: 'Tillat sider å velge egne farger' er deaktivert i nettleseren.
+document_colors_not_allowed=PDF-dokumenter tillates ikke å bruke deres egne farger: "Tillat sider å velge egne farger" er deaktivert i nettleseren.
diff --git a/locale/nl/viewer.properties b/locale/nl/viewer.properties
index 50e4d13..fedc5fa 100644
--- a/locale/nl/viewer.properties
+++ b/locale/nl/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Vorige
next.title=Volgende pagina
next_label=Volgende
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Pagina:
-page_of=van {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Pagina
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=van {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} van {{pagesCount}})
zoom_out.title=Uitzoomen
zoom_out_label=Uitzoomen
@@ -67,7 +70,11 @@ document_properties.title=Documenteigenschappen…
document_properties_label=Documenteigenschappen…
document_properties_file_name=Bestandsnaam:
document_properties_file_size=Bestandsgrootte:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=Titel:
document_properties_author=Auteur:
@@ -75,6 +82,8 @@ document_properties_subject=Onderwerp:
document_properties_keywords=Trefwoorden:
document_properties_creation_date=Aanmaakdatum:
document_properties_modification_date=Wijzigingsdatum:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Auteur:
document_properties_producer=PDF-producent:
@@ -82,13 +91,19 @@ document_properties_version=PDF-versie:
document_properties_page_count=Aantal pagina’s:
document_properties_close=Sluiten
+print_progress_message=Document voorbereiden voor afdrukken…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Annuleren
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Zijbalk in-/uitschakelen
toggle_sidebar_label=Zijbalk in-/uitschakelen
-outline.title=Documentoverzicht tonen
-outline_label=Documentoverzicht
+document_outline.title=Documentoverzicht tonen (dubbelklik om alle items uit/samen te vouwen)
+document_outline_label=Documentoverzicht
attachments.title=Bijlagen tonen
attachments_label=Bijlagen
thumbs.title=Miniaturen tonen
@@ -106,14 +121,14 @@ thumb_page_canvas=Miniatuur van pagina {{page}}
# Find panel button title and messages
find_label=Zoeken:
-find_previous.title=Het vorige voorkomen van de tekst zoeken
+find_previous.title=De vorige overeenkomst van de tekst zoeken
find_previous_label=Vorige
-find_next.title=Het volgende voorkomen van de tekst zoeken
+find_next.title=De volgende overeenkomst van de tekst zoeken
find_next_label=Volgende
find_highlight=Alles markeren
find_match_case_label=Hoofdlettergevoelig
-find_reached_top=Bovenkant van het document bereikt, doorgegaan vanaf de onderkant
-find_reached_bottom=Onderkant van het document bereikt, doorgegaan vanaf de bovenkant
+find_reached_top=Bovenkant van document bereikt, doorgegaan vanaf onderkant
+find_reached_bottom=Onderkant van document bereikt, doorgegaan vanaf bovenkant
find_not_found=Tekst niet gevonden
# Error panel labels
@@ -164,4 +179,4 @@ password_cancel=Annuleren
printing_not_supported=Waarschuwing: afdrukken wordt niet volledig ondersteund door deze browser.
printing_not_ready=Waarschuwing: de PDF is niet volledig geladen voor afdrukken.
web_fonts_disabled=Weblettertypen zijn uitgeschakeld: gebruik van ingebedde PDF-lettertypen is niet mogelijk.
-document_colors_disabled=PDF-documenten mogen hun eigen kleuren niet gebruiken: ‘Pagina’s toestaan om hun eigen kleuren te kiezen’ is uitgeschakeld in de browser.
+document_colors_not_allowed=PDF-documenten mogen hun eigen kleuren niet gebruiken: ‘Pagina’s toestaan om hun eigen kleuren te kiezen’ is uitgeschakeld in de browser.
diff --git a/locale/nn-NO/viewer.properties b/locale/nn-NO/viewer.properties
index 098e822..298b635 100644
--- a/locale/nn-NO/viewer.properties
+++ b/locale/nn-NO/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Førre
next.title=Neste side
next_label=Neste
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Side:
-page_of=av {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Side
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=av {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} av {{pagesCount}})
zoom_out.title=Mindre
zoom_out_label=Mindre
@@ -67,14 +70,20 @@ document_properties.title=Dokumenteigenskapar …
document_properties_label=Dokumenteigenskapar …
document_properties_file_name=Filnamn:
document_properties_file_size=Filstorleik:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=Dokumenteigenskapar …
document_properties_author=Forfattar:
document_properties_subject=Emne:
-document_properties_keywords=Nykelord:
+document_properties_keywords=Stikkord:
document_properties_creation_date=Dato oppretta:
document_properties_modification_date=Dato endra:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Oppretta av:
document_properties_producer=PDF-verktøy:
@@ -82,13 +91,19 @@ document_properties_version=PDF-versjon:
document_properties_page_count=Sidetal:
document_properties_close=Lukk
+print_progress_message=Førebur dokumentet for utskrift…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Avbryt
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Slå av/på sidestolpe
toggle_sidebar_label=Slå av/på sidestolpe
-outline.title=Vis dokumentdisposisjon
-outline_label=Dokumentdisposisjon
+document_outline.title=Vis dokumentdisposisjonen (dobbelklikk for å utvida/skjula alle elementa)
+document_outline_label=Dokumentdisposisjon
attachments.title=Vis vedlegg
attachments_label=Vedlegg
thumbs.title=Vis miniatyrbilde
@@ -164,4 +179,4 @@ password_cancel=Avbryt
printing_not_supported=Åtvaring: Utskrift er ikkje fullstendig støtta av denne nettlesaren.
printing_not_ready=Åtvaring: PDF ikkje fullstendig innlasta for utskrift.
web_fonts_disabled=Vev-skrifter er slått av: Kan ikkje bruka innbundne PDF-skrifter.
-document_colors_disabled=PDF-dokument har ikkje løyve til å bruka eigne fargar: 'Tillat sider å velja eigne fargar' er slått av i nettlesaren.
+document_colors_not_allowed=PDF-dokument kan ikkje bruka eigne fargar: "Tillat sider å velja eigne fargar" er deaktivert i nettlesaren.
diff --git a/locale/nso/viewer.properties b/locale/nso/viewer.properties
index 09923f5..c36b70a 100644
--- a/locale/nso/viewer.properties
+++ b/locale/nso/viewer.properties
@@ -18,36 +18,51 @@ previous_label=Fetilego
next.title=Letlakala le latelago
next_label=Latelago
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Letlakala:
-page_of=la {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
zoom_out.title=Bušetša ka gare
zoom_out_label=Bušetša ka gare
zoom_in.title=Godišetša ka ntle
zoom_in_label=Godišetša ka ntle
zoom.title=Godiša
-print.title=Gatiša
-print_label=Gatiša
presentation_mode.title=Fetogela go mokgwa wa tlhagišo
presentation_mode_label=Mokgwa wa tlhagišo
open_file.title=Bula faele
open_file_label=Bula
+print.title=Gatiša
+print_label=Gatiša
download.title=Laolla
download_label=Laolla
bookmark.title=Pono ya bjale (kopiša le go bula lefasetereng le leswa)
bookmark_label=Tebelelo ya gona bjale
+# Secondary toolbar and context menu
+
+
+# Document properties dialog box
+document_properties_file_name=Leina la faele:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
+document_properties_title=Thaetlele:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
+
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Šielanya para ya ka thoko
toggle_sidebar_label=Šielanya para ya ka thoko
-outline.title=Laetša kakaretšo ya tokumente
-outline_label=Kakaretšo ya tokumente
+document_outline_label=Kakaretšo ya tokumente
thumbs.title=Laetša dikhutšofatšo
thumbs_label=Dikhutšofatšo
findbar.title=Hwetša go tokumente
@@ -61,12 +76,6 @@ thumb_page_title=Letlakala {{page}}
# number.
thumb_page_canvas=Khutšofatšo ya letlakala {{page}}
-# Context menu
-first_page.label=Eya letlakaleng la mathomo
-last_page.label=Eya letlakaleng la mafelelo
-page_rotate_cw.label=Dikološa go ya ka go la go ja
-page_rotate_ccw.label=Dikološa go ya go la ntsogošo
-
# Find panel button title and messages
find_label=Hwetša:
find_previous.title=Hwetša tiragalo e fetilego ya sekafoko
@@ -82,7 +91,6 @@ find_not_found=Sekafoko ga sa hwetšwa
# Error panel labels
error_more_info=Tshedimošo e oketšegilego
error_less_info=Tshedimošo ya tlasana
-error_close=Tswalela
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
error_version_info=PDF.js v{{version}} (build: {{build}})
@@ -103,6 +111,8 @@ page_scale_width=Bophara bja letlakala
page_scale_fit=Go lekana ga letlakala
page_scale_auto=Kgodišo ya maitirišo
page_scale_actual=Bogolo bja kgonthe
+# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
+# numerical scale value.
# Loading indicator messages
loading_error_indicator=Phošo
@@ -110,14 +120,13 @@ loading_error=Go diregile phošo ge go hlahlelwa PDF.
invalid_file_error=Faele ye e sa šomego goba e senyegilego ya PDF.
missing_file_error=Faele yeo e sego gona ya PDF.
-# LOCALIZATION NOTE (text_annotation_type): This is used as a tooltip.
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
-text_annotation_type=[{{type}} Tlhaloso]
-request_password=PDF e šireleditšwe ka lentšuphetišo:
+text_annotation_type.alt=[{{type}} Tlhaloso]
+password_ok=LOKILE
printing_not_supported=Temošo: Go gatiša ga go thekgwe ke praosara ye ka botlalo.
printing_not_ready=Temošo: PDF ga ya hlahlelwa ka botlalo bakeng sa go gatišwa.
web_fonts_disabled=Difonte tša wepe di šitišitšwe: ga e kgone go diriša difonte tša PDF tše khutišitšwego.
-web_colors_disabled=Mebala ya wepe e šitišitšwe.
diff --git a/locale/oc/viewer.properties b/locale/oc/viewer.properties
index a686373..1b55726 100644
--- a/locale/oc/viewer.properties
+++ b/locale/oc/viewer.properties
@@ -18,19 +18,21 @@ previous_label=Precedent
next.title=Pagina seguenta
next_label=Seguent
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Pagina :
-page_of=sus {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Pagina
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=sus {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
zoom_out.title=Zoom arrièr
zoom_out_label=Zoom arrièr
zoom_in.title=Zoom avant
zoom_in_label=Zoom avant
zoom.title=Zoom
-presentation_mode.title=Bascuolar en mòde presentacion
+presentation_mode.title=Bascular en mòde presentacion
presentation_mode_label=Mòde Presentacion
open_file.title=Dobrir lo fichièr
open_file_label=Dobrir
@@ -67,7 +69,11 @@ document_properties.title=Proprietats del document...
document_properties_label=Proprietats del document...
document_properties_file_name=Nom del fichièr :
document_properties_file_size=Talha del fichièr :
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} Ko ({{size_b}} octets)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} Mo ({{size_b}} octets)
document_properties_title=Títol :
document_properties_author=Autor :
@@ -75,6 +81,8 @@ document_properties_subject=Subjècte :
document_properties_keywords=Mots claus :
document_properties_creation_date=Data de creacion :
document_properties_modification_date=Data de modificacion :
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Creator :
document_properties_producer=Aisina de conversion PDF :
@@ -82,13 +90,16 @@ document_properties_version=Version PDF :
document_properties_page_count=Nombre de paginas :
document_properties_close=Tampar
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_close=Anullar
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Afichar/amagar lo panèl lateral
toggle_sidebar_label=Afichar/amagar lo panèl lateral
-outline.title=Afichar los marcapaginas
-outline_label=Marcapaginas del document
+document_outline_label=Marcapaginas del document
attachments.title=Visualizar las pèças juntas
attachments_label=Pèças juntas
thumbs.title=Afichar las vinhetas
@@ -133,7 +144,7 @@ error_stack=Pila : {{stack}}
error_file=Fichièr : {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Linha : {{line}}
-rendering_error=Una error s'es producha pendent l'afichatge de la pagina.
+rendering_error=Una error s'es produita pendent l'afichatge de la pagina.
# Predefined zoom values
page_scale_width=Largor plena
@@ -145,7 +156,7 @@ page_scale_actual=Talha vertadièra
# Loading indicator messages
loading_error_indicator=Error
-loading_error=Una error s'es producha pendent lo cargament del fichièr PDF.
+loading_error=Una error s'es produita pendent lo cargament del fichièr PDF.
invalid_file_error=Fichièr PDF invalid o corromput.
missing_file_error=Fichièr PDF mancant.
@@ -159,7 +170,7 @@ password_invalid=Senhal incorrècte. Tornatz ensajar.
password_ok=D'acòrdi
password_cancel=Anullar
-printing_not_supported=Atencion : l'estampatge es pas completament gerit per aqueste navigador.
+printing_not_supported=Atencion : l'impression es pas completament gerit per aqueste navigador.
printing_not_ready=Atencion : lo PDF es pas entièrament cargat per lo poder imprimir.
web_fonts_disabled=Las poliças web son desactivadas : impossible d'utilizar las poliças integradas al PDF.
-document_colors_disabled=Los documents PDF pòdon pas utilizar lors pròprias colors : « Autorizar las paginas web d'utilizar lors pròprias colors » es desactivat dins lo navigador.
+document_colors_not_allowed=Los documents PDF pòdon pas utilizar lors pròprias colors : « Autorizar las paginas web d'utilizar lors pròprias colors » es desactivat dins lo navigador.
diff --git a/locale/or/viewer.properties b/locale/or/viewer.properties
index 39d2962..8d2e240 100644
--- a/locale/or/viewer.properties
+++ b/locale/or/viewer.properties
@@ -18,12 +18,12 @@ previous_label=ପୂର୍ବ
next.title=ପର ପୃଷ୍ଠା
next_label=ପର
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=ପୃଷ୍ଠା:
-page_of={{pageCount}} ର
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
zoom_out.title=ଛୋଟ କରନ୍ତୁ
zoom_out_label=ଛୋଟ କରନ୍ତୁ
@@ -67,7 +67,11 @@ document_properties.title=ଦଲିଲ ଗୁଣଧର୍ମ…
document_properties_label=ଦଲିଲ ଗୁଣଧର୍ମ…
document_properties_file_name=ଫାଇଲ ନାମ:
document_properties_file_size=ଫାଇଲ ଆକାର:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=ଶୀର୍ଷକ:
document_properties_author=ଲେଖକ:
@@ -75,6 +79,8 @@ document_properties_subject=ବିଷୟ:
document_properties_keywords=ସୂଚକ ଶବ୍ଦ:
document_properties_creation_date=ନିର୍ମାଣ ତାରିଖ:
document_properties_modification_date=ପରିବର୍ତ୍ତନ ତାରିଖ:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=ନିର୍ମାତା:
document_properties_producer=PDF ପ୍ରଯୋଜକ:
@@ -82,13 +88,15 @@ document_properties_version=PDF ସଂସ୍କରଣ:
document_properties_page_count=ପୃଷ୍ଠା ଗଣନା:
document_properties_close=ବନ୍ଦ କରନ୍ତୁ
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=ପାର୍ଶ୍ୱପଟିକୁ ଆଗପଛ କରନ୍ତୁ
toggle_sidebar_label=ପାର୍ଶ୍ୱପଟିକୁ ଆଗପଛ କରନ୍ତୁ
-outline.title=ଦଲିଲ ସାରାଂଶ ଦର୍ଶାନ୍ତୁ
-outline_label=ଦଲିଲ ସାରାଂଶ
+document_outline_label=ଦଲିଲ ସାରାଂଶ
attachments.title=ସଂଲଗ୍ନକଗୁଡ଼ିକୁ ଦର୍ଶାନ୍ତୁ
attachments_label=ସଲଗ୍ନକଗୁଡିକ
thumbs.title=ସଂକ୍ଷିପ୍ତ ବିବରଣୀ ଦର୍ଶାନ୍ତୁ
@@ -140,6 +148,8 @@ page_scale_width=ପୃଷ୍ଠା ଓସାର
page_scale_fit=ପୃଷ୍ଠା ମେଳନ
page_scale_auto=ସ୍ୱୟଂଚାଳିତ ଭାବରେ ଛୋଟବଡ଼ କରିବା
page_scale_actual=ପ୍ରକୃତ ଆକାର
+# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
+# numerical scale value.
# Loading indicator messages
loading_error_indicator=ତ୍ରୁଟି
@@ -156,9 +166,8 @@ text_annotation_type.alt=[{{type}} Annotation]
password_label=ଏହି PDF ଫାଇଲକୁ ଖୋଲିବା ପାଇଁ ପ୍ରବେଶ ସଂକେତ ଭରଣ କରନ୍ତୁ।
password_invalid=ଭୁଲ ପ୍ରବେଶ ସଂକେତ। ଦୟାକରି ପୁଣି ଚେଷ୍ଟା କରନ୍ତୁ।
password_ok=ଠିକ ଅଛି
-password_cancel=ବାତିଲ କରନ୍ତୁ
printing_not_supported=ଚେତାବନୀ: ଏହି ବ୍ରାଉଜର ଦ୍ୱାରା ମୁଦ୍ରଣ କ୍ରିୟା ସମ୍ପୂର୍ଣ୍ଣ ଭାବରେ ସହାୟତା ପ୍ରାପ୍ତ ନୁହଁ।
printing_not_ready=ଚେତାବନୀ: PDF ଟି ମୁଦ୍ରଣ ପାଇଁ ସମ୍ପୂର୍ଣ୍ଣ ଭାବରେ ଧାରଣ ହୋଇ ନାହିଁ।
web_fonts_disabled=ୱେବ ଅକ୍ଷରରୂପଗୁଡ଼ିକୁ ନିଷ୍କ୍ରିୟ କରାଯାଇଛି: ସନ୍ନିହିତ PDF ଅକ୍ଷରରୂପଗୁଡ଼ିକୁ ବ୍ୟବହାର କରିବାରେ ଅସମର୍ଥ।
-document_colors_disabled=PDF ଦଲିଲଗୁଡ଼ିକ ସେମାନଙ୍କର ନିଜର ରଙ୍ଗ ବ୍ୟବହାର କରିବା ପାଇଁ ଅନୁମତି ପ୍ରାପ୍ତ ନୁହଁ: 'ସେମାନଙ୍କର ନିଜ ରଙ୍ଗ ବାଛିବା ପାଇଁ ପୃଷ୍ଠାଗୁଡ଼ିକୁ ଅନୁମତି ଦିଅନ୍ତୁ' କୁ ବ୍ରାଉଜରରେ ନିଷ୍କ୍ରିୟ କରାଯାଇଛି।
+document_colors_not_allowed=PDF ଦଲିଲଗୁଡ଼ିକ ସେମାନଙ୍କର ନିଜର ରଙ୍ଗ ବ୍ୟବହାର କରିବା ପାଇଁ ଅନୁମତି ପ୍ରାପ୍ତ ନୁହଁ: 'ସେମାନଙ୍କର ନିଜ ରଙ୍ଗ ବାଛିବା ପାଇଁ ପୃଷ୍ଠାଗୁଡ଼ିକୁ ଅନୁମତି ଦିଅନ୍ତୁ' କୁ ବ୍ରାଉଜରରେ ନିଷ୍କ୍ରିୟ କରାଯାଇଛି।
diff --git a/locale/pa-IN/viewer.properties b/locale/pa-IN/viewer.properties
index fb26fc3..d9be404 100644
--- a/locale/pa-IN/viewer.properties
+++ b/locale/pa-IN/viewer.properties
@@ -18,25 +18,24 @@ previous_label=ਪਿੱਛੇ
next.title=ਸਫ਼ਾ ਅੱਗੇ
next_label=ਅੱਗੇ
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=ਸਫ਼ਾ:
-page_of={{pageCount}} ਵਿੱਚੋਂ
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
zoom_out.title=ਜ਼ੂਮ ਆਉਟ
zoom_out_label=ਜ਼ੂਮ ਆਉਟ
zoom_in.title=ਜ਼ੂਮ ਇਨ
zoom_in_label=ਜ਼ੂਮ ਇਨ
zoom.title=ਜ਼ੂਨ
-print.title=ਪਰਿੰਟ
-print_label=ਪਰਿੰਟ
presentation_mode.title=ਪਰਿਜੈਂਟੇਸ਼ਨ ਮੋਡ ਵਿੱਚ ਜਾਓ
presentation_mode_label=ਪਰਿਜੈਂਟੇਸ਼ਨ ਮੋਡ
-
-open_file.title=ਫਾਈਲ ਖੋਲ੍ਹੋ
+open_file.title=ਫਾਈਲ ਨੂੰ ਖੋਲ੍ਹੋ
open_file_label=ਖੋਲ੍ਹੋ
+print.title=ਪਰਿੰਟ
+print_label=ਪਰਿੰਟ
download.title=ਡਾਊਨਲੋਡ
download_label=ਡਾਊਨਲੋਡ
bookmark.title=ਮੌਜੂਦਾ ਝਲਕ (ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਕਾਪੀ ਕਰੋ ਜਾਂ ਖੋਲ੍ਹੋ)
@@ -48,57 +47,62 @@ tools_label=ਟੂਲ
first_page.title=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ
first_page.label=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ
first_page_label=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ
-
last_page.title=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ
+last_page.label=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ
last_page_label=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ
page_rotate_cw.title=ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਓ
-page_rotate_cw.label=ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਓ
+page_rotate_cw.label=ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਉ
page_rotate_cw_label=ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਓ
page_rotate_ccw.title=ਖੱਬੇ ਦਾਅ ਘੁੰਮਾਓ
+page_rotate_ccw.label=ਖੱਬੇ ਦਾਅ ਘੁੰਮਾਉ
page_rotate_ccw_label=ਖੱਬੇ ਦਾਅ ਘੁੰਮਾਓ
-hand_tool_enable.title=ਹੱਥ ਟੂਲ ਚਾਲੂ
-hand_tool_enable_label=ਹੱਥ ਟੂਲ ਚਾਲੂ
-hand_tool_disable.title=ਹੱਥ ਟੂਲ ਬੰਦ
-hand_tool_disable_label=ਹੱਥ ਟੂਲ ਬੰਦ
+hand_tool_enable.title=ਹੱਥ ਟੂਲ ਨੂੰ ਚਾਲੂ ਕਰੋ
+hand_tool_enable_label=ਹੱਥ ਟੂਲ ਨੂੰ ਚਾਲੂ ਕਰੋ
+hand_tool_disable.title=ਹੱਥ ਟੂਲ ਨੂੰ ਬੰਦ ਕਰੋ
+hand_tool_disable_label=ਹੱਥ ਟੂਲ ਨੂੰ ਬੰਦ ਕਰੋ
# Document properties dialog box
-document_properties.title=…ਦਸਤਾਵੇਜ਼ ਵਿਸ਼ੇਸ਼ਤਾ
-document_properties_label=…ਦਸਤਾਵੇਜ਼ ਵਿਸ਼ੇਸ਼ਤਾ
-document_properties_file_name=ਫਾਈਲ ਨਾਂ:
-document_properties_file_size=ਫਾਈਲ ਆਕਾਰ:
+document_properties.title=…ਦਸਤਾਵੇਜ਼ ਦੀ ਵਿਸ਼ੇਸ਼ਤਾ
+document_properties_label=…ਦਸਤਾਵੇਜ਼ ਦੀ ਵਿਸ਼ੇਸ਼ਤਾ
+document_properties_file_name=ਫਾਈਲ ਦਾ ਨਾਂ:
+document_properties_file_size=ਫਾਈਲ ਦਾ ਆਕਾਰ:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} ਬਾਈਟ)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} ਬਾਈਟ)
document_properties_title=ਟਾਈਟਲ:
document_properties_author=ਲੇਖਕ:
document_properties_subject=ਵਿਸ਼ਾ:
document_properties_keywords=ਸ਼ਬਦ:
-document_properties_creation_date=ਬਣਾਉਣ ਮਿਤੀ:
-document_properties_modification_date=ਸੋਧ ਮਿਤੀ:
+document_properties_creation_date=ਬਣਾਉਣ ਦੀ ਮਿਤੀ:
+document_properties_modification_date=ਸੋਧ ਦੀ ਮਿਤੀ:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=ਨਿਰਮਾਤਾ:
document_properties_producer=PDF ਪ੍ਰੋਡਿਊਸਰ:
document_properties_version=PDF ਵਰਜਨ:
-document_properties_page_count=ਸਫ਼ਾ ਗਿਣਤੀ:
+document_properties_page_count=ਸਫ਼ੇ ਦੀ ਗਿਣਤੀ:
document_properties_close=ਬੰਦ ਕਰੋ
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=ਬਾਹੀ ਬਦਲੋ
toggle_sidebar_label=ਬਾਹੀ ਬਦਲੋ
-
-outline.title=ਦਸਤਾਵੇਜ਼ ਆਉਟਲਾਈਨ ਵੇਖਾਓ
-outline_label=ਦਸਤਾਵੇਜ਼ ਆਉਟਲਾਈਨ
-attachments.title=ਅਟੈਚਮੈਂਟ ਵੇਖਾਓ
+attachments.title=ਅਟੈਚਮੈਂਟ ਨੂੰ ਵੇਖਾਓ
attachments_label=ਅਟੈਚਮੈਂਟ
-thumbs.title=ਥੰਮਨੇਲ ਵੇਖਾਓ
+thumbs.title=ਥੰਮਨੇਲ ਨੂੰ ਵੇਖਾਓ
thumbs_label=ਥੰਮਨੇਲ
findbar.title=ਦਸਤਾਵੇਜ਼ ਵਿੱਚ ਲੱਭੋ
findbar_label=ਲੱਭੋ
-
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
@@ -107,13 +111,6 @@ thumb_page_title=ਸਫ਼ਾ {{page}}
# number.
thumb_page_canvas={{page}} ਸਫ਼ੇ ਦਾ ਥੰਮਨੇਲ
-
-# Context menu
-first_page.label=ਪਹਿਲੇ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ
-last_page.label=ਆਖਰੀ ਸਫ਼ੇ ਉੱਤੇ ਜਾਓ
-page_rotate_cw.label=ਸੱਜੇ ਦਾਅ ਘੁੰਮਾਉ
-page_rotate_ccw.label=ਖੱਬੇ ਦਾਅ ਘੁੰਮਾਉ
-
# Find panel button title and messages
find_label=ਲੱਭੋ:
find_previous.title=ਵਾਕ ਦੀ ਪਿਛਲੀ ਮੌਜੂਦਗੀ ਲੱਭੋ
@@ -121,21 +118,18 @@ find_previous_label=ਪਿੱਛੇ
find_next.title=ਵਾਕ ਦੀ ਅਗਲੀ ਮੌਜੂਦਗੀ ਲੱਭੋ
find_next_label=ਅੱਗੇ
find_highlight=ਸਭ ਉਭਾਰੋ
-find_match_case_label=ਅੱਖਰ ਆਕਾਰ ਮਿਲਾਉ
+find_match_case_label=ਅੱਖਰ ਆਕਾਰ ਨੂੰ ਮਿਲਾਉ
find_reached_top=ਦਸਤਾਵੇਜ਼ ਦੇ ਉੱਤੇ ਆ ਗਏ ਹਾਂ, ਥੱਲੇ ਤੋਂ ਜਾਰੀ ਰੱਖਿਆ ਹੈ
find_reached_bottom=ਦਸਤਾਵੇਜ਼ ਦੇ ਅੰਤ ਉੱਤੇ ਆ ਗਏ ਹਾਂ, ਉੱਤੇ ਤੋਂ ਜਾਰੀ ਰੱਖਿਆ ਹੈ
find_not_found=ਵਾਕ ਨਹੀਂ ਲੱਭਿਆ
-
# Error panel labels
error_more_info=ਹੋਰ ਜਾਣਕਾਰੀ
error_less_info=ਘੱਟ ਜਾਣਕਾਰੀ
error_close=ਬੰਦ ਕਰੋ
-
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
error_version_info=PDF.js v{{version}} (ਬਿਲਡ: {{build}}
-
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=ਸੁਨੇਹਾ: {{message}}
@@ -149,16 +143,15 @@ error_line=ਲਾਈਨ: {{line}}
rendering_error=ਸਫ਼ਾ ਰੈਡਰ ਕਰਨ ਦੇ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ।
# Predefined zoom values
-page_scale_width=ਸਫ਼ਾ ਚੌੜਾਈ
+page_scale_width=ਸਫ਼ੇ ਦੀ ਚੌੜਾਈ
page_scale_fit=ਸਫ਼ਾ ਫਿੱਟ
-page_scale_auto=ਆਟੋਮੈਟਿਕ ਜ਼ੂਮ
+page_scale_auto=ਆਟੋਮੈਟਿਕ ਜ਼ੂਮ ਕਰੋ
page_scale_actual=ਆਟੋਮੈਟਿਕ ਆਕਾਰ
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
page_scale_percent={{scale}}%
# Loading indicator messages
-# LOCALIZATION NOTE (error_line): "{{[percent}}" will be replaced with a percentage
loading_error_indicator=ਗਲਤੀ
loading_error=PDF ਲੋਡ ਕਰਨ ਦੇ ਦੌਰਾਨ ਗਲਤੀ ਆਈ ਹੈ।
invalid_file_error=ਗਲਤ ਜਾਂ ਨਿਕਾਰਾ PDF ਫਾਈਲ ਹੈ।
@@ -170,12 +163,12 @@ unexpected_response_error=ਅਣਜਾਣ ਸਰਵਰ ਜਵਾਬ।
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[{{type}} ਵਿਆਖਿਆ]
-password_label=ਇਹ PDF ਫਾਈਲ ਖੋਲ੍ਹਣ ਲਈ ਪਾਸਵਰਡ ਦਿਉ।
+password_label=ਇਹ PDF ਫਾਈਲ ਨੂੰ ਖੋਲ੍ਹਣ ਲਈ ਪਾਸਵਰਡ ਦਿਉ।
password_invalid=ਗਲਤ ਪਾਸਵਰਡ। ਫੇਰ ਕੋਸ਼ਿਸ਼ ਕਰੋ ਜੀ।
password_ok=ਠੀਕ ਹੈ
password_cancel=ਰੱਦ ਕਰੋ
printing_not_supported=ਸਾਵਧਾਨ: ਇਹ ਬਰਾਊਜ਼ਰ ਪਰਿੰਟ ਕਰਨ ਲਈ ਪੂਰੀ ਤਰ੍ਹਾਂ ਸਹਾਇਕ ਨਹੀਂ ਹੈ।
-printing_not_ready=ਸਾਵਧਾਨ: PDF ਪਰਿੰਟ ਕਰਨ ਲਈ ਪੂਰੀ ਤਰ੍ਹਾਂ ਲੋਡ ਨਹੀਂ ਹੈ।
-web_fonts_disabled=ਵੈਬ ਫੋਂਟ ਬੰਦ ਹਨ: ਇੰਬੈਡ PDF ਫੋਂਟ ਵਰਤਨ ਲਈ ਅਸਮਰੱਥ ਹੈ।
-document_colors_disabled=PDF ਡੌਕੂਮੈਂਟ ਨੂੰ ਆਪਣੇ ਰੰਗ ਵਰਤਣ ਦੀ ਇਜ਼ਾਜ਼ਤ ਨਹੀਂ ਹੈ।: ਬਰਾਊਜ਼ਰ ਵਿੱਚ \u0022ਸਫ਼ਿਆਂ ਨੂੰ ਆਪਣੇ ਰੰਗ ਵਰਤਣ ਦਿਉ\u0022 ਨੂੰ ਬੰਦ ਕੀਤਾ ਹੋਇਆ ਹੈ।
\ No newline at end of file
+printing_not_ready=ਸਾਵਧਾਨ: PDF ਨੂੰ ਪਰਿੰਟ ਕਰਨ ਲਈ ਪੂਰੀ ਤਰ੍ਹਾਂ ਲੋਡ ਨਹੀਂ ਹੈ।
+web_fonts_disabled=ਵੈਬ ਫੋਂਟ ਬੰਦ ਹਨ: ਇੰਬੈਡ PDF ਫੋਂਟ ਨੂੰ ਵਰਤਣ ਲਈ ਅਸਮਰੱਥ ਹੈ।
+document_colors_not_allowed=PDF ਦਸਤਾਵੇਜ਼ਾਂ ਨੂੰ ਆਪਣੇ ਰੰਗ ਵਰਤਣ ਦੀ ਇਜ਼ਾਜ਼ਤ ਨਹੀਂ ਹੈ।: ਬਰਾਊਜ਼ਰ ਵਿੱਚ “ਸਫ਼ਿਆਂ ਨੂੰ ਆਪਣੇ ਰੰਗ ਚੁਣਨ ਦੀ ਇਜ਼ਾਜ਼ਤ ਦਿਓ” ਨਾ-ਸਰਗਰਮ ਹੈ।
diff --git a/locale/pl/viewer.properties b/locale/pl/viewer.properties
index 143c52a..8be7774 100644
--- a/locale/pl/viewer.properties
+++ b/locale/pl/viewer.properties
@@ -2,18 +2,14 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/.
-# Main toolbar buttons (tooltips and alt text for images)
previous.title=Poprzednia strona
previous_label=Poprzednia
next.title=Następna strona
next_label=Następna
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Strona:
-page_of=z {{pageCount}}
+page.title==Strona:
+of_pages=z {{pagesCount}}
+page_of_pages=({{pageNumber}} z {{pagesCount}})
zoom_out.title=Pomniejszenie
zoom_out_label=Pomniejsz
@@ -31,8 +27,8 @@ download_label=Pobierz
bookmark.title=Bieżąca pozycja (skopiuj lub otwórz jako odnośnik w nowym oknie)
bookmark_label=Bieżąca pozycja
-tools.title=Tools
-tools_label=Tools
+tools.title=Narzędzia
+tools_label=Narzędzia
first_page.title=Przechodzenie do pierwszej strony
first_page.label=Przejdź do pierwszej strony
first_page_label=Przejdź do pierwszej strony
@@ -70,13 +66,14 @@ document_properties_version=Wersja PDF:
document_properties_page_count=Liczba stron:
document_properties_close=Zamknij
-# Tooltips and alt text for side panel toolbar buttons
-# (the _label strings are alt text for the buttons, the .title strings are
-# tooltips)
+print_progress_message=Przygotowywanie dokumentu do druku…
+print_progress_percent={{progress}}%
+print_progress_close=Anuluj
+
toggle_sidebar.title=Przełączanie panelu bocznego
toggle_sidebar_label=Przełącz panel boczny
-outline.title=Wyświetlanie zarysu dokumentu
-outline_label=Zarys dokumentu
+document_outline.title=Wyświetlanie zarysu dokumentu (podwójne kliknięcie rozwija lub zwija wszystkie pozycje)
+document_outline_label=Zarys dokumentu
attachments.title=Wyświetlanie załączników
attachments_label=Załączniki
thumbs.title=Wyświetlanie miniaturek
@@ -84,15 +81,9 @@ thumbs_label=Miniaturki
findbar.title=Znajdź w dokumencie
findbar_label=Znajdź
-# Thumbnails panel item (tooltip and alt text for images)
-# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
-# number.
thumb_page_title=Strona {{page}}
-# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
-# number.
thumb_page_canvas=Miniaturka strony {{page}}
-# Find panel button title and messages
find_label=Znajdź:
find_previous.title=Znajdź poprzednie wystąpienie tekstu
find_previous_label=Poprzednie
@@ -104,26 +95,16 @@ find_reached_top=Osiągnięto początek dokumentu, kontynuacja od końca
find_reached_bottom=Osiągnięto koniec dokumentu, kontynuacja od początku
find_not_found=Tekst nieznaleziony
-# Error panel labels
error_more_info=Więcej informacji
error_less_info=Mniej informacji
error_close=Zamknij
-# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
-# replaced by the PDF.JS version and build ID.
error_version_info=PDF.js v{{version}} (kompilacja: {{build}})
-# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
-# english string describing the error.
error_message=Wiadomość: {{message}}
-# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
-# trace.
error_stack=Stos: {{stack}}
-# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=Plik: {{file}}
-# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Wiersz: {{line}}
rendering_error=Podczas renderowania strony wystąpił błąd.
-# Predefined zoom values
page_scale_width=Szerokość strony
page_scale_fit=Dopasowanie strony
page_scale_auto=Skala automatyczna
@@ -136,17 +117,13 @@ invalid_file_error=Nieprawidłowy lub uszkodzony plik PDF.
missing_file_error=Brak pliku PDF.
unexpected_response_error=Nieoczekiwana odpowiedź serwera.
-# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
-# "{{type}}" will be replaced with an annotation type from a list defined in
-# the PDF spec (32000-1:2008 Table 169 – Annotation types).
-# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[Adnotacja: {{type}}]
password_label=Wprowadź hasło, aby otworzyć ten dokument PDF.
password_invalid=Nieprawidłowe hasło. Proszę spróbować ponownie.
password_ok=OK
password_cancel=Anuluj
-printing_not_supported=Ostrzeżenie: Drukowanie nie jest w pełni wspierane przez przeglądarkę.
+printing_not_supported=Ostrzeżenie: Drukowanie nie jest w pełni obsługiwane przez przeglądarkę.
printing_not_ready=Ostrzeżenie: Dokument PDF nie jest całkowicie wczytany, więc nie można go wydrukować.
web_fonts_disabled=Czcionki sieciowe są wyłączone: nie można użyć osadzonych czcionek PDF.
-document_colors_disabled=Dokumenty PDF nie mogą używać własnych kolorów: Opcja „Pozwalaj stronom stosować inne kolory” w przeglądarce jest nieaktywna.
+document_colors_not_allowed=Dokumenty PDF nie mogą używać własnych kolorów: Opcja „Pozwalaj stronom stosować inne kolory” w przeglądarce jest nieaktywna.
diff --git a/locale/pt-BR/viewer.properties b/locale/pt-BR/viewer.properties
index 0de5b03..9bd9fc7 100644
--- a/locale/pt-BR/viewer.properties
+++ b/locale/pt-BR/viewer.properties
@@ -18,19 +18,22 @@ previous_label=Anterior
next.title=Próxima página
next_label=Próxima
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Página:
-page_of=de {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Página
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=de {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} de {{pagesCount}})
-zoom_out.title=Diminuir zoom
-zoom_out_label=Diminuir zoom
-zoom_in.title=Aumentar zoom
-zoom_in_label=Aumentar zoom
+zoom_out.title=Reduzir
+zoom_out_label=Reduzir
+zoom_in.title=Ampliar
+zoom_in_label=Ampliar
zoom.title=Zoom
-presentation_mode.title=Alternar para modo de apresentação
+presentation_mode.title=Alternar para o modo de apresentação
presentation_mode_label=Modo de apresentação
open_file.title=Abrir arquivo
open_file_label=Abrir
@@ -38,7 +41,7 @@ print.title=Imprimir
print_label=Imprimir
download.title=Download
download_label=Download
-bookmark.title=Visualização atual (copie ou abra em nova janela)
+bookmark.title=Visualização atual (copiar ou abrir em uma nova janela)
bookmark_label=Visualização atual
# Secondary toolbar and context menu
@@ -57,17 +60,21 @@ page_rotate_ccw.title=Girar no sentido anti-horário
page_rotate_ccw.label=Girar no sentido anti-horário
page_rotate_ccw_label=Girar no sentido anti-horário
-hand_tool_enable.title=Ativar ferramenta da mão
-hand_tool_enable_label=Ativar ferramenta da mão
-hand_tool_disable.title=Desativar ferramenta da mão
-hand_tool_disable_label=Desativar ferramenta da mão
+hand_tool_enable.title=Habilitar ferramenta de mão
+hand_tool_enable_label=Habilitar ferramenta de mão
+hand_tool_disable.title=Desabilitar ferramenta de mão
+hand_tool_disable_label=Desabilitar ferramenta de mão
# Document properties dialog box
document_properties.title=Propriedades do documento…
document_properties_label=Propriedades do documento…
document_properties_file_name=Nome do arquivo:
document_properties_file_size=Tamanho do arquivo:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=Título:
document_properties_author=Autor:
@@ -75,23 +82,31 @@ document_properties_subject=Assunto:
document_properties_keywords=Palavras-chave:
document_properties_creation_date=Data da criação:
document_properties_modification_date=Data da modificação:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Criação:
document_properties_producer=Criador do PDF:
document_properties_version=Versão do PDF:
-document_properties_page_count=Contagem de páginas:
+document_properties_page_count=Número de páginas:
document_properties_close=Fechar
+print_progress_message=Preparando documento para impressão…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}} %
+print_progress_close=Cancelar
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
-toggle_sidebar.title=Exibir/ocultar painel
-toggle_sidebar_label=Exibir/ocultar painel
-outline.title=Exibir estrutura de tópicos
-outline_label=Estrutura de tópicos do documento
-attachments.title=Exibir anexos
+toggle_sidebar.title=Alternar painel
+toggle_sidebar_label=Alternar painel
+document_outline.title=Mostrar a estrutura do documento (duplo-clique para expandir/recolher todos os ítens)
+document_outline_label=Estrutura do documento
+attachments.title=Mostrar anexos
attachments_label=Anexos
-thumbs.title=Exibir miniaturas das páginas
+thumbs.title=Mostrar miniaturas
thumbs_label=Miniaturas
findbar.title=Localizar no documento
findbar_label=Localizar
@@ -106,15 +121,15 @@ thumb_page_canvas=Miniatura da página {{page}}
# Find panel button title and messages
find_label=Localizar:
-find_previous.title=Localizar a ocorrência anterior do texto
+find_previous.title=Localizar a ocorrência anterior da frase
find_previous_label=Anterior
-find_next.title=Localizar a próxima ocorrência do texto
+find_next.title=Localizar a próxima ocorrência da frase
find_next_label=Próxima
find_highlight=Realçar tudo
find_match_case_label=Diferenciar maiúsculas/minúsculas
-find_reached_top=Atingido o início do documento, continuando do fim
-find_reached_bottom=Atingido o fim do documento, continuando do início
-find_not_found=Texto não encontrado
+find_reached_top=Início do documento alcançado, continuando do fim
+find_reached_bottom=Fim do documento alcançado, continuando do início
+find_not_found=Frase não encontrada
# Error panel labels
error_more_info=Mais informações
@@ -122,13 +137,13 @@ error_less_info=Menos informações
error_close=Fechar
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
-error_version_info=PDF.js v{{version}} (build: {{build}})
+error_version_info=PDF.js v{{version}} (compilação: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
error_message=Mensagem: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
-error_stack=Stack: {{stack}}
+error_stack=Pilha: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
error_file=Arquivo: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
@@ -157,11 +172,11 @@ unexpected_response_error=Resposta inesperada do servidor.
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[Anotação {{type}}]
password_label=Forneça a senha para abrir este arquivo PDF.
-password_invalid=Senha inválida. Por favor, tente de novo.
+password_invalid=Senha inválida. Por favor, tentar de novo.
password_ok=OK
password_cancel=Cancelar
-printing_not_supported=Alerta: a impressão não é totalmente suportada neste navegador.
-printing_not_ready=Alerta: o PDF não está totalmente carregado para impressão.
-web_fonts_disabled=Fontes da web estão desativadas: não é possível usar fontes incorporadas do PDF.
-document_colors_disabled=Documentos PDF não estão permitidos a usar suas próprias cores: “Páginas podem usar outras cores” está desativado no navegador.
+printing_not_supported=Aviso: a impressão não é totalmente suportada neste navegador.
+printing_not_ready=Aviso: o PDF não está totalmente carregado para impressão.
+web_fonts_disabled=As fontes web estão desabilitadas: não foi possível usar fontes incorporadas do PDF.
+document_colors_not_allowed=Os documentos em PDF não estão autorizados a usar suas próprias cores: “Permitir que as páginas escolham suas próprias cores” está desabilitado no navegador.
diff --git a/locale/pt-PT/viewer.properties b/locale/pt-PT/viewer.properties
index eb0f2d3..5f38409 100644
--- a/locale/pt-PT/viewer.properties
+++ b/locale/pt-PT/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Anterior
next.title=Página seguinte
next_label=Seguinte
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Página:
-page_of=de {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Página
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=de {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} de {{pagesCount}})
zoom_out.title=Reduzir
zoom_out_label=Reduzir
@@ -36,10 +39,10 @@ open_file.title=Abrir ficheiro
open_file_label=Abrir
print.title=Imprimir
print_label=Imprimir
-download.title=Transferir
-download_label=Transferir
-bookmark.title=Vista atual (copiar ou abrir em nova janela)
-bookmark_label=Vista atual
+download.title=Descarregar
+download_label=Descarregar
+bookmark.title=Visão atual (copiar ou abrir em nova janela)
+bookmark_label=Visão atual
# Secondary toolbar and context menu
tools.title=Ferramentas
@@ -63,11 +66,15 @@ hand_tool_disable.title=Desativar ferramenta de mão
hand_tool_disable_label=Desativar ferramenta de mão
# Document properties dialog box
-document_properties.title=Propriedades do documento...
-document_properties_label=Propriedades do documento...
+document_properties.title=Propriedades do documento…
+document_properties_label=Propriedades do documento…
document_properties_file_name=Nome do ficheiro:
document_properties_file_size=Tamanho do ficheiro:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=Título:
document_properties_author=Autor:
@@ -75,20 +82,28 @@ document_properties_subject=Assunto:
document_properties_keywords=Palavras-chave:
document_properties_creation_date=Data de criação:
document_properties_modification_date=Data de modificação:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Criador:
document_properties_producer=Produtor de PDF:
-document_properties_version=versão do PDF:
+document_properties_version=Versão do PDF:
document_properties_page_count=N.º de páginas:
document_properties_close=Fechar
+print_progress_message=A preparar o documento para impressão…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Cancelar
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Comutar barra lateral
toggle_sidebar_label=Comutar barra lateral
-outline.title=Mostrar estrutura do documento
-outline_label=Estrutura do documento
+document_outline.title=Mostrar limite do documento (duplo clique para expandir/colapsar todos os itens)
+document_outline_label=Estrutura do documento
attachments.title=Mostrar anexos
attachments_label=Anexos
thumbs.title=Mostrar miniaturas
@@ -156,12 +171,12 @@ unexpected_response_error=Resposta inesperada do servidor.
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[Anotação {{type}}]
-password_label=Introduza a palavra-passe para abrir este PDF.
-password_invalid=Palavra-passe inválida. Tente novamente.
+password_label=Digite a palavra-passe para abrir este ficheiro PDF.
+password_invalid=Palavra-passe inválida. Por favor, tente novamente.
password_ok=OK
password_cancel=Cancelar
printing_not_supported=Aviso: a impressão não é totalmente suportada por este navegador.
printing_not_ready=Aviso: o PDF ainda não está totalmente carregado.
web_fonts_disabled=Os tipos de letra web estão desativados: não é possível utilizar os tipos de letra PDF incorporados.
-document_colors_disabled=Os documentos PDF não permitem a utilização das suas próprias cores: Autorizar as páginas a escolher as suas próprias cores está desativado no navegador.
+document_colors_not_allowed=Os documentos PDF não permitem a utilização das suas próprias cores: “Autorizar as páginas a escolher as suas próprias cores” está desativado no navegador.
diff --git a/locale/rm/viewer.properties b/locale/rm/viewer.properties
index 69a20d9..2a93dd6 100644
--- a/locale/rm/viewer.properties
+++ b/locale/rm/viewer.properties
@@ -1,6 +1,16 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Pagina precedenta
@@ -8,12 +18,12 @@ previous_label=Enavos
next.title=Proxima pagina
next_label=Enavant
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Pagina:
-page_of=da {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
zoom_out.title=Empitschnir
zoom_out_label=Empitschnir
@@ -57,7 +67,11 @@ document_properties.title=Caracteristicas dal document…
document_properties_label=Caracteristicas dal document…
document_properties_file_name=Num da la datoteca:
document_properties_file_size=Grondezza da la datoteca:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=Titel:
document_properties_author=Autur:
@@ -65,6 +79,8 @@ document_properties_subject=Tema:
document_properties_keywords=Chavazzins:
document_properties_creation_date=Data da creaziun:
document_properties_modification_date=Data da modificaziun:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}} {{time}}
document_properties_creator=Creà da:
document_properties_producer=Creà il PDF cun:
@@ -72,13 +88,14 @@ document_properties_version=Versiun da PDF:
document_properties_page_count=Dumber da paginas:
document_properties_close=Serrar
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Activar/deactivar la trav laterala
toggle_sidebar_label=Activar/deactivar la trav laterala
-outline.title=Mussar la structura da la pagina
-outline_label=Structura da la pagina
attachments.title=Mussar agiuntas
attachments_label=Agiuntas
thumbs.title=Mussar las miniaturas
@@ -154,4 +171,4 @@ password_cancel=Interrumper
printing_not_supported=Attenziun: Il stampar na funcziunescha anc betg dal tut en quest navigatur.
printing_not_ready=Attenziun: Il PDF n'è betg chargià cumplettamain per stampar.
web_fonts_disabled=Scrittiras dal web èn deactivadas: impussibel dad utilisar las scrittiras integradas en il PDF.
-document_colors_disabled=Documents da PDF na pon betg utilisar lur atgnas colurs: \'Permetter a las paginas d'utilisar lur atgnas colurs empè da las colurs tschernidas survart\' è deactivà en il navigatur.
+document_colors_not_allowed=Documents da PDF na dastgan betg duvrar las atgnas colurs: 'Permetter a paginas da tscherner lur atgna colur' è deactivà en il navigatur.
diff --git a/locale/ro/viewer.properties b/locale/ro/viewer.properties
index ecd37eb..77cc49d 100644
--- a/locale/ro/viewer.properties
+++ b/locale/ro/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Înapoi
next.title=Pagina următoare
next_label=Înainte
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Pagină:
-page_of=din {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Pagina
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=din {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} din {{pagesCount}})
zoom_out.title=Micșorează
zoom_out_label=Micșorează
@@ -38,8 +41,8 @@ print.title=Tipărește
print_label=Tipărește
download.title=Descarcă
download_label=Descarcă
-bookmark.title=Vizualizare curentă (copiați sau deschideți într-o fereastră nouă)
-bookmark_label=Vizualizare curentă
+bookmark.title=Vizualizare actuală (copiați sau deschideți într-o fereastră nouă)
+bookmark_label=Vizualizare actuală
# Secondary toolbar and context menu
tools.title=Unelte
@@ -67,14 +70,20 @@ document_properties.title=Proprietățile documentului…
document_properties_label=Proprietățile documentului…
document_properties_file_name=Nume fișier:
document_properties_file_size=Dimensiune fișier:
-document_properties_kb={{size_kb}} KB ({{size_b}} biți)
-document_properties_mb={{size_mb}} MB ({{size_b}} biți)
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
+document_properties_kb={{size_kb}} KB ({{size_b}} byți)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
+document_properties_mb={{size_mb}} MB ({{size_b}} byți)
document_properties_title=Titlu:
document_properties_author=Autor:
document_properties_subject=Subiect:
document_properties_keywords=Cuvinte cheie:
document_properties_creation_date=Data creării:
document_properties_modification_date=Data modificării:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Autor:
document_properties_producer=Producător PDF:
@@ -82,19 +91,25 @@ document_properties_version=Versiune PDF:
document_properties_page_count=Număr de pagini:
document_properties_close=Închide
+print_progress_message=Se pregătește documentul pentru imprimare…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Renunță
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Comută bara laterală
toggle_sidebar_label=Comută bara laterală
-outline.title=Arată schița documentului
-outline_label=Schiță document
+document_outline.title=Arată schița documentului (dublu-clic pentru a expanda/colapsa toate elementele
+document_outline_label=Schiță document
attachments.title=Afișează atașamentele
attachments_label=Atașamente
thumbs.title=Arată miniaturi
thumbs_label=Miniaturi
-findbar.title=Caută în document
-findbar_label=Căutați
+findbar.title=Găsește în document
+findbar_label=Găsește
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
@@ -105,20 +120,20 @@ thumb_page_title=Pagina {{page}}
thumb_page_canvas=Miniatura paginii {{page}}
# Find panel button title and messages
-find_label=Caută:
+find_label=Găsește:
find_previous.title=Găsește instanța anterioară în frază
find_previous_label=Anterior
-find_next.title=Găstește următoarea instanță în frază
+find_next.title=Găsește instanța următoare în frază
find_next_label=Următor
find_highlight=Evidențiază aparițiile
-find_match_case_label=Potrivire litere
+find_match_case_label=Potrivește literele mari și mici
find_reached_top=Am ajuns la începutul documentului, continuă de la sfârșit
find_reached_bottom=Am ajuns la sfârșitul documentului, continuă de la început
find_not_found=Nu s-a găsit textul
# Error panel labels
error_more_info=Mai multe informații
-error_less_info=Mai puțină informație
+error_less_info=Mai puține informații
error_close=Închide
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
@@ -156,12 +171,12 @@ unexpected_response_error=Răspuns neașteptat de la server.
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[{{type}} Adnotare]
-password_label=Introduceți parola pentru a deschide acest fişier PDF.
-password_invalid=Parolă greșită. Vă rugăm încercați din nou.
+password_label=Introduceți parola pentru a deschide acest fișier PDF.
+password_invalid=Parolă greșită. Vă rugăm să încercați din nou.
password_ok=Ok
password_cancel=Renunță
-printing_not_supported=Atenție: Tipărirea nu este suportată în totalitate de acest navigator.
-printing_not_ready=Atenție: Fișierul PDF nu este încărcat complet pentru tipărire.
+printing_not_supported=Avertisment: Tipărirea nu este suportată în totalitate de acest browser.
+printing_not_ready=Avertisment: Fișierul PDF nu este încărcat complet pentru tipărire.
web_fonts_disabled=Fonturile web sunt dezactivate: nu pot utiliza fonturile PDF încorporate.
-document_colors_disabled=Documentele PDF nu sunt autorizate să folosească propriile culori: 'Permite paginilor să aleagă propriile culori' este dezactivată în navigator.
+document_colors_not_allowed=Documentele PDF nu sunt autorizate să folosească propriile culori: 'Permite paginilor să aleagă propriile culori' este dezactivată în browser.
diff --git a/locale/ru/viewer.properties b/locale/ru/viewer.properties
index 349f2cb..c0c70b0 100644
--- a/locale/ru/viewer.properties
+++ b/locale/ru/viewer.properties
@@ -1,111 +1,182 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
-previous.title = Предыдущая страница
-previous_label = Предыдущая
-next.title = Следующая страница
-next_label = Следующая
-page_label = Страница:
-page_of = из {{pageCount}}
-zoom_out.title = Уменьшить
-zoom_out_label = Уменьшить
-zoom_in.title = Увеличить
-zoom_in_label = Увеличить
-zoom.title = Масштаб
-presentation_mode.title = Перейти в режим презентации
-presentation_mode_label = Режим презентации
-open_file.title = Открыть файл
-open_file_label = Открыть
-print.title = Печать
-print_label = Печать
-download.title = Загрузить
-download_label = Загрузить
-bookmark.title = Ссылка на текущий вид (скопировать или открыть в новом окне)
-bookmark_label = Текущий вид
-tools.title = Инструменты
-tools_label = Инструменты
-first_page.title = Перейти на первую страницу
-first_page.label = Перейти на первую страницу
-first_page_label = Перейти на первую страницу
-last_page.title = Перейти на последнюю страницу
-last_page.label = Перейти на последнюю страницу
-last_page_label = Перейти на последнюю страницу
-page_rotate_cw.title = Повернуть по часовой стрелке
-page_rotate_cw.label = Повернуть по часовой стрелке
-page_rotate_cw_label = Повернуть по часовой стрелке
-page_rotate_ccw.title = Повернуть против часовой стрелки
-page_rotate_ccw.label = Повернуть против часовой стрелки
-page_rotate_ccw_label = Повернуть против часовой стрелки
-hand_tool_enable.title = Включить Инструмент «Рука»
-hand_tool_enable_label = Включить Инструмент «Рука»
-hand_tool_disable.title = Отключить Инструмент «Рука»
-hand_tool_disable_label = Отключить Инструмент «Рука»
-document_properties.title = Свойства документа…
-document_properties_label = Свойства документа…
-document_properties_file_name = Имя файла:
-document_properties_file_size = Размер файла:
-document_properties_kb = {{size_kb}} КБ ({{size_b}} байт)
-document_properties_mb = {{size_mb}} МБ ({{size_b}} байт)
-document_properties_title = Заголовок:
-document_properties_author = Автор:
-document_properties_subject = Тема:
-document_properties_keywords = Ключевые слова:
-document_properties_creation_date = Дата создания:
-document_properties_modification_date = Дата изменения:
-document_properties_date_string = {{date}}, {{time}}
-document_properties_creator = Приложение:
-document_properties_producer = Производитель PDF:
-document_properties_version = Версия PDF:
-document_properties_page_count = Число страниц:
-document_properties_close = Закрыть
-toggle_sidebar.title = Открыть/закрыть боковую панель
-toggle_sidebar_label = Открыть/закрыть боковую панель
-outline.title = Показать содержание документа
-outline_label = Содержание документа
-attachments.title = Показать вложения
-attachments_label = Вложения
-thumbs.title = Показать миниатюры
-thumbs_label = Миниатюры
-findbar.title = Найти в документе
-findbar_label = Найти
-thumb_page_title = Страница {{page}}
-thumb_page_canvas = Миниатюра страницы {{page}}
-find_label = Найти:
-find_previous.title = Найти предыдущее вхождение фразы в текст
-find_previous_label = Назад
-find_next.title = Найти следующее вхождение фразы в текст
-find_next_label = Далее
-find_highlight = Подсветить все
-find_match_case_label = С учётом регистра
-find_reached_top = Достигнут верх документа, продолжено снизу
-find_reached_bottom = Достигнут конец документа, продолжено сверху
-find_not_found = Фраза не найдена
-error_more_info = Детали
-error_less_info = Скрыть детали
-error_close = Закрыть
-error_version_info = PDF.js v{{version}} (сборка: {{build}})
-error_message = Сообщение: {{message}}
-error_stack = Стeк: {{stack}}
-error_file = Файл: {{file}}
-error_line = Строка: {{line}}
-rendering_error = При создании страницы произошла ошибка.
-page_scale_width = По ширине страницы
-page_scale_fit = По размеру страницы
-page_scale_auto = Автоматически
-page_scale_actual = Реальный размер
-page_scale_percent = {{scale}}%
-loading_error_indicator = Ошибка
-loading_error = При загрузке PDF произошла ошибка.
-invalid_file_error = Некорректный или повреждённый PDF-файл.
-missing_file_error = PDF-файл отсутствует.
-unexpected_response_error = Неожиданный ответ сервера.
-text_annotation_type.alt = [Аннотация {{type}}]
-password_label = Введите пароль, чтобы открыть этот PDF-файл.
-password_invalid = Неверный пароль. Пожалуйста, попробуйте снова.
-password_ok = OK
-password_cancel = Отмена
-printing_not_supported = Предупреждение: В этом браузере не полностью поддерживается печать.
-printing_not_ready = Предупреждение: PDF не полностью загружен для печати.
-web_fonts_disabled = Веб-шрифты отключены: невозможно использовать встроенные PDF-шрифты.
-document_colors_disabled = PDF-документам не разрешено использовать свои цвета: в браузере отключён параметр «Разрешить веб-сайтам использовать свои цвета».
+# Main toolbar buttons (tooltips and alt text for images)
+previous.title=Предыдущая страница
+previous_label=Предыдущая
+next.title=Следующая страница
+next_label=Следующая
+
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Страница
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=из {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} из {{pagesCount}})
+
+zoom_out.title=Уменьшить
+zoom_out_label=Уменьшить
+zoom_in.title=Увеличить
+zoom_in_label=Увеличить
+zoom.title=Масштаб
+presentation_mode.title=Перейти в режим презентации
+presentation_mode_label=Режим презентации
+open_file.title=Открыть файл
+open_file_label=Открыть
+print.title=Печать
+print_label=Печать
+download.title=Загрузить
+download_label=Загрузить
+bookmark.title=Ссылка на текущий вид (скопировать или открыть в новом окне)
+bookmark_label=Текущий вид
+
+# Secondary toolbar and context menu
+tools.title=Инструменты
+tools_label=Инструменты
+first_page.title=Перейти на первую страницу
+first_page.label=Перейти на первую страницу
+first_page_label=Перейти на первую страницу
+last_page.title=Перейти на последнюю страницу
+last_page.label=Перейти на последнюю страницу
+last_page_label=Перейти на последнюю страницу
+page_rotate_cw.title=Повернуть по часовой стрелке
+page_rotate_cw.label=Повернуть по часовой стрелке
+page_rotate_cw_label=Повернуть по часовой стрелке
+page_rotate_ccw.title=Повернуть против часовой стрелки
+page_rotate_ccw.label=Повернуть против часовой стрелки
+page_rotate_ccw_label=Повернуть против часовой стрелки
+
+hand_tool_enable.title=Включить Инструмент «Рука»
+hand_tool_enable_label=Включить Инструмент «Рука»
+hand_tool_disable.title=Отключить Инструмент «Рука»
+hand_tool_disable_label=Отключить Инструмент «Рука»
+
+# Document properties dialog box
+document_properties.title=Свойства документа…
+document_properties_label=Свойства документа…
+document_properties_file_name=Имя файла:
+document_properties_file_size=Размер файла:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
+document_properties_kb={{size_kb}} КБ ({{size_b}} байт)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
+document_properties_mb={{size_mb}} МБ ({{size_b}} байт)
+document_properties_title=Заголовок:
+document_properties_author=Автор:
+document_properties_subject=Тема:
+document_properties_keywords=Ключевые слова:
+document_properties_creation_date=Дата создания:
+document_properties_modification_date=Дата изменения:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Приложение:
+document_properties_producer=Производитель PDF:
+document_properties_version=Версия PDF:
+document_properties_page_count=Число страниц:
+document_properties_close=Закрыть
+
+print_progress_message=Подготовка документа к печати…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Отмена
+
+# Tooltips and alt text for side panel toolbar buttons
+# (the _label strings are alt text for the buttons, the .title strings are
+# tooltips)
+toggle_sidebar.title=Открыть/закрыть боковую панель
+toggle_sidebar_label=Открыть/закрыть боковую панель
+document_outline.title=Показать содержание документа (двойной щелчок, чтобы развернуть/свернуть все элементы)
+document_outline_label=Содержание документа
+attachments.title=Показать вложения
+attachments_label=Вложения
+thumbs.title=Показать миниатюры
+thumbs_label=Миниатюры
+findbar.title=Найти в документе
+findbar_label=Найти
+
+# Thumbnails panel item (tooltip and alt text for images)
+# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
+# number.
+thumb_page_title=Страница {{page}}
+# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
+# number.
+thumb_page_canvas=Миниатюра страницы {{page}}
+
+# Find panel button title and messages
+find_label=Найти:
+find_previous.title=Найти предыдущее вхождение фразы в текст
+find_previous_label=Назад
+find_next.title=Найти следующее вхождение фразы в текст
+find_next_label=Далее
+find_highlight=Подсветить все
+find_match_case_label=С учётом регистра
+find_reached_top=Достигнут верх документа, продолжено снизу
+find_reached_bottom=Достигнут конец документа, продолжено сверху
+find_not_found=Фраза не найдена
+
+# Error panel labels
+error_more_info=Детали
+error_less_info=Скрыть детали
+error_close=Закрыть
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
+error_version_info=PDF.js v{{version}} (сборка: {{build}})
+# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
+# english string describing the error.
+error_message=Сообщение: {{message}}
+# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
+# trace.
+error_stack=Стeк: {{stack}}
+# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
+error_file=Файл: {{file}}
+# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
+error_line=Строка: {{line}}
+rendering_error=При создании страницы произошла ошибка.
+
+# Predefined zoom values
+page_scale_width=По ширине страницы
+page_scale_fit=По размеру страницы
+page_scale_auto=Автоматически
+page_scale_actual=Реальный размер
+# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
+# numerical scale value.
+page_scale_percent={{scale}}%
+
+# Loading indicator messages
+loading_error_indicator=Ошибка
+loading_error=При загрузке PDF произошла ошибка.
+invalid_file_error=Некорректный или повреждённый PDF-файл.
+missing_file_error=PDF-файл отсутствует.
+unexpected_response_error=Неожиданный ответ сервера.
+
+# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
+# "{{type}}" will be replaced with an annotation type from a list defined in
+# the PDF spec (32000-1:2008 Table 169 – Annotation types).
+# Some common types are e.g.: "Check", "Text", "Comment", "Note"
+text_annotation_type.alt=[Аннотация {{type}}]
+password_label=Введите пароль, чтобы открыть этот PDF-файл.
+password_invalid=Неверный пароль. Пожалуйста, попробуйте снова.
+password_ok=OK
+password_cancel=Отмена
+
+printing_not_supported=Предупреждение: В этом браузере не полностью поддерживается печать.
+printing_not_ready=Предупреждение: PDF не полностью загружен для печати.
+web_fonts_disabled=Веб-шрифты отключены: невозможно использовать встроенные PDF-шрифты.
+document_colors_not_allowed=PDF-документам не разрешено использовать свои цвета: в браузере отключён параметр «Разрешить веб-сайтам использовать свои цвета».
diff --git a/locale/rw/viewer.properties b/locale/rw/viewer.properties
index 9768101..0488932 100644
--- a/locale/rw/viewer.properties
+++ b/locale/rw/viewer.properties
@@ -14,10 +14,12 @@
# Main toolbar buttons (tooltips and alt text for images)
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
zoom.title=Ihindurangano
open_file.title=Gufungura Dosiye
@@ -27,7 +29,16 @@ open_file_label=Gufungura
# Document properties dialog box
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_title=Umutwe:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
+
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
@@ -69,5 +80,4 @@ loading_error_indicator=Ikosa
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
password_invalid=Ijambo ry'ibanga ridahari. Wakongera ukagerageza
password_ok=YEGO
-password_cancel=Kureka
diff --git a/locale/sah/viewer.properties b/locale/sah/viewer.properties
index 1b844d6..0a9d2a8 100644
--- a/locale/sah/viewer.properties
+++ b/locale/sah/viewer.properties
@@ -18,12 +18,12 @@ previous_label=Иннинээҕи
next.title=Аныгыскы сирэй
next_label=Аныгыскы
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Сирэй:
-page_of=мантан {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
zoom_out.title=Куччат
zoom_out_label=Куччат
@@ -67,7 +67,11 @@ document_properties.title=Докумуон туруоруулара...
document_properties_label=Докумуон туруоруулара...\u0020
document_properties_file_name=Билэ аата:
document_properties_file_size=Билэ кээмэйэ:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} КБ ({{size_b}} баайт)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} МБ ({{size_b}} баайт)
document_properties_title=Баһа:
document_properties_author=Ааптар:
@@ -75,19 +79,23 @@ document_properties_subject=Тиэмэ:
document_properties_keywords=Күлүүс тыл:
document_properties_creation_date=Оҥоһуллубут кэмэ:
document_properties_modification_date=Уларытыллыбыт кэмэ:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_producer=PDF оҥорооччу:
document_properties_version=PDF барыла:
document_properties_page_count=Сирэй ахсаана:
document_properties_close=Сап
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Ойоҕос хапталы арый/сап
toggle_sidebar_label=Ойоҕос хапталы арый/сап
-outline.title=Дөкүмүөн иһинээҕитин көрдөр
-outline_label=Дөкүмүөн иһинээҕитэ
+document_outline_label=Дөкүмүөн иһинээҕитэ
attachments.title=Кыбытыктары көрдөр
attachments_label=Кыбытык
thumbs.title=Ойуучааннары көрдөр
@@ -139,6 +147,8 @@ page_scale_width=Сирэй кэтитинэн
page_scale_fit=Сирэй кээмэйинэн
page_scale_auto=Аптамаатынан
page_scale_actual=Дьиҥнээх кээмэйэ
+# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
+# numerical scale value.
# Loading indicator messages
loading_error_indicator=Алҕас
@@ -155,9 +165,8 @@ text_annotation_type.alt=[{{type}} туһунан]
password_label=Бу PDF-билэни арыйарга көмүскэл тылы киллэриэхтээхин.
password_invalid=Киирии тыл алҕастаах. Бука диэн, хатылаан көр.
password_ok=СӨП
-password_cancel=Салҕаама
printing_not_supported=Сэрэтии: Бу браузер бэчээттиири толору өйөөбөт.
printing_not_ready=Сэрэтии: PDF бэчээттииргэ толору хачайдана илик.
web_fonts_disabled=Ситим-бичиктэр араарыллыахтара: PDF бичиктэрэ кыайан көстүбэттэр.
-document_colors_disabled=PDF-дөкүмүөүннэргэ бэйэлэрин өҥнөрүн туттар көҥүллэммэтэ: "Ситим-сирдэр бэйэлэрин өҥнөрүн тутталларын көҥүллүүргэ" диэн браузерга арахса сылдьар эбит.
+document_colors_not_allowed=PDF-дөкүмүөүннэргэ бэйэлэрин өҥнөрүн туттар көҥүллэммэтэ: "Ситим-сирдэр бэйэлэрин өҥнөрүн тутталларын көҥүллүүргэ" диэн браузерга арахса сылдьар эбит.
diff --git a/locale/si/viewer.properties b/locale/si/viewer.properties
index 060c12d..ba54b71 100644
--- a/locale/si/viewer.properties
+++ b/locale/si/viewer.properties
@@ -18,12 +18,12 @@ previous_label=පෙර
next.title=මීළඟ පිටුව
next_label=මීළඟ
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=පිටුව:
-page_of={{pageCount}} කින්
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
zoom_out.title=කුඩා කරන්න
zoom_out_label=කුඩා කරන්න
@@ -67,7 +67,11 @@ document_properties.title=ලේඛන වත්කම්...
document_properties_label=ලේඛන වත්කම්...
document_properties_file_name=ගොනු නම:
document_properties_file_size=ගොනු ප්රමාණය:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} බයිට)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} බයිට)
document_properties_title=සිරස්තලය:
document_properties_author=කතෲ
@@ -75,6 +79,8 @@ document_properties_subject=මාතෘකාව:
document_properties_keywords=යතුරු වදන්:
document_properties_creation_date=නිර්මිත දිනය:
document_properties_modification_date=වෙනස්කල දිනය:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=නිර්මාපක:
document_properties_producer=PDF නිශ්පාදක:
@@ -82,13 +88,14 @@ document_properties_version=PDF නිකුතුව:
document_properties_page_count=පිටු ගණන:
document_properties_close=වසන්න
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=පැති තීරුවට මාරුවන්න
toggle_sidebar_label=පැති තීරුවට මාරුවන්න
-outline.title=ලේඛනයේ පිට මායිම පෙන්වන්න
-outline_label=ලේඛනයේ පිට මායිම
attachments.title=ඇමිණුම් පෙන්වන්න
attachments_label=ඇමිණුම්
thumbs.title=සිඟිති රූ පෙන්වන්න
@@ -164,4 +171,3 @@ password_cancel=එපා
printing_not_supported=අවවාදයයි: මෙම ගවේශකය මුද්රණය සඳහා සම්පූර්ණයෙන් සහය නොදක්වයි.
printing_not_ready=අවවාදයයි: මුද්රණය සඳහා PDF සම්පූර්ණයෙන් පූර්ණය වී නොමැත.
web_fonts_disabled=ජාල අකුරු අක්රීයයි: තිළැලි PDF අකුරු භාවිත කළ නොහැක.
-document_colors_disabled=PDF ලේඛනයට ඔවුන්ගේම වර්ණ භාවිතයට ඉඩ නොලැබේ: 'පිටු වෙත ඔවුන්ගේම වර්ණ භාවිතයට ඉඩදෙන්න' ගවේශකය මත අක්රීය කර ඇත.
diff --git a/locale/sk/viewer.properties b/locale/sk/viewer.properties
index 5a9d1a8..267540c 100644
--- a/locale/sk/viewer.properties
+++ b/locale/sk/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Predchádzajúca
next.title=Nasledujúca strana
next_label=Nasledujúca
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Strana:
-page_of=z {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Strana
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=z {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} z {{pagesCount}})
zoom_out.title=Vzdialiť
zoom_out_label=Vzdialiť
@@ -67,7 +70,11 @@ document_properties.title=Vlastnosti dokumentu…
document_properties_label=Vlastnosti dokumentu…
document_properties_file_name=Názov súboru:
document_properties_file_size=Veľkosť súboru:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} kB ({{size_b}} bajtov)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bajtov)
document_properties_title=Názov:
document_properties_author=Autor:
@@ -75,6 +82,8 @@ document_properties_subject=Predmet:
document_properties_keywords=Kľúčové slová:
document_properties_creation_date=Dátum vytvorenia:
document_properties_modification_date=Dátum úpravy:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Vytvoril:
document_properties_producer=Tvorca PDF:
@@ -82,13 +91,19 @@ document_properties_version=Verzia PDF:
document_properties_page_count=Počet strán:
document_properties_close=Zavrieť
+print_progress_message=Príprava dokumentu na tlač…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Zrušiť
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Prepnúť bočný panel
toggle_sidebar_label=Prepnúť bočný panel
-outline.title=Zobraziť prehľad dokumentu
-outline_label=Prehľad dokumentu
+document_outline.title=Zobraziť prehľad dokumentu (dvojitým kliknutím rozbalíte/zbalíte všetky položky)
+document_outline_label=Prehľad dokumentu
attachments.title=Zobraziť prílohy
attachments_label=Prílohy
thumbs.title=Zobraziť miniatúry
@@ -164,4 +179,4 @@ password_cancel=Zrušiť
printing_not_supported=Upozornenie: tlač nie je v tomto prehliadači plne podporovaná.
printing_not_ready=Upozornenie: súbor PDF nie je plne načítaný pre tlač.
web_fonts_disabled=Webové písma sú vypnuté: nie je možné použiť písma vložené do súboru PDF.
-document_colors_disabled=Dokumenty PDF nemajú povolené používať vlastné farby, pretože voľba "Povoliť stránkam používať vlastné farby" je v nastaveniach prehliadača vypnutá.
+document_colors_not_allowed=Dokumenty PDF nemajú povolené používať vlastné farby, pretože voľba "Povoliť stránkam používať vlastné farby" je v nastaveniach prehliadača vypnutá.
diff --git a/locale/sl/viewer.properties b/locale/sl/viewer.properties
index bdc7fff..b4dac95 100644
--- a/locale/sl/viewer.properties
+++ b/locale/sl/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Nazaj
next.title=Naslednja stran
next_label=Naprej
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Stran:
-page_of=od {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Stran
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=od {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} od {{pagesCount}})
zoom_out.title=Pomanjšaj
zoom_out_label=Pomanjšaj
@@ -67,7 +70,11 @@ document_properties.title=Lastnosti dokumenta …
document_properties_label=Lastnosti dokumenta …
document_properties_file_name=Ime datoteke:
document_properties_file_size=Velikost datoteke:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bajtov)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bajtov)
document_properties_title=Ime:
document_properties_author=Avtor:
@@ -75,6 +82,8 @@ document_properties_subject=Tema:
document_properties_keywords=Ključne besede:
document_properties_creation_date=Datum nastanka:
document_properties_modification_date=Datum spremembe:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Ustvaril:
document_properties_producer=Izdelovalec PDF:
@@ -82,13 +91,19 @@ document_properties_version=Različica PDF:
document_properties_page_count=Število strani:
document_properties_close=Zapri
+print_progress_message=Priprava dokumenta na tiskanje …
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}} %
+print_progress_close=Prekliči
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Preklopi stransko vrstico
toggle_sidebar_label=Preklopi stransko vrstico
-outline.title=Prikaži oris dokumenta
-outline_label=Oris dokumenta
+document_outline.title=Prikaži oris dokumenta (dvokliknite za razširitev/strnitev vseh predmetov)
+document_outline_label=Oris dokumenta
attachments.title=Prikaži priponke
attachments_label=Priponke
thumbs.title=Prikaži sličice
@@ -120,8 +135,8 @@ find_not_found=Iskanega ni mogoče najti
error_more_info=Več informacij
error_less_info=Manj informacij
error_close=Zapri
-# LOCALIZATION NOTE (error_build): "{{build}}" will be replaced by the PDF.JS
-# build ID.
+# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
+# replaced by the PDF.JS version and build ID.
error_version_info=PDF.js r{{version}} (graditev: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
@@ -164,4 +179,4 @@ password_cancel=Prekliči
printing_not_supported=Opozorilo: ta brskalnik ne podpira vseh možnosti tiskanja.
printing_not_ready=Opozorilo: PDF ni v celoti naložen za tiskanje.
web_fonts_disabled=Spletne pisave so onemogočene: vgradnih pisav za PDF ni mogoče uporabiti.
-document_colors_disabled=Dokumenti PDF ne smejo uporabljati svojih lastnih barv: možnost 'Dovoli stranem uporabo lastnih barv' je v brskalniku onemogočena.
+document_colors_not_allowed=Dokumenti PDF ne smejo uporabljati svojih lastnih barv: možnost 'Dovoli stranem uporabo lastnih barv' je v brskalniku onemogočena.
diff --git a/locale/son/viewer.properties b/locale/son/viewer.properties
index 83e48dc..da4d47f 100644
--- a/locale/son/viewer.properties
+++ b/locale/son/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Bisante
next.title=Jinehere moo
next_label=Jine
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=&Moo:
-page_of={{pageCount}} ga
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Moo
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages={{pagesCount}} ra
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} ka hun {{pagesCount}}) ra
zoom_out.title=Nakasandi
zoom_out_label=Nakasandi
@@ -67,7 +70,11 @@ document_properties.title=Takadda mayrawey…
document_properties_label=Takadda mayrawey…
document_properties_file_name=Tuku maa:
document_properties_file_size=Tuku adadu:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb=KB {{size_kb}} (cebsu-ize {{size_b}})
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb=MB {{size_mb}} (cebsu-ize {{size_b}})
document_properties_title=Tiiramaa:
document_properties_author=Hantumkaw:
@@ -75,6 +82,8 @@ document_properties_subject=Dalil:
document_properties_keywords=Kufalkalimawey:
document_properties_creation_date=Teeyan han:
document_properties_modification_date=Barmayan han:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Teekaw:
document_properties_producer=PDF berandikaw:
@@ -82,13 +91,19 @@ document_properties_version=PDF dumi:
document_properties_page_count=Moo hinna:
document_properties_close=Daabu
+print_progress_message=Goo ma takaddaa soolu k'a kar se…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Naŋ
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Kanjari ceraw zuu
toggle_sidebar_label=Kanjari ceraw zuu
-outline.title=Takadda filla-boŋ cebe
-outline_label=Takadda filla-boŋ
+document_outline.title=Takaddaa korfur alhaaloo cebe (naagu cee hinka ka haya-izey kul hayandi/kankamandi)
+document_outline_label=Takadda filla-boŋ
attachments.title=Hangarey cebe
attachments_label=Hangarey
thumbs.title=Kabeboy biyey cebe
@@ -125,7 +140,7 @@ error_close=Daabu
error_version_info=PDF.js v{{version}} (build: {{build}})
# LOCALIZATION NOTE (error_message): "{{message}}" will be replaced by an
# english string describing the error.
-error_message=Alhabar: {{message}}
+error_message=Alhabar: {{message}}
# LOCALIZATION NOTE (error_stack): "{{stack}}" will be replaced with a stack
# trace.
error_stack=Dekeri: {{stack}}
@@ -164,4 +179,4 @@ password_cancel=Naŋ
printing_not_supported=Yaamar: Karyan ši tee ka timme nda ceecikaa woo.
printing_not_ready=Yaamar: PDF ši zunbu ka timme karyan še.
web_fonts_disabled=Interneti šigirawey kay: ši hin ka goy nda PDF šigira hurantey.
-document_colors_disabled=PDF takaddawey ši duu fondo ka ngey boŋ noonawey zaa: 'Naŋ moɲey ma ngey boŋ noonawey suuba' ši dira ceecikaa ga.
+document_colors_not_allowed=PDF takaddawey ši duu fondo ka ngey boŋ noonawey zaa: “Naŋ moɲey ma ngey boŋ noonawey suuba” ši dira ceecikaa ga.
diff --git a/locale/sq/viewer.properties b/locale/sq/viewer.properties
index 8d17d77..a21a056 100644
--- a/locale/sq/viewer.properties
+++ b/locale/sq/viewer.properties
@@ -1,6 +1,16 @@
-# This Source Code Form is subject to the terms of the Mozilla Public
-# License, v. 2.0. If a copy of the MPL was not distributed with this
-# file, You can obtain one at http://mozilla.org/MPL/2.0/.
+# Copyright 2012 Mozilla Foundation
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+# http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
previous.title=Faqja e Mëparshme
@@ -8,56 +18,63 @@ previous_label=E mëparshmja
next.title=Faqja Pasuese
next_label=Pasuesja
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Faqja:
-page_of=nga {{pageCount}}
-
-zoom_out.title=Zoom Out
-zoom_out_label=Zoom Out
-zoom_in.title=Zoom In
-zoom_in_label=Zoom In
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Faqe
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=nga {{pagesCount}} gjithsej
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} nga {{pagesCount}})
+
+zoom_out.title=Zmadhim
+zoom_out_label=Zmadhoji
+zoom_in.title=Zvogëlim
+zoom_in_label=Zvogëloji
zoom.title=Zoom
-print.title=Shtype
-print_label=Shtypeni
presentation_mode.title=Kalo te Mënyra Paraqitje
presentation_mode_label=Mënyra Paraqitje
open_file.title=Hapni Kartelë
-open_file_label=Hapeni
+open_file_label=Hape
+print.title=Shtypje
+print_label=Shtype
download.title=Shkarkim
-download_label=Shkarkojeni
+download_label=Shkarkoje
bookmark.title=Pamja e tanishme (kopjojeni ose hapeni në dritare të re)
bookmark_label=Pamja e Tanishme
# Secondary toolbar and context menu
tools.title=Mjete
tools_label=Mjete
-first_page.title=Shkoni te Faqja e Parë
-first_page.label=Shkoni te Faqja e Parë
-first_page_label=Shkoni te Faqja e Parë
-last_page.title=Shkoni te Faqja e Fundit
-last_page.label=Shkoni te Faqja e Fundit
-last_page_label=Shkoni te Faqja e Fundit
+first_page.title=Kaloni te Faqja e Parë
+first_page.label=Kalo te Faqja e Parë
+first_page_label=Kalo te Faqja e Parë
+last_page.title=Kaloni te Faqja e Fundit
+last_page.label=Kalo te Faqja e Fundit
+last_page_label=Kalo te Faqja e Fundit
page_rotate_cw.title=Rrotullojeni Në Kahun Orar
-page_rotate_cw.label=Rrotullojeni Në Kahun Orar
-page_rotate_cw_label=Rrotullojeni Në Kahun Orar
+page_rotate_cw.label=Rrotulloje Në Kahun Orar
+page_rotate_cw_label=Rrotulloje Në Kahun Orar
page_rotate_ccw.title=Rrotullojeni Në Kahun Kundërorar
-page_rotate_ccw.label=Rrotullojeni Në Kahun Kundërorar
-page_rotate_ccw_label=Rrotullojeni Në Kahun Kundërorar
+page_rotate_ccw.label=Rrotulloje Në Kahun Kundërorar
+page_rotate_ccw_label=Rrotulloje Në Kahun Kundërorar
-hand_tool_enable.title=Aktivizoni mjet dore
-hand_tool_enable_label=Aktivizoni mjet dore
-hand_tool_disable.title=Çaktivizoni mjet dore
-hand_tool_disable_label=Çaktivizoni mjet dore
+hand_tool_enable.title=Aktivizoni mjetin dorë
+hand_tool_enable_label=Aktivizo mjetin dorë
+hand_tool_disable.title=Çaktivizoni mjetin dorë
+hand_tool_disable_label=Çaktivizo mjetin dorë
# Document properties dialog box
document_properties.title=Veti Dokumenti…
document_properties_label=Veti Dokumenti…
document_properties_file_name=Emër kartele:
document_properties_file_size=Madhësi kartele:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bajte)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bajte)
document_properties_title=Titull:
document_properties_author=Autor:
@@ -65,6 +82,8 @@ document_properties_subject=Subjekt:
document_properties_keywords=Fjalëkyçe:
document_properties_creation_date=Datë Krijimi:
document_properties_modification_date=Datë Ndryshimi:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Krijues:
document_properties_producer=Prodhues PDF-je:
@@ -72,19 +91,24 @@ document_properties_version=Version PDF-je:
document_properties_page_count=Numër Faqesh:
document_properties_close=Mbylle
+print_progress_message=Po përgatitet dokumenti për shtypje…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Anuloje
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Shfaqni/Fshihni Anështyllën
-toggle_sidebar_label=Shfaqni/Fshihni Anështyllën
-outline.title=Shfaq Përvijim Dokumenti
-outline_label=Shfaq Përvijim Dokumenti
-attachments.title=Shfaq Bashkëngjitje
+toggle_sidebar_label=Shfaq/Fshih Anështyllën
+document_outline.title=Shfaqni Përvijim Dokumenti (dyklikoni që të shfaqen/fshihen krejt elementët)
+document_outline_label=Përvijim Dokumenti
+attachments.title=Shfaqni Bashkëngjitje
attachments_label=Bashkëngjitje
-thumbs.title=Shfaq Miniatura
+thumbs.title=Shfaqni Miniatura
thumbs_label=Miniatura
-findbar.title=Gjej në Dokument
+findbar.title=Gjeni në Dokument
findbar_label=Gjej
# Thumbnails panel item (tooltip and alt text for images)
@@ -95,23 +119,17 @@ thumb_page_title=Faqja {{page}}
# number.
thumb_page_canvas=Miniaturë e Faqes {{page}}
-# Context menu
-first_page.label=Kalo te Faqja e Parë
-last_page.label=Kalo te Faqja e Fundit
-page_rotate_cw.label=Rrotulloje Në Kahun Orar
-page_rotate_ccw.label=Rrotulloje Në Kahun Antiorar
-
# Find panel button title and messages
find_label=Gjej:
find_previous.title=Gjeni hasjen e mëparshme të togfjalëshit
find_previous_label=E mëparshmja
find_next.title=Gjeni hasjen pasuese të togfjalëshit
find_next_label=Pasuesja
-find_highlight=Theksoji të gjitha
+find_highlight=Theksoji të tëra
find_match_case_label=Siç është shkruar
find_reached_top=U mbërrit në krye të dokumentit, vazhduar prej fundit
find_reached_bottom=U mbërrit në fund të dokumentit, vazhduar prej kreut
-find_not_found=Nuk u gjet togfjalëshi
+find_not_found=Togfjalësh që s’gjendet
# Error panel labels
error_more_info=Më Tepër të Dhëna
@@ -142,7 +160,6 @@ page_scale_actual=Madhësia Faktike
page_scale_percent={{scale}}%
# Loading indicator messages
-# LOCALIZATION NOTE (error_line): "{{[percent}}" will be replaced with a percentage
loading_error_indicator=Gabim
loading_error=Ndodhi një gabim gjatë ngarkimit të PDF-së.
invalid_file_error=Kartelë PDF e pavlefshme ose e dëmtuar.
@@ -159,7 +176,7 @@ password_invalid=Fjalëkalim i pavlefshëm. Ju lutemi, riprovoni.
password_ok=OK
password_cancel=Anuloje
-printing_not_supported=Kujdes: Shtypja nuk mbulohet plotësisht nga ky shfletues.
-printing_not_ready=Kujdes: PDF-ja nuk është ngarkuar plotësisht që ta shtypni.
-web_fonts_disabled=Shkronjat Web janë të çaktivizuara: i pazoti të përdorë shkronja të trupëzuara në PDF.
-document_colors_disabled=Dokumenteve PDF nuk u është lejuar të përdorin ngjyrat e veta: 'Lejoji faqet t'i zgjedhin vetë ngjyrat', te shfletuesi, është e çaktivizuar.
+printing_not_supported=Kujdes: Shtypja s’mbulohet plotësisht nga ky shfletues.
+printing_not_ready=Kujdes: PDF-ja s’është ngarkuar plotësisht që ta shtypni.
+web_fonts_disabled=Shkronjat Web janë të çaktivizuara: s’arrihet të përdoren shkronja të trupëzuara në PDF.
+document_colors_not_allowed=Dokumenteve PDF s’u lejohet të përdorin ngjyrat e tyre: 'Lejoji faqet t’i zgjedhin vetë ngjyrat' është e çaktivizuar te shfletuesi.
diff --git a/locale/sr/viewer.properties b/locale/sr/viewer.properties
index 0603d88..7f9d9f8 100644
--- a/locale/sr/viewer.properties
+++ b/locale/sr/viewer.properties
@@ -18,18 +18,21 @@ previous_label=Претходна
next.title=Следећа страница
next_label=Следећа
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Страница:
-page_of=од {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Страница
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=од {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} од {{pagesCount}})
zoom_out.title=Умањи
zoom_out_label=Умањи
zoom_in.title=Увеличај
zoom_in_label=Увеличај
-zoom.title=Зумирање
+zoom.title=Увеличавање
presentation_mode.title=Промени на приказ у режиму презентације
presentation_mode_label=Режим презентације
open_file.title=Отвори датотеку
@@ -67,7 +70,11 @@ document_properties.title=Параметри документа…
document_properties_label=Параметри документа…
document_properties_file_name=Име датотеке:
document_properties_file_size=Величина датотеке:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} B)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} B)
document_properties_title=Наслов:
document_properties_author=Аутор:
@@ -75,6 +82,8 @@ document_properties_subject=Тема:
document_properties_keywords=Кључне речи:
document_properties_creation_date=Датум креирања:
document_properties_modification_date=Датум модификације:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Стваралац:
document_properties_producer=PDF произвођач:
@@ -82,13 +91,19 @@ document_properties_version=PDF верзија:
document_properties_page_count=Број страница:
document_properties_close=Затвори
+print_progress_message=Припремам документ за штампање…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Откажи
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Прикажи додатну палету
toggle_sidebar_label=Прикажи додатну палету
-outline.title=Прикажи контуру документа
-outline_label=Контура документа
+document_outline.title=Прикажи контуру документа (дупли клик за проширење/скупљање елемената)
+document_outline_label=Контура документа
attachments.title=Прикажи прилоге
attachments_label=Прилози
thumbs.title=Прикажи сличице
@@ -137,7 +152,7 @@ rendering_error=Дошло је до грешке приликом рендер
# Predefined zoom values
page_scale_width=Ширина странице
-page_scale_fit=Уклапање странице
+page_scale_fit=Прилагоди страницу
page_scale_auto=Аутоматско увеличавање
page_scale_actual=Стварна величина
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
@@ -164,4 +179,4 @@ password_cancel=Откажи
printing_not_supported=Упозорење: Штампање није у потпуности подржано у овом прегледачу.
printing_not_ready=Упозорење: PDF није у потпуности учитан за штампу.
web_fonts_disabled=Веб фонтови су онемогућени: не могу користити уграђене PDF фонтове.
-document_colors_disabled=PDF документи не могу да користе сопствене боје: “Дозволи страницама да изаберу своје боје” је деактивирано у прегледачу.
+document_colors_not_allowed=PDF документи не могу да користе сопствене боје: “Дозволи страницама да изаберу своје боје” је деактивирано у прегледачу.
diff --git a/locale/sv-SE/viewer.properties b/locale/sv-SE/viewer.properties
index 4c9d040..c1ff607 100644
--- a/locale/sv-SE/viewer.properties
+++ b/locale/sv-SE/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Föregående
next.title=Nästa sida
next_label=Nästa
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Sida:
-page_of=av {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Sida
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=av {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} av {{pagesCount}})
zoom_out.title=Zooma ut
zoom_out_label=Zooma ut
@@ -67,7 +70,11 @@ document_properties.title=Dokumentegenskaper…
document_properties_label=Dokumentegenskaper…
document_properties_file_name=Filnamn:
document_properties_file_size=Filstorlek:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} kB ({{size_b}} byte)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} byte)
document_properties_title=Titel:
document_properties_author=Författare:
@@ -75,6 +82,8 @@ document_properties_subject=Ämne:
document_properties_keywords=Nyckelord:
document_properties_creation_date=Skapades:
document_properties_modification_date=Ändrades:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Skapare:
document_properties_producer=PDF-producent:
@@ -82,13 +91,20 @@ document_properties_version=PDF-version:
document_properties_page_count=Sidantal:
document_properties_close=Stäng
+print_progress_message=Förbereder sidor för utskrift…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Avbryt
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Visa/dölj sidofält
+toggle_sidebar_notification.title=Visa/dölj sidofält (dokumentet innehåller disposition/bilagor)
toggle_sidebar_label=Visa/dölj sidofält
-outline.title=Visa dokumentöversikt
-outline_label=Dokumentöversikt
+document_outline.title=Visa dokumentdisposition (dubbelklicka för att expandera/komprimera alla objekt)
+document_outline_label=Dokumentöversikt
attachments.title=Visa Bilagor
attachments_label=Bilagor
thumbs.title=Visa miniatyrer
@@ -164,4 +180,4 @@ password_cancel=Avbryt
printing_not_supported=Varning: Utskrifter stöds inte helt av den här webbläsaren.
printing_not_ready=Varning: PDF:en är inte klar för utskrift.
web_fonts_disabled=Webbtypsnitt är inaktiverade: kan inte använda inbäddade PDF-typsnitt.
-document_colors_disabled=PDF-dokument tillåts inte använda egna färger: 'Låt sidor använda egna färger' är inaktiverat i webbläsaren.
+document_colors_not_allowed=PDF-dokument tillåts inte använda egna färger: “Låt sidor använda egna färger” är inaktiverat i webbläsaren.
diff --git a/locale/sw/viewer.properties b/locale/sw/viewer.properties
index 88d0d35..4df8285 100644
--- a/locale/sw/viewer.properties
+++ b/locale/sw/viewer.properties
@@ -18,12 +18,12 @@ previous_label=Iliyotangulia
next.title=Ukurasa Ufuatao
next_label=Ifuatayo
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Ukurasa:
-page_of=ya {{Hesabu ya ukurasa}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
zoom_out.title=Kuza Nje
zoom_out_label=Kuza Nje
@@ -45,15 +45,23 @@ bookmark_label=Mwonekano wa Sasa
# Document properties dialog box
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_title=Kichwa:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
+
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Kibiano cha Upau wa Kando
toggle_sidebar_label=Kibiano cha Upau wa Kando
-outline.title=Onyesha Ufupisho wa Waraka
-outline_label=Ufupisho wa Waraka
+document_outline_label=Ufupisho wa Waraka
thumbs.title=Onyesha Kijipicha
thumbs_label=Vijipicha
findbar.title=Pata katika Waraka
@@ -117,7 +125,6 @@ missing_file_error=Faili ya PDF isiyopo.
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[{{type}} Ufafanuzi]
password_ok=SAWA
-password_cancel=Ghairi
printing_not_supported=Onyo: Uchapishaji hauauniwi kabisa kwa kivinjari hiki.
web_fonts_disabled=Fonti za tovuti zimelemazwa: haziwezi kutumia fonti za PDF zilizopachikwa.
diff --git a/locale/ta-LK/viewer.properties b/locale/ta-LK/viewer.properties
index 77c9f4f..f0b1f43 100644
--- a/locale/ta-LK/viewer.properties
+++ b/locale/ta-LK/viewer.properties
@@ -14,10 +14,12 @@
# Main toolbar buttons (tooltips and alt text for images)
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
zoom.title=அளவு
open_file.title=கோப்பினைத் திறக்க
@@ -27,6 +29,15 @@ open_file_label=திறக்க
# Document properties dialog box
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
+
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
@@ -53,6 +64,8 @@ find_next.title=இந்த சொற்றொடரின் அடுத்
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
# Predefined zoom values
+# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
+# numerical scale value.
# Loading indicator messages
diff --git a/locale/ta/viewer.properties b/locale/ta/viewer.properties
index 787e278..fe49ab7 100644
--- a/locale/ta/viewer.properties
+++ b/locale/ta/viewer.properties
@@ -18,12 +18,14 @@ previous_label=முந்தையது
next.title=அடுத்த பக்கம்
next_label=அடுத்து
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=பக்கம்:
-page_of=இல் {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages={{pagesCount}} இல்
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages={{pagesCount}}) இல் ({{pageNumber}}
zoom_out.title=சிறிதாக்கு
zoom_out_label=சிறிதாக்கு
@@ -67,7 +69,11 @@ document_properties.title=ஆவண பண்புகள்...
document_properties_label=ஆவண பண்புகள்...
document_properties_file_name=கோப்பு பெயர்:
document_properties_file_size=கோப்பின் அளவு:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} கிபை ({{size_b}} பைட்டுகள்)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} மெபை ({{size_b}} பைட்டுகள்)
document_properties_title=தலைப்பு:
document_properties_author=எழுதியவர்
@@ -75,6 +81,8 @@ document_properties_subject=பொருள்:
document_properties_keywords=முக்கிய வார்த்தைகள்:
document_properties_creation_date=படைத்த தேதி :
document_properties_modification_date=திருத்திய தேதி:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=உருவாக்குபவர்:
document_properties_producer=பிடிஎஃப் தயாரிப்பாளர்:
@@ -82,13 +90,18 @@ document_properties_version=PDF பதிப்பு:
document_properties_page_count=பக்க எண்ணிக்கை:
document_properties_close=மூடுக
+print_progress_message=அச்சிடுவதற்கான ஆவணம் தயாராகிறது...
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=பக்கப் பட்டியை நிலைமாற்று
toggle_sidebar_label=பக்கப் பட்டியை நிலைமாற்று
-outline.title=ஆவண வெளிவரையைக் காண்பி
-outline_label=ஆவண வெளிவரை
+document_outline.title=ஆவண அடக்கத்தைக் காட்டு (இருமுறைச் சொடுக்கி அனைத்து உறுப்பிடிகளையும் விரி/சேர்)
+document_outline_label=ஆவண வெளிவரை
attachments.title=இணைப்புகளை காண்பி
attachments_label=இணைப்புகள்
thumbs.title=சிறுபடங்களைக் காண்பி
@@ -159,9 +172,8 @@ text_annotation_type.alt=[{{type}} விளக்கம்]
password_label=இந்த PDF கோப்பை திறக்க கடவுச்சொல்லை உள்ளிடவும்.
password_invalid=செல்லுபடியாகாத கடவுச்சொல், தயை செய்து மீண்டும் முயற்சி செய்க.
password_ok=சரி
-password_cancel=இரத்து
printing_not_supported=எச்சரிக்கை: இந்த உலாவி அச்சிடுதலை முழுமையாக ஆதரிக்கவில்லை.
printing_not_ready=எச்சரிக்கை: PDF அச்சிட முழுவதுமாக ஏற்றப்படவில்லை.
web_fonts_disabled=வலை எழுத்துருக்கள் முடக்கப்பட்டுள்ளன: உட்பொதிக்கப்பட்ட PDF எழுத்துருக்களைப் பயன்படுத்த முடியவில்லை.
-document_colors_disabled=PDF ஆவணங்களுக்கு அவற்றின் சொந்த நிறங்களைப் பயன்படுத்த அனுமதியில்லை: உலாவியில் 'பக்கங்கள் தங்கள் சொந்த நிறங்களைத் தேர்வு செய்துகொள்ள அனுமதி' என்னும் விருப்பம் முடக்கப்பட்டுள்ளது.
+document_colors_not_allowed=PDF ஆவணங்களுக்குச் சொந்த நிறங்களைப் பயன்படுத்த அனுமதியில்லை: உலாவியில் "பக்கங்கள் தங்கள் சொந்த நிறங்களைத் தேர்வு செய்துகொள்ள அனுமதி" என்னும் விருப்பம் முடக்கப்பட்டுள்ளது.
diff --git a/locale/te/viewer.properties b/locale/te/viewer.properties
index bd1ecac..055ea1e 100644
--- a/locale/te/viewer.properties
+++ b/locale/te/viewer.properties
@@ -13,17 +13,20 @@
# limitations under the License.
# Main toolbar buttons (tooltips and alt text for images)
-previous.title=క్రితం పేజీ
+previous.title=మునుపటి పేజీ
previous_label=క్రితం
next.title=తరువాత పేజీ
next_label=తరువాత
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=పేజీ:
-page_of=మొత్తం {{pageCount}} లో
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=పేజీ
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=మొత్తం {{pageCount}} లో
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=(మొత్తం {{pagesCount}} లో {{pageNumber}}వది)
zoom_out.title=జూమ్ తగ్గించు
zoom_out_label=జూమ్ తగ్గించు
@@ -38,7 +41,7 @@ print.title=ముద్రించు
print_label=ముద్రించు
download.title=డౌనులోడు
download_label=డౌనులోడు
-bookmark.title=ప్రస్తుత దర్శనం (నకలుతీయి లేదా కొత్త విండోనందు తెరువుము)
+bookmark.title=ప్రస్తుత దర్శనం (కాపీ చేయి లేదా కొత్త విండోలో తెరువు)
bookmark_label=ప్రస్తుత దర్శనం
# Secondary toolbar and context menu
@@ -50,12 +53,12 @@ first_page_label=మొదటి పేజీకి వెళ్ళు
last_page.title=చివరి పేజీకి వెళ్ళు
last_page.label=చివరి పేజీకి వెళ్ళు
last_page_label=చివరి పేజీకి వెళ్ళు
-page_rotate_cw.title=సవ్యదిశలో తిప్పుము
-page_rotate_cw.label=సవ్యదిశలో తిప్పుము
-page_rotate_cw_label=సవ్యదిశలో తిప్పుము
-page_rotate_ccw.title=అపసవ్యదిశలో తిప్పుము
-page_rotate_ccw.label=అపసవ్యదిశలో తిప్పుము
-page_rotate_ccw_label=అపసవ్యదిశలో తిప్పుము
+page_rotate_cw.title=సవ్యదిశలో తిప్పు
+page_rotate_cw.label=సవ్యదిశలో తిప్పు
+page_rotate_cw_label=సవ్యదిశలో తిప్పు
+page_rotate_ccw.title=అపసవ్యదిశలో తిప్పు
+page_rotate_ccw.label=అపసవ్యదిశలో తిప్పు
+page_rotate_ccw_label=అపసవ్యదిశలో తిప్పు
hand_tool_enable.title=చేతి సాధనం చేతనించు
hand_tool_enable_label=చేతి సాధనం చేతనించు
@@ -67,14 +70,20 @@ document_properties.title=పత్రము లక్షణాలు...
document_properties_label=పత్రము లక్షణాలు...
document_properties_file_name=దస్త్రం పేరు:
document_properties_file_size=దస్త్రం పరిమాణం:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=శీర్షిక:
document_properties_author=మూలకర్త:
document_properties_subject=విషయం:
-document_properties_keywords=కీపదాలు:
+document_properties_keywords=కీ పదాలు:
document_properties_creation_date=సృష్టించిన తేదీ:
document_properties_modification_date=సవరించిన తేదీ:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=సృష్టికర్త:
document_properties_producer=PDF ఉత్పాదకి:
@@ -82,18 +91,24 @@ document_properties_version=PDF వర్షన్:
document_properties_page_count=పేజీల సంఖ్య:
document_properties_close=మూసివేయి
+print_progress_message=ముద్రించడానికి పత్రము సిద్ధమవుతున్నది…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=రద్దుచేయి
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=పక్కపట్టీ మార్చు
toggle_sidebar_label=పక్కపట్టీ మార్చు
-outline.title=పత్రము అవుట్లైన్ చూపు
-outline_label=పత్రము అవుట్లైన్
+document_outline.title=పత్రము రూపము చూపించు (డబుల్ క్లిక్ చేసి అన్ని అంశాలను విస్తరించు/కూల్చు)
+document_outline_label=పత్రము అవుట్లైన్
attachments.title=అనుబంధాలు చూపు
attachments_label=అనుబంధాలు
thumbs.title=థంబ్నైల్స్ చూపు
thumbs_label=థంబ్నైల్స్
-findbar.title=ఈ పత్రమునందు కనుగొనుము
+findbar.title=పత్రములో కనుగొనుము
findbar_label=కనుగొను
# Thumbnails panel item (tooltip and alt text for images)
@@ -106,12 +121,12 @@ thumb_page_canvas=పేజీ {{page}} యొక్క థంబ్నైల
# Find panel button title and messages
find_label=కనుగొను:
-find_previous.title=పదంయొక్క ముందలి సంభవాన్ని కనుగొను
+find_previous.title=పదం యొక్క ముందు సంభవాన్ని కనుగొను
find_previous_label=మునుపటి
-find_next.title=పదం యొక్క తర్వాతి సంభవాన్ని కనుగొను
+find_next.title=పదం యొక్క తర్వాతి సంభవాన్ని కనుగొను
find_next_label=తరువాత
-find_highlight=అన్నిటిని ఉద్దీపనం చేయుము
-find_match_case_label=అక్షరములతేడాతో పోల్చుము
+find_highlight=అన్నిటిని ఉద్దీపనం చేయుము
+find_match_case_label=అక్షరముల తేడాతో పోల్చు
find_reached_top=పేజీ పైకి చేరుకున్నది, క్రింది నుండి కొనసాగించండి
find_reached_bottom=పేజీ చివరకు చేరుకున్నది, పైనుండి కొనసాగించండి
find_not_found=పదం కనబడలేదు
@@ -133,7 +148,7 @@ error_stack=స్టాక్: {{stack}}
error_file=ఫైలు: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=వరుస: {{line}}
-rendering_error=పేజీను రెండర్ చేయుటలో వొక దోషం యెదురైంది.
+rendering_error=పేజీను రెండర్ చేయుటలో ఒక దోషం ఎదురైంది.
# Predefined zoom values
page_scale_width=పేజీ వెడల్పు
@@ -146,22 +161,22 @@ page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=దోషం
-loading_error=PDF లోడవుచున్నప్పుడు వొక దోషం యెదురైంది.
+loading_error=PDF లోడవుచున్నప్పుడు ఒక దోషం ఎదురైంది.
invalid_file_error=చెల్లని లేదా పాడైన PDF ఫైలు.
missing_file_error=దొరకని PDF ఫైలు.
-unexpected_response_error=అనుకోని సేవిక స్పందన.
+unexpected_response_error=అనుకోని సర్వర్ స్పందన.
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[{{type}} టీకా]
-password_label=ఈ PDF ఫైల్ తెరుచుటకు సంకేతపదం ప్రవేశపెట్టుము
+password_label=ఈ PDF ఫైల్ తెరుచుటకు సంకేతపదం ప్రవేశపెట్టుము.
password_invalid=సంకేతపదం చెల్లదు. దయచేసి మళ్ళీ ప్రయత్నించండి.
password_ok=సరే
password_cancel=రద్దుచేయి
-printing_not_supported=హెచ్చరిక: ఈ విహారిణి చేత ముద్రణ పూర్తిగా తోడ్పాటునీయబడుట లేదు
+printing_not_supported=హెచ్చరిక: ఈ విహారిణి చేత ముద్రణ పూర్తిగా తోడ్పాటు లేదు.
printing_not_ready=హెచ్చరిక: ముద్రణ కొరకు ఈ PDF పూర్తిగా లోడవలేదు.
-web_fonts_disabled=వెబ్ ఫాంట్లు అచేతనపరచ బడెను: ఎంబెడెడ్ PDF ఫాంట్లు వుపయోగించలేక పోయింది.
-document_colors_disabled=PDF పత్రాలు వాటి స్వంత రంగులను వుపయోగించుకొనుటకు అనుమతించబడవు: విహరణి నందు 'పేజీలను వాటి స్వంత రంగులను యెంచుకొనుటకు అనుమతించు' అనునది అచేతనం చేయబడివుంది.
+web_fonts_disabled=వెబ్ ఫాంట్లు అచేతనించబడెను: ఎంబెడెడ్ PDF ఫాంట్లు ఉపయోగించలేక పోయింది.
+document_colors_not_allowed=PDF పత్రాలు వాటి స్వంత రంగులను ఉపయోగించుకొనుటకు అనుమతించబడవు: విహరణి నందు “పేజీలను వాటి స్వంత రంగులను ఎంచుకొనుటకు అనుమతించు” అచేతనం చేయబడివుంది.
diff --git a/locale/th/viewer.properties b/locale/th/viewer.properties
index 9ccaa38..ccfec59 100644
--- a/locale/th/viewer.properties
+++ b/locale/th/viewer.properties
@@ -18,21 +18,24 @@ previous_label=ก่อนหน้า
next.title=หน้าถัดไป
next_label=ถัดไป
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=หน้า:
-page_of=จาก {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=หน้า
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=จาก {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} จาก {{pagesCount}})
-zoom_out.title=ย่อ
-zoom_out_label=ย่อ Out
-zoom_in.title=ขยาย
-zoom_in_label=ขยาย
-zoom.title=ย่อ-ขยาย
-presentation_mode.title=สลับเข้าสู่รูปแบบการนำเสนอ
-presentation_mode_label=รูปแบบการนำเสนอ
-open_file.title=เปิดแฟ้ม
+zoom_out.title=ซูมออก
+zoom_out_label=ซูมออก
+zoom_in.title=ซูมเข้า
+zoom_in_label=ซูมเข้า
+zoom.title=ซูม
+presentation_mode.title=สลับเป็นโหมดการนำเสนอ
+presentation_mode_label=โหมดการนำเสนอ
+open_file.title=เปิดไฟล์
open_file_label=เปิด
print.title=พิมพ์
print_label=พิมพ์
@@ -65,32 +68,44 @@ hand_tool_disable_label=ปิดใช้งานเครื่องมื
# Document properties dialog box
document_properties.title=คุณสมบัติเอกสาร…
document_properties_label=คุณสมบัติเอกสาร…
-document_properties_file_name=ชื่อแฟ้ม :
-document_properties_file_size=ขนาดแฟ้ม :
+document_properties_file_name=ชื่อไฟล์:
+document_properties_file_size=ขนาดไฟล์:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} กิโลไบต์ ({{size_b}} ไบต์)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} เมกะไบต์ ({{size_b}} ไบต์)
-document_properties_title=หัวเรื่อง :
-document_properties_author=ผู้แต่ง :
-document_properties_subject=หัวข้อ :
-document_properties_keywords=คำสำคัญ :
-document_properties_creation_date=วันที่สร้าง :
-document_properties_modification_date=วันที่แก้ไข :
+document_properties_title=หัวข้อ:
+document_properties_author=ผู้สร้าง:
+document_properties_subject=ชื่อเรื่อง:
+document_properties_keywords=คำสำคัญ:
+document_properties_creation_date=วันที่สร้าง:
+document_properties_modification_date=วันที่แก้ไข:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
-document_properties_creator=สร้างโดย :
-document_properties_producer=ผู้ผลิต PDF :
-document_properties_version=รุ่น PDF :
-document_properties_page_count=จำนวนหน้า :
+document_properties_creator=ผู้สร้าง:
+document_properties_producer=ผู้ผลิต PDF:
+document_properties_version=รุ่น PDF:
+document_properties_page_count=จำนวนหน้า:
document_properties_close=ปิด
+print_progress_message=กำลังเตรียมเอกสารสำหรับการพิมพ์…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=ยกเลิก
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
-toggle_sidebar.title=สลับแถบข้าง
-toggle_sidebar_label=สลับแถบข้าง
-outline.title=แสดงโครงเอกสาร
-outline_label=โครงเอกสาร
-attachments.title=แสดงสิ่งที่แนบมา
-attachments_label=สิ่งที่แนบมา
+toggle_sidebar.title=เปิด/ปิดแถบข้าง
+toggle_sidebar_label=เปิด/ปิดแถบข้าง
+document_outline.title=แสดงเค้าร่างเอกสาร (คลิกสองครั้งเพื่อขยาย/ยุบรายการทั้งหมด)
+document_outline_label=เค้าร่างเอกสาร
+attachments.title=แสดงไฟล์แนบ
+attachments_label=ไฟล์แนบ
thumbs.title=แสดงภาพขนาดย่อ
thumbs_label=ภาพขนาดย่อ
findbar.title=ค้นหาในเอกสาร
@@ -106,19 +121,19 @@ thumb_page_canvas=ภาพขนาดย่อของหน้า {{page}}
# Find panel button title and messages
find_label=ค้นหา:
-find_previous.title=หาตำแหน่งก่อนหน้าของคำค้น
+find_previous.title=หาตำแหน่งก่อนหน้าของวลี
find_previous_label=ก่อนหน้า
-find_next.title=หาตำแหน่งถัดไปของคำค้น
+find_next.title=หาตำแหน่งถัดไปของวลี
find_next_label=ถัดไป
find_highlight=เน้นสีทั้งหมด
-find_match_case_label=ตัวพิมพ์ตรงกัน
+find_match_case_label=ตัวพิมพ์ใหญ่เล็กตรงกัน
find_reached_top=ค้นหาถึงจุดเริ่มต้นของหน้า เริ่มค้นต่อจากด้านล่าง
find_reached_bottom=ค้นหาถึงจุดสิ้นสุดหน้า เริ่มค้นต่อจากด้านบน
-find_not_found=ไม่พบวลีที่ต้องการ
+find_not_found=ไม่พบวลี
# Error panel labels
error_more_info=ข้อมูลเพิ่มเติม
-error_less_info=ข้อมูลน้อย
+error_less_info=ข้อมูลน้อยลง
error_close=ปิด
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
@@ -130,16 +145,16 @@ error_message=ข้อความ: {{message}}
# trace.
error_stack=สแต็ก: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
-error_file=แฟ้ม: {{file}}
+error_file=ไฟล์: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=บรรทัด: {{line}}
-rendering_error=เกิดข้อผิดพลาดขณะกำลังคำนวณการแสดงผลของหน้า
+rendering_error=เกิดข้อผิดพลาดขณะกำลังเรนเดอร์หน้า
# Predefined zoom values
page_scale_width=ความกว้างหน้า
page_scale_fit=พอดีหน้า
-page_scale_auto=ย่อ-ขยายอัตโนมัติ
-page_scale_actual=ขนาดเท่าจริง
+page_scale_auto=ซูมอัตโนมัติ
+page_scale_actual=ขนาดจริง
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
page_scale_percent={{scale}}%
@@ -147,21 +162,21 @@ page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=ข้อผิดพลาด
loading_error=เกิดข้อผิดพลาดขณะกำลังโหลด PDF
-invalid_file_error=แฟ้ม PDF ไม่ถูกต้องหรือไม่สมบูรณ์
-missing_file_error=แฟ้ม PDF หาย
-unexpected_response_error=การตอบสนองเซิร์ฟเวอร์ที่ไม่คาดหวัง
+invalid_file_error=ไฟล์ PDF ไม่ถูกต้องหรือเสียหาย
+missing_file_error=ไฟล์ PDF ขาดหาย
+unexpected_response_error=การตอบสนองของเซิร์ฟเวอร์ที่ไม่คาดคิด
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[คำอธิบายประกอบ {{type}}]
-password_label=ใส่รหัสผ่านเพื่อเปิดไฟล์ PDF นี้
+password_label=ป้อนรหัสผ่านเพื่อเปิดไฟล์ PDF นี้
password_invalid=รหัสผ่านไม่ถูกต้อง โปรดลองอีกครั้ง
password_ok=ตกลง
password_cancel=ยกเลิก
-printing_not_supported=คำเตือน: เบราเซอร์นี้ไม่ได้สนับสนุนการพิมพ์อย่างเต็มที่
+printing_not_supported=คำเตือน: เบราว์เซอร์นี้ไม่ได้สนับสนุนการพิมพ์อย่างเต็มที่
printing_not_ready=คำเตือน: PDF ไม่ได้รับการโหลดอย่างเต็มที่สำหรับการพิมพ์
web_fonts_disabled=แบบอักษรเว็บถูกปิดการใช้งาน: ไม่สามารถใช้แบบอักษรฝังตัวใน PDF
-document_colors_disabled=เอกสาร PDF ไม่ได้รับอนุญาตให้ใช้สีของตัวเอง: 'อนุญาตให้หน้าเอกสารสามารถเลือกสีของตัวเอง' ถูกปิดใช้งานในเบราเซอร์
+document_colors_not_allowed=เอกสาร PDF ไม่ได้รับอนุญาตให้ใช้สีของตัวเอง: "อนุญาตให้หน้าเอกสารสามารถเลือกสีของตัวเอง" ถูกปิดใช้งานในเบราว์เซอร์
diff --git a/locale/tl/viewer.properties b/locale/tl/viewer.properties
index 07d86eb..6385687 100644
--- a/locale/tl/viewer.properties
+++ b/locale/tl/viewer.properties
@@ -16,12 +16,12 @@
previous.title=Naunang Pahina
next.title=Sunod na Pahina
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Pahina:
-page_of=ng {{bilangngPahina}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
open_file.title=Magbukas ng file
open_file_label=Buksan
@@ -29,28 +29,38 @@ bookmark.title=Kasalukuyang tingin (kopyahin o buksan sa bagong window)
bookmark_label=Kasalukuyang tingin
# Secondary toolbar and context menu
+tools.title=Mga Tool
+tools_label=Mga Tool
# Document properties dialog box
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_title=Pamagat:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
+
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
-outline.title=Ipakita ang banghay ng dokumento
-outline_label=Banghay ng dokumento
thumbs.title=Ipakita ang mga Thumbnails
findbar_label=Hanapin
# Thumbnails panel item (tooltip and alt text for images)
# LOCALIZATION NOTE (thumb_page_title): "{{page}}" will be replaced by the page
# number.
-thumb_page_title=Pahina {{pahina}}
+thumb_page_title=Pahina {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
-thumb_page_canvas=Thumbnail ng Pahina {{pahina}}
+thumb_page_canvas=Thumbnail ng Pahina {{page}}
# Find panel button title and messages
+find_highlight=I-highlight lahat
# Error panel labels
error_more_info=Maraming Inpormasyon
@@ -64,13 +74,15 @@ error_message=Mensahe: {{message}}
# trace.
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
-error_line=Linya: { { linya } }
+error_line=Linya: {{line}}
rendering_error=May naganap na pagkakamali habang pagsasalin sa pahina.
# Predefined zoom values
page_scale_width=Haba ng Pahina
page_scale_fit=ang pahina ay angkop
page_scale_auto=awtomatikong pag-imbulog
+# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
+# numerical scale value.
# Loading indicator messages
loading_error=May maling nangyari habang kinakarga ang PDF.
diff --git a/locale/tn/viewer.properties b/locale/tn/viewer.properties
index 57f06a8..6ce5eb4 100644
--- a/locale/tn/viewer.properties
+++ b/locale/tn/viewer.properties
@@ -14,11 +14,12 @@
# Main toolbar buttons (tooltips and alt text for images)
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Tsebe:
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
zoom.title=Zuma/gogela
open_file.title=Bula Faele
@@ -26,10 +27,21 @@ open_file_label=Bula
# Secondary toolbar and context menu
+hand_tool_disable.title=Thibela go dira ga sediriswa sa seatla
+hand_tool_disable_label=Thibela go dira ga sediriswa sa seatla
# Document properties dialog box
document_properties_file_name=Leina la faele:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_title=Leina:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
+
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
@@ -70,5 +82,5 @@ loading_error_indicator=Phoso
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
password_ok=Siame
-password_cancel=Khansela
+web_fonts_disabled=Mefutatlhaka ya Webo ga e dire: ga e kgone go dirisa mofutatlhaka wa PDF o tsentsweng.
diff --git a/locale/tr/viewer.properties b/locale/tr/viewer.properties
index 750501b..54fc348 100644
--- a/locale/tr/viewer.properties
+++ b/locale/tr/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Önceki
next.title=Sonraki sayfa
next_label=Sonraki
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Sayfa:
-page_of=/ {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Sayfa
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=/ {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} / {{pagesCount}})
zoom_out.title=Uzaklaș
zoom_out_label=Uzaklaș
@@ -67,7 +70,11 @@ document_properties.title=Belge özellikleri…
document_properties_label=Belge özellikleri…
document_properties_file_name=Dosya adı:
document_properties_file_size=Dosya boyutu:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bayt)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bayt)
document_properties_title=Başlık:
document_properties_author=Yazar:
@@ -75,6 +82,8 @@ document_properties_subject=Konu:
document_properties_keywords=Anahtar kelimeler:
document_properties_creation_date=Oluturma tarihi:
document_properties_modification_date=Değiştirme tarihi:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}} {{time}}
document_properties_creator=Oluşturan:
document_properties_producer=PDF üreticisi:
@@ -82,13 +91,19 @@ document_properties_version=PDF sürümü:
document_properties_page_count=Sayfa sayısı:
document_properties_close=Kapat
+print_progress_message=Belge yazdırılmaya hazırlanıyor…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent=%{{progress}}
+print_progress_close=İptal
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Kenar çubuğunu aç/kapat
toggle_sidebar_label=Kenar çubuğunu aç/kapat
-outline.title=Belge şemasını göster
-outline_label=Belge şeması
+document_outline.title=Belge şemasını göster (Tüm öğeleri genişletmek/daraltmak için çift tıklayın)
+document_outline_label=Belge şeması
attachments.title=Ekleri göster
attachments_label=Ekler
thumbs.title=Küçük resimleri göster
@@ -117,7 +132,7 @@ find_reached_bottom=Belgenin sonuna ulaşıldı, başından devam edildi
find_not_found=Eşleşme bulunamadı
# Error panel labels
-error_more_info=Daha fazla bilgi
+error_more_info=Daha fazla bilgi al
error_less_info=Daha az bilgi
error_close=Kapat
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
@@ -156,7 +171,7 @@ unexpected_response_error=Beklenmeyen sunucu yanıtı.
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[{{type}} işareti]
-password_label=Bu PDF dosyasını açmak için parolasını girin.
+password_label=Bu PDF dosyasını açmak için parolasını yazın.
password_invalid=Geçersiz parola. Lütfen tekrar deneyin.
password_ok=Tamam
password_cancel=İptal
@@ -164,4 +179,4 @@ password_cancel=İptal
printing_not_supported=Uyarı: Yazdırma bu tarayıcı tarafından tam olarak desteklenmemektedir.
printing_not_ready=Uyarı: PDF tamamen yüklenmedi ve yazdırmaya hazır değil.
web_fonts_disabled=Web fontları devre dışı: Gömülü PDF fontları kullanılamıyor.
-document_colors_disabled=PDF belgelerinin kendi renklerini kullanması için izin verilmiyor: 'Sayfalara kendi renklerini seçmesi için izin ver' tarayıcıda etkinleştirilmemiş.
+document_colors_not_allowed=PDF belgelerinin kendi renklerini kullanması için izin verilmiyor: “Sayfalara kendi renklerini seçmesi için izin ver” tarayıcıda etkinleştirilmemiş.
diff --git a/locale/uk/viewer.properties b/locale/uk/viewer.properties
index 57e9867..c03bc0f 100644
--- a/locale/uk/viewer.properties
+++ b/locale/uk/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Попередня
next.title=Наступна сторінка
next_label=Наступна
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Сторінка:
-page_of=з {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Сторінка
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=із {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} із {{pagesCount}})
zoom_out.title=Зменшити
zoom_out_label=Зменшити
@@ -38,7 +41,7 @@ print.title=Друк
print_label=Друк
download.title=Завантажити
download_label=Завантажити
-bookmark.title=Поточний вигляд (копіювати чи відкрити у новому вікні)
+bookmark.title=Поточний вигляд (копіювати чи відкрити в новому вікні)
bookmark_label=Поточний вигляд
# Secondary toolbar and context menu
@@ -67,7 +70,11 @@ document_properties.title=Властивості документа…
document_properties_label=Властивості документа…
document_properties_file_name=Назва файла:
document_properties_file_size=Розмір файла:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} КБ ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} МБ ({{size_b}} bytes)
document_properties_title=Заголовок:
document_properties_author=Автор:
@@ -75,6 +82,8 @@ document_properties_subject=Тема:
document_properties_keywords=Ключові слова:
document_properties_creation_date=Дата створення:
document_properties_modification_date=Дата зміни:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Створено:
document_properties_producer=Виробник PDF:
@@ -82,13 +91,19 @@ document_properties_version=Версія PDF:
document_properties_page_count=Кількість сторінок:
document_properties_close=Закрити
+print_progress_message=Підготовка документу до друку…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Скасувати
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Бічна панель
toggle_sidebar_label=Перемкнути бічну панель
-outline.title=Показувати схему документа
-outline_label=Схема документа
+document_outline.title=Показати схему документу (подвійний клік для розгортання/згортання елементів)
+document_outline_label=Схема документа
attachments.title=Показати прикріплення
attachments_label=Прикріплення
thumbs.title=Показувати ескізи
@@ -164,4 +179,4 @@ password_cancel=Скасувати
printing_not_supported=Попередження: Цей браузер не повністю підтримує друк.
printing_not_ready=Попередження: PDF не повністю завантажений для друку.
web_fonts_disabled=Веб-шрифти вимкнено: неможливо використати вбудовані у PDF шрифти.
-document_colors_disabled=PDF-документам не дозволено використовувати свої власні кольори: в браузері вимкнено «Дозволити сторінкам використовувати свої власні кольори».
+document_colors_not_allowed=PDF-документам не дозволено використовувати власні кольори: в браузері вимкнено параметр «Дозволити сторінкам використовувати власні кольори».
diff --git a/locale/ur/viewer.properties b/locale/ur/viewer.properties
index c52220f..e9c3802 100644
--- a/locale/ur/viewer.properties
+++ b/locale/ur/viewer.properties
@@ -18,12 +18,15 @@ previous_label=پچھلا
next.title=اگلا صفحہ
next_label=آگے
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=صفحہ:
-page_of={{pageCount}} کا
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=صفحہ
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages={{pagesCount}} کا
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} کا {{pagesCount}})
zoom_out.title=باہر زوم کریں
zoom_out_label=باہر زوم کریں
@@ -59,15 +62,19 @@ page_rotate_ccw_label=ضد گھڑی وار گھمائیں
hand_tool_enable.title=ہاتھ ٹول اہل بنائیں
hand_tool_enable_label=ہاتھ ٹول اہل بنائیں
-hand_tool_disable.title=ہاتھ ٹول nنااہل بنائیں
+hand_tool_disable.title=ہاتھ ٹول nنااہل بنائیں\u0020
hand_tool_disable_label=ہاتھ ٹول نااہل بنائیں
# Document properties dialog box
document_properties.title=دستاویز خواص…
-document_properties_label=دستاویز خواص…
+document_properties_label=دستاویز خواص…\u0020
document_properties_file_name=نام مسل:
document_properties_file_size=مسل سائز:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} bytes)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} bytes)
document_properties_title=عنوان:
document_properties_author=تخلیق کار:
@@ -75,6 +82,8 @@ document_properties_subject=موضوع:
document_properties_keywords=کلیدی الفاظ:
document_properties_creation_date=تخلیق کی تاریخ:
document_properties_modification_date=ترمیم کی تاریخ:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}، {{time}}
document_properties_creator=تخلیق کار:
document_properties_producer=PDF پیدا کار:
@@ -82,13 +91,21 @@ document_properties_version=PDF ورژن:
document_properties_page_count=صفحہ شمار:
document_properties_close=بند کریں
+print_progress_message=چھاپنے کرنے کے لیے دستاویز تیار کیے جا رھے ھیں
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent=*{{progress}}%*
+print_progress_close=منسوخ کریں
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=سلائیڈ ٹوگل کریں
toggle_sidebar_label=سلائیڈ ٹوگل کریں
-outline.title=دستاویز آؤٹ لائن دکھائیں
-outline_label=دستاویز آؤٹ لائن
+document_outline.title=دستاویز کی سرخیاں دکھایں (تمام اشیاء وسیع / غائب کرنے کے لیے ڈبل کلک کریں)
+document_outline_label=دستاویز آؤٹ لائن
+attachments.title=منسلکات دکھائیں
+attachments_label=منسلکات
thumbs.title=تھمبنیل دکھائیں
thumbs_label=مجمل
findbar.title=دستاویز میں ڈھونڈیں
@@ -138,12 +155,16 @@ page_scale_width=صفحہ چوڑائی
page_scale_fit=صفحہ فٹنگ
page_scale_auto=خودکار زوم
page_scale_actual=اصل سائز
+# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
+# numerical scale value.
+page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=نقص
loading_error=PDF لوڈ کرتے وقت نقص آ گیا۔
invalid_file_error=ناجائز یا خراب PDF مسل
missing_file_error=PDF مسل غائب ہے۔
+unexpected_response_error=غیرمتوقع پیش کار جواب
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
@@ -158,4 +179,4 @@ password_cancel=منسوخ کریں
printing_not_supported=تنبیہ:چھاپنا اس براؤزر پر پوری طرح معاونت شدہ نہیں ہے۔
printing_not_ready=تنبیہ: PDF چھپائی کے لیے پوری طرح لوڈ نہیں ہوئی۔
web_fonts_disabled=ویب فانٹ نا اہل ہیں: شامل PDF فانٹ استعمال کرنے میں ناکام۔
-document_colors_disabled=PDF دستاویزات کو اپنے رنگ استعمال کرنے کی اجازت نہیں: 'صفحات کو اپنے رنگ چنیں' کی اِجازت براؤزر میں بے عمل ہے۔
+document_colors_not_allowed=PDF دستاویزات کو اپنے رنگ استعمال کرنے کی اجازت نہیں: 'صفحات کو اپنے رنگ چنیں' کی اِجازت براؤزر میں بے عمل ہے۔
diff --git a/locale/vi/viewer.properties b/locale/vi/viewer.properties
index 0c2a58d..c315589 100644
--- a/locale/vi/viewer.properties
+++ b/locale/vi/viewer.properties
@@ -18,21 +18,22 @@ previous_label=Trước
next.title=Trang Sau
next_label=Tiếp
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Trang:
-page_of=thuộc về {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=trên {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
zoom_out.title=Thu nhỏ
zoom_out_label=Thu nhỏ
zoom_in.title=Phóng to
zoom_in_label=Phóng to
-zoom.title=Thu phóng
+zoom.title=Chỉnh kích thước
presentation_mode.title=Chuyển sang chế độ trình chiếu
presentation_mode_label=Chế độ trình chiếu
-open_file.title=Mở Tập Tin
+open_file.title=Mở tập tin
open_file_label=Mở tập tin
print.title=In
print_label=In
@@ -43,6 +44,13 @@ bookmark_label=Chế độ xem hiện tại
# Secondary toolbar and context menu
tools.title=Công cụ
+tools_label=Công cụ
+first_page.title=Về trang đầu
+first_page.label=Về trang đầu
+first_page_label=Về trang đầu
+last_page.title=Đến trang cuối
+last_page.label=Đến trang cuối
+last_page_label=Đến trang cuối
page_rotate_cw.title=Xoay theo chiều kim đồng hồ
page_rotate_cw.label=Xoay theo chiều kim đồng hồ
page_rotate_cw_label=Xoay theo chiều kim đồng hồ
@@ -50,29 +58,50 @@ page_rotate_ccw.title=Xoay ngược chiều kim đồng hồ
page_rotate_ccw.label=Xoay ngược chiều kim đồng hồ
page_rotate_ccw_label=Xoay ngược chiều kim đồng hồ
+hand_tool_enable.title=Cho phép kéo để cuộn trang
+hand_tool_enable_label=Cho phép kéo để cuộn trang
+hand_tool_disable.title=Tắt kéo để cuộn trang
+hand_tool_disable_label=Tắt kéo để cuộn trang
# Document properties dialog box
-document_properties_file_size=Kích thước tập tin:
+document_properties.title=Thuộc tính của tài liệu…
+document_properties_label=Thuộc tính của tài liệu…
+document_properties_file_name=Tên tập tin:
+document_properties_file_size=Kích thước:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
+document_properties_kb={{size_kb}} KB ({{size_b}} byte)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
+document_properties_mb={{size_mb}} MB ({{size_b}} byte)
document_properties_title=Tiêu đề:
document_properties_author=Tác giả:
document_properties_subject=Chủ đề:
document_properties_keywords=Từ khóa:
document_properties_creation_date=Ngày tạo:
document_properties_modification_date=Ngày sửa đổi:
-document_properties_producer=Nhà sản xuất PDF:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
+document_properties_date_string={{date}}, {{time}}
+document_properties_creator=Người tạo:
+document_properties_producer=Phần mềm tạo PDF:
document_properties_version=Phiên bản PDF:
document_properties_page_count=Tổng số trang:
document_properties_close=Ðóng
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
-toggle_sidebar.title=Bật/Tắt Thanh Lề
-toggle_sidebar_label=Bật/Tắt Thanh Lề
-outline.title=Hiển thị bản phác tài liệu
-outline_label=Bản phác họa Tài liệu
-thumbs.title=Hiển thị Thumbnails
-thumbs_label=Thumbnails (hình biểu diễn nhỏ)
+toggle_sidebar.title=Bật/Tắt thanh lề
+toggle_sidebar_label=Bật/Tắt thanh lề
+document_outline_label=Bản phác tài liệu
+attachments.title=Hiện nội dung đính kèm
+attachments_label=Nội dung đính kèm
+thumbs.title=Hiển thị ảnh thu nhỏ
+thumbs_label=Ảnh thu nhỏ
findbar.title=Tìm trong tài liệu
findbar_label=Tìm
@@ -82,19 +111,19 @@ findbar_label=Tìm
thumb_page_title=Trang {{page}}
# LOCALIZATION NOTE (thumb_page_canvas): "{{page}}" will be replaced by the page
# number.
-thumb_page_canvas=Hình ảnh thu nhỏ của trang {{page}}
+thumb_page_canvas=Ảnh thu nhỏ của trang {{page}}
# Find panel button title and messages
-find_label=Tìm kiếm:
+find_label=Tìm:
find_previous.title=Tìm cụm từ ở phần trước
find_previous_label=Trước
find_next.title=Tìm cụm từ ở phần sau
find_next_label=Tiếp
find_highlight=Tô sáng tất cả
-find_match_case_label=Phân biệt chữ hoa, chữ thường
+find_match_case_label=Phân biệt hoa, thường
find_reached_top=Đã đến phần đầu tài liệu, quay trở lại từ cuối
find_reached_bottom=Đã đến phần cuối của tài liệu, quay trở lại từ đầu
-find_not_found=Không tìm thấy cụm từ
+find_not_found=Không tìm thấy cụm từ này
# Error panel labels
error_more_info=Thông tin thêm
@@ -110,24 +139,26 @@ error_message=Thông điệp: {{message}}
# trace.
error_stack=Stack: {{stack}}
# LOCALIZATION NOTE (error_file): "{{file}}" will be replaced with a filename
-error_file=Tệp: {{file}}
+error_file=Tập tin: {{file}}
# LOCALIZATION NOTE (error_line): "{{line}}" will be replaced with a line number
error_line=Dòng: {{line}}
rendering_error=Lỗi khi hiển thị trang.
# Predefined zoom values
-page_scale_width=Chiều rộng trang
-page_scale_fit=Độ vừa của trang
-page_scale_auto=Tự động thu/phóng
+page_scale_width=Vừa chiều rộng
+page_scale_fit=Vừa chiều cao
+page_scale_auto=Tự động chọn kích thước
page_scale_actual=Kích thước thực
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
+page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=Lỗi
loading_error=Lỗi khi tải tài liệu PDF.
invalid_file_error=Tập tin PDF hỏng hoặc không hợp lệ.
missing_file_error=Thiếu tập tin PDF.
+unexpected_response_error=Máy chủ có phản hồi lạ.
# LOCALIZATION NOTE (text_annotation_type.alt): This is used as a tooltip.
# "{{type}}" will be replaced with an annotation type from a list defined in
@@ -137,9 +168,8 @@ text_annotation_type.alt=[{{type}} Chú thích]
password_label=Nhập mật khẩu để mở tập tin PDF này.
password_invalid=Mật khẩu không đúng. Vui lòng thử lại.
password_ok=OK
-password_cancel=Hủy bỏ
printing_not_supported=Cảnh báo: In ấn không được hỗ trợ đầy đủ ở trình duyệt này.
printing_not_ready=Cảnh báo: PDF chưa được tải hết để in.
web_fonts_disabled=Phông chữ Web bị vô hiệu hóa: không thể sử dụng các phông chữ PDF được nhúng.
-document_colors_disabled=Tài liệu PDF không được cho phép dùng màu riêng: 'Cho phép trang chọn màu riêng' đã bị tắt trên trình duyệt.
+document_colors_not_allowed=Tài liệu PDF không được cho phép dùng màu riêng: 'Cho phép trang chọn màu riêng' đã bị tắt trên trình duyệt.
diff --git a/locale/wo/viewer.properties b/locale/wo/viewer.properties
index 3a9a4f9..ee79d82 100644
--- a/locale/wo/viewer.properties
+++ b/locale/wo/viewer.properties
@@ -18,12 +18,12 @@ previous_label=Bi jiitu
next.title=Xët wi ci topp
next_label=Bi ci topp
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Xët:
-page_of=ci {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
zoom_out.title=Wàññi
zoom_out_label=Wàññi
@@ -45,13 +45,20 @@ bookmark_label=Wone bi feeñ
# Document properties dialog box
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_title=Bopp:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
+
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
-outline.title=Wone takku yi
-outline_label=Takku jukki yi
thumbs.title=Wone nataal yu ndaw yi
thumbs_label=Nataal yu ndaw yi
findbar.title=Gis ci biir jukki bi
diff --git a/locale/xh/viewer.properties b/locale/xh/viewer.properties
index 36cd2cf..773de1f 100644
--- a/locale/xh/viewer.properties
+++ b/locale/xh/viewer.properties
@@ -18,12 +18,15 @@ previous_label=Okwangaphambili
next.title=Iphepha elilandelayo
next_label=Okulandelayo
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Iphepha:
-page_of=kwali- {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=Iphepha
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=kwali- {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} kwali {{pagesCount}})
zoom_out.title=Bhekelisela Kudana
zoom_out_label=Bhekelisela Kudana
@@ -67,7 +70,11 @@ document_properties.title=Iipropati zoxwebhu…
document_properties_label=Iipropati zoxwebhu…
document_properties_file_name=Igama lefayile:
document_properties_file_size=Isayizi yefayile:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB (iibhayiti{{size_b}})
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB (iibhayithi{{size_b}})
document_properties_title=Umxholo:
document_properties_author=Umbhali:
@@ -75,6 +82,8 @@ document_properties_subject=Umbandela:
document_properties_keywords=Amagama aphambili:
document_properties_creation_date=Umhla wokwenziwa kwayo:
document_properties_modification_date=Umhla wokulungiswa kwayo:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=Umntu oyenzileyo:
document_properties_producer=Umvelisi we-PDF:
@@ -82,13 +91,19 @@ document_properties_version=Uhlelo lwe-PDF:
document_properties_page_count=Inani lamaphepha:
document_properties_close=Vala
+print_progress_message=Ilungisa uxwebhu ukuze iprinte…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=Rhoxisa
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=Togola ngebha eseCaleni
toggle_sidebar_label=Togola ngebha eseCaleni
-outline.title=Bonisa isishwankathelo soxwebhu
-outline_label=Isishwankathelo soxwebhu
+document_outline.title=Bonisa uLwandlalo loXwebhu (cofa kabini ukuze wandise/diliza zonke izinto)
+document_outline_label=Isishwankathelo soxwebhu
attachments.title=Bonisa iziqhotyoshelwa
attachments_label=Iziqhoboshelo
thumbs.title=Bonisa ukrobiso kumfanekiso
@@ -142,7 +157,7 @@ page_scale_auto=Ukwandisa/Ukunciphisa Ngokwayo
page_scale_actual=Ubungakanani bokwenene
# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
# numerical scale value.
-page_scale_percent={{umlinganiselo}}%
+page_scale_percent={{scale}}%
# Loading indicator messages
loading_error_indicator=Imposiso
@@ -164,4 +179,4 @@ password_cancel=Rhoxisa
printing_not_supported=Isilumkiso: Ukuprinta akuxhaswa ngokupheleleyo yile bhrawuza.
printing_not_ready=Isilumkiso: IPDF ayihlohlwanga ngokupheleleyo ukwenzela ukuprinta.
web_fonts_disabled=Iifonti zewebhu ziqhwalelisiwe: ayikwazi ukusebenzisa iifonti ze-PDF ezincanyathelisiweyo.
-document_colors_disabled=Amaxwebhu ePDF akavumelekanga ukuba asebenzise imibala yawo: 'Ukuvumela amaphepha ukuba asebenzise eyawo imibala' kuvaliwe ukuba kungasebenzi kwibhrawuza.
+document_colors_not_allowed=Amaxwebhu ePDF akavumelekanga ukuba asebenzise imibala yawo: 'Ukuvumela amaphepha ukuba asebenzise eyawo imibala' kuvaliwe ukuba kungasebenzi kwibhrawuza.
diff --git a/locale/zh-CN/viewer.properties b/locale/zh-CN/viewer.properties
index 6ec25f7..df27dff 100644
--- a/locale/zh-CN/viewer.properties
+++ b/locale/zh-CN/viewer.properties
@@ -18,12 +18,15 @@ previous_label=上一页
next.title=下一页
next_label=下一页
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=页面:
-page_of=/ {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=页面
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=/ {{pagesCount}}
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=({{pageNumber}} / {{pagesCount}})
zoom_out.title=缩小
zoom_out_label=缩小
@@ -38,8 +41,8 @@ print.title=打印
print_label=打印
download.title=下载
download_label=下载
-bookmark.title=当前视图(复制或在新窗口中打开)
-bookmark_label=当前视图
+bookmark.title=当前在看的内容(复制或在新窗口中打开)
+bookmark_label=当前在看
# Secondary toolbar and context menu
tools.title=工具
@@ -67,7 +70,11 @@ document_properties.title=文档属性…
document_properties_label=文档属性…
document_properties_file_name=文件名:
document_properties_file_size=文件大小:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB ({{size_b}} 字节)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB ({{size_b}} 字节)
document_properties_title=标题:
document_properties_author=作者:
@@ -75,6 +82,8 @@ document_properties_subject=主题:
document_properties_keywords=关键词:
document_properties_creation_date=创建日期:
document_properties_modification_date=修改日期:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=创建者:
document_properties_producer=PDF 制作者:
@@ -82,13 +91,19 @@ document_properties_version=PDF 版本:
document_properties_page_count=页数:
document_properties_close=关闭
+print_progress_message=正在准备打印文档…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=取消
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=切换侧栏
toggle_sidebar_label=切换侧栏
-outline.title=显示文档大纲
-outline_label=文档大纲
+document_outline.title=显示文档大纲(双击展开/折叠所有项)
+document_outline_label=文档大纲
attachments.title=显示附件
attachments_label=附件
thumbs.title=显示缩略图
@@ -114,7 +129,7 @@ find_highlight=全部高亮显示
find_match_case_label=区分大小写
find_reached_top=到达文档开头,从末尾继续
find_reached_bottom=到达文档末尾,从开头继续
-find_not_found=词语未找到
+find_not_found=找不到指定词语
# Error panel labels
error_more_info=更多信息
@@ -162,6 +177,6 @@ password_ok=确定
password_cancel=取消
printing_not_supported=警告:打印功能不完全支持此浏览器。
-printing_not_ready=警告:该 PDF 未完全加载以供打印。
+printing_not_ready=警告:该 PDF 未完全载入以供打印。
web_fonts_disabled=Web 字体已被禁用:无法使用嵌入的PDF字体。
-document_colors_disabled=不允许 PDF 文档使用自己的颜色:浏览器中“允许页面选择自己的颜色”的选项已停用。
+document_colors_not_allowed=不允许 PDF 文档使用自己的颜色:浏览器中“允许页面选择自己的颜色”的选项已停用。
diff --git a/locale/zh-TW/viewer.properties b/locale/zh-TW/viewer.properties
index 11f20d7..c273767 100644
--- a/locale/zh-TW/viewer.properties
+++ b/locale/zh-TW/viewer.properties
@@ -18,12 +18,15 @@ previous_label=上一頁
next.title=下一頁
next_label=下一頁
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=頁:
-page_of=/ {{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+page.title=第
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+of_pages=頁,共 {{pagesCount}} 頁
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
+page_of_pages=(第 {{pageNumber}} 頁,共 {{pagesCount}} 頁)
zoom_out.title=縮小
zoom_out_label=縮小
@@ -67,7 +70,11 @@ document_properties.title=文件內容…
document_properties_label=文件內容…
document_properties_file_name=檔案名稱:
document_properties_file_size=檔案大小:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
document_properties_kb={{size_kb}} KB({{size_b}} 位元組)
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
document_properties_mb={{size_mb}} MB({{size_b}} 位元組)
document_properties_title=標題:
document_properties_author=作者:
@@ -75,6 +82,8 @@ document_properties_subject=主旨:
document_properties_keywords=關鍵字:
document_properties_creation_date=建立日期:
document_properties_modification_date=修改日期:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
document_properties_date_string={{date}}, {{time}}
document_properties_creator=建立者:
document_properties_producer=PDF 產生器:
@@ -82,13 +91,19 @@ document_properties_version=PDF 版本:
document_properties_page_count=頁數:
document_properties_close=關閉
+print_progress_message=正在準備列印文件…
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+print_progress_percent={{progress}}%
+print_progress_close=取消
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=切換側邊欄
toggle_sidebar_label=切換側邊欄
-outline.title=顯示文件大綱
-outline_label=文件大綱
+document_outline.title=顯示文件大綱(雙擊展開/摺疊所有項目)
+document_outline_label=文件大綱
attachments.title=顯示附件
attachments_label=附件
thumbs.title=顯示縮圖
@@ -164,5 +179,4 @@ password_cancel=取消
printing_not_supported=警告: 此瀏覽器未完整支援列印功能。
printing_not_ready=警告: 此 PDF 未完成下載以供列印。
web_fonts_disabled=已停用網路字型 (Web fonts): 無法使用 PDF 內嵌字型。
-document_colors_disabled=瀏覽器的「優先使用網頁指定的色彩」未被勾選,PDF 文件無法使用自己的色彩。
-
+document_colors_not_allowed=瀏覽器的「優先使用網頁指定的色彩」未被勾選,PDF 文件無法使用自己的色彩。
diff --git a/locale/zu/viewer.properties b/locale/zu/viewer.properties
index bd7a08f..2e49fa8 100644
--- a/locale/zu/viewer.properties
+++ b/locale/zu/viewer.properties
@@ -18,36 +18,51 @@ previous_label=Okudlule
next.title=Ikhasi elilandelayo
next_label=Okulandelayo
-# LOCALIZATION NOTE (page_label, page_of):
-# These strings are concatenated to form the "Page: X of Y" string.
-# Do not translate "{{pageCount}}", it will be substituted with a number
-# representing the total number of pages.
-page_label=Ikhasi:
-page_of=kwe-{{pageCount}}
+# LOCALIZATION NOTE (page.title): The tooltip for the pageNumber input.
+# LOCALIZATION NOTE (of_pages): "{{pagesCount}}" will be replaced by a number
+# representing the total number of pages in the document.
+# LOCALIZATION NOTE (page_of_pages): "{{pageNumber}}" and "{{pagesCount}}"
+# will be replaced by a number representing the currently visible page,
+# respectively a number representing the total number of pages in the document.
zoom_out.title=Hlehlisela emuva
zoom_out_label=Hlehlisela emuva
zoom_in.title=Sondeza eduze
zoom_in_label=Sondeza eduze
zoom.title=Lwiza
-print.title=Phrinta
-print_label=Phrinta
presentation_mode.title=Guqulela kwindlela yesethulo
presentation_mode_label=Indlelo yesethulo
open_file.title=Vula ifayela
open_file_label=Vula
+print.title=Phrinta
+print_label=Phrinta
download.title=Landa
download_label=Landa
bookmark.title=Ukubuka kwamanje (kopisha noma vula kwifasitela elisha)
bookmark_label=Ukubuka kwamanje
+# Secondary toolbar and context menu
+
+
+# Document properties dialog box
+document_properties_file_name=Igama lefayela:
+# LOCALIZATION NOTE (document_properties_kb): "{{size_kb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in kilobytes, respectively in bytes.
+# LOCALIZATION NOTE (document_properties_mb): "{{size_mb}}" and "{{size_b}}"
+# will be replaced by the PDF file size in megabytes, respectively in bytes.
+document_properties_title=Isihloko:
+# LOCALIZATION NOTE (document_properties_date_string): "{{date}}" and "{{time}}"
+# will be replaced by the creation/modification date, and time, of the PDF file.
+
+# LOCALIZATION NOTE (print_progress_percent): "{{progress}}" will be replaced by
+# a numerical per cent value.
+
# Tooltips and alt text for side panel toolbar buttons
# (the _label strings are alt text for the buttons, the .title strings are
# tooltips)
toggle_sidebar.title=I-toggle yebha yaseceleni
toggle_sidebar_label=i-toggle yebha yaseceleni
-outline.title=Bonisa umugqa waseceleni wedokhumenti
-outline_label=Umugqa waseceleni wedokhumenti
+document_outline_label=Umugqa waseceleni wedokhumenti
thumbs.title=Bonisa izithombe ezincane
thumbs_label=Izithonjana
findbar.title=Thola kwidokhumenti
@@ -61,12 +76,6 @@ thumb_page_title=Ikhasi {{page}}
# number.
thumb_page_canvas=Isithonjana sekhasi {{page}}
-# Context menu
-first_page.label=Yiya kwikhasi lokuqala
-last_page.label=Yiya kwikhasi lokugcina
-page_rotate_cw.label=Jikisela ngendlela yewashi
-page_rotate_ccw.label=Jikisela kwelokudla
-
# Find panel button title and messages
find_label=Thola
find_previous.title=Thola indawo eyandulelayo okuvela kuyo lomshwana
@@ -82,7 +91,6 @@ find_not_found=Umshwana awutholakali
# Error panel labels
error_more_info=Ukwaziswa Okwengeziwe
error_less_info=Ukwazi okuncane
-error_close=Vala
# LOCALIZATION NOTE (error_version_info): "{{version}}" and "{{build}}" will be
# replaced by the PDF.JS version and build ID.
error_version_info=PDF.js v{{version}} (build: {{build}})
@@ -103,6 +111,8 @@ page_scale_width=Ububanzi bekhasi
page_scale_fit=Ukulingana kwekhasi
page_scale_auto=Ukulwiza okuzenzekalelayo
page_scale_actual=Usayizi Wangempela
+# LOCALIZATION NOTE (page_scale_percent): "{{scale}}" will be replaced by a
+# numerical scale value.
# Loading indicator messages
loading_error_indicator=Iphutha
@@ -115,10 +125,9 @@ missing_file_error=Ifayela le-PDF elilahlekile.
# the PDF spec (32000-1:2008 Table 169 – Annotation types).
# Some common types are e.g.: "Check", "Text", "Comment", "Note"
text_annotation_type.alt=[Amazwibela e-{{type}}]
-request_password=I-PDF ivikeleke ngephasiwedi
-invalid_password=Iphasiwedi Engavumelekile.
+password_ok=Kulungile
printing_not_supported=Isixwayiso: Ukuphrinta akuxhasiwe yilesisiphequluli ngokugcwele.
printing_not_ready=Isixwayiso: I-PDF ayikalayishwa ngokuphelele yiPhrinta.
-web_fonts_disabled=Amafonti e-webhu akutshaziwe: ayikwazi ukusebenzisa amafonti abekiwe e-PDF.
-document_colors_disabled=Amadokhumenti we-PDF awavumelekile ukusebenzisa imibalo yayo: 'Vumela amakhasi ukukhetha imibala yayo' ayisebenzi kusiphequluli.
+web_fonts_disabled=Amafonti e-webhu akutshaziwe: ayikwazi ukusebenzisa amafonti abekiwe e-PDF.\u0020
+document_colors_not_allowed=Amadokhumenti we-PDF awavumelekile ukusebenzisa imibalo yayo: 'Vumela amakhasi ukukhetha imibala yayo' ayisebenzi kusiphequluli.
diff --git a/package.json b/package.json
index 949e51c..decb9c4 100644
--- a/package.json
+++ b/package.json
@@ -22,6 +22,8 @@
"devDependencies": {
"grunt": "^0.4.5",
"css-prefix": "git+https://github.com/moesjarraf/css-prefix.git#0.0.2+moesjarraf.3"
+ },
+ "dependencies": {
+ "uglifycss": "0.0.25"
}
}
-
diff --git a/pdf.js b/pdf.js
index 6564e96..de6093d 100644
--- a/pdf.js
+++ b/pdf.js
@@ -101,9 +101,7 @@ document.webL10n = (function(window, document, undefined) {
function xhrLoadText(url, onSuccess, onFailure) {
onSuccess = onSuccess || function _onSuccess(data) {};
- onFailure = onFailure || function _onFailure() {
- console.warn(url + ' not found.');
- };
+ onFailure = onFailure || function _onFailure() {};
var xhr = new XMLHttpRequest();
xhr.open('GET', url, gAsyncResourceLoading);
@@ -244,7 +242,10 @@ document.webL10n = (function(window, document, undefined) {
function loadImport(url, callback) {
xhrLoadText(url, function(content) {
parseRawLines(content, false, callback); // don't allow recursive imports
- }, null);
+ }, function () {
+ console.warn(url + ' not found.');
+ callback();
+ });
}
// fill the dictionary
@@ -826,9 +827,12 @@ document.webL10n = (function(window, document, undefined) {
function getL10nData(key, args, fallback) {
var data = gL10nData[key];
if (!data) {
+ ///console.warn('#' + key + ' is undefined.'); /// patched
+ // === patch start ===
if (Object.keys(gL10nData).length > 0) {
console.warn('#' + key + ' is undefined.');
}
+ // === patch end ===
if (!fallback) {
return null;
}
@@ -1033,40 +1037,7 @@ document.webL10n = (function(window, document, undefined) {
}
};
}) (window, document);
-/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
-/* Copyright 2012 Mozilla Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/*jshint globalstrict: false */
-/* globals PDFJS */
-
-// Initializing PDFJS global object (if still undefined)
-if (typeof PDFJS === 'undefined') {
- (typeof window !== 'undefined' ? window : this).PDFJS = {};
-}
-
-PDFJS.version = '1.1.215';
-PDFJS.build = 'c9a7498';
-
-(function pdfjsWrapper() {
- // Use strict in our context only - users might not want it
- 'use strict';
-
-/* -*- Mode: Java; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
-/* vim: set shiftwidth=2 tabstop=2 autoindent cindent expandtab: */
-/* Copyright 2012 Mozilla Foundation
+/* Copyright 2017 Mozilla Foundation
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@ -1080,17017 +1051,18403 @@ PDFJS.build = 'c9a7498';
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-/* globals Cmd, ColorSpace, Dict, MozBlobBuilder, Name, PDFJS, Ref, URL,
- Promise */
-
-'use strict';
-
-var globalScope = (typeof window === 'undefined') ? this : window;
-
-var isWorker = (typeof window === 'undefined');
-
-var FONT_IDENTITY_MATRIX = [0.001, 0, 0, 0.001, 0, 0];
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory();
+ else if(typeof define === 'function' && define.amd)
+ define("pdfjs-dist/build/pdf", [], factory);
+ else if(typeof exports === 'object')
+ exports["pdfjs-dist/build/pdf"] = factory();
+ else
+ root["pdfjs-dist/build/pdf"] = root.pdfjsDistBuildPdf = factory();
+})(this, function() {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __w_pdfjs_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId])
+/******/ return installedModules[moduleId].exports;
+/******/
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __w_pdfjs_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __w_pdfjs_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __w_pdfjs_require__.c = installedModules;
+/******/
+/******/ // identity function for calling harmony imports with the correct context
+/******/ __w_pdfjs_require__.i = function(value) { return value; };
+/******/
+/******/ // define getter function for harmony exports
+/******/ __w_pdfjs_require__.d = function(exports, name, getter) {
+/******/ if(!__w_pdfjs_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, {
+/******/ configurable: false,
+/******/ enumerable: true,
+/******/ get: getter
+/******/ });
+/******/ }
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __w_pdfjs_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __w_pdfjs_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __w_pdfjs_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __w_pdfjs_require__.p = "";
+/******/
+/******/ // Load entry module and return exports
+/******/ return __w_pdfjs_require__(__w_pdfjs_require__.s = 14);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ (function(module, exports, __w_pdfjs_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global) {
+var compatibility = __w_pdfjs_require__(13);
+var globalScope = typeof window !== 'undefined' ? window : typeof global !== 'undefined' ? global : typeof self !== 'undefined' ? self : this;
+var FONT_IDENTITY_MATRIX = [
+ 0.001,
+ 0,
+ 0,
+ 0.001,
+ 0,
+ 0
+];
var TextRenderingMode = {
- FILL: 0,
- STROKE: 1,
- FILL_STROKE: 2,
- INVISIBLE: 3,
- FILL_ADD_TO_PATH: 4,
- STROKE_ADD_TO_PATH: 5,
- FILL_STROKE_ADD_TO_PATH: 6,
- ADD_TO_PATH: 7,
- FILL_STROKE_MASK: 3,
- ADD_TO_PATH_FLAG: 4
+ FILL: 0,
+ STROKE: 1,
+ FILL_STROKE: 2,
+ INVISIBLE: 3,
+ FILL_ADD_TO_PATH: 4,
+ STROKE_ADD_TO_PATH: 5,
+ FILL_STROKE_ADD_TO_PATH: 6,
+ ADD_TO_PATH: 7,
+ FILL_STROKE_MASK: 3,
+ ADD_TO_PATH_FLAG: 4
};
-
var ImageKind = {
- GRAYSCALE_1BPP: 1,
- RGB_24BPP: 2,
- RGBA_32BPP: 3
+ GRAYSCALE_1BPP: 1,
+ RGB_24BPP: 2,
+ RGBA_32BPP: 3
};
-
var AnnotationType = {
- WIDGET: 1,
- TEXT: 2,
- LINK: 3
+ TEXT: 1,
+ LINK: 2,
+ FREETEXT: 3,
+ LINE: 4,
+ SQUARE: 5,
+ CIRCLE: 6,
+ POLYGON: 7,
+ POLYLINE: 8,
+ HIGHLIGHT: 9,
+ UNDERLINE: 10,
+ SQUIGGLY: 11,
+ STRIKEOUT: 12,
+ STAMP: 13,
+ CARET: 14,
+ INK: 15,
+ POPUP: 16,
+ FILEATTACHMENT: 17,
+ SOUND: 18,
+ MOVIE: 19,
+ WIDGET: 20,
+ SCREEN: 21,
+ PRINTERMARK: 22,
+ TRAPNET: 23,
+ WATERMARK: 24,
+ THREED: 25,
+ REDACT: 26
+};
+var AnnotationFlag = {
+ INVISIBLE: 0x01,
+ HIDDEN: 0x02,
+ PRINT: 0x04,
+ NOZOOM: 0x08,
+ NOROTATE: 0x10,
+ NOVIEW: 0x20,
+ READONLY: 0x40,
+ LOCKED: 0x80,
+ TOGGLENOVIEW: 0x100,
+ LOCKEDCONTENTS: 0x200
+};
+var AnnotationFieldFlag = {
+ READONLY: 0x0000001,
+ REQUIRED: 0x0000002,
+ NOEXPORT: 0x0000004,
+ MULTILINE: 0x0001000,
+ PASSWORD: 0x0002000,
+ NOTOGGLETOOFF: 0x0004000,
+ RADIO: 0x0008000,
+ PUSHBUTTON: 0x0010000,
+ COMBO: 0x0020000,
+ EDIT: 0x0040000,
+ SORT: 0x0080000,
+ FILESELECT: 0x0100000,
+ MULTISELECT: 0x0200000,
+ DONOTSPELLCHECK: 0x0400000,
+ DONOTSCROLL: 0x0800000,
+ COMB: 0x1000000,
+ RICHTEXT: 0x2000000,
+ RADIOSINUNISON: 0x2000000,
+ COMMITONSELCHANGE: 0x4000000
+};
+var AnnotationBorderStyleType = {
+ SOLID: 1,
+ DASHED: 2,
+ BEVELED: 3,
+ INSET: 4,
+ UNDERLINE: 5
};
-
var StreamType = {
- UNKNOWN: 0,
- FLATE: 1,
- LZW: 2,
- DCT: 3,
- JPX: 4,
- JBIG: 5,
- A85: 6,
- AHX: 7,
- CCF: 8,
- RL: 9
+ UNKNOWN: 0,
+ FLATE: 1,
+ LZW: 2,
+ DCT: 3,
+ JPX: 4,
+ JBIG: 5,
+ A85: 6,
+ AHX: 7,
+ CCF: 8,
+ RL: 9
};
-
var FontType = {
- UNKNOWN: 0,
- TYPE1: 1,
- TYPE1C: 2,
- CIDFONTTYPE0: 3,
- CIDFONTTYPE0C: 4,
- TRUETYPE: 5,
- CIDFONTTYPE2: 6,
- TYPE3: 7,
- OPENTYPE: 8,
- TYPE0: 9,
- MMTYPE1: 10
+ UNKNOWN: 0,
+ TYPE1: 1,
+ TYPE1C: 2,
+ CIDFONTTYPE0: 3,
+ CIDFONTTYPE0C: 4,
+ TRUETYPE: 5,
+ CIDFONTTYPE2: 6,
+ TYPE3: 7,
+ OPENTYPE: 8,
+ TYPE0: 9,
+ MMTYPE1: 10
};
-
-// The global PDFJS object exposes the API
-// In production, it will be declared outside a global wrapper
-// In development, it will be declared here
-if (!globalScope.PDFJS) {
- globalScope.PDFJS = {};
-}
-
-globalScope.PDFJS.pdfBug = false;
-
-PDFJS.VERBOSITY_LEVELS = {
- errors: 0,
- warnings: 1,
- infos: 5
+var VERBOSITY_LEVELS = {
+ errors: 0,
+ warnings: 1,
+ infos: 5
};
-
-// All the possible operations for an operator list.
-var OPS = PDFJS.OPS = {
- // Intentionally start from 1 so it is easy to spot bad operators that will be
- // 0's.
- dependency: 1,
- setLineWidth: 2,
- setLineCap: 3,
- setLineJoin: 4,
- setMiterLimit: 5,
- setDash: 6,
- setRenderingIntent: 7,
- setFlatness: 8,
- setGState: 9,
- save: 10,
- restore: 11,
- transform: 12,
- moveTo: 13,
- lineTo: 14,
- curveTo: 15,
- curveTo2: 16,
- curveTo3: 17,
- closePath: 18,
- rectangle: 19,
- stroke: 20,
- closeStroke: 21,
- fill: 22,
- eoFill: 23,
- fillStroke: 24,
- eoFillStroke: 25,
- closeFillStroke: 26,
- closeEOFillStroke: 27,
- endPath: 28,
- clip: 29,
- eoClip: 30,
- beginText: 31,
- endText: 32,
- setCharSpacing: 33,
- setWordSpacing: 34,
- setHScale: 35,
- setLeading: 36,
- setFont: 37,
- setTextRenderingMode: 38,
- setTextRise: 39,
- moveText: 40,
- setLeadingMoveText: 41,
- setTextMatrix: 42,
- nextLine: 43,
- showText: 44,
- showSpacedText: 45,
- nextLineShowText: 46,
- nextLineSetSpacingShowText: 47,
- setCharWidth: 48,
- setCharWidthAndBounds: 49,
- setStrokeColorSpace: 50,
- setFillColorSpace: 51,
- setStrokeColor: 52,
- setStrokeColorN: 53,
- setFillColor: 54,
- setFillColorN: 55,
- setStrokeGray: 56,
- setFillGray: 57,
- setStrokeRGBColor: 58,
- setFillRGBColor: 59,
- setStrokeCMYKColor: 60,
- setFillCMYKColor: 61,
- shadingFill: 62,
- beginInlineImage: 63,
- beginImageData: 64,
- endInlineImage: 65,
- paintXObject: 66,
- markPoint: 67,
- markPointProps: 68,
- beginMarkedContent: 69,
- beginMarkedContentProps: 70,
- endMarkedContent: 71,
- beginCompat: 72,
- endCompat: 73,
- paintFormXObjectBegin: 74,
- paintFormXObjectEnd: 75,
- beginGroup: 76,
- endGroup: 77,
- beginAnnotations: 78,
- endAnnotations: 79,
- beginAnnotation: 80,
- endAnnotation: 81,
- paintJpegXObject: 82,
- paintImageMaskXObject: 83,
- paintImageMaskXObjectGroup: 84,
- paintImageXObject: 85,
- paintInlineImageXObject: 86,
- paintInlineImageXObjectGroup: 87,
- paintImageXObjectRepeat: 88,
- paintImageMaskXObjectRepeat: 89,
- paintSolidColorImageMask: 90,
- constructPath: 91
+var CMapCompressionType = {
+ NONE: 0,
+ BINARY: 1,
+ STREAM: 2
};
-
-// A notice for devs. These are good for things that are helpful to devs, such
-// as warning that Workers were disabled, which is important to devs but not
-// end users.
+var OPS = {
+ dependency: 1,
+ setLineWidth: 2,
+ setLineCap: 3,
+ setLineJoin: 4,
+ setMiterLimit: 5,
+ setDash: 6,
+ setRenderingIntent: 7,
+ setFlatness: 8,
+ setGState: 9,
+ save: 10,
+ restore: 11,
+ transform: 12,
+ moveTo: 13,
+ lineTo: 14,
+ curveTo: 15,
+ curveTo2: 16,
+ curveTo3: 17,
+ closePath: 18,
+ rectangle: 19,
+ stroke: 20,
+ closeStroke: 21,
+ fill: 22,
+ eoFill: 23,
+ fillStroke: 24,
+ eoFillStroke: 25,
+ closeFillStroke: 26,
+ closeEOFillStroke: 27,
+ endPath: 28,
+ clip: 29,
+ eoClip: 30,
+ beginText: 31,
+ endText: 32,
+ setCharSpacing: 33,
+ setWordSpacing: 34,
+ setHScale: 35,
+ setLeading: 36,
+ setFont: 37,
+ setTextRenderingMode: 38,
+ setTextRise: 39,
+ moveText: 40,
+ setLeadingMoveText: 41,
+ setTextMatrix: 42,
+ nextLine: 43,
+ showText: 44,
+ showSpacedText: 45,
+ nextLineShowText: 46,
+ nextLineSetSpacingShowText: 47,
+ setCharWidth: 48,
+ setCharWidthAndBounds: 49,
+ setStrokeColorSpace: 50,
+ setFillColorSpace: 51,
+ setStrokeColor: 52,
+ setStrokeColorN: 53,
+ setFillColor: 54,
+ setFillColorN: 55,
+ setStrokeGray: 56,
+ setFillGray: 57,
+ setStrokeRGBColor: 58,
+ setFillRGBColor: 59,
+ setStrokeCMYKColor: 60,
+ setFillCMYKColor: 61,
+ shadingFill: 62,
+ beginInlineImage: 63,
+ beginImageData: 64,
+ endInlineImage: 65,
+ paintXObject: 66,
+ markPoint: 67,
+ markPointProps: 68,
+ beginMarkedContent: 69,
+ beginMarkedContentProps: 70,
+ endMarkedContent: 71,
+ beginCompat: 72,
+ endCompat: 73,
+ paintFormXObjectBegin: 74,
+ paintFormXObjectEnd: 75,
+ beginGroup: 76,
+ endGroup: 77,
+ beginAnnotations: 78,
+ endAnnotations: 79,
+ beginAnnotation: 80,
+ endAnnotation: 81,
+ paintJpegXObject: 82,
+ paintImageMaskXObject: 83,
+ paintImageMaskXObjectGroup: 84,
+ paintImageXObject: 85,
+ paintInlineImageXObject: 86,
+ paintInlineImageXObjectGroup: 87,
+ paintImageXObjectRepeat: 88,
+ paintImageMaskXObjectRepeat: 89,
+ paintSolidColorImageMask: 90,
+ constructPath: 91
+};
+var verbosity = VERBOSITY_LEVELS.warnings;
+function setVerbosityLevel(level) {
+ verbosity = level;
+}
+function getVerbosityLevel() {
+ return verbosity;
+}
function info(msg) {
- if (PDFJS.verbosity >= PDFJS.VERBOSITY_LEVELS.infos) {
- console.log('Info: ' + msg);
- }
+ if (verbosity >= VERBOSITY_LEVELS.infos) {
+ console.log('Info: ' + msg);
+ }
}
-
-// Non-fatal warnings.
function warn(msg) {
- if (PDFJS.verbosity >= PDFJS.VERBOSITY_LEVELS.warnings) {
- console.log('Warning: ' + msg);
- }
+ if (verbosity >= VERBOSITY_LEVELS.warnings) {
+ console.log('Warning: ' + msg);
+ }
+}
+function deprecated(details) {
+ console.log('Deprecated API usage: ' + details);
}
-
-// Fatal errors that should trigger the fallback UI and halt execution by
-// throwing an exception.
function error(msg) {
- if (PDFJS.verbosity >= PDFJS.VERBOSITY_LEVELS.errors) {
- console.log('Error: ' + msg);
- console.log(backtrace());
- }
- UnsupportedManager.notify(UNSUPPORTED_FEATURES.unknown);
- throw new Error(msg);
+ if (verbosity >= VERBOSITY_LEVELS.errors) {
+ console.log('Error: ' + msg);
+ console.log(backtrace());
+ }
+ throw new Error(msg);
}
-
function backtrace() {
- try {
- throw new Error();
- } catch (e) {
- return e.stack ? e.stack.split('\n').slice(2).join('\n') : '';
- }
+ try {
+ throw new Error();
+ } catch (e) {
+ return e.stack ? e.stack.split('\n').slice(2).join('\n') : '';
+ }
}
-
function assert(cond, msg) {
- if (!cond) {
- error(msg);
- }
+ if (!cond) {
+ error(msg);
+ }
}
-
-var UNSUPPORTED_FEATURES = PDFJS.UNSUPPORTED_FEATURES = {
- unknown: 'unknown',
- forms: 'forms',
- javaScript: 'javaScript',
- smask: 'smask',
- shadingPattern: 'shadingPattern',
- font: 'font'
+var UNSUPPORTED_FEATURES = {
+ unknown: 'unknown',
+ forms: 'forms',
+ javaScript: 'javaScript',
+ smask: 'smask',
+ shadingPattern: 'shadingPattern',
+ font: 'font'
};
-
-var UnsupportedManager = PDFJS.UnsupportedManager =
- (function UnsupportedManagerClosure() {
- var listeners = [];
- return {
- listen: function (cb) {
- listeners.push(cb);
- },
- notify: function (featureId) {
- warn('Unsupported feature "' + featureId + '"');
- for (var i = 0, ii = listeners.length; i < ii; i++) {
- listeners[i](featureId);
- }
- }
- };
-})();
-
-// Combines two URLs. The baseUrl shall be absolute URL. If the url is an
-// absolute URL, it will be returned as is.
-function combineUrl(baseUrl, url) {
- if (!url) {
- return baseUrl;
- }
- if (/^[a-z][a-z0-9+\-.]*:/i.test(url)) {
- return url;
- }
- var i;
- if (url.charAt(0) === '/') {
- // absolute path
- i = baseUrl.indexOf('://');
- if (url.charAt(1) === '/') {
- ++i;
- } else {
- i = baseUrl.indexOf('/', i + 3);
- }
- return baseUrl.substring(0, i) + url;
- } else {
- // relative path
- var pathLength = baseUrl.length;
- i = baseUrl.lastIndexOf('#');
- pathLength = i >= 0 ? i : pathLength;
- i = baseUrl.lastIndexOf('?', pathLength);
- pathLength = i >= 0 ? i : pathLength;
- var prefixLength = baseUrl.lastIndexOf('/', pathLength);
- return baseUrl.substring(0, prefixLength + 1) + url;
- }
+function isSameOrigin(baseUrl, otherUrl) {
+ try {
+ var base = new URL(baseUrl);
+ if (!base.origin || base.origin === 'null') {
+ return false;
+ }
+ } catch (e) {
+ return false;
+ }
+ var other = new URL(otherUrl, base);
+ return base.origin === other.origin;
}
-
-// Validates if URL is safe and allowed, e.g. to avoid XSS.
-function isValidUrl(url, allowRelative) {
- if (!url) {
- return false;
- }
- // RFC 3986 (http://tools.ietf.org/html/rfc3986#section-3.1)
- // scheme = ALPHA *( ALPHA / DIGIT / "+" / "-" / "." )
- var protocol = /^[a-z][a-z0-9+\-.]*(?=:)/i.exec(url);
- if (!protocol) {
- return allowRelative;
- }
- protocol = protocol[0].toLowerCase();
- switch (protocol) {
- case 'http':
- case 'https':
- case 'ftp':
- case 'mailto':
- case 'tel':
- return true;
- default:
- return false;
- }
+function isValidProtocol(url) {
+ if (!url) {
+ return false;
+ }
+ switch (url.protocol) {
+ case 'http:':
+ case 'https:':
+ case 'ftp:':
+ case 'mailto:':
+ case 'tel:':
+ return true;
+ default:
+ return false;
+ }
+}
+function createValidAbsoluteUrl(url, baseUrl) {
+ if (!url) {
+ return null;
+ }
+ try {
+ var absoluteUrl = baseUrl ? new URL(url, baseUrl) : new URL(url);
+ if (isValidProtocol(absoluteUrl)) {
+ return absoluteUrl;
+ }
+ } catch (ex) {
+ }
+ return null;
}
-PDFJS.isValidUrl = isValidUrl;
-
function shadow(obj, prop, value) {
- Object.defineProperty(obj, prop, { value: value,
- enumerable: true,
- configurable: true,
- writable: false });
- return value;
+ Object.defineProperty(obj, prop, {
+ value: value,
+ enumerable: true,
+ configurable: true,
+ writable: false
+ });
+ return value;
}
-PDFJS.shadow = shadow;
-
-var PasswordResponses = PDFJS.PasswordResponses = {
- NEED_PASSWORD: 1,
- INCORRECT_PASSWORD: 2
+function getLookupTableFactory(initializer) {
+ var lookup;
+ return function () {
+ if (initializer) {
+ lookup = Object.create(null);
+ initializer(lookup);
+ initializer = null;
+ }
+ return lookup;
+ };
+}
+var PasswordResponses = {
+ NEED_PASSWORD: 1,
+ INCORRECT_PASSWORD: 2
};
-
-var PasswordException = (function PasswordExceptionClosure() {
- function PasswordException(msg, code) {
- this.name = 'PasswordException';
- this.message = msg;
- this.code = code;
- }
-
- PasswordException.prototype = new Error();
- PasswordException.constructor = PasswordException;
-
- return PasswordException;
-})();
-PDFJS.PasswordException = PasswordException;
-
-var UnknownErrorException = (function UnknownErrorExceptionClosure() {
- function UnknownErrorException(msg, details) {
- this.name = 'UnknownErrorException';
- this.message = msg;
- this.details = details;
- }
-
- UnknownErrorException.prototype = new Error();
- UnknownErrorException.constructor = UnknownErrorException;
-
- return UnknownErrorException;
-})();
-PDFJS.UnknownErrorException = UnknownErrorException;
-
-var InvalidPDFException = (function InvalidPDFExceptionClosure() {
- function InvalidPDFException(msg) {
- this.name = 'InvalidPDFException';
- this.message = msg;
- }
-
- InvalidPDFException.prototype = new Error();
- InvalidPDFException.constructor = InvalidPDFException;
-
- return InvalidPDFException;
-})();
-PDFJS.InvalidPDFException = InvalidPDFException;
-
-var MissingPDFException = (function MissingPDFExceptionClosure() {
- function MissingPDFException(msg) {
- this.name = 'MissingPDFException';
- this.message = msg;
- }
-
- MissingPDFException.prototype = new Error();
- MissingPDFException.constructor = MissingPDFException;
-
- return MissingPDFException;
-})();
-PDFJS.MissingPDFException = MissingPDFException;
-
-var UnexpectedResponseException =
- (function UnexpectedResponseExceptionClosure() {
- function UnexpectedResponseException(msg, status) {
- this.name = 'UnexpectedResponseException';
- this.message = msg;
- this.status = status;
- }
-
- UnexpectedResponseException.prototype = new Error();
- UnexpectedResponseException.constructor = UnexpectedResponseException;
-
- return UnexpectedResponseException;
-})();
-PDFJS.UnexpectedResponseException = UnexpectedResponseException;
-
-var NotImplementedException = (function NotImplementedExceptionClosure() {
- function NotImplementedException(msg) {
- this.message = msg;
- }
-
- NotImplementedException.prototype = new Error();
- NotImplementedException.prototype.name = 'NotImplementedException';
- NotImplementedException.constructor = NotImplementedException;
-
- return NotImplementedException;
-})();
-
-var MissingDataException = (function MissingDataExceptionClosure() {
- function MissingDataException(begin, end) {
- this.begin = begin;
- this.end = end;
- this.message = 'Missing data [' + begin + ', ' + end + ')';
- }
-
- MissingDataException.prototype = new Error();
- MissingDataException.prototype.name = 'MissingDataException';
- MissingDataException.constructor = MissingDataException;
-
- return MissingDataException;
-})();
-
-var XRefParseException = (function XRefParseExceptionClosure() {
- function XRefParseException(msg) {
- this.message = msg;
- }
-
- XRefParseException.prototype = new Error();
- XRefParseException.prototype.name = 'XRefParseException';
- XRefParseException.constructor = XRefParseException;
-
- return XRefParseException;
-})();
-
-
+var PasswordException = function PasswordExceptionClosure() {
+ function PasswordException(msg, code) {
+ this.name = 'PasswordException';
+ this.message = msg;
+ this.code = code;
+ }
+ PasswordException.prototype = new Error();
+ PasswordException.constructor = PasswordException;
+ return PasswordException;
+}();
+var UnknownErrorException = function UnknownErrorExceptionClosure() {
+ function UnknownErrorException(msg, details) {
+ this.name = 'UnknownErrorException';
+ this.message = msg;
+ this.details = details;
+ }
+ UnknownErrorException.prototype = new Error();
+ UnknownErrorException.constructor = UnknownErrorException;
+ return UnknownErrorException;
+}();
+var InvalidPDFException = function InvalidPDFExceptionClosure() {
+ function InvalidPDFException(msg) {
+ this.name = 'InvalidPDFException';
+ this.message = msg;
+ }
+ InvalidPDFException.prototype = new Error();
+ InvalidPDFException.constructor = InvalidPDFException;
+ return InvalidPDFException;
+}();
+var MissingPDFException = function MissingPDFExceptionClosure() {
+ function MissingPDFException(msg) {
+ this.name = 'MissingPDFException';
+ this.message = msg;
+ }
+ MissingPDFException.prototype = new Error();
+ MissingPDFException.constructor = MissingPDFException;
+ return MissingPDFException;
+}();
+var UnexpectedResponseException = function UnexpectedResponseExceptionClosure() {
+ function UnexpectedResponseException(msg, status) {
+ this.name = 'UnexpectedResponseException';
+ this.message = msg;
+ this.status = status;
+ }
+ UnexpectedResponseException.prototype = new Error();
+ UnexpectedResponseException.constructor = UnexpectedResponseException;
+ return UnexpectedResponseException;
+}();
+var NotImplementedException = function NotImplementedExceptionClosure() {
+ function NotImplementedException(msg) {
+ this.message = msg;
+ }
+ NotImplementedException.prototype = new Error();
+ NotImplementedException.prototype.name = 'NotImplementedException';
+ NotImplementedException.constructor = NotImplementedException;
+ return NotImplementedException;
+}();
+var MissingDataException = function MissingDataExceptionClosure() {
+ function MissingDataException(begin, end) {
+ this.begin = begin;
+ this.end = end;
+ this.message = 'Missing data [' + begin + ', ' + end + ')';
+ }
+ MissingDataException.prototype = new Error();
+ MissingDataException.prototype.name = 'MissingDataException';
+ MissingDataException.constructor = MissingDataException;
+ return MissingDataException;
+}();
+var XRefParseException = function XRefParseExceptionClosure() {
+ function XRefParseException(msg) {
+ this.message = msg;
+ }
+ XRefParseException.prototype = new Error();
+ XRefParseException.prototype.name = 'XRefParseException';
+ XRefParseException.constructor = XRefParseException;
+ return XRefParseException;
+}();
+var NullCharactersRegExp = /\x00/g;
+function removeNullCharacters(str) {
+ if (typeof str !== 'string') {
+ warn('The argument for removeNullCharacters must be a string.');
+ return str;
+ }
+ return str.replace(NullCharactersRegExp, '');
+}
function bytesToString(bytes) {
- assert(bytes !== null && typeof bytes === 'object' &&
- bytes.length !== undefined, 'Invalid argument for bytesToString');
- var length = bytes.length;
- var MAX_ARGUMENT_COUNT = 8192;
- if (length < MAX_ARGUMENT_COUNT) {
- return String.fromCharCode.apply(null, bytes);
- }
- var strBuf = [];
- for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) {
- var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);
- var chunk = bytes.subarray(i, chunkEnd);
- strBuf.push(String.fromCharCode.apply(null, chunk));
- }
- return strBuf.join('');
+ assert(bytes !== null && typeof bytes === 'object' && bytes.length !== undefined, 'Invalid argument for bytesToString');
+ var length = bytes.length;
+ var MAX_ARGUMENT_COUNT = 8192;
+ if (length < MAX_ARGUMENT_COUNT) {
+ return String.fromCharCode.apply(null, bytes);
+ }
+ var strBuf = [];
+ for (var i = 0; i < length; i += MAX_ARGUMENT_COUNT) {
+ var chunkEnd = Math.min(i + MAX_ARGUMENT_COUNT, length);
+ var chunk = bytes.subarray(i, chunkEnd);
+ strBuf.push(String.fromCharCode.apply(null, chunk));
+ }
+ return strBuf.join('');
}
-
function stringToBytes(str) {
- assert(typeof str === 'string', 'Invalid argument for stringToBytes');
- var length = str.length;
- var bytes = new Uint8Array(length);
- for (var i = 0; i < length; ++i) {
- bytes[i] = str.charCodeAt(i) & 0xFF;
- }
- return bytes;
+ assert(typeof str === 'string', 'Invalid argument for stringToBytes');
+ var length = str.length;
+ var bytes = new Uint8Array(length);
+ for (var i = 0; i < length; ++i) {
+ bytes[i] = str.charCodeAt(i) & 0xFF;
+ }
+ return bytes;
+}
+function arrayByteLength(arr) {
+ if (arr.length !== undefined) {
+ return arr.length;
+ }
+ assert(arr.byteLength !== undefined);
+ return arr.byteLength;
+}
+function arraysToBytes(arr) {
+ if (arr.length === 1 && arr[0] instanceof Uint8Array) {
+ return arr[0];
+ }
+ var resultLength = 0;
+ var i, ii = arr.length;
+ var item, itemLength;
+ for (i = 0; i < ii; i++) {
+ item = arr[i];
+ itemLength = arrayByteLength(item);
+ resultLength += itemLength;
+ }
+ var pos = 0;
+ var data = new Uint8Array(resultLength);
+ for (i = 0; i < ii; i++) {
+ item = arr[i];
+ if (!(item instanceof Uint8Array)) {
+ if (typeof item === 'string') {
+ item = stringToBytes(item);
+ } else {
+ item = new Uint8Array(item);
+ }
+ }
+ itemLength = item.byteLength;
+ data.set(item, pos);
+ pos += itemLength;
+ }
+ return data;
}
-
function string32(value) {
- return String.fromCharCode((value >> 24) & 0xff, (value >> 16) & 0xff,
- (value >> 8) & 0xff, value & 0xff);
+ return String.fromCharCode(value >> 24 & 0xff, value >> 16 & 0xff, value >> 8 & 0xff, value & 0xff);
}
-
function log2(x) {
- var n = 1, i = 0;
- while (x > n) {
- n <<= 1;
- i++;
- }
- return i;
+ var n = 1, i = 0;
+ while (x > n) {
+ n <<= 1;
+ i++;
+ }
+ return i;
}
-
function readInt8(data, start) {
- return (data[start] << 24) >> 24;
+ return data[start] << 24 >> 24;
}
-
function readUint16(data, offset) {
- return (data[offset] << 8) | data[offset + 1];
+ return data[offset] << 8 | data[offset + 1];
}
-
function readUint32(data, offset) {
- return ((data[offset] << 24) | (data[offset + 1] << 16) |
- (data[offset + 2] << 8) | data[offset + 3]) >>> 0;
+ return (data[offset] << 24 | data[offset + 1] << 16 | data[offset + 2] << 8 | data[offset + 3]) >>> 0;
}
-
-// Lazy test the endianness of the platform
-// NOTE: This will be 'true' for simulated TypedArrays
function isLittleEndian() {
- var buffer8 = new Uint8Array(2);
- buffer8[0] = 1;
- var buffer16 = new Uint16Array(buffer8.buffer);
- return (buffer16[0] === 1);
+ var buffer8 = new Uint8Array(2);
+ buffer8[0] = 1;
+ var buffer16 = new Uint16Array(buffer8.buffer);
+ return buffer16[0] === 1;
}
-
-Object.defineProperty(PDFJS, 'isLittleEndian', {
- configurable: true,
- get: function PDFJS_isLittleEndian() {
- return shadow(PDFJS, 'isLittleEndian', isLittleEndian());
- }
-});
-
- // Lazy test if the userAgant support CanvasTypedArrays
-function hasCanvasTypedArrays() {
- var canvas = document.createElement('canvas');
- canvas.width = canvas.height = 1;
- var ctx = canvas.getContext('2d');
- var imageData = ctx.createImageData(1, 1);
- return (typeof imageData.data.buffer !== 'undefined');
+function isEvalSupported() {
+ try {
+ new Function('');
+ return true;
+ } catch (e) {
+ return false;
+ }
}
-
-Object.defineProperty(PDFJS, 'hasCanvasTypedArrays', {
- configurable: true,
- get: function PDFJS_hasCanvasTypedArrays() {
- return shadow(PDFJS, 'hasCanvasTypedArrays', hasCanvasTypedArrays());
- }
-});
-
-var Uint32ArrayView = (function Uint32ArrayViewClosure() {
-
- function Uint32ArrayView(buffer, length) {
- this.buffer = buffer;
- this.byteLength = buffer.length;
- this.length = length === undefined ? (this.byteLength >> 2) : length;
- ensureUint32ArrayViewProps(this.length);
- }
- Uint32ArrayView.prototype = Object.create(null);
-
- var uint32ArrayViewSetters = 0;
- function createUint32ArrayProp(index) {
- return {
- get: function () {
- var buffer = this.buffer, offset = index << 2;
- return (buffer[offset] | (buffer[offset + 1] << 8) |
- (buffer[offset + 2] << 16) | (buffer[offset + 3] << 24)) >>> 0;
- },
- set: function (value) {
- var buffer = this.buffer, offset = index << 2;
- buffer[offset] = value & 255;
- buffer[offset + 1] = (value >> 8) & 255;
- buffer[offset + 2] = (value >> 16) & 255;
- buffer[offset + 3] = (value >>> 24) & 255;
- }
- };
+var Uint32ArrayView = function Uint32ArrayViewClosure() {
+ function Uint32ArrayView(buffer, length) {
+ this.buffer = buffer;
+ this.byteLength = buffer.length;
+ this.length = length === undefined ? this.byteLength >> 2 : length;
+ ensureUint32ArrayViewProps(this.length);
+ }
+ Uint32ArrayView.prototype = Object.create(null);
+ var uint32ArrayViewSetters = 0;
+ function createUint32ArrayProp(index) {
+ return {
+ get: function () {
+ var buffer = this.buffer, offset = index << 2;
+ return (buffer[offset] | buffer[offset + 1] << 8 | buffer[offset + 2] << 16 | buffer[offset + 3] << 24) >>> 0;
+ },
+ set: function (value) {
+ var buffer = this.buffer, offset = index << 2;
+ buffer[offset] = value & 255;
+ buffer[offset + 1] = value >> 8 & 255;
+ buffer[offset + 2] = value >> 16 & 255;
+ buffer[offset + 3] = value >>> 24 & 255;
+ }
+ };
+ }
+ function ensureUint32ArrayViewProps(length) {
+ while (uint32ArrayViewSetters < length) {
+ Object.defineProperty(Uint32ArrayView.prototype, uint32ArrayViewSetters, createUint32ArrayProp(uint32ArrayViewSetters));
+ uint32ArrayViewSetters++;
+ }
+ }
+ return Uint32ArrayView;
+}();
+exports.Uint32ArrayView = Uint32ArrayView;
+var IDENTITY_MATRIX = [
+ 1,
+ 0,
+ 0,
+ 1,
+ 0,
+ 0
+];
+var Util = function UtilClosure() {
+ function Util() {
+ }
+ var rgbBuf = [
+ 'rgb(',
+ 0,
+ ',',
+ 0,
+ ',',
+ 0,
+ ')'
+ ];
+ Util.makeCssRgb = function Util_makeCssRgb(r, g, b) {
+ rgbBuf[1] = r;
+ rgbBuf[3] = g;
+ rgbBuf[5] = b;
+ return rgbBuf.join('');
+ };
+ Util.transform = function Util_transform(m1, m2) {
+ return [
+ m1[0] * m2[0] + m1[2] * m2[1],
+ m1[1] * m2[0] + m1[3] * m2[1],
+ m1[0] * m2[2] + m1[2] * m2[3],
+ m1[1] * m2[2] + m1[3] * m2[3],
+ m1[0] * m2[4] + m1[2] * m2[5] + m1[4],
+ m1[1] * m2[4] + m1[3] * m2[5] + m1[5]
+ ];
+ };
+ Util.applyTransform = function Util_applyTransform(p, m) {
+ var xt = p[0] * m[0] + p[1] * m[2] + m[4];
+ var yt = p[0] * m[1] + p[1] * m[3] + m[5];
+ return [
+ xt,
+ yt
+ ];
+ };
+ Util.applyInverseTransform = function Util_applyInverseTransform(p, m) {
+ var d = m[0] * m[3] - m[1] * m[2];
+ var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;
+ var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;
+ return [
+ xt,
+ yt
+ ];
+ };
+ Util.getAxialAlignedBoundingBox = function Util_getAxialAlignedBoundingBox(r, m) {
+ var p1 = Util.applyTransform(r, m);
+ var p2 = Util.applyTransform(r.slice(2, 4), m);
+ var p3 = Util.applyTransform([
+ r[0],
+ r[3]
+ ], m);
+ var p4 = Util.applyTransform([
+ r[2],
+ r[1]
+ ], m);
+ return [
+ Math.min(p1[0], p2[0], p3[0], p4[0]),
+ Math.min(p1[1], p2[1], p3[1], p4[1]),
+ Math.max(p1[0], p2[0], p3[0], p4[0]),
+ Math.max(p1[1], p2[1], p3[1], p4[1])
+ ];
+ };
+ Util.inverseTransform = function Util_inverseTransform(m) {
+ var d = m[0] * m[3] - m[1] * m[2];
+ return [
+ m[3] / d,
+ -m[1] / d,
+ -m[2] / d,
+ m[0] / d,
+ (m[2] * m[5] - m[4] * m[3]) / d,
+ (m[4] * m[1] - m[5] * m[0]) / d
+ ];
+ };
+ Util.apply3dTransform = function Util_apply3dTransform(m, v) {
+ return [
+ m[0] * v[0] + m[1] * v[1] + m[2] * v[2],
+ m[3] * v[0] + m[4] * v[1] + m[5] * v[2],
+ m[6] * v[0] + m[7] * v[1] + m[8] * v[2]
+ ];
+ };
+ Util.singularValueDecompose2dScale = function Util_singularValueDecompose2dScale(m) {
+ var transpose = [
+ m[0],
+ m[2],
+ m[1],
+ m[3]
+ ];
+ var a = m[0] * transpose[0] + m[1] * transpose[2];
+ var b = m[0] * transpose[1] + m[1] * transpose[3];
+ var c = m[2] * transpose[0] + m[3] * transpose[2];
+ var d = m[2] * transpose[1] + m[3] * transpose[3];
+ var first = (a + d) / 2;
+ var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;
+ var sx = first + second || 1;
+ var sy = first - second || 1;
+ return [
+ Math.sqrt(sx),
+ Math.sqrt(sy)
+ ];
+ };
+ Util.normalizeRect = function Util_normalizeRect(rect) {
+ var r = rect.slice(0);
+ if (rect[0] > rect[2]) {
+ r[0] = rect[2];
+ r[2] = rect[0];
+ }
+ if (rect[1] > rect[3]) {
+ r[1] = rect[3];
+ r[3] = rect[1];
+ }
+ return r;
+ };
+ Util.intersect = function Util_intersect(rect1, rect2) {
+ function compare(a, b) {
+ return a - b;
+ }
+ var orderedX = [
+ rect1[0],
+ rect1[2],
+ rect2[0],
+ rect2[2]
+ ].sort(compare), orderedY = [
+ rect1[1],
+ rect1[3],
+ rect2[1],
+ rect2[3]
+ ].sort(compare), result = [];
+ rect1 = Util.normalizeRect(rect1);
+ rect2 = Util.normalizeRect(rect2);
+ if (orderedX[0] === rect1[0] && orderedX[1] === rect2[0] || orderedX[0] === rect2[0] && orderedX[1] === rect1[0]) {
+ result[0] = orderedX[1];
+ result[2] = orderedX[2];
+ } else {
+ return false;
}
-
- function ensureUint32ArrayViewProps(length) {
- while (uint32ArrayViewSetters < length) {
- Object.defineProperty(Uint32ArrayView.prototype,
- uint32ArrayViewSetters,
- createUint32ArrayProp(uint32ArrayViewSetters));
- uint32ArrayViewSetters++;
- }
+ if (orderedY[0] === rect1[1] && orderedY[1] === rect2[1] || orderedY[0] === rect2[1] && orderedY[1] === rect1[1]) {
+ result[1] = orderedY[1];
+ result[3] = orderedY[2];
+ } else {
+ return false;
+ }
+ return result;
+ };
+ Util.sign = function Util_sign(num) {
+ return num < 0 ? -1 : 1;
+ };
+ var ROMAN_NUMBER_MAP = [
+ '',
+ 'C',
+ 'CC',
+ 'CCC',
+ 'CD',
+ 'D',
+ 'DC',
+ 'DCC',
+ 'DCCC',
+ 'CM',
+ '',
+ 'X',
+ 'XX',
+ 'XXX',
+ 'XL',
+ 'L',
+ 'LX',
+ 'LXX',
+ 'LXXX',
+ 'XC',
+ '',
+ 'I',
+ 'II',
+ 'III',
+ 'IV',
+ 'V',
+ 'VI',
+ 'VII',
+ 'VIII',
+ 'IX'
+ ];
+ Util.toRoman = function Util_toRoman(number, lowerCase) {
+ assert(isInt(number) && number > 0, 'The number should be a positive integer.');
+ var pos, romanBuf = [];
+ while (number >= 1000) {
+ number -= 1000;
+ romanBuf.push('M');
+ }
+ pos = number / 100 | 0;
+ number %= 100;
+ romanBuf.push(ROMAN_NUMBER_MAP[pos]);
+ pos = number / 10 | 0;
+ number %= 10;
+ romanBuf.push(ROMAN_NUMBER_MAP[10 + pos]);
+ romanBuf.push(ROMAN_NUMBER_MAP[20 + number]);
+ var romanStr = romanBuf.join('');
+ return lowerCase ? romanStr.toLowerCase() : romanStr;
+ };
+ Util.appendToArray = function Util_appendToArray(arr1, arr2) {
+ Array.prototype.push.apply(arr1, arr2);
+ };
+ Util.prependToArray = function Util_prependToArray(arr1, arr2) {
+ Array.prototype.unshift.apply(arr1, arr2);
+ };
+ Util.extendObj = function extendObj(obj1, obj2) {
+ for (var key in obj2) {
+ obj1[key] = obj2[key];
+ }
+ };
+ Util.getInheritableProperty = function Util_getInheritableProperty(dict, name, getArray) {
+ while (dict && !dict.has(name)) {
+ dict = dict.get('Parent');
+ }
+ if (!dict) {
+ return null;
+ }
+ return getArray ? dict.getArray(name) : dict.get(name);
+ };
+ Util.inherit = function Util_inherit(sub, base, prototype) {
+ sub.prototype = Object.create(base.prototype);
+ sub.prototype.constructor = sub;
+ for (var prop in prototype) {
+ sub.prototype[prop] = prototype[prop];
+ }
+ };
+ Util.loadScript = function Util_loadScript(src, callback) {
+ var script = document.createElement('script');
+ var loaded = false;
+ script.setAttribute('src', src);
+ if (callback) {
+ script.onload = function () {
+ if (!loaded) {
+ callback();
+ }
+ loaded = true;
+ };
+ }
+ document.getElementsByTagName('head')[0].appendChild(script);
+ };
+ return Util;
+}();
+var PageViewport = function PageViewportClosure() {
+ function PageViewport(viewBox, scale, rotation, offsetX, offsetY, dontFlip) {
+ this.viewBox = viewBox;
+ this.scale = scale;
+ this.rotation = rotation;
+ this.offsetX = offsetX;
+ this.offsetY = offsetY;
+ var centerX = (viewBox[2] + viewBox[0]) / 2;
+ var centerY = (viewBox[3] + viewBox[1]) / 2;
+ var rotateA, rotateB, rotateC, rotateD;
+ rotation = rotation % 360;
+ rotation = rotation < 0 ? rotation + 360 : rotation;
+ switch (rotation) {
+ case 180:
+ rotateA = -1;
+ rotateB = 0;
+ rotateC = 0;
+ rotateD = 1;
+ break;
+ case 90:
+ rotateA = 0;
+ rotateB = 1;
+ rotateC = 1;
+ rotateD = 0;
+ break;
+ case 270:
+ rotateA = 0;
+ rotateB = -1;
+ rotateC = -1;
+ rotateD = 0;
+ break;
+ default:
+ rotateA = 1;
+ rotateB = 0;
+ rotateC = 0;
+ rotateD = -1;
+ break;
+ }
+ if (dontFlip) {
+ rotateC = -rotateC;
+ rotateD = -rotateD;
+ }
+ var offsetCanvasX, offsetCanvasY;
+ var width, height;
+ if (rotateA === 0) {
+ offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;
+ offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;
+ width = Math.abs(viewBox[3] - viewBox[1]) * scale;
+ height = Math.abs(viewBox[2] - viewBox[0]) * scale;
+ } else {
+ offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;
+ offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;
+ width = Math.abs(viewBox[2] - viewBox[0]) * scale;
+ height = Math.abs(viewBox[3] - viewBox[1]) * scale;
+ }
+ this.transform = [
+ rotateA * scale,
+ rotateB * scale,
+ rotateC * scale,
+ rotateD * scale,
+ offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,
+ offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY
+ ];
+ this.width = width;
+ this.height = height;
+ this.fontScale = scale;
+ }
+ PageViewport.prototype = {
+ clone: function PageViewPort_clone(args) {
+ args = args || {};
+ var scale = 'scale' in args ? args.scale : this.scale;
+ var rotation = 'rotation' in args ? args.rotation : this.rotation;
+ return new PageViewport(this.viewBox.slice(), scale, rotation, this.offsetX, this.offsetY, args.dontFlip);
+ },
+ convertToViewportPoint: function PageViewport_convertToViewportPoint(x, y) {
+ return Util.applyTransform([
+ x,
+ y
+ ], this.transform);
+ },
+ convertToViewportRectangle: function PageViewport_convertToViewportRectangle(rect) {
+ var tl = Util.applyTransform([
+ rect[0],
+ rect[1]
+ ], this.transform);
+ var br = Util.applyTransform([
+ rect[2],
+ rect[3]
+ ], this.transform);
+ return [
+ tl[0],
+ tl[1],
+ br[0],
+ br[1]
+ ];
+ },
+ convertToPdfPoint: function PageViewport_convertToPdfPoint(x, y) {
+ return Util.applyInverseTransform([
+ x,
+ y
+ ], this.transform);
+ }
+ };
+ return PageViewport;
+}();
+var PDFStringTranslateTable = [
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0x2D8,
+ 0x2C7,
+ 0x2C6,
+ 0x2D9,
+ 0x2DD,
+ 0x2DB,
+ 0x2DA,
+ 0x2DC,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0,
+ 0x2022,
+ 0x2020,
+ 0x2021,
+ 0x2026,
+ 0x2014,
+ 0x2013,
+ 0x192,
+ 0x2044,
+ 0x2039,
+ 0x203A,
+ 0x2212,
+ 0x2030,
+ 0x201E,
+ 0x201C,
+ 0x201D,
+ 0x2018,
+ 0x2019,
+ 0x201A,
+ 0x2122,
+ 0xFB01,
+ 0xFB02,
+ 0x141,
+ 0x152,
+ 0x160,
+ 0x178,
+ 0x17D,
+ 0x131,
+ 0x142,
+ 0x153,
+ 0x161,
+ 0x17E,
+ 0,
+ 0x20AC
+];
+function stringToPDFString(str) {
+ var i, n = str.length, strBuf = [];
+ if (str[0] === '\xFE' && str[1] === '\xFF') {
+ for (i = 2; i < n; i += 2) {
+ strBuf.push(String.fromCharCode(str.charCodeAt(i) << 8 | str.charCodeAt(i + 1)));
+ }
+ } else {
+ for (i = 0; i < n; ++i) {
+ var code = PDFStringTranslateTable[str.charCodeAt(i)];
+ strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));
+ }
+ }
+ return strBuf.join('');
+}
+function stringToUTF8String(str) {
+ return decodeURIComponent(escape(str));
+}
+function utf8StringToString(str) {
+ return unescape(encodeURIComponent(str));
+}
+function isEmptyObj(obj) {
+ for (var key in obj) {
+ return false;
+ }
+ return true;
+}
+function isBool(v) {
+ return typeof v === 'boolean';
+}
+function isInt(v) {
+ return typeof v === 'number' && (v | 0) === v;
+}
+function isNum(v) {
+ return typeof v === 'number';
+}
+function isString(v) {
+ return typeof v === 'string';
+}
+function isArray(v) {
+ return v instanceof Array;
+}
+function isArrayBuffer(v) {
+ return typeof v === 'object' && v !== null && v.byteLength !== undefined;
+}
+function isSpace(ch) {
+ return ch === 0x20 || ch === 0x09 || ch === 0x0D || ch === 0x0A;
+}
+function isNodeJS() {
+ if (typeof __pdfjsdev_webpack__ === 'undefined') {
+ return typeof process === 'object' && process + '' === '[object process]';
+ }
+ return false;
+}
+function createPromiseCapability() {
+ var capability = {};
+ capability.promise = new Promise(function (resolve, reject) {
+ capability.resolve = resolve;
+ capability.reject = reject;
+ });
+ return capability;
+}
+var StatTimer = function StatTimerClosure() {
+ function rpad(str, pad, length) {
+ while (str.length < length) {
+ str += pad;
+ }
+ return str;
+ }
+ function StatTimer() {
+ this.started = Object.create(null);
+ this.times = [];
+ this.enabled = true;
+ }
+ StatTimer.prototype = {
+ time: function StatTimer_time(name) {
+ if (!this.enabled) {
+ return;
+ }
+ if (name in this.started) {
+ warn('Timer is already running for ' + name);
+ }
+ this.started[name] = Date.now();
+ },
+ timeEnd: function StatTimer_timeEnd(name) {
+ if (!this.enabled) {
+ return;
+ }
+ if (!(name in this.started)) {
+ warn('Timer has not been started for ' + name);
+ }
+ this.times.push({
+ 'name': name,
+ 'start': this.started[name],
+ 'end': Date.now()
+ });
+ delete this.started[name];
+ },
+ toString: function StatTimer_toString() {
+ var i, ii;
+ var times = this.times;
+ var out = '';
+ var longest = 0;
+ for (i = 0, ii = times.length; i < ii; ++i) {
+ var name = times[i]['name'];
+ if (name.length > longest) {
+ longest = name.length;
+ }
+ }
+ for (i = 0, ii = times.length; i < ii; ++i) {
+ var span = times[i];
+ var duration = span.end - span.start;
+ out += rpad(span['name'], ' ', longest) + ' ' + duration + 'ms\n';
+ }
+ return out;
+ }
+ };
+ return StatTimer;
+}();
+var createBlob = function createBlob(data, contentType) {
+ if (typeof Blob !== 'undefined') {
+ return new Blob([data], { type: contentType });
+ }
+ warn('The "Blob" constructor is not supported.');
+};
+var createObjectURL = function createObjectURLClosure() {
+ var digits = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
+ return function createObjectURL(data, contentType, forceDataSchema) {
+ if (!forceDataSchema && typeof URL !== 'undefined' && URL.createObjectURL) {
+ var blob = createBlob(data, contentType);
+ return URL.createObjectURL(blob);
+ }
+ var buffer = 'data:' + contentType + ';base64,';
+ for (var i = 0, ii = data.length; i < ii; i += 3) {
+ var b1 = data[i] & 0xFF;
+ var b2 = data[i + 1] & 0xFF;
+ var b3 = data[i + 2] & 0xFF;
+ var d1 = b1 >> 2, d2 = (b1 & 3) << 4 | b2 >> 4;
+ var d3 = i + 1 < ii ? (b2 & 0xF) << 2 | b3 >> 6 : 64;
+ var d4 = i + 2 < ii ? b3 & 0x3F : 64;
+ buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];
+ }
+ return buffer;
+ };
+}();
+function MessageHandler(sourceName, targetName, comObj) {
+ this.sourceName = sourceName;
+ this.targetName = targetName;
+ this.comObj = comObj;
+ this.callbackIndex = 1;
+ this.postMessageTransfers = true;
+ var callbacksCapabilities = this.callbacksCapabilities = Object.create(null);
+ var ah = this.actionHandler = Object.create(null);
+ this._onComObjOnMessage = function messageHandlerComObjOnMessage(event) {
+ var data = event.data;
+ if (data.targetName !== this.sourceName) {
+ return;
+ }
+ if (data.isReply) {
+ var callbackId = data.callbackId;
+ if (data.callbackId in callbacksCapabilities) {
+ var callback = callbacksCapabilities[callbackId];
+ delete callbacksCapabilities[callbackId];
+ if ('error' in data) {
+ callback.reject(data.error);
+ } else {
+ callback.resolve(data.data);
+ }
+ } else {
+ error('Cannot resolve callback ' + callbackId);
+ }
+ } else if (data.action in ah) {
+ var action = ah[data.action];
+ if (data.callbackId) {
+ var sourceName = this.sourceName;
+ var targetName = data.sourceName;
+ Promise.resolve().then(function () {
+ return action[0].call(action[1], data.data);
+ }).then(function (result) {
+ comObj.postMessage({
+ sourceName: sourceName,
+ targetName: targetName,
+ isReply: true,
+ callbackId: data.callbackId,
+ data: result
+ });
+ }, function (reason) {
+ if (reason instanceof Error) {
+ reason = reason + '';
+ }
+ comObj.postMessage({
+ sourceName: sourceName,
+ targetName: targetName,
+ isReply: true,
+ callbackId: data.callbackId,
+ error: reason
+ });
+ });
+ } else {
+ action[0].call(action[1], data.data);
+ }
+ } else {
+ error('Unknown action from worker: ' + data.action);
}
-
- return Uint32ArrayView;
-})();
-
-var IDENTITY_MATRIX = [1, 0, 0, 1, 0, 0];
-
-var Util = PDFJS.Util = (function UtilClosure() {
- function Util() {}
-
- var rgbBuf = ['rgb(', 0, ',', 0, ',', 0, ')'];
-
- // makeCssRgb() can be called thousands of times. Using |rgbBuf| avoids
- // creating many intermediate strings.
- Util.makeCssRgb = function Util_makeCssRgb(r, g, b) {
- rgbBuf[1] = r;
- rgbBuf[3] = g;
- rgbBuf[5] = b;
- return rgbBuf.join('');
- };
-
- // Concatenates two transformation matrices together and returns the result.
- Util.transform = function Util_transform(m1, m2) {
- return [
- m1[0] * m2[0] + m1[2] * m2[1],
- m1[1] * m2[0] + m1[3] * m2[1],
- m1[0] * m2[2] + m1[2] * m2[3],
- m1[1] * m2[2] + m1[3] * m2[3],
- m1[0] * m2[4] + m1[2] * m2[5] + m1[4],
- m1[1] * m2[4] + m1[3] * m2[5] + m1[5]
- ];
- };
-
- // For 2d affine transforms
- Util.applyTransform = function Util_applyTransform(p, m) {
- var xt = p[0] * m[0] + p[1] * m[2] + m[4];
- var yt = p[0] * m[1] + p[1] * m[3] + m[5];
- return [xt, yt];
- };
-
- Util.applyInverseTransform = function Util_applyInverseTransform(p, m) {
- var d = m[0] * m[3] - m[1] * m[2];
- var xt = (p[0] * m[3] - p[1] * m[2] + m[2] * m[5] - m[4] * m[3]) / d;
- var yt = (-p[0] * m[1] + p[1] * m[0] + m[4] * m[1] - m[5] * m[0]) / d;
- return [xt, yt];
- };
-
- // Applies the transform to the rectangle and finds the minimum axially
- // aligned bounding box.
- Util.getAxialAlignedBoundingBox =
- function Util_getAxialAlignedBoundingBox(r, m) {
-
- var p1 = Util.applyTransform(r, m);
- var p2 = Util.applyTransform(r.slice(2, 4), m);
- var p3 = Util.applyTransform([r[0], r[3]], m);
- var p4 = Util.applyTransform([r[2], r[1]], m);
- return [
- Math.min(p1[0], p2[0], p3[0], p4[0]),
- Math.min(p1[1], p2[1], p3[1], p4[1]),
- Math.max(p1[0], p2[0], p3[0], p4[0]),
- Math.max(p1[1], p2[1], p3[1], p4[1])
- ];
- };
-
- Util.inverseTransform = function Util_inverseTransform(m) {
- var d = m[0] * m[3] - m[1] * m[2];
- return [m[3] / d, -m[1] / d, -m[2] / d, m[0] / d,
- (m[2] * m[5] - m[4] * m[3]) / d, (m[4] * m[1] - m[5] * m[0]) / d];
- };
-
- // Apply a generic 3d matrix M on a 3-vector v:
- // | a b c | | X |
- // | d e f | x | Y |
- // | g h i | | Z |
- // M is assumed to be serialized as [a,b,c,d,e,f,g,h,i],
- // with v as [X,Y,Z]
- Util.apply3dTransform = function Util_apply3dTransform(m, v) {
- return [
- m[0] * v[0] + m[1] * v[1] + m[2] * v[2],
- m[3] * v[0] + m[4] * v[1] + m[5] * v[2],
- m[6] * v[0] + m[7] * v[1] + m[8] * v[2]
- ];
+ }.bind(this);
+ comObj.addEventListener('message', this._onComObjOnMessage);
+}
+MessageHandler.prototype = {
+ on: function messageHandlerOn(actionName, handler, scope) {
+ var ah = this.actionHandler;
+ if (ah[actionName]) {
+ error('There is already an actionName called "' + actionName + '"');
+ }
+ ah[actionName] = [
+ handler,
+ scope
+ ];
+ },
+ send: function messageHandlerSend(actionName, data, transfers) {
+ var message = {
+ sourceName: this.sourceName,
+ targetName: this.targetName,
+ action: actionName,
+ data: data
};
-
- // This calculation uses Singular Value Decomposition.
- // The SVD can be represented with formula A = USV. We are interested in the
- // matrix S here because it represents the scale values.
- Util.singularValueDecompose2dScale =
- function Util_singularValueDecompose2dScale(m) {
-
- var transpose = [m[0], m[2], m[1], m[3]];
-
- // Multiply matrix m with its transpose.
- var a = m[0] * transpose[0] + m[1] * transpose[2];
- var b = m[0] * transpose[1] + m[1] * transpose[3];
- var c = m[2] * transpose[0] + m[3] * transpose[2];
- var d = m[2] * transpose[1] + m[3] * transpose[3];
-
- // Solve the second degree polynomial to get roots.
- var first = (a + d) / 2;
- var second = Math.sqrt((a + d) * (a + d) - 4 * (a * d - c * b)) / 2;
- var sx = first + second || 1;
- var sy = first - second || 1;
-
- // Scale values are the square roots of the eigenvalues.
- return [Math.sqrt(sx), Math.sqrt(sy)];
+ this.postMessage(message, transfers);
+ },
+ sendWithPromise: function messageHandlerSendWithPromise(actionName, data, transfers) {
+ var callbackId = this.callbackIndex++;
+ var message = {
+ sourceName: this.sourceName,
+ targetName: this.targetName,
+ action: actionName,
+ data: data,
+ callbackId: callbackId
};
-
- // Normalize rectangle rect=[x1, y1, x2, y2] so that (x1,y1) < (x2,y2)
- // For coordinate systems whose origin lies in the bottom-left, this
- // means normalization to (BL,TR) ordering. For systems with origin in the
- // top-left, this means (TL,BR) ordering.
- Util.normalizeRect = function Util_normalizeRect(rect) {
- var r = rect.slice(0); // clone rect
- if (rect[0] > rect[2]) {
- r[0] = rect[2];
- r[2] = rect[0];
- }
- if (rect[1] > rect[3]) {
- r[1] = rect[3];
- r[3] = rect[1];
- }
- return r;
+ var capability = createPromiseCapability();
+ this.callbacksCapabilities[callbackId] = capability;
+ try {
+ this.postMessage(message, transfers);
+ } catch (e) {
+ capability.reject(e);
+ }
+ return capability.promise;
+ },
+ postMessage: function (message, transfers) {
+ if (transfers && this.postMessageTransfers) {
+ this.comObj.postMessage(message, transfers);
+ } else {
+ this.comObj.postMessage(message);
+ }
+ },
+ destroy: function () {
+ this.comObj.removeEventListener('message', this._onComObjOnMessage);
+ }
+};
+function loadJpegStream(id, imageUrl, objs) {
+ var img = new Image();
+ img.onload = function loadJpegStream_onloadClosure() {
+ objs.resolve(id, img);
+ };
+ img.onerror = function loadJpegStream_onerrorClosure() {
+ objs.resolve(id, null);
+ warn('Error during JPEG image loading');
+ };
+ img.src = imageUrl;
+}
+exports.FONT_IDENTITY_MATRIX = FONT_IDENTITY_MATRIX;
+exports.IDENTITY_MATRIX = IDENTITY_MATRIX;
+exports.OPS = OPS;
+exports.VERBOSITY_LEVELS = VERBOSITY_LEVELS;
+exports.UNSUPPORTED_FEATURES = UNSUPPORTED_FEATURES;
+exports.AnnotationBorderStyleType = AnnotationBorderStyleType;
+exports.AnnotationFieldFlag = AnnotationFieldFlag;
+exports.AnnotationFlag = AnnotationFlag;
+exports.AnnotationType = AnnotationType;
+exports.FontType = FontType;
+exports.ImageKind = ImageKind;
+exports.CMapCompressionType = CMapCompressionType;
+exports.InvalidPDFException = InvalidPDFException;
+exports.MessageHandler = MessageHandler;
+exports.MissingDataException = MissingDataException;
+exports.MissingPDFException = MissingPDFException;
+exports.NotImplementedException = NotImplementedException;
+exports.PageViewport = PageViewport;
+exports.PasswordException = PasswordException;
+exports.PasswordResponses = PasswordResponses;
+exports.StatTimer = StatTimer;
+exports.StreamType = StreamType;
+exports.TextRenderingMode = TextRenderingMode;
+exports.UnexpectedResponseException = UnexpectedResponseException;
+exports.UnknownErrorException = UnknownErrorException;
+exports.Util = Util;
+exports.XRefParseException = XRefParseException;
+exports.arrayByteLength = arrayByteLength;
+exports.arraysToBytes = arraysToBytes;
+exports.assert = assert;
+exports.bytesToString = bytesToString;
+exports.createBlob = createBlob;
+exports.createPromiseCapability = createPromiseCapability;
+exports.createObjectURL = createObjectURL;
+exports.deprecated = deprecated;
+exports.error = error;
+exports.getLookupTableFactory = getLookupTableFactory;
+exports.getVerbosityLevel = getVerbosityLevel;
+exports.globalScope = globalScope;
+exports.info = info;
+exports.isArray = isArray;
+exports.isArrayBuffer = isArrayBuffer;
+exports.isBool = isBool;
+exports.isEmptyObj = isEmptyObj;
+exports.isInt = isInt;
+exports.isNum = isNum;
+exports.isString = isString;
+exports.isSpace = isSpace;
+exports.isNodeJS = isNodeJS;
+exports.isSameOrigin = isSameOrigin;
+exports.createValidAbsoluteUrl = createValidAbsoluteUrl;
+exports.isLittleEndian = isLittleEndian;
+exports.isEvalSupported = isEvalSupported;
+exports.loadJpegStream = loadJpegStream;
+exports.log2 = log2;
+exports.readInt8 = readInt8;
+exports.readUint16 = readUint16;
+exports.readUint32 = readUint32;
+exports.removeNullCharacters = removeNullCharacters;
+exports.setVerbosityLevel = setVerbosityLevel;
+exports.shadow = shadow;
+exports.string32 = string32;
+exports.stringToBytes = stringToBytes;
+exports.stringToPDFString = stringToPDFString;
+exports.stringToUTF8String = stringToUTF8String;
+exports.utf8StringToString = utf8StringToString;
+exports.warn = warn;
+/* WEBPACK VAR INJECTION */}.call(exports, __w_pdfjs_require__(6)))
+
+/***/ }),
+/* 1 */
+/***/ (function(module, exports, __w_pdfjs_require__) {
+
+"use strict";
+
+var sharedUtil = __w_pdfjs_require__(0);
+var assert = sharedUtil.assert;
+var removeNullCharacters = sharedUtil.removeNullCharacters;
+var warn = sharedUtil.warn;
+var deprecated = sharedUtil.deprecated;
+var createValidAbsoluteUrl = sharedUtil.createValidAbsoluteUrl;
+var stringToBytes = sharedUtil.stringToBytes;
+var CMapCompressionType = sharedUtil.CMapCompressionType;
+var DEFAULT_LINK_REL = 'noopener noreferrer nofollow';
+function DOMCanvasFactory() {
+}
+DOMCanvasFactory.prototype = {
+ create: function DOMCanvasFactory_create(width, height) {
+ assert(width > 0 && height > 0, 'invalid canvas size');
+ var canvas = document.createElement('canvas');
+ var context = canvas.getContext('2d');
+ canvas.width = width;
+ canvas.height = height;
+ return {
+ canvas: canvas,
+ context: context
};
-
- // Returns a rectangle [x1, y1, x2, y2] corresponding to the
- // intersection of rect1 and rect2. If no intersection, returns 'false'
- // The rectangle coordinates of rect1, rect2 should be [x1, y1, x2, y2]
- Util.intersect = function Util_intersect(rect1, rect2) {
- function compare(a, b) {
- return a - b;
- }
-
- // Order points along the axes
- var orderedX = [rect1[0], rect1[2], rect2[0], rect2[2]].sort(compare),
- orderedY = [rect1[1], rect1[3], rect2[1], rect2[3]].sort(compare),
- result = [];
-
- rect1 = Util.normalizeRect(rect1);
- rect2 = Util.normalizeRect(rect2);
-
- // X: first and second points belong to different rectangles?
- if ((orderedX[0] === rect1[0] && orderedX[1] === rect2[0]) ||
- (orderedX[0] === rect2[0] && orderedX[1] === rect1[0])) {
- // Intersection must be between second and third points
- result[0] = orderedX[1];
- result[2] = orderedX[2];
- } else {
- return false;
- }
-
- // Y: first and second points belong to different rectangles?
- if ((orderedY[0] === rect1[1] && orderedY[1] === rect2[1]) ||
- (orderedY[0] === rect2[1] && orderedY[1] === rect1[1])) {
- // Intersection must be between second and third points
- result[1] = orderedY[1];
- result[3] = orderedY[2];
- } else {
- return false;
- }
-
- return result;
- };
-
- Util.sign = function Util_sign(num) {
- return num < 0 ? -1 : 1;
- };
-
- Util.appendToArray = function Util_appendToArray(arr1, arr2) {
- Array.prototype.push.apply(arr1, arr2);
- };
-
- Util.prependToArray = function Util_prependToArray(arr1, arr2) {
- Array.prototype.unshift.apply(arr1, arr2);
- };
-
- Util.extendObj = function extendObj(obj1, obj2) {
- for (var key in obj2) {
- obj1[key] = obj2[key];
- }
- };
-
- Util.getInheritableProperty = function Util_getInheritableProperty(dict,
- name) {
- while (dict && !dict.has(name)) {
- dict = dict.get('Parent');
- }
- if (!dict) {
- return null;
- }
- return dict.get(name);
- };
-
- Util.inherit = function Util_inherit(sub, base, prototype) {
- sub.prototype = Object.create(base.prototype);
- sub.prototype.constructor = sub;
- for (var prop in prototype) {
- sub.prototype[prop] = prototype[prop];
- }
- };
-
- Util.loadScript = function Util_loadScript(src, callback) {
- var script = document.createElement('script');
- var loaded = false;
- script.setAttribute('src', src);
- if (callback) {
- script.onload = function() {
- if (!loaded) {
- callback();
- }
- loaded = true;
- };
- }
- document.getElementsByTagName('head')[0].appendChild(script);
- };
-
- return Util;
-})();
-
-/**
- * PDF page viewport created based on scale, rotation and offset.
- * @class
- * @alias PDFJS.PageViewport
- */
-var PageViewport = PDFJS.PageViewport = (function PageViewportClosure() {
- /**
- * @constructor
- * @private
- * @param viewBox {Array} xMin, yMin, xMax and yMax coordinates.
- * @param scale {number} scale of the viewport.
- * @param rotation {number} rotations of the viewport in degrees.
- * @param offsetX {number} offset X
- * @param offsetY {number} offset Y
- * @param dontFlip {boolean} if true, axis Y will not be flipped.
- */
- function PageViewport(viewBox, scale, rotation, offsetX, offsetY, dontFlip) {
- this.viewBox = viewBox;
- this.scale = scale;
- this.rotation = rotation;
- this.offsetX = offsetX;
- this.offsetY = offsetY;
-
- // creating transform to convert pdf coordinate system to the normal
- // canvas like coordinates taking in account scale and rotation
- var centerX = (viewBox[2] + viewBox[0]) / 2;
- var centerY = (viewBox[3] + viewBox[1]) / 2;
- var rotateA, rotateB, rotateC, rotateD;
- rotation = rotation % 360;
- rotation = rotation < 0 ? rotation + 360 : rotation;
- switch (rotation) {
- case 180:
- rotateA = -1; rotateB = 0; rotateC = 0; rotateD = 1;
- break;
- case 90:
- rotateA = 0; rotateB = 1; rotateC = 1; rotateD = 0;
- break;
- case 270:
- rotateA = 0; rotateB = -1; rotateC = -1; rotateD = 0;
- break;
- //case 0:
- default:
- rotateA = 1; rotateB = 0; rotateC = 0; rotateD = -1;
- break;
- }
-
- if (dontFlip) {
- rotateC = -rotateC; rotateD = -rotateD;
- }
-
- var offsetCanvasX, offsetCanvasY;
- var width, height;
- if (rotateA === 0) {
- offsetCanvasX = Math.abs(centerY - viewBox[1]) * scale + offsetX;
- offsetCanvasY = Math.abs(centerX - viewBox[0]) * scale + offsetY;
- width = Math.abs(viewBox[3] - viewBox[1]) * scale;
- height = Math.abs(viewBox[2] - viewBox[0]) * scale;
- } else {
- offsetCanvasX = Math.abs(centerX - viewBox[0]) * scale + offsetX;
- offsetCanvasY = Math.abs(centerY - viewBox[1]) * scale + offsetY;
- width = Math.abs(viewBox[2] - viewBox[0]) * scale;
- height = Math.abs(viewBox[3] - viewBox[1]) * scale;
- }
- // creating transform for the following operations:
- // translate(-centerX, -centerY), rotate and flip vertically,
- // scale, and translate(offsetCanvasX, offsetCanvasY)
- this.transform = [
- rotateA * scale,
- rotateB * scale,
- rotateC * scale,
- rotateD * scale,
- offsetCanvasX - rotateA * scale * centerX - rotateC * scale * centerY,
- offsetCanvasY - rotateB * scale * centerX - rotateD * scale * centerY
- ];
-
- this.width = width;
- this.height = height;
- this.fontScale = scale;
- }
- PageViewport.prototype = /** @lends PDFJS.PageViewport.prototype */ {
- /**
- * Clones viewport with additional properties.
- * @param args {Object} (optional) If specified, may contain the 'scale' or
- * 'rotation' properties to override the corresponding properties in
- * the cloned viewport.
- * @returns {PDFJS.PageViewport} Cloned viewport.
- */
- clone: function PageViewPort_clone(args) {
- args = args || {};
- var scale = 'scale' in args ? args.scale : this.scale;
- var rotation = 'rotation' in args ? args.rotation : this.rotation;
- return new PageViewport(this.viewBox.slice(), scale, rotation,
- this.offsetX, this.offsetY, args.dontFlip);
- },
- /**
- * Converts PDF point to the viewport coordinates. For examples, useful for
- * converting PDF location into canvas pixel coordinates.
- * @param x {number} X coordinate.
- * @param y {number} Y coordinate.
- * @returns {Object} Object that contains 'x' and 'y' properties of the
- * point in the viewport coordinate space.
- * @see {@link convertToPdfPoint}
- * @see {@link convertToViewportRectangle}
- */
- convertToViewportPoint: function PageViewport_convertToViewportPoint(x, y) {
- return Util.applyTransform([x, y], this.transform);
- },
- /**
- * Converts PDF rectangle to the viewport coordinates.
- * @param rect {Array} xMin, yMin, xMax and yMax coordinates.
- * @returns {Array} Contains corresponding coordinates of the rectangle
- * in the viewport coordinate space.
- * @see {@link convertToViewportPoint}
- */
- convertToViewportRectangle:
- function PageViewport_convertToViewportRectangle(rect) {
- var tl = Util.applyTransform([rect[0], rect[1]], this.transform);
- var br = Util.applyTransform([rect[2], rect[3]], this.transform);
- return [tl[0], tl[1], br[0], br[1]];
- },
- /**
- * Converts viewport coordinates to the PDF location. For examples, useful
- * for converting canvas pixel location into PDF one.
- * @param x {number} X coordinate.
- * @param y {number} Y coordinate.
- * @returns {Object} Object that contains 'x' and 'y' properties of the
- * point in the PDF coordinate space.
- * @see {@link convertToViewportPoint}
- */
- convertToPdfPoint: function PageViewport_convertToPdfPoint(x, y) {
- return Util.applyInverseTransform([x, y], this.transform);
- }
- };
- return PageViewport;
-})();
-
-var PDFStringTranslateTable = [
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0x2D8, 0x2C7, 0x2C6, 0x2D9, 0x2DD, 0x2DB, 0x2DA, 0x2DC, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0x2022, 0x2020, 0x2021, 0x2026, 0x2014,
- 0x2013, 0x192, 0x2044, 0x2039, 0x203A, 0x2212, 0x2030, 0x201E, 0x201C,
- 0x201D, 0x2018, 0x2019, 0x201A, 0x2122, 0xFB01, 0xFB02, 0x141, 0x152, 0x160,
- 0x178, 0x17D, 0x131, 0x142, 0x153, 0x161, 0x17E, 0, 0x20AC
+ },
+ reset: function DOMCanvasFactory_reset(canvasAndContextPair, width, height) {
+ assert(canvasAndContextPair.canvas, 'canvas is not specified');
+ assert(width > 0 && height > 0, 'invalid canvas size');
+ canvasAndContextPair.canvas.width = width;
+ canvasAndContextPair.canvas.height = height;
+ },
+ destroy: function DOMCanvasFactory_destroy(canvasAndContextPair) {
+ assert(canvasAndContextPair.canvas, 'canvas is not specified');
+ canvasAndContextPair.canvas.width = 0;
+ canvasAndContextPair.canvas.height = 0;
+ canvasAndContextPair.canvas = null;
+ canvasAndContextPair.context = null;
+ }
+};
+var DOMCMapReaderFactory = function DOMCMapReaderFactoryClosure() {
+ function DOMCMapReaderFactory(params) {
+ this.baseUrl = params.baseUrl || null;
+ this.isCompressed = params.isCompressed || false;
+ }
+ DOMCMapReaderFactory.prototype = {
+ fetch: function (params) {
+ if (!params.name) {
+ return Promise.reject(new Error('CMap name must be specified.'));
+ }
+ return new Promise(function (resolve, reject) {
+ var url = this.baseUrl + params.name;
+ var request = new XMLHttpRequest();
+ if (this.isCompressed) {
+ url += '.bcmap';
+ request.responseType = 'arraybuffer';
+ }
+ request.onreadystatechange = function () {
+ if (request.readyState === XMLHttpRequest.DONE && (request.status === 200 || request.status === 0)) {
+ var data;
+ if (this.isCompressed && request.response) {
+ data = new Uint8Array(request.response);
+ } else if (!this.isCompressed && request.responseText) {
+ data = stringToBytes(request.responseText);
+ }
+ if (data) {
+ resolve({
+ cMapData: data,
+ compressionType: this.isCompressed ? CMapCompressionType.BINARY : CMapCompressionType.NONE
+ });
+ return;
+ }
+ reject(new Error('Unable to load ' + (this.isCompressed ? 'binary' : '') + ' CMap at: ' + url));
+ }
+ }.bind(this);
+ request.open('GET', url, true);
+ request.send(null);
+ }.bind(this));
+ }
+ };
+ return DOMCMapReaderFactory;
+}();
+var CustomStyle = function CustomStyleClosure() {
+ var prefixes = [
+ 'ms',
+ 'Moz',
+ 'Webkit',
+ 'O'
+ ];
+ var _cache = Object.create(null);
+ function CustomStyle() {
+ }
+ CustomStyle.getProp = function get(propName, element) {
+ if (arguments.length === 1 && typeof _cache[propName] === 'string') {
+ return _cache[propName];
+ }
+ element = element || document.documentElement;
+ var style = element.style, prefixed, uPropName;
+ if (typeof style[propName] === 'string') {
+ return _cache[propName] = propName;
+ }
+ uPropName = propName.charAt(0).toUpperCase() + propName.slice(1);
+ for (var i = 0, l = prefixes.length; i < l; i++) {
+ prefixed = prefixes[i] + uPropName;
+ if (typeof style[prefixed] === 'string') {
+ return _cache[propName] = prefixed;
+ }
+ }
+ return _cache[propName] = 'undefined';
+ };
+ CustomStyle.setProp = function set(propName, element, str) {
+ var prop = this.getProp(propName);
+ if (prop !== 'undefined') {
+ element.style[prop] = str;
+ }
+ };
+ return CustomStyle;
+}();
+var hasCanvasTypedArrays;
+hasCanvasTypedArrays = function hasCanvasTypedArrays() {
+ var canvas = document.createElement('canvas');
+ canvas.width = canvas.height = 1;
+ var ctx = canvas.getContext('2d');
+ var imageData = ctx.createImageData(1, 1);
+ return typeof imageData.data.buffer !== 'undefined';
+};
+var LinkTarget = {
+ NONE: 0,
+ SELF: 1,
+ BLANK: 2,
+ PARENT: 3,
+ TOP: 4
+};
+var LinkTargetStringMap = [
+ '',
+ '_self',
+ '_blank',
+ '_parent',
+ '_top'
];
-
-function stringToPDFString(str) {
- var i, n = str.length, strBuf = [];
- if (str[0] === '\xFE' && str[1] === '\xFF') {
- // UTF16BE BOM
- for (i = 2; i < n; i += 2) {
- strBuf.push(String.fromCharCode(
- (str.charCodeAt(i) << 8) | str.charCodeAt(i + 1)));
- }
- } else {
- for (i = 0; i < n; ++i) {
- var code = PDFStringTranslateTable[str.charCodeAt(i)];
- strBuf.push(code ? String.fromCharCode(code) : str.charAt(i));
- }
- }
- return strBuf.join('');
+function addLinkAttributes(link, params) {
+ var url = params && params.url;
+ link.href = link.title = url ? removeNullCharacters(url) : '';
+ if (url) {
+ var target = params.target;
+ if (typeof target === 'undefined') {
+ target = getDefaultSetting('externalLinkTarget');
+ }
+ link.target = LinkTargetStringMap[target];
+ var rel = params.rel;
+ if (typeof rel === 'undefined') {
+ rel = getDefaultSetting('externalLinkRel');
+ }
+ link.rel = rel;
+ }
}
-
-function stringToUTF8String(str) {
- return decodeURIComponent(escape(str));
+function getFilenameFromUrl(url) {
+ var anchor = url.indexOf('#');
+ var query = url.indexOf('?');
+ var end = Math.min(anchor > 0 ? anchor : url.length, query > 0 ? query : url.length);
+ return url.substring(url.lastIndexOf('/', end) + 1, end);
}
-
-function utf8StringToString(str) {
- return unescape(encodeURIComponent(str));
+function getDefaultSetting(id) {
+ var globalSettings = sharedUtil.globalScope.PDFJS;
+ switch (id) {
+ case 'pdfBug':
+ return globalSettings ? globalSettings.pdfBug : false;
+ case 'disableAutoFetch':
+ return globalSettings ? globalSettings.disableAutoFetch : false;
+ case 'disableStream':
+ return globalSettings ? globalSettings.disableStream : false;
+ case 'disableRange':
+ return globalSettings ? globalSettings.disableRange : false;
+ case 'disableFontFace':
+ return globalSettings ? globalSettings.disableFontFace : false;
+ case 'disableCreateObjectURL':
+ return globalSettings ? globalSettings.disableCreateObjectURL : false;
+ case 'disableWebGL':
+ return globalSettings ? globalSettings.disableWebGL : true;
+ case 'cMapUrl':
+ return globalSettings ? globalSettings.cMapUrl : null;
+ case 'cMapPacked':
+ return globalSettings ? globalSettings.cMapPacked : false;
+ case 'postMessageTransfers':
+ return globalSettings ? globalSettings.postMessageTransfers : true;
+ case 'workerPort':
+ return globalSettings ? globalSettings.workerPort : null;
+ case 'workerSrc':
+ return globalSettings ? globalSettings.workerSrc : null;
+ case 'disableWorker':
+ return globalSettings ? globalSettings.disableWorker : false;
+ case 'maxImageSize':
+ return globalSettings ? globalSettings.maxImageSize : -1;
+ case 'imageResourcesPath':
+ return globalSettings ? globalSettings.imageResourcesPath : '';
+ case 'isEvalSupported':
+ return globalSettings ? globalSettings.isEvalSupported : true;
+ case 'externalLinkTarget':
+ if (!globalSettings) {
+ return LinkTarget.NONE;
+ }
+ switch (globalSettings.externalLinkTarget) {
+ case LinkTarget.NONE:
+ case LinkTarget.SELF:
+ case LinkTarget.BLANK:
+ case LinkTarget.PARENT:
+ case LinkTarget.TOP:
+ return globalSettings.externalLinkTarget;
+ }
+ warn('PDFJS.externalLinkTarget is invalid: ' + globalSettings.externalLinkTarget);
+ globalSettings.externalLinkTarget = LinkTarget.NONE;
+ return LinkTarget.NONE;
+ case 'externalLinkRel':
+ return globalSettings ? globalSettings.externalLinkRel : DEFAULT_LINK_REL;
+ case 'enableStats':
+ return !!(globalSettings && globalSettings.enableStats);
+ default:
+ throw new Error('Unknown default setting: ' + id);
+ }
}
-
-function isEmptyObj(obj) {
- for (var key in obj) {
- return false;
- }
+function isExternalLinkTargetSet() {
+ var externalLinkTarget = getDefaultSetting('externalLinkTarget');
+ switch (externalLinkTarget) {
+ case LinkTarget.NONE:
+ return false;
+ case LinkTarget.SELF:
+ case LinkTarget.BLANK:
+ case LinkTarget.PARENT:
+ case LinkTarget.TOP:
return true;
+ }
}
-
-function isBool(v) {
- return typeof v === 'boolean';
-}
-
-function isInt(v) {
- return typeof v === 'number' && ((v | 0) === v);
-}
-
-function isNum(v) {
- return typeof v === 'number';
-}
-
-function isString(v) {
- return typeof v === 'string';
-}
-
-function isName(v) {
- return v instanceof Name;
+function isValidUrl(url, allowRelative) {
+ deprecated('isValidUrl(), please use createValidAbsoluteUrl() instead.');
+ var baseUrl = allowRelative ? 'http://example.com' : null;
+ return createValidAbsoluteUrl(url, baseUrl) !== null;
}
-
-function isCmd(v, cmd) {
- return v instanceof Cmd && (cmd === undefined || v.cmd === cmd);
+exports.CustomStyle = CustomStyle;
+exports.addLinkAttributes = addLinkAttributes;
+exports.isExternalLinkTargetSet = isExternalLinkTargetSet;
+exports.isValidUrl = isValidUrl;
+exports.getFilenameFromUrl = getFilenameFromUrl;
+exports.LinkTarget = LinkTarget;
+exports.hasCanvasTypedArrays = hasCanvasTypedArrays;
+exports.getDefaultSetting = getDefaultSetting;
+exports.DEFAULT_LINK_REL = DEFAULT_LINK_REL;
+exports.DOMCanvasFactory = DOMCanvasFactory;
+exports.DOMCMapReaderFactory = DOMCMapReaderFactory;
+
+/***/ }),
+/* 2 */
+/***/ (function(module, exports, __w_pdfjs_require__) {
+
+"use strict";
+
+var sharedUtil = __w_pdfjs_require__(0);
+var displayDOMUtils = __w_pdfjs_require__(1);
+var AnnotationBorderStyleType = sharedUtil.AnnotationBorderStyleType;
+var AnnotationType = sharedUtil.AnnotationType;
+var stringToPDFString = sharedUtil.stringToPDFString;
+var Util = sharedUtil.Util;
+var addLinkAttributes = displayDOMUtils.addLinkAttributes;
+var LinkTarget = displayDOMUtils.LinkTarget;
+var getFilenameFromUrl = displayDOMUtils.getFilenameFromUrl;
+var warn = sharedUtil.warn;
+var CustomStyle = displayDOMUtils.CustomStyle;
+var getDefaultSetting = displayDOMUtils.getDefaultSetting;
+function AnnotationElementFactory() {
}
-
-function isDict(v, type) {
- if (!(v instanceof Dict)) {
+AnnotationElementFactory.prototype = {
+ create: function AnnotationElementFactory_create(parameters) {
+ var subtype = parameters.data.annotationType;
+ switch (subtype) {
+ case AnnotationType.LINK:
+ return new LinkAnnotationElement(parameters);
+ case AnnotationType.TEXT:
+ return new TextAnnotationElement(parameters);
+ case AnnotationType.WIDGET:
+ var fieldType = parameters.data.fieldType;
+ switch (fieldType) {
+ case 'Tx':
+ return new TextWidgetAnnotationElement(parameters);
+ case 'Btn':
+ if (parameters.data.radioButton) {
+ return new RadioButtonWidgetAnnotationElement(parameters);
+ } else if (parameters.data.checkBox) {
+ return new CheckboxWidgetAnnotationElement(parameters);
+ }
+ warn('Unimplemented button widget annotation: pushbutton');
+ break;
+ case 'Ch':
+ return new ChoiceWidgetAnnotationElement(parameters);
+ }
+ return new WidgetAnnotationElement(parameters);
+ case AnnotationType.POPUP:
+ return new PopupAnnotationElement(parameters);
+ case AnnotationType.HIGHLIGHT:
+ return new HighlightAnnotationElement(parameters);
+ case AnnotationType.UNDERLINE:
+ return new UnderlineAnnotationElement(parameters);
+ case AnnotationType.SQUIGGLY:
+ return new SquigglyAnnotationElement(parameters);
+ case AnnotationType.STRIKEOUT:
+ return new StrikeOutAnnotationElement(parameters);
+ case AnnotationType.FILEATTACHMENT:
+ return new FileAttachmentAnnotationElement(parameters);
+ default:
+ return new AnnotationElement(parameters);
+ }
+ }
+};
+var AnnotationElement = function AnnotationElementClosure() {
+ function AnnotationElement(parameters, isRenderable) {
+ this.isRenderable = isRenderable || false;
+ this.data = parameters.data;
+ this.layer = parameters.layer;
+ this.page = parameters.page;
+ this.viewport = parameters.viewport;
+ this.linkService = parameters.linkService;
+ this.downloadManager = parameters.downloadManager;
+ this.imageResourcesPath = parameters.imageResourcesPath;
+ this.renderInteractiveForms = parameters.renderInteractiveForms;
+ if (isRenderable) {
+ this.container = this._createContainer();
+ }
+ }
+ AnnotationElement.prototype = {
+ _createContainer: function AnnotationElement_createContainer() {
+ var data = this.data, page = this.page, viewport = this.viewport;
+ var container = document.createElement('section');
+ var width = data.rect[2] - data.rect[0];
+ var height = data.rect[3] - data.rect[1];
+ container.setAttribute('data-annotation-id', data.id);
+ var rect = Util.normalizeRect([
+ data.rect[0],
+ page.view[3] - data.rect[1] + page.view[1],
+ data.rect[2],
+ page.view[3] - data.rect[3] + page.view[1]
+ ]);
+ CustomStyle.setProp('transform', container, 'matrix(' + viewport.transform.join(',') + ')');
+ CustomStyle.setProp('transformOrigin', container, -rect[0] + 'px ' + -rect[1] + 'px');
+ if (data.borderStyle.width > 0) {
+ container.style.borderWidth = data.borderStyle.width + 'px';
+ if (data.borderStyle.style !== AnnotationBorderStyleType.UNDERLINE) {
+ width = width - 2 * data.borderStyle.width;
+ height = height - 2 * data.borderStyle.width;
+ }
+ var horizontalRadius = data.borderStyle.horizontalCornerRadius;
+ var verticalRadius = data.borderStyle.verticalCornerRadius;
+ if (horizontalRadius > 0 || verticalRadius > 0) {
+ var radius = horizontalRadius + 'px / ' + verticalRadius + 'px';
+ CustomStyle.setProp('borderRadius', container, radius);
+ }
+ switch (data.borderStyle.style) {
+ case AnnotationBorderStyleType.SOLID:
+ container.style.borderStyle = 'solid';
+ break;
+ case AnnotationBorderStyleType.DASHED:
+ container.style.borderStyle = 'dashed';
+ break;
+ case AnnotationBorderStyleType.BEVELED:
+ warn('Unimplemented border style: beveled');
+ break;
+ case AnnotationBorderStyleType.INSET:
+ warn('Unimplemented border style: inset');
+ break;
+ case AnnotationBorderStyleType.UNDERLINE:
+ container.style.borderBottomStyle = 'solid';
+ break;
+ default:
+ break;
+ }
+ if (data.color) {
+ container.style.borderColor = Util.makeCssRgb(data.color[0] | 0, data.color[1] | 0, data.color[2] | 0);
+ } else {
+ container.style.borderWidth = 0;
+ }
+ }
+ container.style.left = rect[0] + 'px';
+ container.style.top = rect[1] + 'px';
+ container.style.width = width + 'px';
+ container.style.height = height + 'px';
+ return container;
+ },
+ _createPopup: function AnnotationElement_createPopup(container, trigger, data) {
+ if (!trigger) {
+ trigger = document.createElement('div');
+ trigger.style.height = container.style.height;
+ trigger.style.width = container.style.width;
+ container.appendChild(trigger);
+ }
+ var popupElement = new PopupElement({
+ container: container,
+ trigger: trigger,
+ color: data.color,
+ title: data.title,
+ contents: data.contents,
+ hideWrapper: true
+ });
+ var popup = popupElement.render();
+ popup.style.left = container.style.width;
+ container.appendChild(popup);
+ },
+ render: function AnnotationElement_render() {
+ throw new Error('Abstract method AnnotationElement.render called');
+ }
+ };
+ return AnnotationElement;
+}();
+var LinkAnnotationElement = function LinkAnnotationElementClosure() {
+ function LinkAnnotationElement(parameters) {
+ AnnotationElement.call(this, parameters, true);
+ }
+ Util.inherit(LinkAnnotationElement, AnnotationElement, {
+ render: function LinkAnnotationElement_render() {
+ this.container.className = 'linkAnnotation';
+ var link = document.createElement('a');
+ addLinkAttributes(link, {
+ url: this.data.url,
+ target: this.data.newWindow ? LinkTarget.BLANK : undefined
+ });
+ if (!this.data.url) {
+ if (this.data.action) {
+ this._bindNamedAction(link, this.data.action);
+ } else {
+ this._bindLink(link, this.data.dest);
+ }
+ }
+ this.container.appendChild(link);
+ return this.container;
+ },
+ _bindLink: function LinkAnnotationElement_bindLink(link, destination) {
+ var self = this;
+ link.href = this.linkService.getDestinationHash(destination);
+ link.onclick = function () {
+ if (destination) {
+ self.linkService.navigateTo(destination);
+ }
return false;
- }
- if (!type) {
- return true;
- }
- var dictType = v.get('Type');
- return isName(dictType) && dictType.name === type;
-}
-
-function isArray(v) {
- return v instanceof Array;
-}
-
-function isStream(v) {
- return typeof v === 'object' && v !== null && v.getBytes !== undefined;
-}
-
-function isArrayBuffer(v) {
- return typeof v === 'object' && v !== null && v.byteLength !== undefined;
-}
-
-function isRef(v) {
- return v instanceof Ref;
+ };
+ if (destination) {
+ link.className = 'internalLink';
+ }
+ },
+ _bindNamedAction: function LinkAnnotationElement_bindNamedAction(link, action) {
+ var self = this;
+ link.href = this.linkService.getAnchorUrl('');
+ link.onclick = function () {
+ self.linkService.executeNamedAction(action);
+ return false;
+ };
+ link.className = 'internalLink';
+ }
+ });
+ return LinkAnnotationElement;
+}();
+var TextAnnotationElement = function TextAnnotationElementClosure() {
+ function TextAnnotationElement(parameters) {
+ var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+ AnnotationElement.call(this, parameters, isRenderable);
+ }
+ Util.inherit(TextAnnotationElement, AnnotationElement, {
+ render: function TextAnnotationElement_render() {
+ this.container.className = 'textAnnotation';
+ var image = document.createElement('img');
+ image.style.height = this.container.style.height;
+ image.style.width = this.container.style.width;
+ image.src = this.imageResourcesPath + 'annotation-' + this.data.name.toLowerCase() + '.svg';
+ image.alt = '[{{type}} Annotation]';
+ image.dataset.l10nId = 'text_annotation_type';
+ image.dataset.l10nArgs = JSON.stringify({ type: this.data.name });
+ if (!this.data.hasPopup) {
+ this._createPopup(this.container, image, this.data);
+ }
+ this.container.appendChild(image);
+ return this.container;
+ }
+ });
+ return TextAnnotationElement;
+}();
+var WidgetAnnotationElement = function WidgetAnnotationElementClosure() {
+ function WidgetAnnotationElement(parameters, isRenderable) {
+ AnnotationElement.call(this, parameters, isRenderable);
+ }
+ Util.inherit(WidgetAnnotationElement, AnnotationElement, {
+ render: function WidgetAnnotationElement_render() {
+ return this.container;
+ }
+ });
+ return WidgetAnnotationElement;
+}();
+var TextWidgetAnnotationElement = function TextWidgetAnnotationElementClosure() {
+ var TEXT_ALIGNMENT = [
+ 'left',
+ 'center',
+ 'right'
+ ];
+ function TextWidgetAnnotationElement(parameters) {
+ var isRenderable = parameters.renderInteractiveForms || !parameters.data.hasAppearance && !!parameters.data.fieldValue;
+ WidgetAnnotationElement.call(this, parameters, isRenderable);
+ }
+ Util.inherit(TextWidgetAnnotationElement, WidgetAnnotationElement, {
+ render: function TextWidgetAnnotationElement_render() {
+ this.container.className = 'textWidgetAnnotation';
+ var element = null;
+ if (this.renderInteractiveForms) {
+ if (this.data.multiLine) {
+ element = document.createElement('textarea');
+ element.textContent = this.data.fieldValue;
+ } else {
+ element = document.createElement('input');
+ element.type = 'text';
+ element.setAttribute('value', this.data.fieldValue);
+ }
+ element.disabled = this.data.readOnly;
+ if (this.data.maxLen !== null) {
+ element.maxLength = this.data.maxLen;
+ }
+ if (this.data.comb) {
+ var fieldWidth = this.data.rect[2] - this.data.rect[0];
+ var combWidth = fieldWidth / this.data.maxLen;
+ element.classList.add('comb');
+ element.style.letterSpacing = 'calc(' + combWidth + 'px - 1ch)';
+ }
+ } else {
+ element = document.createElement('div');
+ element.textContent = this.data.fieldValue;
+ element.style.verticalAlign = 'middle';
+ element.style.display = 'table-cell';
+ var font = null;
+ if (this.data.fontRefName) {
+ font = this.page.commonObjs.getData(this.data.fontRefName);
+ }
+ this._setTextStyle(element, font);
+ }
+ if (this.data.textAlignment !== null) {
+ element.style.textAlign = TEXT_ALIGNMENT[this.data.textAlignment];
+ }
+ this.container.appendChild(element);
+ return this.container;
+ },
+ _setTextStyle: function TextWidgetAnnotationElement_setTextStyle(element, font) {
+ var style = element.style;
+ style.fontSize = this.data.fontSize + 'px';
+ style.direction = this.data.fontDirection < 0 ? 'rtl' : 'ltr';
+ if (!font) {
+ return;
+ }
+ style.fontWeight = font.black ? font.bold ? '900' : 'bold' : font.bold ? 'bold' : 'normal';
+ style.fontStyle = font.italic ? 'italic' : 'normal';
+ var fontFamily = font.loadedName ? '"' + font.loadedName + '", ' : '';
+ var fallbackName = font.fallbackName || 'Helvetica, sans-serif';
+ style.fontFamily = fontFamily + fallbackName;
+ }
+ });
+ return TextWidgetAnnotationElement;
+}();
+var CheckboxWidgetAnnotationElement = function CheckboxWidgetAnnotationElementClosure() {
+ function CheckboxWidgetAnnotationElement(parameters) {
+ WidgetAnnotationElement.call(this, parameters, parameters.renderInteractiveForms);
+ }
+ Util.inherit(CheckboxWidgetAnnotationElement, WidgetAnnotationElement, {
+ render: function CheckboxWidgetAnnotationElement_render() {
+ this.container.className = 'buttonWidgetAnnotation checkBox';
+ var element = document.createElement('input');
+ element.disabled = this.data.readOnly;
+ element.type = 'checkbox';
+ if (this.data.fieldValue && this.data.fieldValue !== 'Off') {
+ element.setAttribute('checked', true);
+ }
+ this.container.appendChild(element);
+ return this.container;
+ }
+ });
+ return CheckboxWidgetAnnotationElement;
+}();
+var RadioButtonWidgetAnnotationElement = function RadioButtonWidgetAnnotationElementClosure() {
+ function RadioButtonWidgetAnnotationElement(parameters) {
+ WidgetAnnotationElement.call(this, parameters, parameters.renderInteractiveForms);
+ }
+ Util.inherit(RadioButtonWidgetAnnotationElement, WidgetAnnotationElement, {
+ render: function RadioButtonWidgetAnnotationElement_render() {
+ this.container.className = 'buttonWidgetAnnotation radioButton';
+ var element = document.createElement('input');
+ element.disabled = this.data.readOnly;
+ element.type = 'radio';
+ element.name = this.data.fieldName;
+ if (this.data.fieldValue === this.data.buttonValue) {
+ element.setAttribute('checked', true);
+ }
+ this.container.appendChild(element);
+ return this.container;
+ }
+ });
+ return RadioButtonWidgetAnnotationElement;
+}();
+var ChoiceWidgetAnnotationElement = function ChoiceWidgetAnnotationElementClosure() {
+ function ChoiceWidgetAnnotationElement(parameters) {
+ WidgetAnnotationElement.call(this, parameters, parameters.renderInteractiveForms);
+ }
+ Util.inherit(ChoiceWidgetAnnotationElement, WidgetAnnotationElement, {
+ render: function ChoiceWidgetAnnotationElement_render() {
+ this.container.className = 'choiceWidgetAnnotation';
+ var selectElement = document.createElement('select');
+ selectElement.disabled = this.data.readOnly;
+ if (!this.data.combo) {
+ selectElement.size = this.data.options.length;
+ if (this.data.multiSelect) {
+ selectElement.multiple = true;
+ }
+ }
+ for (var i = 0, ii = this.data.options.length; i < ii; i++) {
+ var option = this.data.options[i];
+ var optionElement = document.createElement('option');
+ optionElement.textContent = option.displayValue;
+ optionElement.value = option.exportValue;
+ if (this.data.fieldValue.indexOf(option.displayValue) >= 0) {
+ optionElement.setAttribute('selected', true);
+ }
+ selectElement.appendChild(optionElement);
+ }
+ this.container.appendChild(selectElement);
+ return this.container;
+ }
+ });
+ return ChoiceWidgetAnnotationElement;
+}();
+var PopupAnnotationElement = function PopupAnnotationElementClosure() {
+ function PopupAnnotationElement(parameters) {
+ var isRenderable = !!(parameters.data.title || parameters.data.contents);
+ AnnotationElement.call(this, parameters, isRenderable);
+ }
+ Util.inherit(PopupAnnotationElement, AnnotationElement, {
+ render: function PopupAnnotationElement_render() {
+ this.container.className = 'popupAnnotation';
+ var selector = '[data-annotation-id="' + this.data.parentId + '"]';
+ var parentElement = this.layer.querySelector(selector);
+ if (!parentElement) {
+ return this.container;
+ }
+ var popup = new PopupElement({
+ container: this.container,
+ trigger: parentElement,
+ color: this.data.color,
+ title: this.data.title,
+ contents: this.data.contents
+ });
+ var parentLeft = parseFloat(parentElement.style.left);
+ var parentWidth = parseFloat(parentElement.style.width);
+ CustomStyle.setProp('transformOrigin', this.container, -(parentLeft + parentWidth) + 'px -' + parentElement.style.top);
+ this.container.style.left = parentLeft + parentWidth + 'px';
+ this.container.appendChild(popup.render());
+ return this.container;
+ }
+ });
+ return PopupAnnotationElement;
+}();
+var PopupElement = function PopupElementClosure() {
+ var BACKGROUND_ENLIGHT = 0.7;
+ function PopupElement(parameters) {
+ this.container = parameters.container;
+ this.trigger = parameters.trigger;
+ this.color = parameters.color;
+ this.title = parameters.title;
+ this.contents = parameters.contents;
+ this.hideWrapper = parameters.hideWrapper || false;
+ this.pinned = false;
+ }
+ PopupElement.prototype = {
+ render: function PopupElement_render() {
+ var wrapper = document.createElement('div');
+ wrapper.className = 'popupWrapper';
+ this.hideElement = this.hideWrapper ? wrapper : this.container;
+ this.hideElement.setAttribute('hidden', true);
+ var popup = document.createElement('div');
+ popup.className = 'popup';
+ var color = this.color;
+ if (color) {
+ var r = BACKGROUND_ENLIGHT * (255 - color[0]) + color[0];
+ var g = BACKGROUND_ENLIGHT * (255 - color[1]) + color[1];
+ var b = BACKGROUND_ENLIGHT * (255 - color[2]) + color[2];
+ popup.style.backgroundColor = Util.makeCssRgb(r | 0, g | 0, b | 0);
+ }
+ var contents = this._formatContents(this.contents);
+ var title = document.createElement('h1');
+ title.textContent = this.title;
+ this.trigger.addEventListener('click', this._toggle.bind(this));
+ this.trigger.addEventListener('mouseover', this._show.bind(this, false));
+ this.trigger.addEventListener('mouseout', this._hide.bind(this, false));
+ popup.addEventListener('click', this._hide.bind(this, true));
+ popup.appendChild(title);
+ popup.appendChild(contents);
+ wrapper.appendChild(popup);
+ return wrapper;
+ },
+ _formatContents: function PopupElement_formatContents(contents) {
+ var p = document.createElement('p');
+ var lines = contents.split(/(?:\r\n?|\n)/);
+ for (var i = 0, ii = lines.length; i < ii; ++i) {
+ var line = lines[i];
+ p.appendChild(document.createTextNode(line));
+ if (i < ii - 1) {
+ p.appendChild(document.createElement('br'));
+ }
+ }
+ return p;
+ },
+ _toggle: function PopupElement_toggle() {
+ if (this.pinned) {
+ this._hide(true);
+ } else {
+ this._show(true);
+ }
+ },
+ _show: function PopupElement_show(pin) {
+ if (pin) {
+ this.pinned = true;
+ }
+ if (this.hideElement.hasAttribute('hidden')) {
+ this.hideElement.removeAttribute('hidden');
+ this.container.style.zIndex += 1;
+ }
+ },
+ _hide: function PopupElement_hide(unpin) {
+ if (unpin) {
+ this.pinned = false;
+ }
+ if (!this.hideElement.hasAttribute('hidden') && !this.pinned) {
+ this.hideElement.setAttribute('hidden', true);
+ this.container.style.zIndex -= 1;
+ }
+ }
+ };
+ return PopupElement;
+}();
+var HighlightAnnotationElement = function HighlightAnnotationElementClosure() {
+ function HighlightAnnotationElement(parameters) {
+ var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+ AnnotationElement.call(this, parameters, isRenderable);
+ }
+ Util.inherit(HighlightAnnotationElement, AnnotationElement, {
+ render: function HighlightAnnotationElement_render() {
+ this.container.className = 'highlightAnnotation';
+ if (!this.data.hasPopup) {
+ this._createPopup(this.container, null, this.data);
+ }
+ return this.container;
+ }
+ });
+ return HighlightAnnotationElement;
+}();
+var UnderlineAnnotationElement = function UnderlineAnnotationElementClosure() {
+ function UnderlineAnnotationElement(parameters) {
+ var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+ AnnotationElement.call(this, parameters, isRenderable);
+ }
+ Util.inherit(UnderlineAnnotationElement, AnnotationElement, {
+ render: function UnderlineAnnotationElement_render() {
+ this.container.className = 'underlineAnnotation';
+ if (!this.data.hasPopup) {
+ this._createPopup(this.container, null, this.data);
+ }
+ return this.container;
+ }
+ });
+ return UnderlineAnnotationElement;
+}();
+var SquigglyAnnotationElement = function SquigglyAnnotationElementClosure() {
+ function SquigglyAnnotationElement(parameters) {
+ var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+ AnnotationElement.call(this, parameters, isRenderable);
+ }
+ Util.inherit(SquigglyAnnotationElement, AnnotationElement, {
+ render: function SquigglyAnnotationElement_render() {
+ this.container.className = 'squigglyAnnotation';
+ if (!this.data.hasPopup) {
+ this._createPopup(this.container, null, this.data);
+ }
+ return this.container;
+ }
+ });
+ return SquigglyAnnotationElement;
+}();
+var StrikeOutAnnotationElement = function StrikeOutAnnotationElementClosure() {
+ function StrikeOutAnnotationElement(parameters) {
+ var isRenderable = !!(parameters.data.hasPopup || parameters.data.title || parameters.data.contents);
+ AnnotationElement.call(this, parameters, isRenderable);
+ }
+ Util.inherit(StrikeOutAnnotationElement, AnnotationElement, {
+ render: function StrikeOutAnnotationElement_render() {
+ this.container.className = 'strikeoutAnnotation';
+ if (!this.data.hasPopup) {
+ this._createPopup(this.container, null, this.data);
+ }
+ return this.container;
+ }
+ });
+ return StrikeOutAnnotationElement;
+}();
+var FileAttachmentAnnotationElement = function FileAttachmentAnnotationElementClosure() {
+ function FileAttachmentAnnotationElement(parameters) {
+ AnnotationElement.call(this, parameters, true);
+ var file = this.data.file;
+ this.filename = getFilenameFromUrl(file.filename);
+ this.content = file.content;
+ this.linkService.onFileAttachmentAnnotation({
+ id: stringToPDFString(file.filename),
+ filename: file.filename,
+ content: file.content
+ });
+ }
+ Util.inherit(FileAttachmentAnnotationElement, AnnotationElement, {
+ render: function FileAttachmentAnnotationElement_render() {
+ this.container.className = 'fileAttachmentAnnotation';
+ var trigger = document.createElement('div');
+ trigger.style.height = this.container.style.height;
+ trigger.style.width = this.container.style.width;
+ trigger.addEventListener('dblclick', this._download.bind(this));
+ if (!this.data.hasPopup && (this.data.title || this.data.contents)) {
+ this._createPopup(this.container, trigger, this.data);
+ }
+ this.container.appendChild(trigger);
+ return this.container;
+ },
+ _download: function FileAttachmentAnnotationElement_download() {
+ if (!this.downloadManager) {
+ warn('Download cannot be started due to unavailable download manager');
+ return;
+ }
+ this.downloadManager.downloadData(this.content, this.filename, '');
+ }
+ });
+ return FileAttachmentAnnotationElement;
+}();
+var AnnotationLayer = function AnnotationLayerClosure() {
+ return {
+ render: function AnnotationLayer_render(parameters) {
+ var annotationElementFactory = new AnnotationElementFactory();
+ for (var i = 0, ii = parameters.annotations.length; i < ii; i++) {
+ var data = parameters.annotations[i];
+ if (!data) {
+ continue;
+ }
+ var element = annotationElementFactory.create({
+ data: data,
+ layer: parameters.div,
+ page: parameters.page,
+ viewport: parameters.viewport,
+ linkService: parameters.linkService,
+ downloadManager: parameters.downloadManager,
+ imageResourcesPath: parameters.imageResourcesPath || getDefaultSetting('imageResourcesPath'),
+ renderInteractiveForms: parameters.renderInteractiveForms || false
+ });
+ if (element.isRenderable) {
+ parameters.div.appendChild(element.render());
+ }
+ }
+ },
+ update: function AnnotationLayer_update(parameters) {
+ for (var i = 0, ii = parameters.annotations.length; i < ii; i++) {
+ var data = parameters.annotations[i];
+ var element = parameters.div.querySelector('[data-annotation-id="' + data.id + '"]');
+ if (element) {
+ CustomStyle.setProp('transform', element, 'matrix(' + parameters.viewport.transform.join(',') + ')');
+ }
+ }
+ parameters.div.removeAttribute('hidden');
+ }
+ };
+}();
+exports.AnnotationLayer = AnnotationLayer;
+
+/***/ }),
+/* 3 */
+/***/ (function(module, exports, __w_pdfjs_require__) {
+
+"use strict";
+
+var sharedUtil = __w_pdfjs_require__(0);
+var displayFontLoader = __w_pdfjs_require__(11);
+var displayCanvas = __w_pdfjs_require__(10);
+var displayMetadata = __w_pdfjs_require__(7);
+var displayDOMUtils = __w_pdfjs_require__(1);
+var amdRequire;
+var InvalidPDFException = sharedUtil.InvalidPDFException;
+var MessageHandler = sharedUtil.MessageHandler;
+var MissingPDFException = sharedUtil.MissingPDFException;
+var PageViewport = sharedUtil.PageViewport;
+var PasswordException = sharedUtil.PasswordException;
+var StatTimer = sharedUtil.StatTimer;
+var UnexpectedResponseException = sharedUtil.UnexpectedResponseException;
+var UnknownErrorException = sharedUtil.UnknownErrorException;
+var Util = sharedUtil.Util;
+var createPromiseCapability = sharedUtil.createPromiseCapability;
+var error = sharedUtil.error;
+var deprecated = sharedUtil.deprecated;
+var getVerbosityLevel = sharedUtil.getVerbosityLevel;
+var info = sharedUtil.info;
+var isInt = sharedUtil.isInt;
+var isArray = sharedUtil.isArray;
+var isArrayBuffer = sharedUtil.isArrayBuffer;
+var isSameOrigin = sharedUtil.isSameOrigin;
+var loadJpegStream = sharedUtil.loadJpegStream;
+var stringToBytes = sharedUtil.stringToBytes;
+var globalScope = sharedUtil.globalScope;
+var warn = sharedUtil.warn;
+var FontFaceObject = displayFontLoader.FontFaceObject;
+var FontLoader = displayFontLoader.FontLoader;
+var CanvasGraphics = displayCanvas.CanvasGraphics;
+var Metadata = displayMetadata.Metadata;
+var getDefaultSetting = displayDOMUtils.getDefaultSetting;
+var DOMCanvasFactory = displayDOMUtils.DOMCanvasFactory;
+var DOMCMapReaderFactory = displayDOMUtils.DOMCMapReaderFactory;
+var DEFAULT_RANGE_CHUNK_SIZE = 65536;
+var isWorkerDisabled = false;
+var workerSrc;
+var isPostMessageTransfersDisabled = false;
+var pdfjsFilePath = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : null;
+var fakeWorkerFilesLoader = null;
+var useRequireEnsure = false;
+if (typeof __pdfjsdev_webpack__ === 'undefined') {
+ if (typeof window === 'undefined') {
+ isWorkerDisabled = true;
+ if (typeof require.ensure === 'undefined') {
+ require.ensure = require('node-ensure');
+ }
+ useRequireEnsure = true;
+ } else if (typeof require !== 'undefined' && typeof require.ensure === 'function') {
+ useRequireEnsure = true;
+ }
+ if (typeof requirejs !== 'undefined' && requirejs.toUrl) {
+ workerSrc = requirejs.toUrl('pdfjs-dist/build/pdf.worker.js');
+ }
+ var dynamicLoaderSupported = typeof requirejs !== 'undefined' && requirejs.load;
+ fakeWorkerFilesLoader = useRequireEnsure ? function (callback) {
+ require.ensure([], function () {
+ var worker = require('./pdf.worker.js');
+ callback(worker.WorkerMessageHandler);
+ });
+ } : dynamicLoaderSupported ? function (callback) {
+ requirejs(['pdfjs-dist/build/pdf.worker'], function (worker) {
+ callback(worker.WorkerMessageHandler);
+ });
+ } : null;
}
-
-/**
- * Promise Capability object.
- *
- * @typedef {Object} PromiseCapability
- * @property {Promise} promise - A promise object.
- * @property {function} resolve - Fullfills the promise.
- * @property {function} reject - Rejects the promise.
- */
-
-/**
- * Creates a promise capability object.
- * @alias PDFJS.createPromiseCapability
- *
- * @return {PromiseCapability} A capability object contains:
- * - a Promise, resolve and reject methods.
- */
-function createPromiseCapability() {
- var capability = {};
- capability.promise = new Promise(function (resolve, reject) {
- capability.resolve = resolve;
- capability.reject = reject;
+function getDocument(src, pdfDataRangeTransport, passwordCallback, progressCallback) {
+ var task = new PDFDocumentLoadingTask();
+ if (arguments.length > 1) {
+ deprecated('getDocument is called with pdfDataRangeTransport, ' + 'passwordCallback or progressCallback argument');
+ }
+ if (pdfDataRangeTransport) {
+ if (!(pdfDataRangeTransport instanceof PDFDataRangeTransport)) {
+ pdfDataRangeTransport = Object.create(pdfDataRangeTransport);
+ pdfDataRangeTransport.length = src.length;
+ pdfDataRangeTransport.initialData = src.initialData;
+ if (!pdfDataRangeTransport.abort) {
+ pdfDataRangeTransport.abort = function () {
+ };
+ }
+ }
+ src = Object.create(src);
+ src.range = pdfDataRangeTransport;
+ }
+ task.onPassword = passwordCallback || null;
+ task.onProgress = progressCallback || null;
+ var source;
+ if (typeof src === 'string') {
+ source = { url: src };
+ } else if (isArrayBuffer(src)) {
+ source = { data: src };
+ } else if (src instanceof PDFDataRangeTransport) {
+ source = { range: src };
+ } else {
+ if (typeof src !== 'object') {
+ error('Invalid parameter in getDocument, need either Uint8Array, ' + 'string or a parameter object');
+ }
+ if (!src.url && !src.data && !src.range) {
+ error('Invalid parameter object: need either .data, .range or .url');
+ }
+ source = src;
+ }
+ var params = {};
+ var rangeTransport = null;
+ var worker = null;
+ for (var key in source) {
+ if (key === 'url' && typeof window !== 'undefined') {
+ params[key] = new URL(source[key], window.location).href;
+ continue;
+ } else if (key === 'range') {
+ rangeTransport = source[key];
+ continue;
+ } else if (key === 'worker') {
+ worker = source[key];
+ continue;
+ } else if (key === 'data' && !(source[key] instanceof Uint8Array)) {
+ var pdfBytes = source[key];
+ if (typeof pdfBytes === 'string') {
+ params[key] = stringToBytes(pdfBytes);
+ } else if (typeof pdfBytes === 'object' && pdfBytes !== null && !isNaN(pdfBytes.length)) {
+ params[key] = new Uint8Array(pdfBytes);
+ } else if (isArrayBuffer(pdfBytes)) {
+ params[key] = new Uint8Array(pdfBytes);
+ } else {
+ error('Invalid PDF binary data: either typed array, string or ' + 'array-like object is expected in the data property.');
+ }
+ continue;
+ }
+ params[key] = source[key];
+ }
+ params.rangeChunkSize = params.rangeChunkSize || DEFAULT_RANGE_CHUNK_SIZE;
+ params.disableNativeImageDecoder = params.disableNativeImageDecoder === true;
+ var CMapReaderFactory = params.CMapReaderFactory || DOMCMapReaderFactory;
+ if (!worker) {
+ var workerPort = getDefaultSetting('workerPort');
+ worker = workerPort ? new PDFWorker(null, workerPort) : new PDFWorker();
+ task._worker = worker;
+ }
+ var docId = task.docId;
+ worker.promise.then(function () {
+ if (task.destroyed) {
+ throw new Error('Loading aborted');
+ }
+ return _fetchDocument(worker, params, rangeTransport, docId).then(function (workerId) {
+ if (task.destroyed) {
+ throw new Error('Loading aborted');
+ }
+ var messageHandler = new MessageHandler(docId, workerId, worker.port);
+ var transport = new WorkerTransport(messageHandler, task, rangeTransport, CMapReaderFactory);
+ task._transport = transport;
+ messageHandler.send('Ready', null);
});
- return capability;
+ }).catch(task._capability.reject);
+ return task;
}
-
-PDFJS.createPromiseCapability = createPromiseCapability;
-
-/**
- * Polyfill for Promises:
- * The following promise implementation tries to generally implement the
- * Promise/A+ spec. Some notable differences from other promise libaries are:
- * - There currently isn't a seperate deferred and promise object.
- * - Unhandled rejections eventually show an error if they aren't handled.
- *
- * Based off of the work in:
- * https://bugzilla.mozilla.org/show_bug.cgi?id=810490
- */
-(function PromiseClosure() {
- if (globalScope.Promise) {
- // Promises existing in the DOM/Worker, checking presence of all/resolve
- if (typeof globalScope.Promise.all !== 'function') {
- globalScope.Promise.all = function (iterable) {
- var count = 0, results = [], resolve, reject;
- var promise = new globalScope.Promise(function (resolve_, reject_) {
- resolve = resolve_;
- reject = reject_;
- });
- iterable.forEach(function (p, i) {
- count++;
- p.then(function (result) {
- results[i] = result;
- count--;
- if (count === 0) {
- resolve(results);
- }
- }, reject);
- });
- if (count === 0) {
- resolve(results);
- }
- return promise;
- };
+function _fetchDocument(worker, source, pdfDataRangeTransport, docId) {
+ if (worker.destroyed) {
+ return Promise.reject(new Error('Worker was destroyed'));
+ }
+ source.disableAutoFetch = getDefaultSetting('disableAutoFetch');
+ source.disableStream = getDefaultSetting('disableStream');
+ source.chunkedViewerLoading = !!pdfDataRangeTransport;
+ if (pdfDataRangeTransport) {
+ source.length = pdfDataRangeTransport.length;
+ source.initialData = pdfDataRangeTransport.initialData;
+ }
+ return worker.messageHandler.sendWithPromise('GetDocRequest', {
+ docId: docId,
+ source: source,
+ disableRange: getDefaultSetting('disableRange'),
+ maxImageSize: getDefaultSetting('maxImageSize'),
+ disableFontFace: getDefaultSetting('disableFontFace'),
+ disableCreateObjectURL: getDefaultSetting('disableCreateObjectURL'),
+ postMessageTransfers: getDefaultSetting('postMessageTransfers') && !isPostMessageTransfersDisabled,
+ docBaseUrl: source.docBaseUrl,
+ disableNativeImageDecoder: source.disableNativeImageDecoder
+ }).then(function (workerId) {
+ if (worker.destroyed) {
+ throw new Error('Worker was destroyed');
+ }
+ return workerId;
+ });
+}
+var PDFDocumentLoadingTask = function PDFDocumentLoadingTaskClosure() {
+ var nextDocumentId = 0;
+ function PDFDocumentLoadingTask() {
+ this._capability = createPromiseCapability();
+ this._transport = null;
+ this._worker = null;
+ this.docId = 'd' + nextDocumentId++;
+ this.destroyed = false;
+ this.onPassword = null;
+ this.onProgress = null;
+ this.onUnsupportedFeature = null;
+ }
+ PDFDocumentLoadingTask.prototype = {
+ get promise() {
+ return this._capability.promise;
+ },
+ destroy: function () {
+ this.destroyed = true;
+ var transportDestroyed = !this._transport ? Promise.resolve() : this._transport.destroy();
+ return transportDestroyed.then(function () {
+ this._transport = null;
+ if (this._worker) {
+ this._worker.destroy();
+ this._worker = null;
+ }
+ }.bind(this));
+ },
+ then: function PDFDocumentLoadingTask_then(onFulfilled, onRejected) {
+ return this.promise.then.apply(this.promise, arguments);
+ }
+ };
+ return PDFDocumentLoadingTask;
+}();
+var PDFDataRangeTransport = function pdfDataRangeTransportClosure() {
+ function PDFDataRangeTransport(length, initialData) {
+ this.length = length;
+ this.initialData = initialData;
+ this._rangeListeners = [];
+ this._progressListeners = [];
+ this._progressiveReadListeners = [];
+ this._readyCapability = createPromiseCapability();
+ }
+ PDFDataRangeTransport.prototype = {
+ addRangeListener: function PDFDataRangeTransport_addRangeListener(listener) {
+ this._rangeListeners.push(listener);
+ },
+ addProgressListener: function PDFDataRangeTransport_addProgressListener(listener) {
+ this._progressListeners.push(listener);
+ },
+ addProgressiveReadListener: function PDFDataRangeTransport_addProgressiveReadListener(listener) {
+ this._progressiveReadListeners.push(listener);
+ },
+ onDataRange: function PDFDataRangeTransport_onDataRange(begin, chunk) {
+ var listeners = this._rangeListeners;
+ for (var i = 0, n = listeners.length; i < n; ++i) {
+ listeners[i](begin, chunk);
+ }
+ },
+ onDataProgress: function PDFDataRangeTransport_onDataProgress(loaded) {
+ this._readyCapability.promise.then(function () {
+ var listeners = this._progressListeners;
+ for (var i = 0, n = listeners.length; i < n; ++i) {
+ listeners[i](loaded);
}
- if (typeof globalScope.Promise.resolve !== 'function') {
- globalScope.Promise.resolve = function (value) {
- return new globalScope.Promise(function (resolve) { resolve(value); });
- };
+ }.bind(this));
+ },
+ onDataProgressiveRead: function PDFDataRangeTransport_onDataProgress(chunk) {
+ this._readyCapability.promise.then(function () {
+ var listeners = this._progressiveReadListeners;
+ for (var i = 0, n = listeners.length; i < n; ++i) {
+ listeners[i](chunk);
}
- if (typeof globalScope.Promise.reject !== 'function') {
- globalScope.Promise.reject = function (reason) {
- return new globalScope.Promise(function (resolve, reject) {
- reject(reason);
- });
- };
+ }.bind(this));
+ },
+ transportReady: function PDFDataRangeTransport_transportReady() {
+ this._readyCapability.resolve();
+ },
+ requestDataRange: function PDFDataRangeTransport_requestDataRange(begin, end) {
+ throw new Error('Abstract method PDFDataRangeTransport.requestDataRange');
+ },
+ abort: function PDFDataRangeTransport_abort() {
+ }
+ };
+ return PDFDataRangeTransport;
+}();
+var PDFDocumentProxy = function PDFDocumentProxyClosure() {
+ function PDFDocumentProxy(pdfInfo, transport, loadingTask) {
+ this.pdfInfo = pdfInfo;
+ this.transport = transport;
+ this.loadingTask = loadingTask;
+ }
+ PDFDocumentProxy.prototype = {
+ get numPages() {
+ return this.pdfInfo.numPages;
+ },
+ get fingerprint() {
+ return this.pdfInfo.fingerprint;
+ },
+ getPage: function PDFDocumentProxy_getPage(pageNumber) {
+ return this.transport.getPage(pageNumber);
+ },
+ getPageIndex: function PDFDocumentProxy_getPageIndex(ref) {
+ return this.transport.getPageIndex(ref);
+ },
+ getDestinations: function PDFDocumentProxy_getDestinations() {
+ return this.transport.getDestinations();
+ },
+ getDestination: function PDFDocumentProxy_getDestination(id) {
+ return this.transport.getDestination(id);
+ },
+ getPageLabels: function PDFDocumentProxy_getPageLabels() {
+ return this.transport.getPageLabels();
+ },
+ getAttachments: function PDFDocumentProxy_getAttachments() {
+ return this.transport.getAttachments();
+ },
+ getJavaScript: function PDFDocumentProxy_getJavaScript() {
+ return this.transport.getJavaScript();
+ },
+ getOutline: function PDFDocumentProxy_getOutline() {
+ return this.transport.getOutline();
+ },
+ getMetadata: function PDFDocumentProxy_getMetadata() {
+ return this.transport.getMetadata();
+ },
+ getData: function PDFDocumentProxy_getData() {
+ return this.transport.getData();
+ },
+ getDownloadInfo: function PDFDocumentProxy_getDownloadInfo() {
+ return this.transport.downloadInfoCapability.promise;
+ },
+ getStats: function PDFDocumentProxy_getStats() {
+ return this.transport.getStats();
+ },
+ cleanup: function PDFDocumentProxy_cleanup() {
+ this.transport.startCleanup();
+ },
+ destroy: function PDFDocumentProxy_destroy() {
+ return this.loadingTask.destroy();
+ }
+ };
+ return PDFDocumentProxy;
+}();
+var PDFPageProxy = function PDFPageProxyClosure() {
+ function PDFPageProxy(pageIndex, pageInfo, transport) {
+ this.pageIndex = pageIndex;
+ this.pageInfo = pageInfo;
+ this.transport = transport;
+ this.stats = new StatTimer();
+ this.stats.enabled = getDefaultSetting('enableStats');
+ this.commonObjs = transport.commonObjs;
+ this.objs = new PDFObjects();
+ this.cleanupAfterRender = false;
+ this.pendingCleanup = false;
+ this.intentStates = Object.create(null);
+ this.destroyed = false;
+ }
+ PDFPageProxy.prototype = {
+ get pageNumber() {
+ return this.pageIndex + 1;
+ },
+ get rotate() {
+ return this.pageInfo.rotate;
+ },
+ get ref() {
+ return this.pageInfo.ref;
+ },
+ get userUnit() {
+ return this.pageInfo.userUnit;
+ },
+ get view() {
+ return this.pageInfo.view;
+ },
+ getViewport: function PDFPageProxy_getViewport(scale, rotate) {
+ if (arguments.length < 2) {
+ rotate = this.rotate;
+ }
+ return new PageViewport(this.view, scale, rotate, 0, 0);
+ },
+ getAnnotations: function PDFPageProxy_getAnnotations(params) {
+ var intent = params && params.intent || null;
+ if (!this.annotationsPromise || this.annotationsIntent !== intent) {
+ this.annotationsPromise = this.transport.getAnnotations(this.pageIndex, intent);
+ this.annotationsIntent = intent;
+ }
+ return this.annotationsPromise;
+ },
+ render: function PDFPageProxy_render(params) {
+ var stats = this.stats;
+ stats.time('Overall');
+ this.pendingCleanup = false;
+ var renderingIntent = params.intent === 'print' ? 'print' : 'display';
+ var renderInteractiveForms = params.renderInteractiveForms === true ? true : false;
+ var canvasFactory = params.canvasFactory || new DOMCanvasFactory();
+ if (!this.intentStates[renderingIntent]) {
+ this.intentStates[renderingIntent] = Object.create(null);
+ }
+ var intentState = this.intentStates[renderingIntent];
+ if (!intentState.displayReadyCapability) {
+ intentState.receivingOperatorList = true;
+ intentState.displayReadyCapability = createPromiseCapability();
+ intentState.operatorList = {
+ fnArray: [],
+ argsArray: [],
+ lastChunk: false
+ };
+ this.stats.time('Page Request');
+ this.transport.messageHandler.send('RenderPageRequest', {
+ pageIndex: this.pageNumber - 1,
+ intent: renderingIntent,
+ renderInteractiveForms: renderInteractiveForms
+ });
+ }
+ var internalRenderTask = new InternalRenderTask(complete, params, this.objs, this.commonObjs, intentState.operatorList, this.pageNumber, canvasFactory);
+ internalRenderTask.useRequestAnimationFrame = renderingIntent !== 'print';
+ if (!intentState.renderTasks) {
+ intentState.renderTasks = [];
+ }
+ intentState.renderTasks.push(internalRenderTask);
+ var renderTask = internalRenderTask.task;
+ if (params.continueCallback) {
+ deprecated('render is used with continueCallback parameter');
+ renderTask.onContinue = params.continueCallback;
+ }
+ var self = this;
+ intentState.displayReadyCapability.promise.then(function pageDisplayReadyPromise(transparency) {
+ if (self.pendingCleanup) {
+ complete();
+ return;
+ }
+ stats.time('Rendering');
+ internalRenderTask.initializeGraphics(transparency);
+ internalRenderTask.operatorListChanged();
+ }, function pageDisplayReadPromiseError(reason) {
+ complete(reason);
+ });
+ function complete(error) {
+ var i = intentState.renderTasks.indexOf(internalRenderTask);
+ if (i >= 0) {
+ intentState.renderTasks.splice(i, 1);
+ }
+ if (self.cleanupAfterRender) {
+ self.pendingCleanup = true;
+ }
+ self._tryCleanup();
+ if (error) {
+ internalRenderTask.capability.reject(error);
+ } else {
+ internalRenderTask.capability.resolve();
}
- if (typeof globalScope.Promise.prototype.catch !== 'function') {
- globalScope.Promise.prototype.catch = function (onReject) {
- return globalScope.Promise.prototype.then(undefined, onReject);
- };
+ stats.timeEnd('Rendering');
+ stats.timeEnd('Overall');
+ }
+ return renderTask;
+ },
+ getOperatorList: function PDFPageProxy_getOperatorList() {
+ function operatorListChanged() {
+ if (intentState.operatorList.lastChunk) {
+ intentState.opListReadCapability.resolve(intentState.operatorList);
+ var i = intentState.renderTasks.indexOf(opListTask);
+ if (i >= 0) {
+ intentState.renderTasks.splice(i, 1);
+ }
+ }
+ }
+ var renderingIntent = 'oplist';
+ if (!this.intentStates[renderingIntent]) {
+ this.intentStates[renderingIntent] = Object.create(null);
+ }
+ var intentState = this.intentStates[renderingIntent];
+ var opListTask;
+ if (!intentState.opListReadCapability) {
+ opListTask = {};
+ opListTask.operatorListChanged = operatorListChanged;
+ intentState.receivingOperatorList = true;
+ intentState.opListReadCapability = createPromiseCapability();
+ intentState.renderTasks = [];
+ intentState.renderTasks.push(opListTask);
+ intentState.operatorList = {
+ fnArray: [],
+ argsArray: [],
+ lastChunk: false
+ };
+ this.transport.messageHandler.send('RenderPageRequest', {
+ pageIndex: this.pageIndex,
+ intent: renderingIntent
+ });
+ }
+ return intentState.opListReadCapability.promise;
+ },
+ getTextContent: function PDFPageProxy_getTextContent(params) {
+ return this.transport.messageHandler.sendWithPromise('GetTextContent', {
+ pageIndex: this.pageNumber - 1,
+ normalizeWhitespace: params && params.normalizeWhitespace === true ? true : false,
+ combineTextItems: params && params.disableCombineTextItems === true ? false : true
+ });
+ },
+ _destroy: function PDFPageProxy_destroy() {
+ this.destroyed = true;
+ this.transport.pageCache[this.pageIndex] = null;
+ var waitOn = [];
+ Object.keys(this.intentStates).forEach(function (intent) {
+ if (intent === 'oplist') {
+ return;
+ }
+ var intentState = this.intentStates[intent];
+ intentState.renderTasks.forEach(function (renderTask) {
+ var renderCompleted = renderTask.capability.promise.catch(function () {
+ });
+ waitOn.push(renderCompleted);
+ renderTask.cancel();
+ });
+ }, this);
+ this.objs.clear();
+ this.annotationsPromise = null;
+ this.pendingCleanup = false;
+ return Promise.all(waitOn);
+ },
+ destroy: function () {
+ deprecated('page destroy method, use cleanup() instead');
+ this.cleanup();
+ },
+ cleanup: function PDFPageProxy_cleanup() {
+ this.pendingCleanup = true;
+ this._tryCleanup();
+ },
+ _tryCleanup: function PDFPageProxy_tryCleanup() {
+ if (!this.pendingCleanup || Object.keys(this.intentStates).some(function (intent) {
+ var intentState = this.intentStates[intent];
+ return intentState.renderTasks.length !== 0 || intentState.receivingOperatorList;
+ }, this)) {
+ return;
+ }
+ Object.keys(this.intentStates).forEach(function (intent) {
+ delete this.intentStates[intent];
+ }, this);
+ this.objs.clear();
+ this.annotationsPromise = null;
+ this.pendingCleanup = false;
+ },
+ _startRenderPage: function PDFPageProxy_startRenderPage(transparency, intent) {
+ var intentState = this.intentStates[intent];
+ if (intentState.displayReadyCapability) {
+ intentState.displayReadyCapability.resolve(transparency);
+ }
+ },
+ _renderPageChunk: function PDFPageProxy_renderPageChunk(operatorListChunk, intent) {
+ var intentState = this.intentStates[intent];
+ var i, ii;
+ for (i = 0, ii = operatorListChunk.length; i < ii; i++) {
+ intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);
+ intentState.operatorList.argsArray.push(operatorListChunk.argsArray[i]);
+ }
+ intentState.operatorList.lastChunk = operatorListChunk.lastChunk;
+ for (i = 0; i < intentState.renderTasks.length; i++) {
+ intentState.renderTasks[i].operatorListChanged();
+ }
+ if (operatorListChunk.lastChunk) {
+ intentState.receivingOperatorList = false;
+ this._tryCleanup();
+ }
+ }
+ };
+ return PDFPageProxy;
+}();
+var PDFWorker = function PDFWorkerClosure() {
+ var nextFakeWorkerId = 0;
+ function getWorkerSrc() {
+ if (typeof workerSrc !== 'undefined') {
+ return workerSrc;
+ }
+ if (getDefaultSetting('workerSrc')) {
+ return getDefaultSetting('workerSrc');
+ }
+ if (pdfjsFilePath) {
+ return pdfjsFilePath.replace(/\.js$/i, '.worker.js');
+ }
+ error('No PDFJS.workerSrc specified');
+ }
+ var fakeWorkerFilesLoadedCapability;
+ function setupFakeWorkerGlobal() {
+ var WorkerMessageHandler;
+ if (fakeWorkerFilesLoadedCapability) {
+ return fakeWorkerFilesLoadedCapability.promise;
+ }
+ fakeWorkerFilesLoadedCapability = createPromiseCapability();
+ var loader = fakeWorkerFilesLoader || function (callback) {
+ Util.loadScript(getWorkerSrc(), function () {
+ callback(window.pdfjsDistBuildPdfWorker.WorkerMessageHandler);
+ });
+ };
+ loader(fakeWorkerFilesLoadedCapability.resolve);
+ return fakeWorkerFilesLoadedCapability.promise;
+ }
+ function FakeWorkerPort(defer) {
+ this._listeners = [];
+ this._defer = defer;
+ this._deferred = Promise.resolve(undefined);
+ }
+ FakeWorkerPort.prototype = {
+ postMessage: function (obj, transfers) {
+ function cloneValue(value) {
+ if (typeof value !== 'object' || value === null) {
+ return value;
+ }
+ if (cloned.has(value)) {
+ return cloned.get(value);
+ }
+ var result;
+ var buffer;
+ if ((buffer = value.buffer) && isArrayBuffer(buffer)) {
+ var transferable = transfers && transfers.indexOf(buffer) >= 0;
+ if (value === buffer) {
+ result = value;
+ } else if (transferable) {
+ result = new value.constructor(buffer, value.byteOffset, value.byteLength);
+ } else {
+ result = new value.constructor(value);
+ }
+ cloned.set(value, result);
+ return result;
+ }
+ result = isArray(value) ? [] : {};
+ cloned.set(value, result);
+ for (var i in value) {
+ var desc, p = value;
+ while (!(desc = Object.getOwnPropertyDescriptor(p, i))) {
+ p = Object.getPrototypeOf(p);
+ }
+ if (typeof desc.value === 'undefined' || typeof desc.value === 'function') {
+ continue;
+ }
+ result[i] = cloneValue(desc.value);
}
+ return result;
+ }
+ if (!this._defer) {
+ this._listeners.forEach(function (listener) {
+ listener.call(this, { data: obj });
+ }, this);
return;
- }
- var STATUS_PENDING = 0;
- var STATUS_RESOLVED = 1;
- var STATUS_REJECTED = 2;
-
- // In an attempt to avoid silent exceptions, unhandled rejections are
- // tracked and if they aren't handled in a certain amount of time an
- // error is logged.
- var REJECTION_TIMEOUT = 500;
-
- var HandlerManager = {
- handlers: [],
- running: false,
- unhandledRejections: [],
- pendingRejectionCheck: false,
-
- scheduleHandlers: function scheduleHandlers(promise) {
- if (promise._status === STATUS_PENDING) {
- return;
- }
-
- this.handlers = this.handlers.concat(promise._handlers);
- promise._handlers = [];
-
- if (this.running) {
- return;
- }
- this.running = true;
-
- setTimeout(this.runHandlers.bind(this), 0);
- },
-
- runHandlers: function runHandlers() {
- var RUN_TIMEOUT = 1; // ms
- var timeoutAt = Date.now() + RUN_TIMEOUT;
- while (this.handlers.length > 0) {
- var handler = this.handlers.shift();
-
- var nextStatus = handler.thisPromise._status;
- var nextValue = handler.thisPromise._value;
-
- try {
- if (nextStatus === STATUS_RESOLVED) {
- if (typeof handler.onResolve === 'function') {
- nextValue = handler.onResolve(nextValue);
- }
- } else if (typeof handler.onReject === 'function') {
- nextValue = handler.onReject(nextValue);
- nextStatus = STATUS_RESOLVED;
-
- if (handler.thisPromise._unhandledRejection) {
- this.removeUnhandeledRejection(handler.thisPromise);
- }
- }
- } catch (ex) {
- nextStatus = STATUS_REJECTED;
- nextValue = ex;
- }
-
- handler.nextPromise._updateStatus(nextStatus, nextValue);
- if (Date.now() >= timeoutAt) {
- break;
- }
+ }
+ var cloned = new WeakMap();
+ var e = { data: cloneValue(obj) };
+ this._deferred.then(function () {
+ this._listeners.forEach(function (listener) {
+ listener.call(this, e);
+ }, this);
+ }.bind(this));
+ },
+ addEventListener: function (name, listener) {
+ this._listeners.push(listener);
+ },
+ removeEventListener: function (name, listener) {
+ var i = this._listeners.indexOf(listener);
+ this._listeners.splice(i, 1);
+ },
+ terminate: function () {
+ this._listeners = [];
+ }
+ };
+ function createCDNWrapper(url) {
+ var wrapper = 'importScripts(\'' + url + '\');';
+ return URL.createObjectURL(new Blob([wrapper]));
+ }
+ function PDFWorker(name, port) {
+ this.name = name;
+ this.destroyed = false;
+ this._readyCapability = createPromiseCapability();
+ this._port = null;
+ this._webWorker = null;
+ this._messageHandler = null;
+ if (port) {
+ this._initializeFromPort(port);
+ return;
+ }
+ this._initialize();
+ }
+ PDFWorker.prototype = {
+ get promise() {
+ return this._readyCapability.promise;
+ },
+ get port() {
+ return this._port;
+ },
+ get messageHandler() {
+ return this._messageHandler;
+ },
+ _initializeFromPort: function PDFWorker_initializeFromPort(port) {
+ this._port = port;
+ this._messageHandler = new MessageHandler('main', 'worker', port);
+ this._messageHandler.on('ready', function () {
+ });
+ this._readyCapability.resolve();
+ },
+ _initialize: function PDFWorker_initialize() {
+ if (!isWorkerDisabled && !getDefaultSetting('disableWorker') && typeof Worker !== 'undefined') {
+ var workerSrc = getWorkerSrc();
+ try {
+ if (!isSameOrigin(window.location.href, workerSrc)) {
+ workerSrc = createCDNWrapper(new URL(workerSrc, window.location).href);
+ }
+ var worker = new Worker(workerSrc);
+ var messageHandler = new MessageHandler('main', 'worker', worker);
+ var terminateEarly = function () {
+ worker.removeEventListener('error', onWorkerError);
+ messageHandler.destroy();
+ worker.terminate();
+ if (this.destroyed) {
+ this._readyCapability.reject(new Error('Worker was destroyed'));
+ } else {
+ this._setupFakeWorker();
+ }
+ }.bind(this);
+ var onWorkerError = function (event) {
+ if (!this._webWorker) {
+ terminateEarly();
+ }
+ }.bind(this);
+ worker.addEventListener('error', onWorkerError);
+ messageHandler.on('test', function PDFWorker_test(data) {
+ worker.removeEventListener('error', onWorkerError);
+ if (this.destroyed) {
+ terminateEarly();
+ return;
+ }
+ var supportTypedArray = data && data.supportTypedArray;
+ if (supportTypedArray) {
+ this._messageHandler = messageHandler;
+ this._port = worker;
+ this._webWorker = worker;
+ if (!data.supportTransfers) {
+ isPostMessageTransfersDisabled = true;
+ }
+ this._readyCapability.resolve();
+ messageHandler.send('configure', { verbosity: getVerbosityLevel() });
+ } else {
+ this._setupFakeWorker();
+ messageHandler.destroy();
+ worker.terminate();
+ }
+ }.bind(this));
+ messageHandler.on('console_log', function (data) {
+ console.log.apply(console, data);
+ });
+ messageHandler.on('console_error', function (data) {
+ console.error.apply(console, data);
+ });
+ messageHandler.on('ready', function (data) {
+ worker.removeEventListener('error', onWorkerError);
+ if (this.destroyed) {
+ terminateEarly();
+ return;
}
-
- if (this.handlers.length > 0) {
- setTimeout(this.runHandlers.bind(this), 0);
- return;
+ try {
+ sendTest();
+ } catch (e) {
+ this._setupFakeWorker();
}
-
- this.running = false;
- },
-
- addUnhandledRejection: function addUnhandledRejection(promise) {
- this.unhandledRejections.push({
- promise: promise,
- time: Date.now()
- });
- this.scheduleRejectionCheck();
- },
-
- removeUnhandeledRejection: function removeUnhandeledRejection(promise) {
- promise._unhandledRejection = false;
- for (var i = 0; i < this.unhandledRejections.length; i++) {
- if (this.unhandledRejections[i].promise === promise) {
- this.unhandledRejections.splice(i);
- i--;
- }
- }
- },
-
- scheduleRejectionCheck: function scheduleRejectionCheck() {
- if (this.pendingRejectionCheck) {
- return;
- }
- this.pendingRejectionCheck = true;
- setTimeout(function rejectionCheck() {
- this.pendingRejectionCheck = false;
- var now = Date.now();
- for (var i = 0; i < this.unhandledRejections.length; i++) {
- if (now - this.unhandledRejections[i].time > REJECTION_TIMEOUT) {
- var unhandled = this.unhandledRejections[i].promise._value;
- var msg = 'Unhandled rejection: ' + unhandled;
- if (unhandled.stack) {
- msg += '\n' + unhandled.stack;
- }
- warn(msg);
- this.unhandledRejections.splice(i);
- i--;
- }
- }
- if (this.unhandledRejections.length) {
- this.scheduleRejectionCheck();
- }
- }.bind(this), REJECTION_TIMEOUT);
- }
- };
-
- function Promise(resolver) {
- this._status = STATUS_PENDING;
- this._handlers = [];
- try {
- resolver.call(this, this._resolve.bind(this), this._reject.bind(this));
+ }.bind(this));
+ var sendTest = function () {
+ var postMessageTransfers = getDefaultSetting('postMessageTransfers') && !isPostMessageTransfersDisabled;
+ var testObj = new Uint8Array([postMessageTransfers ? 255 : 0]);
+ try {
+ messageHandler.send('test', testObj, [testObj.buffer]);
+ } catch (ex) {
+ info('Cannot use postMessage transfers');
+ testObj[0] = 0;
+ messageHandler.send('test', testObj);
+ }
+ };
+ sendTest();
+ return;
} catch (e) {
- this._reject(e);
+ info('The worker has been disabled.');
}
- }
- /**
- * Builds a promise that is resolved when all the passed in promises are
- * resolved.
- * @param {array} array of data and/or promises to wait for.
- * @return {Promise} New dependant promise.
- */
- Promise.all = function Promise_all(promises) {
- var resolveAll, rejectAll;
- var deferred = new Promise(function (resolve, reject) {
- resolveAll = resolve;
- rejectAll = reject;
+ }
+ this._setupFakeWorker();
+ },
+ _setupFakeWorker: function PDFWorker_setupFakeWorker() {
+ if (!isWorkerDisabled && !getDefaultSetting('disableWorker')) {
+ warn('Setting up fake worker.');
+ isWorkerDisabled = true;
+ }
+ setupFakeWorkerGlobal().then(function (WorkerMessageHandler) {
+ if (this.destroyed) {
+ this._readyCapability.reject(new Error('Worker was destroyed'));
+ return;
+ }
+ var isTypedArraysPresent = Uint8Array !== Float32Array;
+ var port = new FakeWorkerPort(isTypedArraysPresent);
+ this._port = port;
+ var id = 'fake' + nextFakeWorkerId++;
+ var workerHandler = new MessageHandler(id + '_worker', id, port);
+ WorkerMessageHandler.setup(workerHandler, port);
+ var messageHandler = new MessageHandler(id, id + '_worker', port);
+ this._messageHandler = messageHandler;
+ this._readyCapability.resolve();
+ }.bind(this));
+ },
+ destroy: function PDFWorker_destroy() {
+ this.destroyed = true;
+ if (this._webWorker) {
+ this._webWorker.terminate();
+ this._webWorker = null;
+ }
+ this._port = null;
+ if (this._messageHandler) {
+ this._messageHandler.destroy();
+ this._messageHandler = null;
+ }
+ }
+ };
+ return PDFWorker;
+}();
+var WorkerTransport = function WorkerTransportClosure() {
+ function WorkerTransport(messageHandler, loadingTask, pdfDataRangeTransport, CMapReaderFactory) {
+ this.messageHandler = messageHandler;
+ this.loadingTask = loadingTask;
+ this.pdfDataRangeTransport = pdfDataRangeTransport;
+ this.commonObjs = new PDFObjects();
+ this.fontLoader = new FontLoader(loadingTask.docId);
+ this.CMapReaderFactory = new CMapReaderFactory({
+ baseUrl: getDefaultSetting('cMapUrl'),
+ isCompressed: getDefaultSetting('cMapPacked')
+ });
+ this.destroyed = false;
+ this.destroyCapability = null;
+ this._passwordCapability = null;
+ this.pageCache = [];
+ this.pagePromises = [];
+ this.downloadInfoCapability = createPromiseCapability();
+ this.setupMessageHandler();
+ }
+ WorkerTransport.prototype = {
+ destroy: function WorkerTransport_destroy() {
+ if (this.destroyCapability) {
+ return this.destroyCapability.promise;
+ }
+ this.destroyed = true;
+ this.destroyCapability = createPromiseCapability();
+ if (this._passwordCapability) {
+ this._passwordCapability.reject(new Error('Worker was destroyed during onPassword callback'));
+ }
+ var waitOn = [];
+ this.pageCache.forEach(function (page) {
+ if (page) {
+ waitOn.push(page._destroy());
+ }
+ });
+ this.pageCache = [];
+ this.pagePromises = [];
+ var self = this;
+ var terminated = this.messageHandler.sendWithPromise('Terminate', null);
+ waitOn.push(terminated);
+ Promise.all(waitOn).then(function () {
+ self.fontLoader.clear();
+ if (self.pdfDataRangeTransport) {
+ self.pdfDataRangeTransport.abort();
+ self.pdfDataRangeTransport = null;
+ }
+ if (self.messageHandler) {
+ self.messageHandler.destroy();
+ self.messageHandler = null;
+ }
+ self.destroyCapability.resolve();
+ }, this.destroyCapability.reject);
+ return this.destroyCapability.promise;
+ },
+ setupMessageHandler: function WorkerTransport_setupMessageHandler() {
+ var messageHandler = this.messageHandler;
+ var loadingTask = this.loadingTask;
+ var pdfDataRangeTransport = this.pdfDataRangeTransport;
+ if (pdfDataRangeTransport) {
+ pdfDataRangeTransport.addRangeListener(function (begin, chunk) {
+ messageHandler.send('OnDataRange', {
+ begin: begin,
+ chunk: chunk
+ });
});
- var unresolved = promises.length;
- var results = [];
- if (unresolved === 0) {
- resolveAll(results);
- return deferred;
- }
- function reject(reason) {
- if (deferred._status === STATUS_REJECTED) {
- return;
- }
- results = [];
- rejectAll(reason);
- }
- for (var i = 0, ii = promises.length; i < ii; ++i) {
- var promise = promises[i];
- var resolve = (function(i) {
- return function(value) {
- if (deferred._status === STATUS_REJECTED) {
- return;
- }
- results[i] = value;
- unresolved--;
- if (unresolved === 0) {
- resolveAll(results);
- }
- };
- })(i);
- if (Promise.isPromise(promise)) {
- promise.then(resolve, reject);
- } else {
- resolve(promise);
- }
- }
- return deferred;
- };
-
- /**
- * Checks if the value is likely a promise (has a 'then' function).
- * @return {boolean} true if value is thenable
- */
- Promise.isPromise = function Promise_isPromise(value) {
- return value && typeof value.then === 'function';
- };
-
- /**
- * Creates resolved promise
- * @param value resolve value
- * @returns {Promise}
- */
- Promise.resolve = function Promise_resolve(value) {
- return new Promise(function (resolve) { resolve(value); });
- };
-
- /**
- * Creates rejected promise
- * @param reason rejection value
- * @returns {Promise}
- */
- Promise.reject = function Promise_reject(reason) {
- return new Promise(function (resolve, reject) { reject(reason); });
- };
-
- Promise.prototype = {
- _status: null,
- _value: null,
- _handlers: null,
- _unhandledRejection: null,
-
- _updateStatus: function Promise__updateStatus(status, value) {
- if (this._status === STATUS_RESOLVED ||
- this._status === STATUS_REJECTED) {
- return;
- }
-
- if (status === STATUS_RESOLVED &&
- Promise.isPromise(value)) {
- value.then(this._updateStatus.bind(this, STATUS_RESOLVED),
- this._updateStatus.bind(this, STATUS_REJECTED));
- return;
- }
-
- this._status = status;
- this._value = value;
-
- if (status === STATUS_REJECTED && this._handlers.length === 0) {
- this._unhandledRejection = true;
- HandlerManager.addUnhandledRejection(this);
- }
-
- HandlerManager.scheduleHandlers(this);
- },
-
- _resolve: function Promise_resolve(value) {
- this._updateStatus(STATUS_RESOLVED, value);
- },
-
- _reject: function Promise_reject(reason) {
- this._updateStatus(STATUS_REJECTED, reason);
- },
-
- then: function Promise_then(onResolve, onReject) {
- var nextPromise = new Promise(function (resolve, reject) {
- this.resolve = resolve;
- this.reject = reject;
- });
- this._handlers.push({
- thisPromise: this,
- onResolve: onResolve,
- onReject: onReject,
- nextPromise: nextPromise
+ pdfDataRangeTransport.addProgressListener(function (loaded) {
+ messageHandler.send('OnDataProgress', { loaded: loaded });
+ });
+ pdfDataRangeTransport.addProgressiveReadListener(function (chunk) {
+ messageHandler.send('OnDataRange', { chunk: chunk });
+ });
+ messageHandler.on('RequestDataRange', function transportDataRange(data) {
+ pdfDataRangeTransport.requestDataRange(data.begin, data.end);
+ }, this);
+ }
+ messageHandler.on('GetDoc', function transportDoc(data) {
+ var pdfInfo = data.pdfInfo;
+ this.numPages = data.pdfInfo.numPages;
+ var loadingTask = this.loadingTask;
+ var pdfDocument = new PDFDocumentProxy(pdfInfo, this, loadingTask);
+ this.pdfDocument = pdfDocument;
+ loadingTask._capability.resolve(pdfDocument);
+ }, this);
+ messageHandler.on('PasswordRequest', function transportPasswordRequest(exception) {
+ this._passwordCapability = createPromiseCapability();
+ if (loadingTask.onPassword) {
+ var updatePassword = function (password) {
+ this._passwordCapability.resolve({ password: password });
+ }.bind(this);
+ loadingTask.onPassword(updatePassword, exception.code);
+ } else {
+ this._passwordCapability.reject(new PasswordException(exception.message, exception.code));
+ }
+ return this._passwordCapability.promise;
+ }, this);
+ messageHandler.on('PasswordException', function transportPasswordException(exception) {
+ loadingTask._capability.reject(new PasswordException(exception.message, exception.code));
+ }, this);
+ messageHandler.on('InvalidPDF', function transportInvalidPDF(exception) {
+ this.loadingTask._capability.reject(new InvalidPDFException(exception.message));
+ }, this);
+ messageHandler.on('MissingPDF', function transportMissingPDF(exception) {
+ this.loadingTask._capability.reject(new MissingPDFException(exception.message));
+ }, this);
+ messageHandler.on('UnexpectedResponse', function transportUnexpectedResponse(exception) {
+ this.loadingTask._capability.reject(new UnexpectedResponseException(exception.message, exception.status));
+ }, this);
+ messageHandler.on('UnknownError', function transportUnknownError(exception) {
+ this.loadingTask._capability.reject(new UnknownErrorException(exception.message, exception.details));
+ }, this);
+ messageHandler.on('DataLoaded', function transportPage(data) {
+ this.downloadInfoCapability.resolve(data);
+ }, this);
+ messageHandler.on('PDFManagerReady', function transportPage(data) {
+ if (this.pdfDataRangeTransport) {
+ this.pdfDataRangeTransport.transportReady();
+ }
+ }, this);
+ messageHandler.on('StartRenderPage', function transportRender(data) {
+ if (this.destroyed) {
+ return;
+ }
+ var page = this.pageCache[data.pageIndex];
+ page.stats.timeEnd('Page Request');
+ page._startRenderPage(data.transparency, data.intent);
+ }, this);
+ messageHandler.on('RenderPageChunk', function transportRender(data) {
+ if (this.destroyed) {
+ return;
+ }
+ var page = this.pageCache[data.pageIndex];
+ page._renderPageChunk(data.operatorList, data.intent);
+ }, this);
+ messageHandler.on('commonobj', function transportObj(data) {
+ if (this.destroyed) {
+ return;
+ }
+ var id = data[0];
+ var type = data[1];
+ if (this.commonObjs.hasData(id)) {
+ return;
+ }
+ switch (type) {
+ case 'Font':
+ var exportedData = data[2];
+ if ('error' in exportedData) {
+ var exportedError = exportedData.error;
+ warn('Error during font loading: ' + exportedError);
+ this.commonObjs.resolve(id, exportedError);
+ break;
+ }
+ var fontRegistry = null;
+ if (getDefaultSetting('pdfBug') && globalScope.FontInspector && globalScope['FontInspector'].enabled) {
+ fontRegistry = {
+ registerFont: function (font, url) {
+ globalScope['FontInspector'].fontAdded(font, url);
+ }
+ };
+ }
+ var font = new FontFaceObject(exportedData, {
+ isEvalSuported: getDefaultSetting('isEvalSupported'),
+ disableFontFace: getDefaultSetting('disableFontFace'),
+ fontRegistry: fontRegistry
+ });
+ this.fontLoader.bind([font], function fontReady(fontObjs) {
+ this.commonObjs.resolve(id, font);
+ }.bind(this));
+ break;
+ case 'FontPath':
+ this.commonObjs.resolve(id, data[2]);
+ break;
+ default:
+ error('Got unknown common object type ' + type);
+ }
+ }, this);
+ messageHandler.on('obj', function transportObj(data) {
+ if (this.destroyed) {
+ return;
+ }
+ var id = data[0];
+ var pageIndex = data[1];
+ var type = data[2];
+ var pageProxy = this.pageCache[pageIndex];
+ var imageData;
+ if (pageProxy.objs.hasData(id)) {
+ return;
+ }
+ switch (type) {
+ case 'JpegStream':
+ imageData = data[3];
+ loadJpegStream(id, imageData, pageProxy.objs);
+ break;
+ case 'Image':
+ imageData = data[3];
+ pageProxy.objs.resolve(id, imageData);
+ var MAX_IMAGE_SIZE_TO_STORE = 8000000;
+ if (imageData && 'data' in imageData && imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) {
+ pageProxy.cleanupAfterRender = true;
+ }
+ break;
+ default:
+ error('Got unknown object type ' + type);
+ }
+ }, this);
+ messageHandler.on('DocProgress', function transportDocProgress(data) {
+ if (this.destroyed) {
+ return;
+ }
+ var loadingTask = this.loadingTask;
+ if (loadingTask.onProgress) {
+ loadingTask.onProgress({
+ loaded: data.loaded,
+ total: data.total
+ });
+ }
+ }, this);
+ messageHandler.on('PageError', function transportError(data) {
+ if (this.destroyed) {
+ return;
+ }
+ var page = this.pageCache[data.pageNum - 1];
+ var intentState = page.intentStates[data.intent];
+ if (intentState.displayReadyCapability) {
+ intentState.displayReadyCapability.reject(data.error);
+ } else {
+ error(data.error);
+ }
+ if (intentState.operatorList) {
+ intentState.operatorList.lastChunk = true;
+ for (var i = 0; i < intentState.renderTasks.length; i++) {
+ intentState.renderTasks[i].operatorListChanged();
+ }
+ }
+ }, this);
+ messageHandler.on('UnsupportedFeature', function transportUnsupportedFeature(data) {
+ if (this.destroyed) {
+ return;
+ }
+ var featureId = data.featureId;
+ var loadingTask = this.loadingTask;
+ if (loadingTask.onUnsupportedFeature) {
+ loadingTask.onUnsupportedFeature(featureId);
+ }
+ _UnsupportedManager.notify(featureId);
+ }, this);
+ messageHandler.on('JpegDecode', function (data) {
+ if (this.destroyed) {
+ return Promise.reject(new Error('Worker was destroyed'));
+ }
+ if (typeof document === 'undefined') {
+ return Promise.reject(new Error('"document" is not defined.'));
+ }
+ var imageUrl = data[0];
+ var components = data[1];
+ if (components !== 3 && components !== 1) {
+ return Promise.reject(new Error('Only 3 components or 1 component can be returned'));
+ }
+ return new Promise(function (resolve, reject) {
+ var img = new Image();
+ img.onload = function () {
+ var width = img.width;
+ var height = img.height;
+ var size = width * height;
+ var rgbaLength = size * 4;
+ var buf = new Uint8Array(size * components);
+ var tmpCanvas = document.createElement('canvas');
+ tmpCanvas.width = width;
+ tmpCanvas.height = height;
+ var tmpCtx = tmpCanvas.getContext('2d');
+ tmpCtx.drawImage(img, 0, 0);
+ var data = tmpCtx.getImageData(0, 0, width, height).data;
+ var i, j;
+ if (components === 3) {
+ for (i = 0, j = 0; i < rgbaLength; i += 4, j += 3) {
+ buf[j] = data[i];
+ buf[j + 1] = data[i + 1];
+ buf[j + 2] = data[i + 2];
+ }
+ } else if (components === 1) {
+ for (i = 0, j = 0; i < rgbaLength; i += 4, j++) {
+ buf[j] = data[i];
+ }
+ }
+ resolve({
+ data: buf,
+ width: width,
+ height: height
});
- HandlerManager.scheduleHandlers(this);
- return nextPromise;
- },
-
- catch: function Promise_catch(onReject) {
- return this.then(undefined, onReject);
- }
- };
-
- globalScope.Promise = Promise;
-})();
-
-var StatTimer = (function StatTimerClosure() {
- function rpad(str, pad, length) {
- while (str.length < length) {
- str += pad;
+ };
+ img.onerror = function () {
+ reject(new Error('JpegDecode failed to load image'));
+ };
+ img.src = imageUrl;
+ });
+ }, this);
+ messageHandler.on('FetchBuiltInCMap', function (data) {
+ if (this.destroyed) {
+ return Promise.reject(new Error('Worker was destroyed'));
}
- return str;
- }
- function StatTimer() {
- this.started = {};
- this.times = [];
- this.enabled = true;
- }
- StatTimer.prototype = {
- time: function StatTimer_time(name) {
- if (!this.enabled) {
- return;
- }
- if (name in this.started) {
- warn('Timer is already running for ' + name);
- }
- this.started[name] = Date.now();
- },
- timeEnd: function StatTimer_timeEnd(name) {
- if (!this.enabled) {
- return;
- }
- if (!(name in this.started)) {
- warn('Timer has not been started for ' + name);
- }
- this.times.push({
- 'name': name,
- 'start': this.started[name],
- 'end': Date.now()
- });
- // Remove timer from started so it can be called again.
- delete this.started[name];
- },
- toString: function StatTimer_toString() {
- var i, ii;
- var times = this.times;
- var out = '';
- // Find the longest name for padding purposes.
- var longest = 0;
- for (i = 0, ii = times.length; i < ii; ++i) {
- var name = times[i]['name'];
- if (name.length > longest) {
- longest = name.length;
- }
- }
- for (i = 0, ii = times.length; i < ii; ++i) {
- var span = times[i];
- var duration = span.end - span.start;
- out += rpad(span['name'], ' ', longest) + ' ' + duration + 'ms\n';
- }
- return out;
+ return this.CMapReaderFactory.fetch({ name: data.name });
+ }, this);
+ },
+ getData: function WorkerTransport_getData() {
+ return this.messageHandler.sendWithPromise('GetData', null);
+ },
+ getPage: function WorkerTransport_getPage(pageNumber, capability) {
+ if (!isInt(pageNumber) || pageNumber <= 0 || pageNumber > this.numPages) {
+ return Promise.reject(new Error('Invalid page request'));
+ }
+ var pageIndex = pageNumber - 1;
+ if (pageIndex in this.pagePromises) {
+ return this.pagePromises[pageIndex];
+ }
+ var promise = this.messageHandler.sendWithPromise('GetPage', { pageIndex: pageIndex }).then(function (pageInfo) {
+ if (this.destroyed) {
+ throw new Error('Transport destroyed');
+ }
+ var page = new PDFPageProxy(pageIndex, pageInfo, this);
+ this.pageCache[pageIndex] = page;
+ return page;
+ }.bind(this));
+ this.pagePromises[pageIndex] = promise;
+ return promise;
+ },
+ getPageIndex: function WorkerTransport_getPageIndexByRef(ref) {
+ return this.messageHandler.sendWithPromise('GetPageIndex', { ref: ref }).catch(function (reason) {
+ return Promise.reject(new Error(reason));
+ });
+ },
+ getAnnotations: function WorkerTransport_getAnnotations(pageIndex, intent) {
+ return this.messageHandler.sendWithPromise('GetAnnotations', {
+ pageIndex: pageIndex,
+ intent: intent
+ });
+ },
+ getDestinations: function WorkerTransport_getDestinations() {
+ return this.messageHandler.sendWithPromise('GetDestinations', null);
+ },
+ getDestination: function WorkerTransport_getDestination(id) {
+ return this.messageHandler.sendWithPromise('GetDestination', { id: id });
+ },
+ getPageLabels: function WorkerTransport_getPageLabels() {
+ return this.messageHandler.sendWithPromise('GetPageLabels', null);
+ },
+ getAttachments: function WorkerTransport_getAttachments() {
+ return this.messageHandler.sendWithPromise('GetAttachments', null);
+ },
+ getJavaScript: function WorkerTransport_getJavaScript() {
+ return this.messageHandler.sendWithPromise('GetJavaScript', null);
+ },
+ getOutline: function WorkerTransport_getOutline() {
+ return this.messageHandler.sendWithPromise('GetOutline', null);
+ },
+ getMetadata: function WorkerTransport_getMetadata() {
+ return this.messageHandler.sendWithPromise('GetMetadata', null).then(function transportMetadata(results) {
+ return {
+ info: results[0],
+ metadata: results[1] ? new Metadata(results[1]) : null
+ };
+ });
+ },
+ getStats: function WorkerTransport_getStats() {
+ return this.messageHandler.sendWithPromise('GetStats', null);
+ },
+ startCleanup: function WorkerTransport_startCleanup() {
+ this.messageHandler.sendWithPromise('Cleanup', null).then(function endCleanup() {
+ for (var i = 0, ii = this.pageCache.length; i < ii; i++) {
+ var page = this.pageCache[i];
+ if (page) {
+ page.cleanup();
+ }
+ }
+ this.commonObjs.clear();
+ this.fontLoader.clear();
+ }.bind(this));
+ }
+ };
+ return WorkerTransport;
+}();
+var PDFObjects = function PDFObjectsClosure() {
+ function PDFObjects() {
+ this.objs = Object.create(null);
+ }
+ PDFObjects.prototype = {
+ ensureObj: function PDFObjects_ensureObj(objId) {
+ if (this.objs[objId]) {
+ return this.objs[objId];
+ }
+ var obj = {
+ capability: createPromiseCapability(),
+ data: null,
+ resolved: false
+ };
+ this.objs[objId] = obj;
+ return obj;
+ },
+ get: function PDFObjects_get(objId, callback) {
+ if (callback) {
+ this.ensureObj(objId).capability.promise.then(callback);
+ return null;
+ }
+ var obj = this.objs[objId];
+ if (!obj || !obj.resolved) {
+ error('Requesting object that isn\'t resolved yet ' + objId);
+ }
+ return obj.data;
+ },
+ resolve: function PDFObjects_resolve(objId, data) {
+ var obj = this.ensureObj(objId);
+ obj.resolved = true;
+ obj.data = data;
+ obj.capability.resolve(data);
+ },
+ isResolved: function PDFObjects_isResolved(objId) {
+ var objs = this.objs;
+ if (!objs[objId]) {
+ return false;
+ }
+ return objs[objId].resolved;
+ },
+ hasData: function PDFObjects_hasData(objId) {
+ return this.isResolved(objId);
+ },
+ getData: function PDFObjects_getData(objId) {
+ var objs = this.objs;
+ if (!objs[objId] || !objs[objId].resolved) {
+ return null;
+ }
+ return objs[objId].data;
+ },
+ clear: function PDFObjects_clear() {
+ this.objs = Object.create(null);
+ }
+ };
+ return PDFObjects;
+}();
+var RenderTask = function RenderTaskClosure() {
+ function RenderTask(internalRenderTask) {
+ this._internalRenderTask = internalRenderTask;
+ this.onContinue = null;
+ }
+ RenderTask.prototype = {
+ get promise() {
+ return this._internalRenderTask.capability.promise;
+ },
+ cancel: function RenderTask_cancel() {
+ this._internalRenderTask.cancel();
+ },
+ then: function RenderTask_then(onFulfilled, onRejected) {
+ return this.promise.then.apply(this.promise, arguments);
+ }
+ };
+ return RenderTask;
+}();
+var InternalRenderTask = function InternalRenderTaskClosure() {
+ function InternalRenderTask(callback, params, objs, commonObjs, operatorList, pageNumber, canvasFactory) {
+ this.callback = callback;
+ this.params = params;
+ this.objs = objs;
+ this.commonObjs = commonObjs;
+ this.operatorListIdx = null;
+ this.operatorList = operatorList;
+ this.pageNumber = pageNumber;
+ this.canvasFactory = canvasFactory;
+ this.running = false;
+ this.graphicsReadyCallback = null;
+ this.graphicsReady = false;
+ this.useRequestAnimationFrame = false;
+ this.cancelled = false;
+ this.capability = createPromiseCapability();
+ this.task = new RenderTask(this);
+ this._continueBound = this._continue.bind(this);
+ this._scheduleNextBound = this._scheduleNext.bind(this);
+ this._nextBound = this._next.bind(this);
+ }
+ InternalRenderTask.prototype = {
+ initializeGraphics: function InternalRenderTask_initializeGraphics(transparency) {
+ if (this.cancelled) {
+ return;
+ }
+ if (getDefaultSetting('pdfBug') && globalScope.StepperManager && globalScope.StepperManager.enabled) {
+ this.stepper = globalScope.StepperManager.create(this.pageNumber - 1);
+ this.stepper.init(this.operatorList);
+ this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();
+ }
+ var params = this.params;
+ this.gfx = new CanvasGraphics(params.canvasContext, this.commonObjs, this.objs, this.canvasFactory, params.imageLayer);
+ this.gfx.beginDrawing(params.transform, params.viewport, transparency);
+ this.operatorListIdx = 0;
+ this.graphicsReady = true;
+ if (this.graphicsReadyCallback) {
+ this.graphicsReadyCallback();
+ }
+ },
+ cancel: function InternalRenderTask_cancel() {
+ this.running = false;
+ this.cancelled = true;
+ this.callback('cancelled');
+ },
+ operatorListChanged: function InternalRenderTask_operatorListChanged() {
+ if (!this.graphicsReady) {
+ if (!this.graphicsReadyCallback) {
+ this.graphicsReadyCallback = this._continueBound;
}
- };
- return StatTimer;
-})();
-
-PDFJS.createBlob = function createBlob(data, contentType) {
- if (typeof Blob !== 'undefined') {
- return new Blob([data], { type: contentType });
- }
- // Blob builder is deprecated in FF14 and removed in FF18.
- var bb = new MozBlobBuilder();
- bb.append(data);
- return bb.getBlob(contentType);
+ return;
+ }
+ if (this.stepper) {
+ this.stepper.updateOperatorList(this.operatorList);
+ }
+ if (this.running) {
+ return;
+ }
+ this._continue();
+ },
+ _continue: function InternalRenderTask__continue() {
+ this.running = true;
+ if (this.cancelled) {
+ return;
+ }
+ if (this.task.onContinue) {
+ this.task.onContinue(this._scheduleNextBound);
+ } else {
+ this._scheduleNext();
+ }
+ },
+ _scheduleNext: function InternalRenderTask__scheduleNext() {
+ if (this.useRequestAnimationFrame && typeof window !== 'undefined') {
+ window.requestAnimationFrame(this._nextBound);
+ } else {
+ Promise.resolve(undefined).then(this._nextBound);
+ }
+ },
+ _next: function InternalRenderTask__next() {
+ if (this.cancelled) {
+ return;
+ }
+ this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList, this.operatorListIdx, this._continueBound, this.stepper);
+ if (this.operatorListIdx === this.operatorList.argsArray.length) {
+ this.running = false;
+ if (this.operatorList.lastChunk) {
+ this.gfx.endDrawing();
+ this.callback();
+ }
+ }
+ }
+ };
+ return InternalRenderTask;
+}();
+var _UnsupportedManager = function UnsupportedManagerClosure() {
+ var listeners = [];
+ return {
+ listen: function (cb) {
+ deprecated('Global UnsupportedManager.listen is used: ' + ' use PDFDocumentLoadingTask.onUnsupportedFeature instead');
+ listeners.push(cb);
+ },
+ notify: function (featureId) {
+ for (var i = 0, ii = listeners.length; i < ii; i++) {
+ listeners[i](featureId);
+ }
+ }
+ };
+}();
+exports.version = '1.7.354';
+exports.build = '0f7548ba';
+exports.getDocument = getDocument;
+exports.PDFDataRangeTransport = PDFDataRangeTransport;
+exports.PDFWorker = PDFWorker;
+exports.PDFDocumentProxy = PDFDocumentProxy;
+exports.PDFPageProxy = PDFPageProxy;
+exports._UnsupportedManager = _UnsupportedManager;
+
+/***/ }),
+/* 4 */
+/***/ (function(module, exports, __w_pdfjs_require__) {
+
+"use strict";
+
+var sharedUtil = __w_pdfjs_require__(0);
+var FONT_IDENTITY_MATRIX = sharedUtil.FONT_IDENTITY_MATRIX;
+var IDENTITY_MATRIX = sharedUtil.IDENTITY_MATRIX;
+var ImageKind = sharedUtil.ImageKind;
+var OPS = sharedUtil.OPS;
+var Util = sharedUtil.Util;
+var isNum = sharedUtil.isNum;
+var isArray = sharedUtil.isArray;
+var warn = sharedUtil.warn;
+var createObjectURL = sharedUtil.createObjectURL;
+var SVG_DEFAULTS = {
+ fontStyle: 'normal',
+ fontWeight: 'normal',
+ fillColor: '#000000'
};
-
-PDFJS.createObjectURL = (function createObjectURLClosure() {
- // Blob/createObjectURL is not available, falling back to data schema.
- var digits =
- 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';
-
- return function createObjectURL(data, contentType) {
- if (!PDFJS.disableCreateObjectURL &&
- typeof URL !== 'undefined' && URL.createObjectURL) {
- var blob = PDFJS.createBlob(data, contentType);
- return URL.createObjectURL(blob);
- }
-
- var buffer = 'data:' + contentType + ';base64,';
- for (var i = 0, ii = data.length; i < ii; i += 3) {
- var b1 = data[i] & 0xFF;
- var b2 = data[i + 1] & 0xFF;
- var b3 = data[i + 2] & 0xFF;
- var d1 = b1 >> 2, d2 = ((b1 & 3) << 4) | (b2 >> 4);
- var d3 = i + 1 < ii ? ((b2 & 0xF) << 2) | (b3 >> 6) : 64;
- var d4 = i + 2 < ii ? (b3 & 0x3F) : 64;
- buffer += digits[d1] + digits[d2] + digits[d3] + digits[d4];
- }
- return buffer;
- };
-})();
-
-function MessageHandler(name, comObj) {
- this.name = name;
- this.comObj = comObj;
- this.callbackIndex = 1;
- this.postMessageTransfers = true;
- var callbacksCapabilities = this.callbacksCapabilities = {};
- var ah = this.actionHandler = {};
-
- ah['console_log'] = [function ahConsoleLog(data) {
- console.log.apply(console, data);
- }];
- ah['console_error'] = [function ahConsoleError(data) {
- console.error.apply(console, data);
- }];
- ah['_unsupported_feature'] = [function ah_unsupportedFeature(data) {
- UnsupportedManager.notify(data);
- }];
-
- comObj.onmessage = function messageHandlerComObjOnMessage(event) {
- var data = event.data;
- if (data.isReply) {
- var callbackId = data.callbackId;
- if (data.callbackId in callbacksCapabilities) {
- var callback = callbacksCapabilities[callbackId];
- delete callbacksCapabilities[callbackId];
- if ('error' in data) {
- callback.reject(data.error);
- } else {
- callback.resolve(data.data);
- }
- } else {
- error('Cannot resolve callback ' + callbackId);
- }
- } else if (data.action in ah) {
- var action = ah[data.action];
- if (data.callbackId) {
- Promise.resolve().then(function () {
- return action[0].call(action[1], data.data);
- }).then(function (result) {
- comObj.postMessage({
- isReply: true,
- callbackId: data.callbackId,
- data: result
- });
- }, function (reason) {
- comObj.postMessage({
- isReply: true,
- callbackId: data.callbackId,
- error: reason
- });
- });
+var convertImgDataToPng = function convertImgDataToPngClosure() {
+ var PNG_HEADER = new Uint8Array([
+ 0x89,
+ 0x50,
+ 0x4e,
+ 0x47,
+ 0x0d,
+ 0x0a,
+ 0x1a,
+ 0x0a
+ ]);
+ var CHUNK_WRAPPER_SIZE = 12;
+ var crcTable = new Int32Array(256);
+ for (var i = 0; i < 256; i++) {
+ var c = i;
+ for (var h = 0; h < 8; h++) {
+ if (c & 1) {
+ c = 0xedB88320 ^ c >> 1 & 0x7fffffff;
+ } else {
+ c = c >> 1 & 0x7fffffff;
+ }
+ }
+ crcTable[i] = c;
+ }
+ function crc32(data, start, end) {
+ var crc = -1;
+ for (var i = start; i < end; i++) {
+ var a = (crc ^ data[i]) & 0xff;
+ var b = crcTable[a];
+ crc = crc >>> 8 ^ b;
+ }
+ return crc ^ -1;
+ }
+ function writePngChunk(type, body, data, offset) {
+ var p = offset;
+ var len = body.length;
+ data[p] = len >> 24 & 0xff;
+ data[p + 1] = len >> 16 & 0xff;
+ data[p + 2] = len >> 8 & 0xff;
+ data[p + 3] = len & 0xff;
+ p += 4;
+ data[p] = type.charCodeAt(0) & 0xff;
+ data[p + 1] = type.charCodeAt(1) & 0xff;
+ data[p + 2] = type.charCodeAt(2) & 0xff;
+ data[p + 3] = type.charCodeAt(3) & 0xff;
+ p += 4;
+ data.set(body, p);
+ p += body.length;
+ var crc = crc32(data, offset + 4, p);
+ data[p] = crc >> 24 & 0xff;
+ data[p + 1] = crc >> 16 & 0xff;
+ data[p + 2] = crc >> 8 & 0xff;
+ data[p + 3] = crc & 0xff;
+ }
+ function adler32(data, start, end) {
+ var a = 1;
+ var b = 0;
+ for (var i = start; i < end; ++i) {
+ a = (a + (data[i] & 0xff)) % 65521;
+ b = (b + a) % 65521;
+ }
+ return b << 16 | a;
+ }
+ function encode(imgData, kind, forceDataSchema) {
+ var width = imgData.width;
+ var height = imgData.height;
+ var bitDepth, colorType, lineSize;
+ var bytes = imgData.data;
+ switch (kind) {
+ case ImageKind.GRAYSCALE_1BPP:
+ colorType = 0;
+ bitDepth = 1;
+ lineSize = width + 7 >> 3;
+ break;
+ case ImageKind.RGB_24BPP:
+ colorType = 2;
+ bitDepth = 8;
+ lineSize = width * 3;
+ break;
+ case ImageKind.RGBA_32BPP:
+ colorType = 6;
+ bitDepth = 8;
+ lineSize = width * 4;
+ break;
+ default:
+ throw new Error('invalid format');
+ }
+ var literals = new Uint8Array((1 + lineSize) * height);
+ var offsetLiterals = 0, offsetBytes = 0;
+ var y, i;
+ for (y = 0; y < height; ++y) {
+ literals[offsetLiterals++] = 0;
+ literals.set(bytes.subarray(offsetBytes, offsetBytes + lineSize), offsetLiterals);
+ offsetBytes += lineSize;
+ offsetLiterals += lineSize;
+ }
+ if (kind === ImageKind.GRAYSCALE_1BPP) {
+ offsetLiterals = 0;
+ for (y = 0; y < height; y++) {
+ offsetLiterals++;
+ for (i = 0; i < lineSize; i++) {
+ literals[offsetLiterals++] ^= 0xFF;
+ }
+ }
+ }
+ var ihdr = new Uint8Array([
+ width >> 24 & 0xff,
+ width >> 16 & 0xff,
+ width >> 8 & 0xff,
+ width & 0xff,
+ height >> 24 & 0xff,
+ height >> 16 & 0xff,
+ height >> 8 & 0xff,
+ height & 0xff,
+ bitDepth,
+ colorType,
+ 0x00,
+ 0x00,
+ 0x00
+ ]);
+ var len = literals.length;
+ var maxBlockLength = 0xFFFF;
+ var deflateBlocks = Math.ceil(len / maxBlockLength);
+ var idat = new Uint8Array(2 + len + deflateBlocks * 5 + 4);
+ var pi = 0;
+ idat[pi++] = 0x78;
+ idat[pi++] = 0x9c;
+ var pos = 0;
+ while (len > maxBlockLength) {
+ idat[pi++] = 0x00;
+ idat[pi++] = 0xff;
+ idat[pi++] = 0xff;
+ idat[pi++] = 0x00;
+ idat[pi++] = 0x00;
+ idat.set(literals.subarray(pos, pos + maxBlockLength), pi);
+ pi += maxBlockLength;
+ pos += maxBlockLength;
+ len -= maxBlockLength;
+ }
+ idat[pi++] = 0x01;
+ idat[pi++] = len & 0xff;
+ idat[pi++] = len >> 8 & 0xff;
+ idat[pi++] = ~len & 0xffff & 0xff;
+ idat[pi++] = (~len & 0xffff) >> 8 & 0xff;
+ idat.set(literals.subarray(pos), pi);
+ pi += literals.length - pos;
+ var adler = adler32(literals, 0, literals.length);
+ idat[pi++] = adler >> 24 & 0xff;
+ idat[pi++] = adler >> 16 & 0xff;
+ idat[pi++] = adler >> 8 & 0xff;
+ idat[pi++] = adler & 0xff;
+ var pngLength = PNG_HEADER.length + CHUNK_WRAPPER_SIZE * 3 + ihdr.length + idat.length;
+ var data = new Uint8Array(pngLength);
+ var offset = 0;
+ data.set(PNG_HEADER, offset);
+ offset += PNG_HEADER.length;
+ writePngChunk('IHDR', ihdr, data, offset);
+ offset += CHUNK_WRAPPER_SIZE + ihdr.length;
+ writePngChunk('IDATA', idat, data, offset);
+ offset += CHUNK_WRAPPER_SIZE + idat.length;
+ writePngChunk('IEND', new Uint8Array(0), data, offset);
+ return createObjectURL(data, 'image/png', forceDataSchema);
+ }
+ return function convertImgDataToPng(imgData, forceDataSchema) {
+ var kind = imgData.kind === undefined ? ImageKind.GRAYSCALE_1BPP : imgData.kind;
+ return encode(imgData, kind, forceDataSchema);
+ };
+}();
+var SVGExtraState = function SVGExtraStateClosure() {
+ function SVGExtraState() {
+ this.fontSizeScale = 1;
+ this.fontWeight = SVG_DEFAULTS.fontWeight;
+ this.fontSize = 0;
+ this.textMatrix = IDENTITY_MATRIX;
+ this.fontMatrix = FONT_IDENTITY_MATRIX;
+ this.leading = 0;
+ this.x = 0;
+ this.y = 0;
+ this.lineX = 0;
+ this.lineY = 0;
+ this.charSpacing = 0;
+ this.wordSpacing = 0;
+ this.textHScale = 1;
+ this.textRise = 0;
+ this.fillColor = SVG_DEFAULTS.fillColor;
+ this.strokeColor = '#000000';
+ this.fillAlpha = 1;
+ this.strokeAlpha = 1;
+ this.lineWidth = 1;
+ this.lineJoin = '';
+ this.lineCap = '';
+ this.miterLimit = 0;
+ this.dashArray = [];
+ this.dashPhase = 0;
+ this.dependencies = [];
+ this.activeClipUrl = null;
+ this.clipGroup = null;
+ this.maskId = '';
+ }
+ SVGExtraState.prototype = {
+ clone: function SVGExtraState_clone() {
+ return Object.create(this);
+ },
+ setCurrentPoint: function SVGExtraState_setCurrentPoint(x, y) {
+ this.x = x;
+ this.y = y;
+ }
+ };
+ return SVGExtraState;
+}();
+var SVGGraphics = function SVGGraphicsClosure() {
+ function opListToTree(opList) {
+ var opTree = [];
+ var tmp = [];
+ var opListLen = opList.length;
+ for (var x = 0; x < opListLen; x++) {
+ if (opList[x].fn === 'save') {
+ opTree.push({
+ 'fnId': 92,
+ 'fn': 'group',
+ 'items': []
+ });
+ tmp.push(opTree);
+ opTree = opTree[opTree.length - 1].items;
+ continue;
+ }
+ if (opList[x].fn === 'restore') {
+ opTree = tmp.pop();
+ } else {
+ opTree.push(opList[x]);
+ }
+ }
+ return opTree;
+ }
+ function pf(value) {
+ if (value === (value | 0)) {
+ return value.toString();
+ }
+ var s = value.toFixed(10);
+ var i = s.length - 1;
+ if (s[i] !== '0') {
+ return s;
+ }
+ do {
+ i--;
+ } while (s[i] === '0');
+ return s.substr(0, s[i] === '.' ? i : i + 1);
+ }
+ function pm(m) {
+ if (m[4] === 0 && m[5] === 0) {
+ if (m[1] === 0 && m[2] === 0) {
+ if (m[0] === 1 && m[3] === 1) {
+ return '';
+ }
+ return 'scale(' + pf(m[0]) + ' ' + pf(m[3]) + ')';
+ }
+ if (m[0] === m[3] && m[1] === -m[2]) {
+ var a = Math.acos(m[0]) * 180 / Math.PI;
+ return 'rotate(' + pf(a) + ')';
+ }
+ } else {
+ if (m[0] === 1 && m[1] === 0 && m[2] === 0 && m[3] === 1) {
+ return 'translate(' + pf(m[4]) + ' ' + pf(m[5]) + ')';
+ }
+ }
+ return 'matrix(' + pf(m[0]) + ' ' + pf(m[1]) + ' ' + pf(m[2]) + ' ' + pf(m[3]) + ' ' + pf(m[4]) + ' ' + pf(m[5]) + ')';
+ }
+ function SVGGraphics(commonObjs, objs, forceDataSchema) {
+ this.current = new SVGExtraState();
+ this.transformMatrix = IDENTITY_MATRIX;
+ this.transformStack = [];
+ this.extraStack = [];
+ this.commonObjs = commonObjs;
+ this.objs = objs;
+ this.pendingEOFill = false;
+ this.embedFonts = false;
+ this.embeddedFonts = Object.create(null);
+ this.cssStyle = null;
+ this.forceDataSchema = !!forceDataSchema;
+ }
+ var NS = 'http://www.w3.org/2000/svg';
+ var XML_NS = 'http://www.w3.org/XML/1998/namespace';
+ var XLINK_NS = 'http://www.w3.org/1999/xlink';
+ var LINE_CAP_STYLES = [
+ 'butt',
+ 'round',
+ 'square'
+ ];
+ var LINE_JOIN_STYLES = [
+ 'miter',
+ 'round',
+ 'bevel'
+ ];
+ var clipCount = 0;
+ var maskCount = 0;
+ SVGGraphics.prototype = {
+ save: function SVGGraphics_save() {
+ this.transformStack.push(this.transformMatrix);
+ var old = this.current;
+ this.extraStack.push(old);
+ this.current = old.clone();
+ },
+ restore: function SVGGraphics_restore() {
+ this.transformMatrix = this.transformStack.pop();
+ this.current = this.extraStack.pop();
+ this.tgrp = null;
+ },
+ group: function SVGGraphics_group(items) {
+ this.save();
+ this.executeOpTree(items);
+ this.restore();
+ },
+ loadDependencies: function SVGGraphics_loadDependencies(operatorList) {
+ var fnArray = operatorList.fnArray;
+ var fnArrayLen = fnArray.length;
+ var argsArray = operatorList.argsArray;
+ var self = this;
+ for (var i = 0; i < fnArrayLen; i++) {
+ if (OPS.dependency === fnArray[i]) {
+ var deps = argsArray[i];
+ for (var n = 0, nn = deps.length; n < nn; n++) {
+ var obj = deps[n];
+ var common = obj.substring(0, 2) === 'g_';
+ var promise;
+ if (common) {
+ promise = new Promise(function (resolve) {
+ self.commonObjs.get(obj, resolve);
+ });
} else {
- action[0].call(action[1], data.data);
+ promise = new Promise(function (resolve) {
+ self.objs.get(obj, resolve);
+ });
}
- } else {
- error('Unknown action from worker: ' + data.action);
+ this.current.dependencies.push(promise);
+ }
}
- };
-}
-
-MessageHandler.prototype = {
- on: function messageHandlerOn(actionName, handler, scope) {
- var ah = this.actionHandler;
- if (ah[actionName]) {
- error('There is already an actionName called "' + actionName + '"');
+ }
+ return Promise.all(this.current.dependencies);
+ },
+ transform: function SVGGraphics_transform(a, b, c, d, e, f) {
+ var transformMatrix = [
+ a,
+ b,
+ c,
+ d,
+ e,
+ f
+ ];
+ this.transformMatrix = Util.transform(this.transformMatrix, transformMatrix);
+ this.tgrp = null;
+ },
+ getSVG: function SVGGraphics_getSVG(operatorList, viewport) {
+ this.viewport = viewport;
+ var svgElement = this._initialize(viewport);
+ return this.loadDependencies(operatorList).then(function () {
+ this.transformMatrix = IDENTITY_MATRIX;
+ var opTree = this.convertOpList(operatorList);
+ this.executeOpTree(opTree);
+ return svgElement;
+ }.bind(this));
+ },
+ convertOpList: function SVGGraphics_convertOpList(operatorList) {
+ var argsArray = operatorList.argsArray;
+ var fnArray = operatorList.fnArray;
+ var fnArrayLen = fnArray.length;
+ var REVOPS = [];
+ var opList = [];
+ for (var op in OPS) {
+ REVOPS[OPS[op]] = op;
+ }
+ for (var x = 0; x < fnArrayLen; x++) {
+ var fnId = fnArray[x];
+ opList.push({
+ 'fnId': fnId,
+ 'fn': REVOPS[fnId],
+ 'args': argsArray[x]
+ });
+ }
+ return opListToTree(opList);
+ },
+ executeOpTree: function SVGGraphics_executeOpTree(opTree) {
+ var opTreeLen = opTree.length;
+ for (var x = 0; x < opTreeLen; x++) {
+ var fn = opTree[x].fn;
+ var fnId = opTree[x].fnId;
+ var args = opTree[x].args;
+ switch (fnId | 0) {
+ case OPS.beginText:
+ this.beginText();
+ break;
+ case OPS.setLeading:
+ this.setLeading(args);
+ break;
+ case OPS.setLeadingMoveText:
+ this.setLeadingMoveText(args[0], args[1]);
+ break;
+ case OPS.setFont:
+ this.setFont(args);
+ break;
+ case OPS.showText:
+ this.showText(args[0]);
+ break;
+ case OPS.showSpacedText:
+ this.showText(args[0]);
+ break;
+ case OPS.endText:
+ this.endText();
+ break;
+ case OPS.moveText:
+ this.moveText(args[0], args[1]);
+ break;
+ case OPS.setCharSpacing:
+ this.setCharSpacing(args[0]);
+ break;
+ case OPS.setWordSpacing:
+ this.setWordSpacing(args[0]);
+ break;
+ case OPS.setHScale:
+ this.setHScale(args[0]);
+ break;
+ case OPS.setTextMatrix:
+ this.setTextMatrix(args[0], args[1], args[2], args[3], args[4], args[5]);
+ break;
+ case OPS.setLineWidth:
+ this.setLineWidth(args[0]);
+ break;
+ case OPS.setLineJoin:
+ this.setLineJoin(args[0]);
+ break;
+ case OPS.setLineCap:
+ this.setLineCap(args[0]);
+ break;
+ case OPS.setMiterLimit:
+ this.setMiterLimit(args[0]);
+ break;
+ case OPS.setFillRGBColor:
+ this.setFillRGBColor(args[0], args[1], args[2]);
+ break;
+ case OPS.setStrokeRGBColor:
+ this.setStrokeRGBColor(args[0], args[1], args[2]);
+ break;
+ case OPS.setDash:
+ this.setDash(args[0], args[1]);
+ break;
+ case OPS.setGState:
+ this.setGState(args[0]);
+ break;
+ case OPS.fill:
+ this.fill();
+ break;
+ case OPS.eoFill:
+ this.eoFill();
+ break;
+ case OPS.stroke:
+ this.stroke();
+ break;
+ case OPS.fillStroke:
+ this.fillStroke();
+ break;
+ case OPS.eoFillStroke:
+ this.eoFillStroke();
+ break;
+ case OPS.clip:
+ this.clip('nonzero');
+ break;
+ case OPS.eoClip:
+ this.clip('evenodd');
+ break;
+ case OPS.paintSolidColorImageMask:
+ this.paintSolidColorImageMask();
+ break;
+ case OPS.paintJpegXObject:
+ this.paintJpegXObject(args[0], args[1], args[2]);
+ break;
+ case OPS.paintImageXObject:
+ this.paintImageXObject(args[0]);
+ break;
+ case OPS.paintInlineImageXObject:
+ this.paintInlineImageXObject(args[0]);
+ break;
+ case OPS.paintImageMaskXObject:
+ this.paintImageMaskXObject(args[0]);
+ break;
+ case OPS.paintFormXObjectBegin:
+ this.paintFormXObjectBegin(args[0], args[1]);
+ break;
+ case OPS.paintFormXObjectEnd:
+ this.paintFormXObjectEnd();
+ break;
+ case OPS.closePath:
+ this.closePath();
+ break;
+ case OPS.closeStroke:
+ this.closeStroke();
+ break;
+ case OPS.closeFillStroke:
+ this.closeFillStroke();
+ break;
+ case OPS.nextLine:
+ this.nextLine();
+ break;
+ case OPS.transform:
+ this.transform(args[0], args[1], args[2], args[3], args[4], args[5]);
+ break;
+ case OPS.constructPath:
+ this.constructPath(args[0], args[1]);
+ break;
+ case OPS.endPath:
+ this.endPath();
+ break;
+ case 92:
+ this.group(opTree[x].items);
+ break;
+ default:
+ warn('Unimplemented operator ' + fn);
+ break;
}
- ah[actionName] = [handler, scope];
+ }
},
- /**
- * Sends a message to the comObj to invoke the action with the supplied data.
- * @param {String} actionName Action to call.
- * @param {JSON} data JSON data to send.
- * @param {Array} [transfers] Optional list of transfers/ArrayBuffers
- */
- send: function messageHandlerSend(actionName, data, transfers) {
- var message = {
- action: actionName,
- data: data
- };
- this.postMessage(message, transfers);
+ setWordSpacing: function SVGGraphics_setWordSpacing(wordSpacing) {
+ this.current.wordSpacing = wordSpacing;
},
- /**
- * Sends a message to the comObj to invoke the action with the supplied data.
- * Expects that other side will callback with the response.
- * @param {String} actionName Action to call.
- * @param {JSON} data JSON data to send.
- * @param {Array} [transfers] Optional list of transfers/ArrayBuffers.
- * @returns {Promise} Promise to be resolved with response data.
- */
- sendWithPromise:
- function messageHandlerSendWithPromise(actionName, data, transfers) {
- var callbackId = this.callbackIndex++;
- var message = {
- action: actionName,
- data: data,
- callbackId: callbackId
- };
- var capability = createPromiseCapability();
- this.callbacksCapabilities[callbackId] = capability;
- try {
- this.postMessage(message, transfers);
- } catch (e) {
- capability.reject(e);
+ setCharSpacing: function SVGGraphics_setCharSpacing(charSpacing) {
+ this.current.charSpacing = charSpacing;
+ },
+ nextLine: function SVGGraphics_nextLine() {
+ this.moveText(0, this.current.leading);
+ },
+ setTextMatrix: function SVGGraphics_setTextMatrix(a, b, c, d, e, f) {
+ var current = this.current;
+ this.current.textMatrix = this.current.lineMatrix = [
+ a,
+ b,
+ c,
+ d,
+ e,
+ f
+ ];
+ this.current.x = this.current.lineX = 0;
+ this.current.y = this.current.lineY = 0;
+ current.xcoords = [];
+ current.tspan = document.createElementNS(NS, 'svg:tspan');
+ current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);
+ current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px');
+ current.tspan.setAttributeNS(null, 'y', pf(-current.y));
+ current.txtElement = document.createElementNS(NS, 'svg:text');
+ current.txtElement.appendChild(current.tspan);
+ },
+ beginText: function SVGGraphics_beginText() {
+ this.current.x = this.current.lineX = 0;
+ this.current.y = this.current.lineY = 0;
+ this.current.textMatrix = IDENTITY_MATRIX;
+ this.current.lineMatrix = IDENTITY_MATRIX;
+ this.current.tspan = document.createElementNS(NS, 'svg:tspan');
+ this.current.txtElement = document.createElementNS(NS, 'svg:text');
+ this.current.txtgrp = document.createElementNS(NS, 'svg:g');
+ this.current.xcoords = [];
+ },
+ moveText: function SVGGraphics_moveText(x, y) {
+ var current = this.current;
+ this.current.x = this.current.lineX += x;
+ this.current.y = this.current.lineY += y;
+ current.xcoords = [];
+ current.tspan = document.createElementNS(NS, 'svg:tspan');
+ current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);
+ current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px');
+ current.tspan.setAttributeNS(null, 'y', pf(-current.y));
+ },
+ showText: function SVGGraphics_showText(glyphs) {
+ var current = this.current;
+ var font = current.font;
+ var fontSize = current.fontSize;
+ if (fontSize === 0) {
+ return;
+ }
+ var charSpacing = current.charSpacing;
+ var wordSpacing = current.wordSpacing;
+ var fontDirection = current.fontDirection;
+ var textHScale = current.textHScale * fontDirection;
+ var glyphsLength = glyphs.length;
+ var vertical = font.vertical;
+ var widthAdvanceScale = fontSize * current.fontMatrix[0];
+ var x = 0, i;
+ for (i = 0; i < glyphsLength; ++i) {
+ var glyph = glyphs[i];
+ if (glyph === null) {
+ x += fontDirection * wordSpacing;
+ continue;
+ } else if (isNum(glyph)) {
+ x += -glyph * fontSize * 0.001;
+ continue;
+ }
+ current.xcoords.push(current.x + x * textHScale);
+ var width = glyph.width;
+ var character = glyph.fontChar;
+ var charWidth = width * widthAdvanceScale + charSpacing * fontDirection;
+ x += charWidth;
+ current.tspan.textContent += character;
+ }
+ if (vertical) {
+ current.y -= x * textHScale;
+ } else {
+ current.x += x * textHScale;
+ }
+ current.tspan.setAttributeNS(null, 'x', current.xcoords.map(pf).join(' '));
+ current.tspan.setAttributeNS(null, 'y', pf(-current.y));
+ current.tspan.setAttributeNS(null, 'font-family', current.fontFamily);
+ current.tspan.setAttributeNS(null, 'font-size', pf(current.fontSize) + 'px');
+ if (current.fontStyle !== SVG_DEFAULTS.fontStyle) {
+ current.tspan.setAttributeNS(null, 'font-style', current.fontStyle);
+ }
+ if (current.fontWeight !== SVG_DEFAULTS.fontWeight) {
+ current.tspan.setAttributeNS(null, 'font-weight', current.fontWeight);
+ }
+ if (current.fillColor !== SVG_DEFAULTS.fillColor) {
+ current.tspan.setAttributeNS(null, 'fill', current.fillColor);
+ }
+ current.txtElement.setAttributeNS(null, 'transform', pm(current.textMatrix) + ' scale(1, -1)');
+ current.txtElement.setAttributeNS(XML_NS, 'xml:space', 'preserve');
+ current.txtElement.appendChild(current.tspan);
+ current.txtgrp.appendChild(current.txtElement);
+ this._ensureTransformGroup().appendChild(current.txtElement);
+ },
+ setLeadingMoveText: function SVGGraphics_setLeadingMoveText(x, y) {
+ this.setLeading(-y);
+ this.moveText(x, y);
+ },
+ addFontStyle: function SVGGraphics_addFontStyle(fontObj) {
+ if (!this.cssStyle) {
+ this.cssStyle = document.createElementNS(NS, 'svg:style');
+ this.cssStyle.setAttributeNS(null, 'type', 'text/css');
+ this.defs.appendChild(this.cssStyle);
+ }
+ var url = createObjectURL(fontObj.data, fontObj.mimetype, this.forceDataSchema);
+ this.cssStyle.textContent += '@font-face { font-family: "' + fontObj.loadedName + '";' + ' src: url(' + url + '); }\n';
+ },
+ setFont: function SVGGraphics_setFont(details) {
+ var current = this.current;
+ var fontObj = this.commonObjs.get(details[0]);
+ var size = details[1];
+ this.current.font = fontObj;
+ if (this.embedFonts && fontObj.data && !this.embeddedFonts[fontObj.loadedName]) {
+ this.addFontStyle(fontObj);
+ this.embeddedFonts[fontObj.loadedName] = fontObj;
+ }
+ current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : FONT_IDENTITY_MATRIX;
+ var bold = fontObj.black ? fontObj.bold ? 'bolder' : 'bold' : fontObj.bold ? 'bold' : 'normal';
+ var italic = fontObj.italic ? 'italic' : 'normal';
+ if (size < 0) {
+ size = -size;
+ current.fontDirection = -1;
+ } else {
+ current.fontDirection = 1;
+ }
+ current.fontSize = size;
+ current.fontFamily = fontObj.loadedName;
+ current.fontWeight = bold;
+ current.fontStyle = italic;
+ current.tspan = document.createElementNS(NS, 'svg:tspan');
+ current.tspan.setAttributeNS(null, 'y', pf(-current.y));
+ current.xcoords = [];
+ },
+ endText: function SVGGraphics_endText() {
+ },
+ setLineWidth: function SVGGraphics_setLineWidth(width) {
+ this.current.lineWidth = width;
+ },
+ setLineCap: function SVGGraphics_setLineCap(style) {
+ this.current.lineCap = LINE_CAP_STYLES[style];
+ },
+ setLineJoin: function SVGGraphics_setLineJoin(style) {
+ this.current.lineJoin = LINE_JOIN_STYLES[style];
+ },
+ setMiterLimit: function SVGGraphics_setMiterLimit(limit) {
+ this.current.miterLimit = limit;
+ },
+ setStrokeRGBColor: function SVGGraphics_setStrokeRGBColor(r, g, b) {
+ var color = Util.makeCssRgb(r, g, b);
+ this.current.strokeColor = color;
+ },
+ setFillRGBColor: function SVGGraphics_setFillRGBColor(r, g, b) {
+ var color = Util.makeCssRgb(r, g, b);
+ this.current.fillColor = color;
+ this.current.tspan = document.createElementNS(NS, 'svg:tspan');
+ this.current.xcoords = [];
+ },
+ setDash: function SVGGraphics_setDash(dashArray, dashPhase) {
+ this.current.dashArray = dashArray;
+ this.current.dashPhase = dashPhase;
+ },
+ constructPath: function SVGGraphics_constructPath(ops, args) {
+ var current = this.current;
+ var x = current.x, y = current.y;
+ current.path = document.createElementNS(NS, 'svg:path');
+ var d = [];
+ var opLength = ops.length;
+ for (var i = 0, j = 0; i < opLength; i++) {
+ switch (ops[i] | 0) {
+ case OPS.rectangle:
+ x = args[j++];
+ y = args[j++];
+ var width = args[j++];
+ var height = args[j++];
+ var xw = x + width;
+ var yh = y + height;
+ d.push('M', pf(x), pf(y), 'L', pf(xw), pf(y), 'L', pf(xw), pf(yh), 'L', pf(x), pf(yh), 'Z');
+ break;
+ case OPS.moveTo:
+ x = args[j++];
+ y = args[j++];
+ d.push('M', pf(x), pf(y));
+ break;
+ case OPS.lineTo:
+ x = args[j++];
+ y = args[j++];
+ d.push('L', pf(x), pf(y));
+ break;
+ case OPS.curveTo:
+ x = args[j + 4];
+ y = args[j + 5];
+ d.push('C', pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]), pf(x), pf(y));
+ j += 6;
+ break;
+ case OPS.curveTo2:
+ x = args[j + 2];
+ y = args[j + 3];
+ d.push('C', pf(x), pf(y), pf(args[j]), pf(args[j + 1]), pf(args[j + 2]), pf(args[j + 3]));
+ j += 4;
+ break;
+ case OPS.curveTo3:
+ x = args[j + 2];
+ y = args[j + 3];
+ d.push('C', pf(args[j]), pf(args[j + 1]), pf(x), pf(y), pf(x), pf(y));
+ j += 4;
+ break;
+ case OPS.closePath:
+ d.push('Z');
+ break;
+ }
+ }
+ current.path.setAttributeNS(null, 'd', d.join(' '));
+ current.path.setAttributeNS(null, 'stroke-miterlimit', pf(current.miterLimit));
+ current.path.setAttributeNS(null, 'stroke-linecap', current.lineCap);
+ current.path.setAttributeNS(null, 'stroke-linejoin', current.lineJoin);
+ current.path.setAttributeNS(null, 'stroke-width', pf(current.lineWidth) + 'px');
+ current.path.setAttributeNS(null, 'stroke-dasharray', current.dashArray.map(pf).join(' '));
+ current.path.setAttributeNS(null, 'stroke-dashoffset', pf(current.dashPhase) + 'px');
+ current.path.setAttributeNS(null, 'fill', 'none');
+ this._ensureTransformGroup().appendChild(current.path);
+ current.element = current.path;
+ current.setCurrentPoint(x, y);
+ },
+ endPath: function SVGGraphics_endPath() {
+ },
+ clip: function SVGGraphics_clip(type) {
+ var current = this.current;
+ var clipId = 'clippath' + clipCount;
+ clipCount++;
+ var clipPath = document.createElementNS(NS, 'svg:clipPath');
+ clipPath.setAttributeNS(null, 'id', clipId);
+ clipPath.setAttributeNS(null, 'transform', pm(this.transformMatrix));
+ var clipElement = current.element.cloneNode();
+ if (type === 'evenodd') {
+ clipElement.setAttributeNS(null, 'clip-rule', 'evenodd');
+ } else {
+ clipElement.setAttributeNS(null, 'clip-rule', 'nonzero');
+ }
+ clipPath.appendChild(clipElement);
+ this.defs.appendChild(clipPath);
+ if (current.activeClipUrl) {
+ current.clipGroup = null;
+ this.extraStack.forEach(function (prev) {
+ prev.clipGroup = null;
+ });
+ }
+ current.activeClipUrl = 'url(#' + clipId + ')';
+ this.tgrp = null;
+ },
+ closePath: function SVGGraphics_closePath() {
+ var current = this.current;
+ var d = current.path.getAttributeNS(null, 'd');
+ d += 'Z';
+ current.path.setAttributeNS(null, 'd', d);
+ },
+ setLeading: function SVGGraphics_setLeading(leading) {
+ this.current.leading = -leading;
+ },
+ setTextRise: function SVGGraphics_setTextRise(textRise) {
+ this.current.textRise = textRise;
+ },
+ setHScale: function SVGGraphics_setHScale(scale) {
+ this.current.textHScale = scale / 100;
+ },
+ setGState: function SVGGraphics_setGState(states) {
+ for (var i = 0, ii = states.length; i < ii; i++) {
+ var state = states[i];
+ var key = state[0];
+ var value = state[1];
+ switch (key) {
+ case 'LW':
+ this.setLineWidth(value);
+ break;
+ case 'LC':
+ this.setLineCap(value);
+ break;
+ case 'LJ':
+ this.setLineJoin(value);
+ break;
+ case 'ML':
+ this.setMiterLimit(value);
+ break;
+ case 'D':
+ this.setDash(value[0], value[1]);
+ break;
+ case 'Font':
+ this.setFont(value);
+ break;
+ default:
+ warn('Unimplemented graphic state ' + key);
+ break;
}
- return capability.promise;
+ }
},
- /**
- * Sends raw message to the comObj.
- * @private
- * @param message {Object} Raw message.
- * @param transfers List of transfers/ArrayBuffers, or undefined.
- */
- postMessage: function (message, transfers) {
- if (transfers && this.postMessageTransfers) {
- this.comObj.postMessage(message, transfers);
+ fill: function SVGGraphics_fill() {
+ var current = this.current;
+ current.element.setAttributeNS(null, 'fill', current.fillColor);
+ },
+ stroke: function SVGGraphics_stroke() {
+ var current = this.current;
+ current.element.setAttributeNS(null, 'stroke', current.strokeColor);
+ current.element.setAttributeNS(null, 'fill', 'none');
+ },
+ eoFill: function SVGGraphics_eoFill() {
+ var current = this.current;
+ current.element.setAttributeNS(null, 'fill', current.fillColor);
+ current.element.setAttributeNS(null, 'fill-rule', 'evenodd');
+ },
+ fillStroke: function SVGGraphics_fillStroke() {
+ this.stroke();
+ this.fill();
+ },
+ eoFillStroke: function SVGGraphics_eoFillStroke() {
+ this.current.element.setAttributeNS(null, 'fill-rule', 'evenodd');
+ this.fillStroke();
+ },
+ closeStroke: function SVGGraphics_closeStroke() {
+ this.closePath();
+ this.stroke();
+ },
+ closeFillStroke: function SVGGraphics_closeFillStroke() {
+ this.closePath();
+ this.fillStroke();
+ },
+ paintSolidColorImageMask: function SVGGraphics_paintSolidColorImageMask() {
+ var current = this.current;
+ var rect = document.createElementNS(NS, 'svg:rect');
+ rect.setAttributeNS(null, 'x', '0');
+ rect.setAttributeNS(null, 'y', '0');
+ rect.setAttributeNS(null, 'width', '1px');
+ rect.setAttributeNS(null, 'height', '1px');
+ rect.setAttributeNS(null, 'fill', current.fillColor);
+ this._ensureTransformGroup().appendChild(rect);
+ },
+ paintJpegXObject: function SVGGraphics_paintJpegXObject(objId, w, h) {
+ var imgObj = this.objs.get(objId);
+ var imgEl = document.createElementNS(NS, 'svg:image');
+ imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgObj.src);
+ imgEl.setAttributeNS(null, 'width', imgObj.width + 'px');
+ imgEl.setAttributeNS(null, 'height', imgObj.height + 'px');
+ imgEl.setAttributeNS(null, 'x', '0');
+ imgEl.setAttributeNS(null, 'y', pf(-h));
+ imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / w) + ' ' + pf(-1 / h) + ')');
+ this._ensureTransformGroup().appendChild(imgEl);
+ },
+ paintImageXObject: function SVGGraphics_paintImageXObject(objId) {
+ var imgData = this.objs.get(objId);
+ if (!imgData) {
+ warn('Dependent image isn\'t ready yet');
+ return;
+ }
+ this.paintInlineImageXObject(imgData);
+ },
+ paintInlineImageXObject: function SVGGraphics_paintInlineImageXObject(imgData, mask) {
+ var width = imgData.width;
+ var height = imgData.height;
+ var imgSrc = convertImgDataToPng(imgData, this.forceDataSchema);
+ var cliprect = document.createElementNS(NS, 'svg:rect');
+ cliprect.setAttributeNS(null, 'x', '0');
+ cliprect.setAttributeNS(null, 'y', '0');
+ cliprect.setAttributeNS(null, 'width', pf(width));
+ cliprect.setAttributeNS(null, 'height', pf(height));
+ this.current.element = cliprect;
+ this.clip('nonzero');
+ var imgEl = document.createElementNS(NS, 'svg:image');
+ imgEl.setAttributeNS(XLINK_NS, 'xlink:href', imgSrc);
+ imgEl.setAttributeNS(null, 'x', '0');
+ imgEl.setAttributeNS(null, 'y', pf(-height));
+ imgEl.setAttributeNS(null, 'width', pf(width) + 'px');
+ imgEl.setAttributeNS(null, 'height', pf(height) + 'px');
+ imgEl.setAttributeNS(null, 'transform', 'scale(' + pf(1 / width) + ' ' + pf(-1 / height) + ')');
+ if (mask) {
+ mask.appendChild(imgEl);
+ } else {
+ this._ensureTransformGroup().appendChild(imgEl);
+ }
+ },
+ paintImageMaskXObject: function SVGGraphics_paintImageMaskXObject(imgData) {
+ var current = this.current;
+ var width = imgData.width;
+ var height = imgData.height;
+ var fillColor = current.fillColor;
+ current.maskId = 'mask' + maskCount++;
+ var mask = document.createElementNS(NS, 'svg:mask');
+ mask.setAttributeNS(null, 'id', current.maskId);
+ var rect = document.createElementNS(NS, 'svg:rect');
+ rect.setAttributeNS(null, 'x', '0');
+ rect.setAttributeNS(null, 'y', '0');
+ rect.setAttributeNS(null, 'width', pf(width));
+ rect.setAttributeNS(null, 'height', pf(height));
+ rect.setAttributeNS(null, 'fill', fillColor);
+ rect.setAttributeNS(null, 'mask', 'url(#' + current.maskId + ')');
+ this.defs.appendChild(mask);
+ this._ensureTransformGroup().appendChild(rect);
+ this.paintInlineImageXObject(imgData, mask);
+ },
+ paintFormXObjectBegin: function SVGGraphics_paintFormXObjectBegin(matrix, bbox) {
+ if (isArray(matrix) && matrix.length === 6) {
+ this.transform(matrix[0], matrix[1], matrix[2], matrix[3], matrix[4], matrix[5]);
+ }
+ if (isArray(bbox) && bbox.length === 4) {
+ var width = bbox[2] - bbox[0];
+ var height = bbox[3] - bbox[1];
+ var cliprect = document.createElementNS(NS, 'svg:rect');
+ cliprect.setAttributeNS(null, 'x', bbox[0]);
+ cliprect.setAttributeNS(null, 'y', bbox[1]);
+ cliprect.setAttributeNS(null, 'width', pf(width));
+ cliprect.setAttributeNS(null, 'height', pf(height));
+ this.current.element = cliprect;
+ this.clip('nonzero');
+ this.endPath();
+ }
+ },
+ paintFormXObjectEnd: function SVGGraphics_paintFormXObjectEnd() {
+ },
+ _initialize: function SVGGraphics_initialize(viewport) {
+ var svg = document.createElementNS(NS, 'svg:svg');
+ svg.setAttributeNS(null, 'version', '1.1');
+ svg.setAttributeNS(null, 'width', viewport.width + 'px');
+ svg.setAttributeNS(null, 'height', viewport.height + 'px');
+ svg.setAttributeNS(null, 'preserveAspectRatio', 'none');
+ svg.setAttributeNS(null, 'viewBox', '0 0 ' + viewport.width + ' ' + viewport.height);
+ var definitions = document.createElementNS(NS, 'svg:defs');
+ svg.appendChild(definitions);
+ this.defs = definitions;
+ var rootGroup = document.createElementNS(NS, 'svg:g');
+ rootGroup.setAttributeNS(null, 'transform', pm(viewport.transform));
+ svg.appendChild(rootGroup);
+ this.svg = rootGroup;
+ return svg;
+ },
+ _ensureClipGroup: function SVGGraphics_ensureClipGroup() {
+ if (!this.current.clipGroup) {
+ var clipGroup = document.createElementNS(NS, 'svg:g');
+ clipGroup.setAttributeNS(null, 'clip-path', this.current.activeClipUrl);
+ this.svg.appendChild(clipGroup);
+ this.current.clipGroup = clipGroup;
+ }
+ return this.current.clipGroup;
+ },
+ _ensureTransformGroup: function SVGGraphics_ensureTransformGroup() {
+ if (!this.tgrp) {
+ this.tgrp = document.createElementNS(NS, 'svg:g');
+ this.tgrp.setAttributeNS(null, 'transform', pm(this.transformMatrix));
+ if (this.current.activeClipUrl) {
+ this._ensureClipGroup().appendChild(this.tgrp);
} else {
- this.comObj.postMessage(message);
- }
+ this.svg.appendChild(this.tgrp);
+ }
+ }
+ return this.tgrp;
+ }
+ };
+ return SVGGraphics;
+}();
+exports.SVGGraphics = SVGGraphics;
+
+/***/ }),
+/* 5 */
+/***/ (function(module, exports, __w_pdfjs_require__) {
+
+"use strict";
+
+var sharedUtil = __w_pdfjs_require__(0);
+var displayDOMUtils = __w_pdfjs_require__(1);
+var Util = sharedUtil.Util;
+var createPromiseCapability = sharedUtil.createPromiseCapability;
+var CustomStyle = displayDOMUtils.CustomStyle;
+var getDefaultSetting = displayDOMUtils.getDefaultSetting;
+var renderTextLayer = function renderTextLayerClosure() {
+ var MAX_TEXT_DIVS_TO_RENDER = 100000;
+ var NonWhitespaceRegexp = /\S/;
+ function isAllWhitespace(str) {
+ return !NonWhitespaceRegexp.test(str);
+ }
+ var styleBuf = [
+ 'left: ',
+ 0,
+ 'px; top: ',
+ 0,
+ 'px; font-size: ',
+ 0,
+ 'px; font-family: ',
+ '',
+ ';'
+ ];
+ function appendText(task, geom, styles) {
+ var textDiv = document.createElement('div');
+ var textDivProperties = {
+ style: null,
+ angle: 0,
+ canvasWidth: 0,
+ isWhitespace: false,
+ originalTransform: null,
+ paddingBottom: 0,
+ paddingLeft: 0,
+ paddingRight: 0,
+ paddingTop: 0,
+ scale: 1
+ };
+ task._textDivs.push(textDiv);
+ if (isAllWhitespace(geom.str)) {
+ textDivProperties.isWhitespace = true;
+ task._textDivProperties.set(textDiv, textDivProperties);
+ return;
+ }
+ var tx = Util.transform(task._viewport.transform, geom.transform);
+ var angle = Math.atan2(tx[1], tx[0]);
+ var style = styles[geom.fontName];
+ if (style.vertical) {
+ angle += Math.PI / 2;
+ }
+ var fontHeight = Math.sqrt(tx[2] * tx[2] + tx[3] * tx[3]);
+ var fontAscent = fontHeight;
+ if (style.ascent) {
+ fontAscent = style.ascent * fontAscent;
+ } else if (style.descent) {
+ fontAscent = (1 + style.descent) * fontAscent;
+ }
+ var left;
+ var top;
+ if (angle === 0) {
+ left = tx[4];
+ top = tx[5] - fontAscent;
+ } else {
+ left = tx[4] + fontAscent * Math.sin(angle);
+ top = tx[5] - fontAscent * Math.cos(angle);
+ }
+ styleBuf[1] = left;
+ styleBuf[3] = top;
+ styleBuf[5] = fontHeight;
+ styleBuf[7] = style.fontFamily;
+ textDivProperties.style = styleBuf.join('');
+ textDiv.setAttribute('style', textDivProperties.style);
+ textDiv.textContent = geom.str;
+ if (getDefaultSetting('pdfBug')) {
+ textDiv.dataset.fontName = geom.fontName;
+ }
+ if (angle !== 0) {
+ textDivProperties.angle = angle * (180 / Math.PI);
+ }
+ if (geom.str.length > 1) {
+ if (style.vertical) {
+ textDivProperties.canvasWidth = geom.height * task._viewport.scale;
+ } else {
+ textDivProperties.canvasWidth = geom.width * task._viewport.scale;
+ }
+ }
+ task._textDivProperties.set(textDiv, textDivProperties);
+ if (task._enhanceTextSelection) {
+ var angleCos = 1, angleSin = 0;
+ if (angle !== 0) {
+ angleCos = Math.cos(angle);
+ angleSin = Math.sin(angle);
+ }
+ var divWidth = (style.vertical ? geom.height : geom.width) * task._viewport.scale;
+ var divHeight = fontHeight;
+ var m, b;
+ if (angle !== 0) {
+ m = [
+ angleCos,
+ angleSin,
+ -angleSin,
+ angleCos,
+ left,
+ top
+ ];
+ b = Util.getAxialAlignedBoundingBox([
+ 0,
+ 0,
+ divWidth,
+ divHeight
+ ], m);
+ } else {
+ b = [
+ left,
+ top,
+ left + divWidth,
+ top + divHeight
+ ];
+ }
+ task._bounds.push({
+ left: b[0],
+ top: b[1],
+ right: b[2],
+ bottom: b[3],
+ div: textDiv,
+ size: [
+ divWidth,
+ divHeight
+ ],
+ m: m
+ });
+ }
+ }
+ function render(task) {
+ if (task._canceled) {
+ return;
+ }
+ var textLayerFrag = task._container;
+ var textDivs = task._textDivs;
+ var capability = task._capability;
+ var textDivsLength = textDivs.length;
+ if (textDivsLength > MAX_TEXT_DIVS_TO_RENDER) {
+ task._renderingDone = true;
+ capability.resolve();
+ return;
}
-};
-
-function loadJpegStream(id, imageUrl, objs) {
- var img = new Image();
- img.onload = (function loadJpegStream_onloadClosure() {
- objs.resolve(id, img);
+ var canvas = document.createElement('canvas');
+ canvas.mozOpaque = true;
+ var ctx = canvas.getContext('2d', { alpha: false });
+ var lastFontSize;
+ var lastFontFamily;
+ for (var i = 0; i < textDivsLength; i++) {
+ var textDiv = textDivs[i];
+ var textDivProperties = task._textDivProperties.get(textDiv);
+ if (textDivProperties.isWhitespace) {
+ continue;
+ }
+ var fontSize = textDiv.style.fontSize;
+ var fontFamily = textDiv.style.fontFamily;
+ if (fontSize !== lastFontSize || fontFamily !== lastFontFamily) {
+ ctx.font = fontSize + ' ' + fontFamily;
+ lastFontSize = fontSize;
+ lastFontFamily = fontFamily;
+ }
+ var width = ctx.measureText(textDiv.textContent).width;
+ textLayerFrag.appendChild(textDiv);
+ var transform = '';
+ if (textDivProperties.canvasWidth !== 0 && width > 0) {
+ textDivProperties.scale = textDivProperties.canvasWidth / width;
+ transform = 'scaleX(' + textDivProperties.scale + ')';
+ }
+ if (textDivProperties.angle !== 0) {
+ transform = 'rotate(' + textDivProperties.angle + 'deg) ' + transform;
+ }
+ if (transform !== '') {
+ textDivProperties.originalTransform = transform;
+ CustomStyle.setProp('transform', textDiv, transform);
+ }
+ task._textDivProperties.set(textDiv, textDivProperties);
+ }
+ task._renderingDone = true;
+ capability.resolve();
+ }
+ function expand(task) {
+ var bounds = task._bounds;
+ var viewport = task._viewport;
+ var expanded = expandBounds(viewport.width, viewport.height, bounds);
+ for (var i = 0; i < expanded.length; i++) {
+ var div = bounds[i].div;
+ var divProperties = task._textDivProperties.get(div);
+ if (divProperties.angle === 0) {
+ divProperties.paddingLeft = bounds[i].left - expanded[i].left;
+ divProperties.paddingTop = bounds[i].top - expanded[i].top;
+ divProperties.paddingRight = expanded[i].right - bounds[i].right;
+ divProperties.paddingBottom = expanded[i].bottom - bounds[i].bottom;
+ task._textDivProperties.set(div, divProperties);
+ continue;
+ }
+ var e = expanded[i], b = bounds[i];
+ var m = b.m, c = m[0], s = m[1];
+ var points = [
+ [
+ 0,
+ 0
+ ],
+ [
+ 0,
+ b.size[1]
+ ],
+ [
+ b.size[0],
+ 0
+ ],
+ b.size
+ ];
+ var ts = new Float64Array(64);
+ points.forEach(function (p, i) {
+ var t = Util.applyTransform(p, m);
+ ts[i + 0] = c && (e.left - t[0]) / c;
+ ts[i + 4] = s && (e.top - t[1]) / s;
+ ts[i + 8] = c && (e.right - t[0]) / c;
+ ts[i + 12] = s && (e.bottom - t[1]) / s;
+ ts[i + 16] = s && (e.left - t[0]) / -s;
+ ts[i + 20] = c && (e.top - t[1]) / c;
+ ts[i + 24] = s && (e.right - t[0]) / -s;
+ ts[i + 28] = c && (e.bottom - t[1]) / c;
+ ts[i + 32] = c && (e.left - t[0]) / -c;
+ ts[i + 36] = s && (e.top - t[1]) / -s;
+ ts[i + 40] = c && (e.right - t[0]) / -c;
+ ts[i + 44] = s && (e.bottom - t[1]) / -s;
+ ts[i + 48] = s && (e.left - t[0]) / s;
+ ts[i + 52] = c && (e.top - t[1]) / -c;
+ ts[i + 56] = s && (e.right - t[0]) / s;
+ ts[i + 60] = c && (e.bottom - t[1]) / -c;
+ });
+ var findPositiveMin = function (ts, offset, count) {
+ var result = 0;
+ for (var i = 0; i < count; i++) {
+ var t = ts[offset++];
+ if (t > 0) {
+ result = result ? Math.min(t, result) : t;
+ }
+ }
+ return result;
+ };
+ var boxScale = 1 + Math.min(Math.abs(c), Math.abs(s));
+ divProperties.paddingLeft = findPositiveMin(ts, 32, 16) / boxScale;
+ divProperties.paddingTop = findPositiveMin(ts, 48, 16) / boxScale;
+ divProperties.paddingRight = findPositiveMin(ts, 0, 16) / boxScale;
+ divProperties.paddingBottom = findPositiveMin(ts, 16, 16) / boxScale;
+ task._textDivProperties.set(div, divProperties);
+ }
+ }
+ function expandBounds(width, height, boxes) {
+ var bounds = boxes.map(function (box, i) {
+ return {
+ x1: box.left,
+ y1: box.top,
+ x2: box.right,
+ y2: box.bottom,
+ index: i,
+ x1New: undefined,
+ x2New: undefined
+ };
});
- img.onerror = (function loadJpegStream_onerrorClosure() {
- objs.resolve(id, null);
- warn('Error during JPEG image loading');
+ expandBoundsLTR(width, bounds);
+ var expanded = new Array(boxes.length);
+ bounds.forEach(function (b) {
+ var i = b.index;
+ expanded[i] = {
+ left: b.x1New,
+ top: 0,
+ right: b.x2New,
+ bottom: 0
+ };
});
- img.src = imageUrl;
-}
-
-
-/**
- * The maximum allowed image size in total pixels e.g. width * height. Images
- * above this value will not be drawn. Use -1 for no limit.
- * @var {number}
- */
-PDFJS.maxImageSize = (PDFJS.maxImageSize === undefined ?
- -1 : PDFJS.maxImageSize);
-
-/**
- * The url of where the predefined Adobe CMaps are located. Include trailing
- * slash.
- * @var {string}
- */
-PDFJS.cMapUrl = (PDFJS.cMapUrl === undefined ? null : PDFJS.cMapUrl);
-
-/**
- * Specifies if CMaps are binary packed.
- * @var {boolean}
- */
-PDFJS.cMapPacked = PDFJS.cMapPacked === undefined ? false : PDFJS.cMapPacked;
-
-/**
- * By default fonts are converted to OpenType fonts and loaded via font face
- * rules. If disabled, the font will be rendered using a built in font renderer
- * that constructs the glyphs with primitive path commands.
- * @var {boolean}
- */
-PDFJS.disableFontFace = (PDFJS.disableFontFace === undefined ?
- false : PDFJS.disableFontFace);
-
-/**
- * Path for image resources, mainly for annotation icons. Include trailing
- * slash.
- * @var {string}
- */
-PDFJS.imageResourcesPath = (PDFJS.imageResourcesPath === undefined ?
- '' : PDFJS.imageResourcesPath);
-
-/**
- * Disable the web worker and run all code on the main thread. This will happen
- * automatically if the browser doesn't support workers or sending typed arrays
- * to workers.
- * @var {boolean}
- */
-PDFJS.disableWorker = (PDFJS.disableWorker === undefined ?
- false : PDFJS.disableWorker);
-
-/**
- * Path and filename of the worker file. Required when the worker is enabled in
- * development mode. If unspecified in the production build, the worker will be
- * loaded based on the location of the pdf.js file.
- * @var {string}
- */
-PDFJS.workerSrc = (PDFJS.workerSrc === undefined ? null : PDFJS.workerSrc);
-
-/**
- * Disable range request loading of PDF files. When enabled and if the server
- * supports partial content requests then the PDF will be fetched in chunks.
- * Enabled (false) by default.
- * @var {boolean}
- */
-PDFJS.disableRange = (PDFJS.disableRange === undefined ?
- false : PDFJS.disableRange);
-
-/**
- * Disable streaming of PDF file data. By default PDF.js attempts to load PDF
- * in chunks. This default behavior can be disabled.
- * @var {boolean}
- */
-PDFJS.disableStream = (PDFJS.disableStream === undefined ?
- false : PDFJS.disableStream);
-
-/**
- * Disable pre-fetching of PDF file data. When range requests are enabled PDF.js
- * will automatically keep fetching more data even if it isn't needed to display
- * the current page. This default behavior can be disabled.
- *
- * NOTE: It is also necessary to disable streaming, see above,
- * in order for disabling of pre-fetching to work correctly.
- * @var {boolean}
- */
-PDFJS.disableAutoFetch = (PDFJS.disableAutoFetch === undefined ?
- false : PDFJS.disableAutoFetch);
-
-/**
- * Enables special hooks for debugging PDF.js.
- * @var {boolean}
- */
-PDFJS.pdfBug = (PDFJS.pdfBug === undefined ? false : PDFJS.pdfBug);
-
-/**
- * Enables transfer usage in postMessage for ArrayBuffers.
- * @var {boolean}
- */
-PDFJS.postMessageTransfers = (PDFJS.postMessageTransfers === undefined ?
- true : PDFJS.postMessageTransfers);
-
-/**
- * Disables URL.createObjectURL usage.
- * @var {boolean}
- */
-PDFJS.disableCreateObjectURL = (PDFJS.disableCreateObjectURL === undefined ?
- false : PDFJS.disableCreateObjectURL);
-
-/**
- * Disables WebGL usage.
- * @var {boolean}
- */
-PDFJS.disableWebGL = (PDFJS.disableWebGL === undefined ?
- true : PDFJS.disableWebGL);
-
-/**
- * Disables fullscreen support, and by extension Presentation Mode,
- * in browsers which support the fullscreen API.
- * @var {boolean}
- */
-PDFJS.disableFullscreen = (PDFJS.disableFullscreen === undefined ?
- false : PDFJS.disableFullscreen);
-
-/**
- * Enables CSS only zooming.
- * @var {boolean}
- */
-PDFJS.useOnlyCssZoom = (PDFJS.useOnlyCssZoom === undefined ?
- false : PDFJS.useOnlyCssZoom);
-
-/**
- * Controls the logging level.
- * The constants from PDFJS.VERBOSITY_LEVELS should be used:
- * - errors
- * - warnings [default]
- * - infos
- * @var {number}
- */
-PDFJS.verbosity = (PDFJS.verbosity === undefined ?
- PDFJS.VERBOSITY_LEVELS.warnings : PDFJS.verbosity);
-
-/**
- * The maximum supported canvas size in total pixels e.g. width * height.
- * The default value is 4096 * 4096. Use -1 for no limit.
- * @var {number}
- */
-PDFJS.maxCanvasPixels = (PDFJS.maxCanvasPixels === undefined ?
- 16777216 : PDFJS.maxCanvasPixels);
-
-/**
- * Opens external links in a new window if enabled. The default behavior opens
- * external links in the PDF.js window.
- * @var {boolean}
- */
-PDFJS.openExternalLinksInNewWindow = (
- PDFJS.openExternalLinksInNewWindow === undefined ?
- false : PDFJS.openExternalLinksInNewWindow);
-
-/**
- * Document initialization / loading parameters object.
- *
- * @typedef {Object} DocumentInitParameters
- * @property {string} url - The URL of the PDF.
- * @property {TypedArray|Array|string} data - Binary PDF data. Use typed arrays
- * (Uint8Array) to improve the memory usage. If PDF data is BASE64-encoded,
- * use atob() to convert it to a binary string first.
- * @property {Object} httpHeaders - Basic authentication headers.
- * @property {boolean} withCredentials - Indicates whether or not cross-site
- * Access-Control requests should be made using credentials such as cookies
- * or authorization headers. The default is false.
- * @property {string} password - For decrypting password-protected PDFs.
- * @property {TypedArray} initialData - A typed array with the first portion or
- * all of the pdf data. Used by the extension since some data is already
- * loaded before the switch to range requests.
- * @property {number} length - The PDF file length. It's used for progress
- * reports and range requests operations.
- * @property {PDFDataRangeTransport} range
- */
-
-/**
- * @typedef {Object} PDFDocumentStats
- * @property {Array} streamTypes - Used stream types in the document (an item
- * is set to true if specific stream ID was used in the document).
- * @property {Array} fontTypes - Used font type in the document (an item is set
- * to true if specific font ID was used in the document).
- */
-
-/**
- * This is the main entry point for loading a PDF and interacting with it.
- * NOTE: If a URL is used to fetch the PDF data a standard XMLHttpRequest(XHR)
- * is used, which means it must follow the same origin rules that any XHR does
- * e.g. No cross domain requests without CORS.
- *
- * @param {string|TypedArray|DocumentInitParameters|PDFDataRangeTransport} src
- * Can be a url to where a PDF is located, a typed array (Uint8Array)
- * already populated with data or parameter object.
- *
- * @param {PDFDataRangeTransport} pdfDataRangeTransport (deprecated) It is used
- * if you want to manually serve range requests for data in the PDF.
- *
- * @param {function} passwordCallback (deprecated) It is used to request a
- * password if wrong or no password was provided. The callback receives two
- * parameters: function that needs to be called with new password and reason
- * (see {PasswordResponses}).
- *
- * @param {function} progressCallback (deprecated) It is used to be able to
- * monitor the loading progress of the PDF file (necessary to implement e.g.
- * a loading bar). The callback receives an {Object} with the properties:
- * {number} loaded and {number} total.
- *
- * @return {PDFDocumentLoadingTask}
- */
-PDFJS.getDocument = function getDocument(src,
- pdfDataRangeTransport,
- passwordCallback,
- progressCallback) {
- var task = new PDFDocumentLoadingTask();
-
- // Support of the obsolete arguments (for compatibility with API v1.0)
- if (pdfDataRangeTransport) {
- if (!(pdfDataRangeTransport instanceof PDFDataRangeTransport)) {
- // Not a PDFDataRangeTransport instance, trying to add missing properties.
- pdfDataRangeTransport = Object.create(pdfDataRangeTransport);
- pdfDataRangeTransport.length = src.length;
- pdfDataRangeTransport.initialData = src.initialData;
- }
- src = Object.create(src);
- src.range = pdfDataRangeTransport;
- }
- task.onPassword = passwordCallback || null;
- task.onProgress = progressCallback || null;
-
- var workerInitializedCapability, transport;
- var source;
- if (typeof src === 'string') {
- source = { url: src };
- } else if (isArrayBuffer(src)) {
- source = { data: src };
- } else if (src instanceof PDFDataRangeTransport) {
- source = { range: src };
- } else {
- if (typeof src !== 'object') {
- error('Invalid parameter in getDocument, need either Uint8Array, ' +
- 'string or a parameter object');
- }
- if (!src.url && !src.data && !src.range) {
- error('Invalid parameter object: need either .data, .range or .url');
- }
-
- source = src;
- }
-
- var params = {};
- for (var key in source) {
- if (key === 'url' && typeof window !== 'undefined') {
- // The full path is required in the 'url' field.
- params[key] = combineUrl(window.location.href, source[key]);
- continue;
- } else if (key === 'range') {
- continue;
- } else if (key === 'data' && !(source[key] instanceof Uint8Array)) {
- // Converting string or array-like data to Uint8Array.
- var pdfBytes = source[key];
- if (typeof pdfBytes === 'string') {
- params[key] = stringToBytes(pdfBytes);
- } else if (typeof pdfBytes === 'object' && pdfBytes !== null &&
- !isNaN(pdfBytes.length)) {
- params[key] = new Uint8Array(pdfBytes);
- } else {
- error('Invalid PDF binary data: either typed array, string or ' +
- 'array-like object is expected in the data property.');
- }
- continue;
+ boxes.map(function (box, i) {
+ var e = expanded[i], b = bounds[i];
+ b.x1 = box.top;
+ b.y1 = width - e.right;
+ b.x2 = box.bottom;
+ b.y2 = width - e.left;
+ b.index = i;
+ b.x1New = undefined;
+ b.x2New = undefined;
+ });
+ expandBoundsLTR(height, bounds);
+ bounds.forEach(function (b) {
+ var i = b.index;
+ expanded[i].top = b.x1New;
+ expanded[i].bottom = b.x2New;
+ });
+ return expanded;
+ }
+ function expandBoundsLTR(width, bounds) {
+ bounds.sort(function (a, b) {
+ return a.x1 - b.x1 || a.index - b.index;
+ });
+ var fakeBoundary = {
+ x1: -Infinity,
+ y1: -Infinity,
+ x2: 0,
+ y2: Infinity,
+ index: -1,
+ x1New: 0,
+ x2New: 0
+ };
+ var horizon = [{
+ start: -Infinity,
+ end: Infinity,
+ boundary: fakeBoundary
+ }];
+ bounds.forEach(function (boundary) {
+ var i = 0;
+ while (i < horizon.length && horizon[i].end <= boundary.y1) {
+ i++;
+ }
+ var j = horizon.length - 1;
+ while (j >= 0 && horizon[j].start >= boundary.y2) {
+ j--;
+ }
+ var horizonPart, affectedBoundary;
+ var q, k, maxXNew = -Infinity;
+ for (q = i; q <= j; q++) {
+ horizonPart = horizon[q];
+ affectedBoundary = horizonPart.boundary;
+ var xNew;
+ if (affectedBoundary.x2 > boundary.x1) {
+ xNew = affectedBoundary.index > boundary.index ? affectedBoundary.x1New : boundary.x1;
+ } else if (affectedBoundary.x2New === undefined) {
+ xNew = (affectedBoundary.x2 + boundary.x1) / 2;
+ } else {
+ xNew = affectedBoundary.x2New;
+ }
+ if (xNew > maxXNew) {
+ maxXNew = xNew;
+ }
+ }
+ boundary.x1New = maxXNew;
+ for (q = i; q <= j; q++) {
+ horizonPart = horizon[q];
+ affectedBoundary = horizonPart.boundary;
+ if (affectedBoundary.x2New === undefined) {
+ if (affectedBoundary.x2 > boundary.x1) {
+ if (affectedBoundary.index > boundary.index) {
+ affectedBoundary.x2New = affectedBoundary.x2;
+ }
+ } else {
+ affectedBoundary.x2New = maxXNew;
+ }
+ } else if (affectedBoundary.x2New > maxXNew) {
+ affectedBoundary.x2New = Math.max(maxXNew, affectedBoundary.x2);
+ }
+ }
+ var changedHorizon = [], lastBoundary = null;
+ for (q = i; q <= j; q++) {
+ horizonPart = horizon[q];
+ affectedBoundary = horizonPart.boundary;
+ var useBoundary = affectedBoundary.x2 > boundary.x2 ? affectedBoundary : boundary;
+ if (lastBoundary === useBoundary) {
+ changedHorizon[changedHorizon.length - 1].end = horizonPart.end;
+ } else {
+ changedHorizon.push({
+ start: horizonPart.start,
+ end: horizonPart.end,
+ boundary: useBoundary
+ });
+ lastBoundary = useBoundary;
+ }
+ }
+ if (horizon[i].start < boundary.y1) {
+ changedHorizon[0].start = boundary.y1;
+ changedHorizon.unshift({
+ start: horizon[i].start,
+ end: boundary.y1,
+ boundary: horizon[i].boundary
+ });
+ }
+ if (boundary.y2 < horizon[j].end) {
+ changedHorizon[changedHorizon.length - 1].end = boundary.y2;
+ changedHorizon.push({
+ start: boundary.y2,
+ end: horizon[j].end,
+ boundary: horizon[j].boundary
+ });
+ }
+ for (q = i; q <= j; q++) {
+ horizonPart = horizon[q];
+ affectedBoundary = horizonPart.boundary;
+ if (affectedBoundary.x2New !== undefined) {
+ continue;
+ }
+ var used = false;
+ for (k = i - 1; !used && k >= 0 && horizon[k].start >= affectedBoundary.y1; k--) {
+ used = horizon[k].boundary === affectedBoundary;
+ }
+ for (k = j + 1; !used && k < horizon.length && horizon[k].end <= affectedBoundary.y2; k++) {
+ used = horizon[k].boundary === affectedBoundary;
+ }
+ for (k = 0; !used && k < changedHorizon.length; k++) {
+ used = changedHorizon[k].boundary === affectedBoundary;
+ }
+ if (!used) {
+ affectedBoundary.x2New = maxXNew;
+ }
+ }
+ Array.prototype.splice.apply(horizon, [
+ i,
+ j - i + 1
+ ].concat(changedHorizon));
+ });
+ horizon.forEach(function (horizonPart) {
+ var affectedBoundary = horizonPart.boundary;
+ if (affectedBoundary.x2New === undefined) {
+ affectedBoundary.x2New = Math.max(width, affectedBoundary.x2);
+ }
+ });
+ }
+ function TextLayerRenderTask(textContent, container, viewport, textDivs, enhanceTextSelection) {
+ this._textContent = textContent;
+ this._container = container;
+ this._viewport = viewport;
+ this._textDivs = textDivs || [];
+ this._textDivProperties = new WeakMap();
+ this._renderingDone = false;
+ this._canceled = false;
+ this._capability = createPromiseCapability();
+ this._renderTimer = null;
+ this._bounds = [];
+ this._enhanceTextSelection = !!enhanceTextSelection;
+ }
+ TextLayerRenderTask.prototype = {
+ get promise() {
+ return this._capability.promise;
+ },
+ cancel: function TextLayer_cancel() {
+ this._canceled = true;
+ if (this._renderTimer !== null) {
+ clearTimeout(this._renderTimer);
+ this._renderTimer = null;
+ }
+ this._capability.reject('canceled');
+ },
+ _render: function TextLayer_render(timeout) {
+ var textItems = this._textContent.items;
+ var textStyles = this._textContent.styles;
+ for (var i = 0, len = textItems.length; i < len; i++) {
+ appendText(this, textItems[i], textStyles);
+ }
+ if (!timeout) {
+ render(this);
+ } else {
+ var self = this;
+ this._renderTimer = setTimeout(function () {
+ render(self);
+ self._renderTimer = null;
+ }, timeout);
+ }
+ },
+ expandTextDivs: function TextLayer_expandTextDivs(expandDivs) {
+ if (!this._enhanceTextSelection || !this._renderingDone) {
+ return;
+ }
+ if (this._bounds !== null) {
+ expand(this);
+ this._bounds = null;
+ }
+ for (var i = 0, ii = this._textDivs.length; i < ii; i++) {
+ var div = this._textDivs[i];
+ var divProperties = this._textDivProperties.get(div);
+ if (divProperties.isWhitespace) {
+ continue;
+ }
+ if (expandDivs) {
+ var transform = '', padding = '';
+ if (divProperties.scale !== 1) {
+ transform = 'scaleX(' + divProperties.scale + ')';
+ }
+ if (divProperties.angle !== 0) {
+ transform = 'rotate(' + divProperties.angle + 'deg) ' + transform;
+ }
+ if (divProperties.paddingLeft !== 0) {
+ padding += ' padding-left: ' + divProperties.paddingLeft / divProperties.scale + 'px;';
+ transform += ' translateX(' + -divProperties.paddingLeft / divProperties.scale + 'px)';
+ }
+ if (divProperties.paddingTop !== 0) {
+ padding += ' padding-top: ' + divProperties.paddingTop + 'px;';
+ transform += ' translateY(' + -divProperties.paddingTop + 'px)';
+ }
+ if (divProperties.paddingRight !== 0) {
+ padding += ' padding-right: ' + divProperties.paddingRight / divProperties.scale + 'px;';
+ }
+ if (divProperties.paddingBottom !== 0) {
+ padding += ' padding-bottom: ' + divProperties.paddingBottom + 'px;';
+ }
+ if (padding !== '') {
+ div.setAttribute('style', divProperties.style + padding);
+ }
+ if (transform !== '') {
+ CustomStyle.setProp('transform', div, transform);
+ }
+ } else {
+ div.style.padding = 0;
+ CustomStyle.setProp('transform', div, divProperties.originalTransform || '');
}
- params[key] = source[key];
+ }
}
-
- workerInitializedCapability = createPromiseCapability();
- transport = new WorkerTransport(workerInitializedCapability, source.range);
- workerInitializedCapability.promise.then(function transportInitialized() {
- transport.fetchDocument(task, params);
- });
-
+ };
+ function renderTextLayer(renderParameters) {
+ var task = new TextLayerRenderTask(renderParameters.textContent, renderParameters.container, renderParameters.viewport, renderParameters.textDivs, renderParameters.enhanceTextSelection);
+ task._render(renderParameters.timeout);
return task;
-};
+ }
+ return renderTextLayer;
+}();
+exports.renderTextLayer = renderTextLayer;
+
+/***/ }),
+/* 6 */
+/***/ (function(module, exports) {
+
+var g;
+g = function () {
+ return this;
+}();
+try {
+ g = g || Function("return this")() || (1, eval)("this");
+} catch (e) {
+ if (typeof window === "object")
+ g = window;
+}
+module.exports = g;
-/**
- * PDF document loading operation.
- * @class
- */
-var PDFDocumentLoadingTask = (function PDFDocumentLoadingTaskClosure() {
- /** @constructs PDFDocumentLoadingTask */
- function PDFDocumentLoadingTask() {
- this._capability = createPromiseCapability();
+/***/ }),
+/* 7 */
+/***/ (function(module, exports, __w_pdfjs_require__) {
- /**
- * Callback to request a password if wrong or no password was provided.
- * The callback receives two parameters: function that needs to be called
- * with new password and reason (see {PasswordResponses}).
- */
- this.onPassword = null;
+"use strict";
- /**
- * Callback to be able to monitor the loading progress of the PDF file
- * (necessary to implement e.g. a loading bar). The callback receives
- * an {Object} with the properties: {number} loaded and {number} total.
- */
- this.onProgress = null;
+var sharedUtil = __w_pdfjs_require__(0);
+var error = sharedUtil.error;
+function fixMetadata(meta) {
+ return meta.replace(/>\\376\\377([^<]+)/g, function (all, codes) {
+ var bytes = codes.replace(/\\([0-3])([0-7])([0-7])/g, function (code, d1, d2, d3) {
+ return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);
+ });
+ var chars = '';
+ for (var i = 0; i < bytes.length; i += 2) {
+ var code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);
+ chars += code >= 32 && code < 127 && code !== 60 && code !== 62 && code !== 38 ? String.fromCharCode(code) : '' + (0x10000 + code).toString(16).substring(1) + ';';
}
-
- PDFDocumentLoadingTask.prototype =
- /** @lends PDFDocumentLoadingTask.prototype */ {
- /**
- * @return {Promise}
- */
- get promise() {
- return this._capability.promise;
- },
-
- // TODO add cancel or abort method
-
- /**
- * Registers callbacks to indicate the document loading completion.
- *
- * @param {function} onFulfilled The callback for the loading completion.
- * @param {function} onRejected The callback for the loading failure.
- * @return {Promise} A promise that is resolved after the onFulfilled or
- * onRejected callback.
- */
- then: function PDFDocumentLoadingTask_then(onFulfilled, onRejected) {
- return this.promise.then.apply(this.promise, arguments);
- }
+ return '>' + chars;
+ });
+}
+function Metadata(meta) {
+ if (typeof meta === 'string') {
+ meta = fixMetadata(meta);
+ var parser = new DOMParser();
+ meta = parser.parseFromString(meta, 'application/xml');
+ } else if (!(meta instanceof Document)) {
+ error('Metadata: Invalid metadata object');
+ }
+ this.metaDocument = meta;
+ this.metadata = Object.create(null);
+ this.parse();
+}
+Metadata.prototype = {
+ parse: function Metadata_parse() {
+ var doc = this.metaDocument;
+ var rdf = doc.documentElement;
+ if (rdf.nodeName.toLowerCase() !== 'rdf:rdf') {
+ rdf = rdf.firstChild;
+ while (rdf && rdf.nodeName.toLowerCase() !== 'rdf:rdf') {
+ rdf = rdf.nextSibling;
+ }
+ }
+ var nodeName = rdf ? rdf.nodeName.toLowerCase() : null;
+ if (!rdf || nodeName !== 'rdf:rdf' || !rdf.hasChildNodes()) {
+ return;
+ }
+ var children = rdf.childNodes, desc, entry, name, i, ii, length, iLength;
+ for (i = 0, length = children.length; i < length; i++) {
+ desc = children[i];
+ if (desc.nodeName.toLowerCase() !== 'rdf:description') {
+ continue;
+ }
+ for (ii = 0, iLength = desc.childNodes.length; ii < iLength; ii++) {
+ if (desc.childNodes[ii].nodeName.toLowerCase() !== '#text') {
+ entry = desc.childNodes[ii];
+ name = entry.nodeName.toLowerCase();
+ this.metadata[name] = entry.textContent.trim();
+ }
+ }
+ }
+ },
+ get: function Metadata_get(name) {
+ return this.metadata[name] || null;
+ },
+ has: function Metadata_has(name) {
+ return typeof this.metadata[name] !== 'undefined';
+ }
+};
+exports.Metadata = Metadata;
+
+/***/ }),
+/* 8 */
+/***/ (function(module, exports, __w_pdfjs_require__) {
+
+"use strict";
+
+var sharedUtil = __w_pdfjs_require__(0);
+var displayDOMUtils = __w_pdfjs_require__(1);
+var shadow = sharedUtil.shadow;
+var getDefaultSetting = displayDOMUtils.getDefaultSetting;
+var WebGLUtils = function WebGLUtilsClosure() {
+ function loadShader(gl, code, shaderType) {
+ var shader = gl.createShader(shaderType);
+ gl.shaderSource(shader, code);
+ gl.compileShader(shader);
+ var compiled = gl.getShaderParameter(shader, gl.COMPILE_STATUS);
+ if (!compiled) {
+ var errorMsg = gl.getShaderInfoLog(shader);
+ throw new Error('Error during shader compilation: ' + errorMsg);
+ }
+ return shader;
+ }
+ function createVertexShader(gl, code) {
+ return loadShader(gl, code, gl.VERTEX_SHADER);
+ }
+ function createFragmentShader(gl, code) {
+ return loadShader(gl, code, gl.FRAGMENT_SHADER);
+ }
+ function createProgram(gl, shaders) {
+ var program = gl.createProgram();
+ for (var i = 0, ii = shaders.length; i < ii; ++i) {
+ gl.attachShader(program, shaders[i]);
+ }
+ gl.linkProgram(program);
+ var linked = gl.getProgramParameter(program, gl.LINK_STATUS);
+ if (!linked) {
+ var errorMsg = gl.getProgramInfoLog(program);
+ throw new Error('Error during program linking: ' + errorMsg);
+ }
+ return program;
+ }
+ function createTexture(gl, image, textureId) {
+ gl.activeTexture(textureId);
+ var texture = gl.createTexture();
+ gl.bindTexture(gl.TEXTURE_2D, texture);
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_S, gl.CLAMP_TO_EDGE);
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_WRAP_T, gl.CLAMP_TO_EDGE);
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MIN_FILTER, gl.NEAREST);
+ gl.texParameteri(gl.TEXTURE_2D, gl.TEXTURE_MAG_FILTER, gl.NEAREST);
+ gl.texImage2D(gl.TEXTURE_2D, 0, gl.RGBA, gl.RGBA, gl.UNSIGNED_BYTE, image);
+ return texture;
+ }
+ var currentGL, currentCanvas;
+ function generateGL() {
+ if (currentGL) {
+ return;
+ }
+ currentCanvas = document.createElement('canvas');
+ currentGL = currentCanvas.getContext('webgl', { premultipliedalpha: false });
+ }
+ var smaskVertexShaderCode = '\
+ attribute vec2 a_position; \
+ attribute vec2 a_texCoord; \
+ \
+ uniform vec2 u_resolution; \
+ \
+ varying vec2 v_texCoord; \
+ \
+ void main() { \
+ vec2 clipSpace = (a_position / u_resolution) * 2.0 - 1.0; \
+ gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \
+ \
+ v_texCoord = a_texCoord; \
+ } ';
+ var smaskFragmentShaderCode = '\
+ precision mediump float; \
+ \
+ uniform vec4 u_backdrop; \
+ uniform int u_subtype; \
+ uniform sampler2D u_image; \
+ uniform sampler2D u_mask; \
+ \
+ varying vec2 v_texCoord; \
+ \
+ void main() { \
+ vec4 imageColor = texture2D(u_image, v_texCoord); \
+ vec4 maskColor = texture2D(u_mask, v_texCoord); \
+ if (u_backdrop.a > 0.0) { \
+ maskColor.rgb = maskColor.rgb * maskColor.a + \
+ u_backdrop.rgb * (1.0 - maskColor.a); \
+ } \
+ float lum; \
+ if (u_subtype == 0) { \
+ lum = maskColor.a; \
+ } else { \
+ lum = maskColor.r * 0.3 + maskColor.g * 0.59 + \
+ maskColor.b * 0.11; \
+ } \
+ imageColor.a *= lum; \
+ imageColor.rgb *= imageColor.a; \
+ gl_FragColor = imageColor; \
+ } ';
+ var smaskCache = null;
+ function initSmaskGL() {
+ var canvas, gl;
+ generateGL();
+ canvas = currentCanvas;
+ currentCanvas = null;
+ gl = currentGL;
+ currentGL = null;
+ var vertexShader = createVertexShader(gl, smaskVertexShaderCode);
+ var fragmentShader = createFragmentShader(gl, smaskFragmentShaderCode);
+ var program = createProgram(gl, [
+ vertexShader,
+ fragmentShader
+ ]);
+ gl.useProgram(program);
+ var cache = {};
+ cache.gl = gl;
+ cache.canvas = canvas;
+ cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution');
+ cache.positionLocation = gl.getAttribLocation(program, 'a_position');
+ cache.backdropLocation = gl.getUniformLocation(program, 'u_backdrop');
+ cache.subtypeLocation = gl.getUniformLocation(program, 'u_subtype');
+ var texCoordLocation = gl.getAttribLocation(program, 'a_texCoord');
+ var texLayerLocation = gl.getUniformLocation(program, 'u_image');
+ var texMaskLocation = gl.getUniformLocation(program, 'u_mask');
+ var texCoordBuffer = gl.createBuffer();
+ gl.bindBuffer(gl.ARRAY_BUFFER, texCoordBuffer);
+ gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([
+ 0.0,
+ 0.0,
+ 1.0,
+ 0.0,
+ 0.0,
+ 1.0,
+ 0.0,
+ 1.0,
+ 1.0,
+ 0.0,
+ 1.0,
+ 1.0
+ ]), gl.STATIC_DRAW);
+ gl.enableVertexAttribArray(texCoordLocation);
+ gl.vertexAttribPointer(texCoordLocation, 2, gl.FLOAT, false, 0, 0);
+ gl.uniform1i(texLayerLocation, 0);
+ gl.uniform1i(texMaskLocation, 1);
+ smaskCache = cache;
+ }
+ function composeSMask(layer, mask, properties) {
+ var width = layer.width, height = layer.height;
+ if (!smaskCache) {
+ initSmaskGL();
+ }
+ var cache = smaskCache, canvas = cache.canvas, gl = cache.gl;
+ canvas.width = width;
+ canvas.height = height;
+ gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
+ gl.uniform2f(cache.resolutionLocation, width, height);
+ if (properties.backdrop) {
+ gl.uniform4f(cache.resolutionLocation, properties.backdrop[0], properties.backdrop[1], properties.backdrop[2], 1);
+ } else {
+ gl.uniform4f(cache.resolutionLocation, 0, 0, 0, 0);
+ }
+ gl.uniform1i(cache.subtypeLocation, properties.subtype === 'Luminosity' ? 1 : 0);
+ var texture = createTexture(gl, layer, gl.TEXTURE0);
+ var maskTexture = createTexture(gl, mask, gl.TEXTURE1);
+ var buffer = gl.createBuffer();
+ gl.bindBuffer(gl.ARRAY_BUFFER, buffer);
+ gl.bufferData(gl.ARRAY_BUFFER, new Float32Array([
+ 0,
+ 0,
+ width,
+ 0,
+ 0,
+ height,
+ 0,
+ height,
+ width,
+ 0,
+ width,
+ height
+ ]), gl.STATIC_DRAW);
+ gl.enableVertexAttribArray(cache.positionLocation);
+ gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);
+ gl.clearColor(0, 0, 0, 0);
+ gl.enable(gl.BLEND);
+ gl.blendFunc(gl.ONE, gl.ONE_MINUS_SRC_ALPHA);
+ gl.clear(gl.COLOR_BUFFER_BIT);
+ gl.drawArrays(gl.TRIANGLES, 0, 6);
+ gl.flush();
+ gl.deleteTexture(texture);
+ gl.deleteTexture(maskTexture);
+ gl.deleteBuffer(buffer);
+ return canvas;
+ }
+ var figuresVertexShaderCode = '\
+ attribute vec2 a_position; \
+ attribute vec3 a_color; \
+ \
+ uniform vec2 u_resolution; \
+ uniform vec2 u_scale; \
+ uniform vec2 u_offset; \
+ \
+ varying vec4 v_color; \
+ \
+ void main() { \
+ vec2 position = (a_position + u_offset) * u_scale; \
+ vec2 clipSpace = (position / u_resolution) * 2.0 - 1.0; \
+ gl_Position = vec4(clipSpace * vec2(1, -1), 0, 1); \
+ \
+ v_color = vec4(a_color / 255.0, 1.0); \
+ } ';
+ var figuresFragmentShaderCode = '\
+ precision mediump float; \
+ \
+ varying vec4 v_color; \
+ \
+ void main() { \
+ gl_FragColor = v_color; \
+ } ';
+ var figuresCache = null;
+ function initFiguresGL() {
+ var canvas, gl;
+ generateGL();
+ canvas = currentCanvas;
+ currentCanvas = null;
+ gl = currentGL;
+ currentGL = null;
+ var vertexShader = createVertexShader(gl, figuresVertexShaderCode);
+ var fragmentShader = createFragmentShader(gl, figuresFragmentShaderCode);
+ var program = createProgram(gl, [
+ vertexShader,
+ fragmentShader
+ ]);
+ gl.useProgram(program);
+ var cache = {};
+ cache.gl = gl;
+ cache.canvas = canvas;
+ cache.resolutionLocation = gl.getUniformLocation(program, 'u_resolution');
+ cache.scaleLocation = gl.getUniformLocation(program, 'u_scale');
+ cache.offsetLocation = gl.getUniformLocation(program, 'u_offset');
+ cache.positionLocation = gl.getAttribLocation(program, 'a_position');
+ cache.colorLocation = gl.getAttribLocation(program, 'a_color');
+ figuresCache = cache;
+ }
+ function drawFigures(width, height, backgroundColor, figures, context) {
+ if (!figuresCache) {
+ initFiguresGL();
+ }
+ var cache = figuresCache, canvas = cache.canvas, gl = cache.gl;
+ canvas.width = width;
+ canvas.height = height;
+ gl.viewport(0, 0, gl.drawingBufferWidth, gl.drawingBufferHeight);
+ gl.uniform2f(cache.resolutionLocation, width, height);
+ var count = 0;
+ var i, ii, rows;
+ for (i = 0, ii = figures.length; i < ii; i++) {
+ switch (figures[i].type) {
+ case 'lattice':
+ rows = figures[i].coords.length / figures[i].verticesPerRow | 0;
+ count += (rows - 1) * (figures[i].verticesPerRow - 1) * 6;
+ break;
+ case 'triangles':
+ count += figures[i].coords.length;
+ break;
+ }
+ }
+ var coords = new Float32Array(count * 2);
+ var colors = new Uint8Array(count * 3);
+ var coordsMap = context.coords, colorsMap = context.colors;
+ var pIndex = 0, cIndex = 0;
+ for (i = 0, ii = figures.length; i < ii; i++) {
+ var figure = figures[i], ps = figure.coords, cs = figure.colors;
+ switch (figure.type) {
+ case 'lattice':
+ var cols = figure.verticesPerRow;
+ rows = ps.length / cols | 0;
+ for (var row = 1; row < rows; row++) {
+ var offset = row * cols + 1;
+ for (var col = 1; col < cols; col++, offset++) {
+ coords[pIndex] = coordsMap[ps[offset - cols - 1]];
+ coords[pIndex + 1] = coordsMap[ps[offset - cols - 1] + 1];
+ coords[pIndex + 2] = coordsMap[ps[offset - cols]];
+ coords[pIndex + 3] = coordsMap[ps[offset - cols] + 1];
+ coords[pIndex + 4] = coordsMap[ps[offset - 1]];
+ coords[pIndex + 5] = coordsMap[ps[offset - 1] + 1];
+ colors[cIndex] = colorsMap[cs[offset - cols - 1]];
+ colors[cIndex + 1] = colorsMap[cs[offset - cols - 1] + 1];
+ colors[cIndex + 2] = colorsMap[cs[offset - cols - 1] + 2];
+ colors[cIndex + 3] = colorsMap[cs[offset - cols]];
+ colors[cIndex + 4] = colorsMap[cs[offset - cols] + 1];
+ colors[cIndex + 5] = colorsMap[cs[offset - cols] + 2];
+ colors[cIndex + 6] = colorsMap[cs[offset - 1]];
+ colors[cIndex + 7] = colorsMap[cs[offset - 1] + 1];
+ colors[cIndex + 8] = colorsMap[cs[offset - 1] + 2];
+ coords[pIndex + 6] = coords[pIndex + 2];
+ coords[pIndex + 7] = coords[pIndex + 3];
+ coords[pIndex + 8] = coords[pIndex + 4];
+ coords[pIndex + 9] = coords[pIndex + 5];
+ coords[pIndex + 10] = coordsMap[ps[offset]];
+ coords[pIndex + 11] = coordsMap[ps[offset] + 1];
+ colors[cIndex + 9] = colors[cIndex + 3];
+ colors[cIndex + 10] = colors[cIndex + 4];
+ colors[cIndex + 11] = colors[cIndex + 5];
+ colors[cIndex + 12] = colors[cIndex + 6];
+ colors[cIndex + 13] = colors[cIndex + 7];
+ colors[cIndex + 14] = colors[cIndex + 8];
+ colors[cIndex + 15] = colorsMap[cs[offset]];
+ colors[cIndex + 16] = colorsMap[cs[offset] + 1];
+ colors[cIndex + 17] = colorsMap[cs[offset] + 2];
+ pIndex += 12;
+ cIndex += 18;
+ }
+ }
+ break;
+ case 'triangles':
+ for (var j = 0, jj = ps.length; j < jj; j++) {
+ coords[pIndex] = coordsMap[ps[j]];
+ coords[pIndex + 1] = coordsMap[ps[j] + 1];
+ colors[cIndex] = colorsMap[cs[j]];
+ colors[cIndex + 1] = colorsMap[cs[j] + 1];
+ colors[cIndex + 2] = colorsMap[cs[j] + 2];
+ pIndex += 2;
+ cIndex += 3;
+ }
+ break;
+ }
+ }
+ if (backgroundColor) {
+ gl.clearColor(backgroundColor[0] / 255, backgroundColor[1] / 255, backgroundColor[2] / 255, 1.0);
+ } else {
+ gl.clearColor(0, 0, 0, 0);
+ }
+ gl.clear(gl.COLOR_BUFFER_BIT);
+ var coordsBuffer = gl.createBuffer();
+ gl.bindBuffer(gl.ARRAY_BUFFER, coordsBuffer);
+ gl.bufferData(gl.ARRAY_BUFFER, coords, gl.STATIC_DRAW);
+ gl.enableVertexAttribArray(cache.positionLocation);
+ gl.vertexAttribPointer(cache.positionLocation, 2, gl.FLOAT, false, 0, 0);
+ var colorsBuffer = gl.createBuffer();
+ gl.bindBuffer(gl.ARRAY_BUFFER, colorsBuffer);
+ gl.bufferData(gl.ARRAY_BUFFER, colors, gl.STATIC_DRAW);
+ gl.enableVertexAttribArray(cache.colorLocation);
+ gl.vertexAttribPointer(cache.colorLocation, 3, gl.UNSIGNED_BYTE, false, 0, 0);
+ gl.uniform2f(cache.scaleLocation, context.scaleX, context.scaleY);
+ gl.uniform2f(cache.offsetLocation, context.offsetX, context.offsetY);
+ gl.drawArrays(gl.TRIANGLES, 0, count);
+ gl.flush();
+ gl.deleteBuffer(coordsBuffer);
+ gl.deleteBuffer(colorsBuffer);
+ return canvas;
+ }
+ function cleanup() {
+ if (smaskCache && smaskCache.canvas) {
+ smaskCache.canvas.width = 0;
+ smaskCache.canvas.height = 0;
+ }
+ if (figuresCache && figuresCache.canvas) {
+ figuresCache.canvas.width = 0;
+ figuresCache.canvas.height = 0;
+ }
+ smaskCache = null;
+ figuresCache = null;
+ }
+ return {
+ get isEnabled() {
+ if (getDefaultSetting('disableWebGL')) {
+ return false;
+ }
+ var enabled = false;
+ try {
+ generateGL();
+ enabled = !!currentGL;
+ } catch (e) {
+ }
+ return shadow(this, 'isEnabled', enabled);
+ },
+ composeSMask: composeSMask,
+ drawFigures: drawFigures,
+ clear: cleanup
+ };
+}();
+exports.WebGLUtils = WebGLUtils;
+
+/***/ }),
+/* 9 */
+/***/ (function(module, exports, __w_pdfjs_require__) {
+
+"use strict";
+
+var sharedUtil = __w_pdfjs_require__(0);
+var displayDOMUtils = __w_pdfjs_require__(1);
+var displayAPI = __w_pdfjs_require__(3);
+var displayAnnotationLayer = __w_pdfjs_require__(2);
+var displayTextLayer = __w_pdfjs_require__(5);
+var displayMetadata = __w_pdfjs_require__(7);
+var displaySVG = __w_pdfjs_require__(4);
+var globalScope = sharedUtil.globalScope;
+var deprecated = sharedUtil.deprecated;
+var warn = sharedUtil.warn;
+var LinkTarget = displayDOMUtils.LinkTarget;
+var DEFAULT_LINK_REL = displayDOMUtils.DEFAULT_LINK_REL;
+var isWorker = typeof window === 'undefined';
+if (!globalScope.PDFJS) {
+ globalScope.PDFJS = {};
+}
+var PDFJS = globalScope.PDFJS;
+PDFJS.version = '1.7.354';
+PDFJS.build = '0f7548ba';
+PDFJS.pdfBug = false;
+if (PDFJS.verbosity !== undefined) {
+ sharedUtil.setVerbosityLevel(PDFJS.verbosity);
+}
+delete PDFJS.verbosity;
+Object.defineProperty(PDFJS, 'verbosity', {
+ get: function () {
+ return sharedUtil.getVerbosityLevel();
+ },
+ set: function (level) {
+ sharedUtil.setVerbosityLevel(level);
+ },
+ enumerable: true,
+ configurable: true
+});
+PDFJS.VERBOSITY_LEVELS = sharedUtil.VERBOSITY_LEVELS;
+PDFJS.OPS = sharedUtil.OPS;
+PDFJS.UNSUPPORTED_FEATURES = sharedUtil.UNSUPPORTED_FEATURES;
+PDFJS.isValidUrl = displayDOMUtils.isValidUrl;
+PDFJS.shadow = sharedUtil.shadow;
+PDFJS.createBlob = sharedUtil.createBlob;
+PDFJS.createObjectURL = function PDFJS_createObjectURL(data, contentType) {
+ return sharedUtil.createObjectURL(data, contentType, PDFJS.disableCreateObjectURL);
+};
+Object.defineProperty(PDFJS, 'isLittleEndian', {
+ configurable: true,
+ get: function PDFJS_isLittleEndian() {
+ var value = sharedUtil.isLittleEndian();
+ return sharedUtil.shadow(PDFJS, 'isLittleEndian', value);
+ }
+});
+PDFJS.removeNullCharacters = sharedUtil.removeNullCharacters;
+PDFJS.PasswordResponses = sharedUtil.PasswordResponses;
+PDFJS.PasswordException = sharedUtil.PasswordException;
+PDFJS.UnknownErrorException = sharedUtil.UnknownErrorException;
+PDFJS.InvalidPDFException = sharedUtil.InvalidPDFException;
+PDFJS.MissingPDFException = sharedUtil.MissingPDFException;
+PDFJS.UnexpectedResponseException = sharedUtil.UnexpectedResponseException;
+PDFJS.Util = sharedUtil.Util;
+PDFJS.PageViewport = sharedUtil.PageViewport;
+PDFJS.createPromiseCapability = sharedUtil.createPromiseCapability;
+PDFJS.maxImageSize = PDFJS.maxImageSize === undefined ? -1 : PDFJS.maxImageSize;
+PDFJS.cMapUrl = PDFJS.cMapUrl === undefined ? null : PDFJS.cMapUrl;
+PDFJS.cMapPacked = PDFJS.cMapPacked === undefined ? false : PDFJS.cMapPacked;
+PDFJS.disableFontFace = PDFJS.disableFontFace === undefined ? false : PDFJS.disableFontFace;
+PDFJS.imageResourcesPath = PDFJS.imageResourcesPath === undefined ? '' : PDFJS.imageResourcesPath;
+PDFJS.disableWorker = PDFJS.disableWorker === undefined ? false : PDFJS.disableWorker;
+PDFJS.workerSrc = PDFJS.workerSrc === undefined ? null : PDFJS.workerSrc;
+PDFJS.workerPort = PDFJS.workerPort === undefined ? null : PDFJS.workerPort;
+PDFJS.disableRange = PDFJS.disableRange === undefined ? false : PDFJS.disableRange;
+PDFJS.disableStream = PDFJS.disableStream === undefined ? false : PDFJS.disableStream;
+PDFJS.disableAutoFetch = PDFJS.disableAutoFetch === undefined ? false : PDFJS.disableAutoFetch;
+PDFJS.pdfBug = PDFJS.pdfBug === undefined ? false : PDFJS.pdfBug;
+PDFJS.postMessageTransfers = PDFJS.postMessageTransfers === undefined ? true : PDFJS.postMessageTransfers;
+PDFJS.disableCreateObjectURL = PDFJS.disableCreateObjectURL === undefined ? false : PDFJS.disableCreateObjectURL;
+PDFJS.disableWebGL = PDFJS.disableWebGL === undefined ? true : PDFJS.disableWebGL;
+PDFJS.externalLinkTarget = PDFJS.externalLinkTarget === undefined ? LinkTarget.NONE : PDFJS.externalLinkTarget;
+PDFJS.externalLinkRel = PDFJS.externalLinkRel === undefined ? DEFAULT_LINK_REL : PDFJS.externalLinkRel;
+PDFJS.isEvalSupported = PDFJS.isEvalSupported === undefined ? true : PDFJS.isEvalSupported;
+var savedOpenExternalLinksInNewWindow = PDFJS.openExternalLinksInNewWindow;
+delete PDFJS.openExternalLinksInNewWindow;
+Object.defineProperty(PDFJS, 'openExternalLinksInNewWindow', {
+ get: function () {
+ return PDFJS.externalLinkTarget === LinkTarget.BLANK;
+ },
+ set: function (value) {
+ if (value) {
+ deprecated('PDFJS.openExternalLinksInNewWindow, please use ' + '"PDFJS.externalLinkTarget = PDFJS.LinkTarget.BLANK" instead.');
+ }
+ if (PDFJS.externalLinkTarget !== LinkTarget.NONE) {
+ warn('PDFJS.externalLinkTarget is already initialized');
+ return;
+ }
+ PDFJS.externalLinkTarget = value ? LinkTarget.BLANK : LinkTarget.NONE;
+ },
+ enumerable: true,
+ configurable: true
+});
+if (savedOpenExternalLinksInNewWindow) {
+ PDFJS.openExternalLinksInNewWindow = savedOpenExternalLinksInNewWindow;
+}
+PDFJS.getDocument = displayAPI.getDocument;
+PDFJS.PDFDataRangeTransport = displayAPI.PDFDataRangeTransport;
+PDFJS.PDFWorker = displayAPI.PDFWorker;
+Object.defineProperty(PDFJS, 'hasCanvasTypedArrays', {
+ configurable: true,
+ get: function PDFJS_hasCanvasTypedArrays() {
+ var value = displayDOMUtils.hasCanvasTypedArrays();
+ return sharedUtil.shadow(PDFJS, 'hasCanvasTypedArrays', value);
+ }
+});
+PDFJS.CustomStyle = displayDOMUtils.CustomStyle;
+PDFJS.LinkTarget = LinkTarget;
+PDFJS.addLinkAttributes = displayDOMUtils.addLinkAttributes;
+PDFJS.getFilenameFromUrl = displayDOMUtils.getFilenameFromUrl;
+PDFJS.isExternalLinkTargetSet = displayDOMUtils.isExternalLinkTargetSet;
+PDFJS.AnnotationLayer = displayAnnotationLayer.AnnotationLayer;
+PDFJS.renderTextLayer = displayTextLayer.renderTextLayer;
+PDFJS.Metadata = displayMetadata.Metadata;
+PDFJS.SVGGraphics = displaySVG.SVGGraphics;
+PDFJS.UnsupportedManager = displayAPI._UnsupportedManager;
+exports.globalScope = globalScope;
+exports.isWorker = isWorker;
+exports.PDFJS = globalScope.PDFJS;
+
+/***/ }),
+/* 10 */
+/***/ (function(module, exports, __w_pdfjs_require__) {
+
+"use strict";
+
+var sharedUtil = __w_pdfjs_require__(0);
+var displayDOMUtils = __w_pdfjs_require__(1);
+var displayPatternHelper = __w_pdfjs_require__(12);
+var displayWebGL = __w_pdfjs_require__(8);
+var FONT_IDENTITY_MATRIX = sharedUtil.FONT_IDENTITY_MATRIX;
+var IDENTITY_MATRIX = sharedUtil.IDENTITY_MATRIX;
+var ImageKind = sharedUtil.ImageKind;
+var OPS = sharedUtil.OPS;
+var TextRenderingMode = sharedUtil.TextRenderingMode;
+var Uint32ArrayView = sharedUtil.Uint32ArrayView;
+var Util = sharedUtil.Util;
+var assert = sharedUtil.assert;
+var info = sharedUtil.info;
+var isNum = sharedUtil.isNum;
+var isArray = sharedUtil.isArray;
+var isLittleEndian = sharedUtil.isLittleEndian;
+var error = sharedUtil.error;
+var shadow = sharedUtil.shadow;
+var warn = sharedUtil.warn;
+var TilingPattern = displayPatternHelper.TilingPattern;
+var getShadingPatternFromIR = displayPatternHelper.getShadingPatternFromIR;
+var WebGLUtils = displayWebGL.WebGLUtils;
+var hasCanvasTypedArrays = displayDOMUtils.hasCanvasTypedArrays;
+var MIN_FONT_SIZE = 16;
+var MAX_FONT_SIZE = 100;
+var MAX_GROUP_SIZE = 4096;
+var MIN_WIDTH_FACTOR = 0.65;
+var COMPILE_TYPE3_GLYPHS = true;
+var MAX_SIZE_TO_COMPILE = 1000;
+var FULL_CHUNK_HEIGHT = 16;
+var HasCanvasTypedArraysCached = {
+ get value() {
+ return shadow(HasCanvasTypedArraysCached, 'value', hasCanvasTypedArrays());
+ }
+};
+var IsLittleEndianCached = {
+ get value() {
+ return shadow(IsLittleEndianCached, 'value', isLittleEndian());
+ }
+};
+function addContextCurrentTransform(ctx) {
+ if (!ctx.mozCurrentTransform) {
+ ctx._originalSave = ctx.save;
+ ctx._originalRestore = ctx.restore;
+ ctx._originalRotate = ctx.rotate;
+ ctx._originalScale = ctx.scale;
+ ctx._originalTranslate = ctx.translate;
+ ctx._originalTransform = ctx.transform;
+ ctx._originalSetTransform = ctx.setTransform;
+ ctx._transformMatrix = ctx._transformMatrix || [
+ 1,
+ 0,
+ 0,
+ 1,
+ 0,
+ 0
+ ];
+ ctx._transformStack = [];
+ Object.defineProperty(ctx, 'mozCurrentTransform', {
+ get: function getCurrentTransform() {
+ return this._transformMatrix;
+ }
+ });
+ Object.defineProperty(ctx, 'mozCurrentTransformInverse', {
+ get: function getCurrentTransformInverse() {
+ var m = this._transformMatrix;
+ var a = m[0], b = m[1], c = m[2], d = m[3], e = m[4], f = m[5];
+ var ad_bc = a * d - b * c;
+ var bc_ad = b * c - a * d;
+ return [
+ d / ad_bc,
+ b / bc_ad,
+ c / bc_ad,
+ a / ad_bc,
+ (d * e - c * f) / bc_ad,
+ (b * e - a * f) / ad_bc
+ ];
+ }
+ });
+ ctx.save = function ctxSave() {
+ var old = this._transformMatrix;
+ this._transformStack.push(old);
+ this._transformMatrix = old.slice(0, 6);
+ this._originalSave();
};
-
- return PDFDocumentLoadingTask;
-})();
-
-/**
- * Abstract class to support range requests file loading.
- * @class
- */
-var PDFDataRangeTransport = (function pdfDataRangeTransportClosure() {
- /**
- * @constructs PDFDataRangeTransport
- * @param {number} length
- * @param {Uint8Array} initialData
- */
- function PDFDataRangeTransport(length, initialData) {
- this.length = length;
- this.initialData = initialData;
-
- this._rangeListeners = [];
- this._progressListeners = [];
- this._progressiveReadListeners = [];
- this._readyCapability = createPromiseCapability();
- }
- PDFDataRangeTransport.prototype =
- /** @lends PDFDataRangeTransport.prototype */ {
- addRangeListener:
- function PDFDataRangeTransport_addRangeListener(listener) {
- this._rangeListeners.push(listener);
- },
-
- addProgressListener:
- function PDFDataRangeTransport_addProgressListener(listener) {
- this._progressListeners.push(listener);
- },
-
- addProgressiveReadListener:
- function PDFDataRangeTransport_addProgressiveReadListener(listener) {
- this._progressiveReadListeners.push(listener);
- },
-
- onDataRange: function PDFDataRangeTransport_onDataRange(begin, chunk) {
- var listeners = this._rangeListeners;
- for (var i = 0, n = listeners.length; i < n; ++i) {
- listeners[i](begin, chunk);
- }
- },
-
- onDataProgress: function PDFDataRangeTransport_onDataProgress(loaded) {
- this._readyCapability.promise.then(function () {
- var listeners = this._progressListeners;
- for (var i = 0, n = listeners.length; i < n; ++i) {
- listeners[i](loaded);
- }
- }.bind(this));
- },
-
- onDataProgressiveRead:
- function PDFDataRangeTransport_onDataProgress(chunk) {
- this._readyCapability.promise.then(function () {
- var listeners = this._progressiveReadListeners;
- for (var i = 0, n = listeners.length; i < n; ++i) {
- listeners[i](chunk);
- }
- }.bind(this));
- },
-
- transportReady: function PDFDataRangeTransport_transportReady() {
- this._readyCapability.resolve();
- },
-
- requestDataRange:
- function PDFDataRangeTransport_requestDataRange(begin, end) {
- throw new Error('Abstract method PDFDataRangeTransport.requestDataRange');
- }
+ ctx.restore = function ctxRestore() {
+ var prev = this._transformStack.pop();
+ if (prev) {
+ this._transformMatrix = prev;
+ this._originalRestore();
+ }
};
- return PDFDataRangeTransport;
-})();
-
-PDFJS.PDFDataRangeTransport = PDFDataRangeTransport;
-
-/**
- * Proxy to a PDFDocument in the worker thread. Also, contains commonly used
- * properties that can be read synchronously.
- * @class
- */
-var PDFDocumentProxy = (function PDFDocumentProxyClosure() {
- function PDFDocumentProxy(pdfInfo, transport) {
- this.pdfInfo = pdfInfo;
- this.transport = transport;
- }
- PDFDocumentProxy.prototype = /** @lends PDFDocumentProxy.prototype */ {
- /**
- * @return {number} Total number of pages the PDF contains.
- */
- get numPages() {
- return this.pdfInfo.numPages;
- },
- /**
- * @return {string} A unique ID to identify a PDF. Not guaranteed to be
- * unique.
- */
- get fingerprint() {
- return this.pdfInfo.fingerprint;
- },
- /**
- * @param {number} pageNumber The page number to get. The first page is 1.
- * @return {Promise} A promise that is resolved with a {@link PDFPageProxy}
- * object.
- */
- getPage: function PDFDocumentProxy_getPage(pageNumber) {
- return this.transport.getPage(pageNumber);
- },
- /**
- * @param {{num: number, gen: number}} ref The page reference. Must have
- * the 'num' and 'gen' properties.
- * @return {Promise} A promise that is resolved with the page index that is
- * associated with the reference.
- */
- getPageIndex: function PDFDocumentProxy_getPageIndex(ref) {
- return this.transport.getPageIndex(ref);
- },
- /**
- * @return {Promise} A promise that is resolved with a lookup table for
- * mapping named destinations to reference numbers.
- *
- * This can be slow for large documents: use getDestination instead
- */
- getDestinations: function PDFDocumentProxy_getDestinations() {
- return this.transport.getDestinations();
- },
- /**
- * @param {string} id The named destination to get.
- * @return {Promise} A promise that is resolved with all information
- * of the given named destination.
- */
- getDestination: function PDFDocumentProxy_getDestination(id) {
- return this.transport.getDestination(id);
- },
- /**
- * @return {Promise} A promise that is resolved with a lookup table for
- * mapping named attachments to their content.
- */
- getAttachments: function PDFDocumentProxy_getAttachments() {
- return this.transport.getAttachments();
- },
- /**
- * @return {Promise} A promise that is resolved with an array of all the
- * JavaScript strings in the name tree.
- */
- getJavaScript: function PDFDocumentProxy_getJavaScript() {
- return this.transport.getJavaScript();
- },
- /**
- * @return {Promise} A promise that is resolved with an {Array} that is a
- * tree outline (if it has one) of the PDF. The tree is in the format of:
- * [
- * {
- * title: string,
- * bold: boolean,
- * italic: boolean,
- * color: rgb array,
- * dest: dest obj,
- * items: array of more items like this
- * },
- * ...
- * ].
- */
- getOutline: function PDFDocumentProxy_getOutline() {
- return this.transport.getOutline();
- },
- /**
- * @return {Promise} A promise that is resolved with an {Object} that has
- * info and metadata properties. Info is an {Object} filled with anything
- * available in the information dictionary and similarly metadata is a
- * {Metadata} object with information from the metadata section of the PDF.
- */
- getMetadata: function PDFDocumentProxy_getMetadata() {
- return this.transport.getMetadata();
- },
- /**
- * @return {Promise} A promise that is resolved with a TypedArray that has
- * the raw data from the PDF.
- */
- getData: function PDFDocumentProxy_getData() {
- return this.transport.getData();
- },
- /**
- * @return {Promise} A promise that is resolved when the document's data
- * is loaded. It is resolved with an {Object} that contains the length
- * property that indicates size of the PDF data in bytes.
- */
- getDownloadInfo: function PDFDocumentProxy_getDownloadInfo() {
- return this.transport.downloadInfoCapability.promise;
- },
- /**
- * @return {Promise} A promise this is resolved with current stats about
- * document structures (see {@link PDFDocumentStats}).
- */
- getStats: function PDFDocumentProxy_getStats() {
- return this.transport.getStats();
- },
- /**
- * Cleans up resources allocated by the document, e.g. created @font-face.
- */
- cleanup: function PDFDocumentProxy_cleanup() {
- this.transport.startCleanup();
- },
- /**
- * Destroys current document instance and terminates worker.
- */
- destroy: function PDFDocumentProxy_destroy() {
- this.transport.destroy();
- }
+ ctx.translate = function ctxTranslate(x, y) {
+ var m = this._transformMatrix;
+ m[4] = m[0] * x + m[2] * y + m[4];
+ m[5] = m[1] * x + m[3] * y + m[5];
+ this._originalTranslate(x, y);
};
- return PDFDocumentProxy;
-})();
-
-/**
- * Page text content.
- *
- * @typedef {Object} TextContent
- * @property {array} items - array of {@link TextItem}
- * @property {Object} styles - {@link TextStyles} objects, indexed by font
- * name.
- */
-
-/**
- * Page text content part.
- *
- * @typedef {Object} TextItem
- * @property {string} str - text content.
- * @property {string} dir - text direction: 'ttb', 'ltr' or 'rtl'.
- * @property {array} transform - transformation matrix.
- * @property {number} width - width in device space.
- * @property {number} height - height in device space.
- * @property {string} fontName - font name used by pdf.js for converted font.
- */
-
-/**
- * Text style.
- *
- * @typedef {Object} TextStyle
- * @property {number} ascent - font ascent.
- * @property {number} descent - font descent.
- * @property {boolean} vertical - text is in vertical mode.
- * @property {string} fontFamily - possible font family
- */
-
-/**
- * Page render parameters.
- *
- * @typedef {Object} RenderParameters
- * @property {Object} canvasContext - A 2D context of a DOM Canvas object.
- * @property {PDFJS.PageViewport} viewport - Rendering viewport obtained by
- * calling of PDFPage.getViewport method.
- * @property {string} intent - Rendering intent, can be 'display' or 'print'
- * (default value is 'display').
- * @property {Object} imageLayer - (optional) An object that has beginLayout,
- * endLayout and appendImage functions.
- * @property {function} continueCallback - (deprecated) A function that will be
- * called each time the rendering is paused. To continue
- * rendering call the function that is the first argument
- * to the callback.
- */
-
-/**
- * PDF page operator list.
- *
- * @typedef {Object} PDFOperatorList
- * @property {Array} fnArray - Array containing the operator functions.
- * @property {Array} argsArray - Array containing the arguments of the
- * functions.
- */
-
-/**
- * Proxy to a PDFPage in the worker thread.
- * @class
- */
-var PDFPageProxy = (function PDFPageProxyClosure() {
- function PDFPageProxy(pageIndex, pageInfo, transport) {
- this.pageIndex = pageIndex;
- this.pageInfo = pageInfo;
- this.transport = transport;
- this.stats = new StatTimer();
- this.stats.enabled = !!globalScope.PDFJS.enableStats;
- this.commonObjs = transport.commonObjs;
- this.objs = new PDFObjects();
- this.cleanupAfterRender = false;
- this.pendingDestroy = false;
- this.intentStates = {};
- }
- PDFPageProxy.prototype = /** @lends PDFPageProxy.prototype */ {
- /**
- * @return {number} Page number of the page. First page is 1.
- */
- get pageNumber() {
- return this.pageIndex + 1;
- },
- /**
- * @return {number} The number of degrees the page is rotated clockwise.
- */
- get rotate() {
- return this.pageInfo.rotate;
- },
- /**
- * @return {Object} The reference that points to this page. It has 'num' and
- * 'gen' properties.
- */
- get ref() {
- return this.pageInfo.ref;
- },
- /**
- * @return {Array} An array of the visible portion of the PDF page in the
- * user space units - [x1, y1, x2, y2].
- */
- get view() {
- return this.pageInfo.view;
- },
- /**
- * @param {number} scale The desired scale of the viewport.
- * @param {number} rotate Degrees to rotate the viewport. If omitted this
- * defaults to the page rotation.
- * @return {PDFJS.PageViewport} Contains 'width' and 'height' properties
- * along with transforms required for rendering.
- */
- getViewport: function PDFPageProxy_getViewport(scale, rotate) {
- if (arguments.length < 2) {
- rotate = this.rotate;
- }
- return new PDFJS.PageViewport(this.view, scale, rotate, 0, 0);
- },
- /**
- * @return {Promise} A promise that is resolved with an {Array} of the
- * annotation objects.
- */
- getAnnotations: function PDFPageProxy_getAnnotations() {
- if (this.annotationsPromise) {
- return this.annotationsPromise;
- }
-
- var promise = this.transport.getAnnotations(this.pageIndex);
- this.annotationsPromise = promise;
- return promise;
- },
- /**
- * Begins the process of rendering a page to the desired context.
- * @param {RenderParameters} params Page render parameters.
- * @return {RenderTask} An object that contains the promise, which
- * is resolved when the page finishes rendering.
- */
- render: function PDFPageProxy_render(params) {
- var stats = this.stats;
- stats.time('Overall');
-
- // If there was a pending destroy cancel it so no cleanup happens during
- // this call to render.
- this.pendingDestroy = false;
-
- var renderingIntent = (params.intent === 'print' ? 'print' : 'display');
-
- if (!this.intentStates[renderingIntent]) {
- this.intentStates[renderingIntent] = {};
- }
- var intentState = this.intentStates[renderingIntent];
-
- // If there's no displayReadyCapability yet, then the operatorList
- // was never requested before. Make the request and create the promise.
- if (!intentState.displayReadyCapability) {
- intentState.receivingOperatorList = true;
- intentState.displayReadyCapability = createPromiseCapability();
- intentState.operatorList = {
- fnArray: [],
- argsArray: [],
- lastChunk: false
- };
-
- this.stats.time('Page Request');
- this.transport.messageHandler.send('RenderPageRequest', {
- pageIndex: this.pageNumber - 1,
- intent: renderingIntent
- });
- }
-
- var internalRenderTask = new InternalRenderTask(complete, params,
- this.objs,
- this.commonObjs,
- intentState.operatorList,
- this.pageNumber);
- internalRenderTask.useRequestAnimationFrame = renderingIntent !== 'print';
- if (!intentState.renderTasks) {
- intentState.renderTasks = [];
- }
- intentState.renderTasks.push(internalRenderTask);
- var renderTask = internalRenderTask.task;
-
- // Obsolete parameter support
- if (params.continueCallback) {
- renderTask.onContinue = params.continueCallback;
- }
-
- var self = this;
- intentState.displayReadyCapability.promise.then(
- function pageDisplayReadyPromise(transparency) {
- if (self.pendingDestroy) {
- complete();
- return;
- }
- stats.time('Rendering');
- internalRenderTask.initalizeGraphics(transparency);
- internalRenderTask.operatorListChanged();
- },
- function pageDisplayReadPromiseError(reason) {
- complete(reason);
- }
- );
-
- function complete(error) {
- var i = intentState.renderTasks.indexOf(internalRenderTask);
- if (i >= 0) {
- intentState.renderTasks.splice(i, 1);
- }
-
- if (self.cleanupAfterRender) {
- self.pendingDestroy = true;
- }
- self._tryDestroy();
-
- if (error) {
- internalRenderTask.capability.reject(error);
- } else {
- internalRenderTask.capability.resolve();
- }
- stats.timeEnd('Rendering');
- stats.timeEnd('Overall');
- }
-
- return renderTask;
- },
-
- /**
- * @return {Promise} A promise resolved with an {@link PDFOperatorList}
- * object that represents page's operator list.
- */
- getOperatorList: function PDFPageProxy_getOperatorList() {
- function operatorListChanged() {
- if (intentState.operatorList.lastChunk) {
- intentState.opListReadCapability.resolve(intentState.operatorList);
- }
- }
-
- var renderingIntent = 'oplist';
- if (!this.intentStates[renderingIntent]) {
- this.intentStates[renderingIntent] = {};
- }
- var intentState = this.intentStates[renderingIntent];
-
- if (!intentState.opListReadCapability) {
- var opListTask = {};
- opListTask.operatorListChanged = operatorListChanged;
- intentState.receivingOperatorList = true;
- intentState.opListReadCapability = createPromiseCapability();
- intentState.renderTasks = [];
- intentState.renderTasks.push(opListTask);
- intentState.operatorList = {
- fnArray: [],
- argsArray: [],
- lastChunk: false
- };
-
- this.transport.messageHandler.send('RenderPageRequest', {
- pageIndex: this.pageIndex,
- intent: renderingIntent
- });
- }
- return intentState.opListReadCapability.promise;
- },
-
- /**
- * @return {Promise} That is resolved a {@link TextContent}
- * object that represent the page text content.
- */
- getTextContent: function PDFPageProxy_getTextContent() {
- return this.transport.messageHandler.sendWithPromise('GetTextContent', {
- pageIndex: this.pageNumber - 1
- });
- },
- /**
- * Destroys resources allocated by the page.
- */
- destroy: function PDFPageProxy_destroy() {
- this.pendingDestroy = true;
- this._tryDestroy();
- },
- /**
- * For internal use only. Attempts to clean up if rendering is in a state
- * where that's possible.
- * @ignore
- */
- _tryDestroy: function PDFPageProxy__destroy() {
- if (!this.pendingDestroy ||
- Object.keys(this.intentStates).some(function(intent) {
- var intentState = this.intentStates[intent];
- return (intentState.renderTasks.length !== 0 ||
- intentState.receivingOperatorList);
- }, this)) {
- return;
- }
-
- Object.keys(this.intentStates).forEach(function(intent) {
- delete this.intentStates[intent];
- }, this);
- this.objs.clear();
- this.annotationsPromise = null;
- this.pendingDestroy = false;
- },
- /**
- * For internal use only.
- * @ignore
- */
- _startRenderPage: function PDFPageProxy_startRenderPage(transparency,
- intent) {
- var intentState = this.intentStates[intent];
- // TODO Refactor RenderPageRequest to separate rendering
- // and operator list logic
- if (intentState.displayReadyCapability) {
- intentState.displayReadyCapability.resolve(transparency);
- }
- },
- /**
- * For internal use only.
- * @ignore
- */
- _renderPageChunk: function PDFPageProxy_renderPageChunk(operatorListChunk,
- intent) {
- var intentState = this.intentStates[intent];
- var i, ii;
- // Add the new chunk to the current operator list.
- for (i = 0, ii = operatorListChunk.length; i < ii; i++) {
- intentState.operatorList.fnArray.push(operatorListChunk.fnArray[i]);
- intentState.operatorList.argsArray.push(
- operatorListChunk.argsArray[i]);
- }
- intentState.operatorList.lastChunk = operatorListChunk.lastChunk;
-
- // Notify all the rendering tasks there are more operators to be consumed.
- for (i = 0; i < intentState.renderTasks.length; i++) {
- intentState.renderTasks[i].operatorListChanged();
- }
-
- if (operatorListChunk.lastChunk) {
- intentState.receivingOperatorList = false;
- this._tryDestroy();
- }
- }
+ ctx.scale = function ctxScale(x, y) {
+ var m = this._transformMatrix;
+ m[0] = m[0] * x;
+ m[1] = m[1] * x;
+ m[2] = m[2] * y;
+ m[3] = m[3] * y;
+ this._originalScale(x, y);
};
- return PDFPageProxy;
-})();
-
-/**
- * For internal use only.
- * @ignore
- */
-var WorkerTransport = (function WorkerTransportClosure() {
- function WorkerTransport(workerInitializedCapability, pdfDataRangeTransport) {
- this.pdfDataRangeTransport = pdfDataRangeTransport;
- this.workerInitializedCapability = workerInitializedCapability;
- this.commonObjs = new PDFObjects();
-
- this.loadingTask = null;
-
- this.pageCache = [];
- this.pagePromises = [];
- this.downloadInfoCapability = createPromiseCapability();
-
- /**
- * Needed because workers cannot load scripts outside of the current origin (as of firefox v45).
- * This patch does require the worker script to be served with a (Access-Control-Allow-Origin: *) header
- * @patch
- */
- var loadWorkerXHR = function(){
- var url = PDFJS.workerSrc;
- var jsdfd = PDFJS.createPromiseCapability();
-
- if (url.match(/^blob:/) || typeof URL.createObjectURL === 'undefined') {
- jsdfd.reject(); // Failed loading using blob
+ ctx.transform = function ctxTransform(a, b, c, d, e, f) {
+ var m = this._transformMatrix;
+ this._transformMatrix = [
+ m[0] * a + m[2] * b,
+ m[1] * a + m[3] * b,
+ m[0] * c + m[2] * d,
+ m[1] * c + m[3] * d,
+ m[0] * e + m[2] * f + m[4],
+ m[1] * e + m[3] * f + m[5]
+ ];
+ ctx._originalTransform(a, b, c, d, e, f);
+ };
+ ctx.setTransform = function ctxSetTransform(a, b, c, d, e, f) {
+ this._transformMatrix = [
+ a,
+ b,
+ c,
+ d,
+ e,
+ f
+ ];
+ ctx._originalSetTransform(a, b, c, d, e, f);
+ };
+ ctx.rotate = function ctxRotate(angle) {
+ var cosValue = Math.cos(angle);
+ var sinValue = Math.sin(angle);
+ var m = this._transformMatrix;
+ this._transformMatrix = [
+ m[0] * cosValue + m[2] * sinValue,
+ m[1] * cosValue + m[3] * sinValue,
+ m[0] * -sinValue + m[2] * cosValue,
+ m[1] * -sinValue + m[3] * cosValue,
+ m[4],
+ m[5]
+ ];
+ this._originalRotate(angle);
+ };
+ }
+}
+var CachedCanvases = function CachedCanvasesClosure() {
+ function CachedCanvases(canvasFactory) {
+ this.canvasFactory = canvasFactory;
+ this.cache = Object.create(null);
+ }
+ CachedCanvases.prototype = {
+ getCanvas: function CachedCanvases_getCanvas(id, width, height, trackTransform) {
+ var canvasEntry;
+ if (this.cache[id] !== undefined) {
+ canvasEntry = this.cache[id];
+ this.canvasFactory.reset(canvasEntry, width, height);
+ canvasEntry.context.setTransform(1, 0, 0, 1, 0, 0);
+ } else {
+ canvasEntry = this.canvasFactory.create(width, height);
+ this.cache[id] = canvasEntry;
+ }
+ if (trackTransform) {
+ addContextCurrentTransform(canvasEntry.context);
+ }
+ return canvasEntry;
+ },
+ clear: function () {
+ for (var id in this.cache) {
+ var canvasEntry = this.cache[id];
+ this.canvasFactory.destroy(canvasEntry);
+ delete this.cache[id];
+ }
+ }
+ };
+ return CachedCanvases;
+}();
+function compileType3Glyph(imgData) {
+ var POINT_TO_PROCESS_LIMIT = 1000;
+ var width = imgData.width, height = imgData.height;
+ var i, j, j0, width1 = width + 1;
+ var points = new Uint8Array(width1 * (height + 1));
+ var POINT_TYPES = new Uint8Array([
+ 0,
+ 2,
+ 4,
+ 0,
+ 1,
+ 0,
+ 5,
+ 4,
+ 8,
+ 10,
+ 0,
+ 8,
+ 0,
+ 2,
+ 1,
+ 0
+ ]);
+ var lineSize = width + 7 & ~7, data0 = imgData.data;
+ var data = new Uint8Array(lineSize * height), pos = 0, ii;
+ for (i = 0, ii = data0.length; i < ii; i++) {
+ var mask = 128, elem = data0[i];
+ while (mask > 0) {
+ data[pos++] = elem & mask ? 0 : 255;
+ mask >>= 1;
+ }
+ }
+ var count = 0;
+ pos = 0;
+ if (data[pos] !== 0) {
+ points[0] = 1;
+ ++count;
+ }
+ for (j = 1; j < width; j++) {
+ if (data[pos] !== data[pos + 1]) {
+ points[j] = data[pos] ? 2 : 1;
+ ++count;
+ }
+ pos++;
+ }
+ if (data[pos] !== 0) {
+ points[j] = 2;
+ ++count;
+ }
+ for (i = 1; i < height; i++) {
+ pos = i * lineSize;
+ j0 = i * width1;
+ if (data[pos - lineSize] !== data[pos]) {
+ points[j0] = data[pos] ? 1 : 8;
+ ++count;
+ }
+ var sum = (data[pos] ? 4 : 0) + (data[pos - lineSize] ? 8 : 0);
+ for (j = 1; j < width; j++) {
+ sum = (sum >> 2) + (data[pos + 1] ? 4 : 0) + (data[pos - lineSize + 1] ? 8 : 0);
+ if (POINT_TYPES[sum]) {
+ points[j0 + j] = POINT_TYPES[sum];
+ ++count;
+ }
+ pos++;
+ }
+ if (data[pos - lineSize] !== data[pos]) {
+ points[j0 + j] = data[pos] ? 2 : 4;
+ ++count;
+ }
+ if (count > POINT_TO_PROCESS_LIMIT) {
+ return null;
+ }
+ }
+ pos = lineSize * (height - 1);
+ j0 = i * width1;
+ if (data[pos] !== 0) {
+ points[j0] = 8;
+ ++count;
+ }
+ for (j = 1; j < width; j++) {
+ if (data[pos] !== data[pos + 1]) {
+ points[j0 + j] = data[pos] ? 4 : 8;
+ ++count;
+ }
+ pos++;
+ }
+ if (data[pos] !== 0) {
+ points[j0 + j] = 4;
+ ++count;
+ }
+ if (count > POINT_TO_PROCESS_LIMIT) {
+ return null;
+ }
+ var steps = new Int32Array([
+ 0,
+ width1,
+ -1,
+ 0,
+ -width1,
+ 0,
+ 0,
+ 0,
+ 1
+ ]);
+ var outlines = [];
+ for (i = 0; count && i <= height; i++) {
+ var p = i * width1;
+ var end = p + width;
+ while (p < end && !points[p]) {
+ p++;
+ }
+ if (p === end) {
+ continue;
+ }
+ var coords = [
+ p % width1,
+ i
+ ];
+ var type = points[p], p0 = p, pp;
+ do {
+ var step = steps[type];
+ do {
+ p += step;
+ } while (!points[p]);
+ pp = points[p];
+ if (pp !== 5 && pp !== 10) {
+ type = pp;
+ points[p] = 0;
+ } else {
+ type = pp & 0x33 * type >> 4;
+ points[p] &= type >> 2 | type << 2;
+ }
+ coords.push(p % width1);
+ coords.push(p / width1 | 0);
+ --count;
+ } while (p0 !== p);
+ outlines.push(coords);
+ --i;
+ }
+ var drawOutline = function (c) {
+ c.save();
+ c.scale(1 / width, -1 / height);
+ c.translate(0, -height);
+ c.beginPath();
+ for (var i = 0, ii = outlines.length; i < ii; i++) {
+ var o = outlines[i];
+ c.moveTo(o[0], o[1]);
+ for (var j = 2, jj = o.length; j < jj; j += 2) {
+ c.lineTo(o[j], o[j + 1]);
+ }
+ }
+ c.fill();
+ c.beginPath();
+ c.restore();
+ };
+ return drawOutline;
+}
+var CanvasExtraState = function CanvasExtraStateClosure() {
+ function CanvasExtraState(old) {
+ this.alphaIsShape = false;
+ this.fontSize = 0;
+ this.fontSizeScale = 1;
+ this.textMatrix = IDENTITY_MATRIX;
+ this.textMatrixScale = 1;
+ this.fontMatrix = FONT_IDENTITY_MATRIX;
+ this.leading = 0;
+ this.x = 0;
+ this.y = 0;
+ this.lineX = 0;
+ this.lineY = 0;
+ this.charSpacing = 0;
+ this.wordSpacing = 0;
+ this.textHScale = 1;
+ this.textRenderingMode = TextRenderingMode.FILL;
+ this.textRise = 0;
+ this.fillColor = '#000000';
+ this.strokeColor = '#000000';
+ this.patternFill = false;
+ this.fillAlpha = 1;
+ this.strokeAlpha = 1;
+ this.lineWidth = 1;
+ this.activeSMask = null;
+ this.resumeSMaskCtx = null;
+ this.old = old;
+ }
+ CanvasExtraState.prototype = {
+ clone: function CanvasExtraState_clone() {
+ return Object.create(this);
+ },
+ setCurrentPoint: function CanvasExtraState_setCurrentPoint(x, y) {
+ this.x = x;
+ this.y = y;
+ }
+ };
+ return CanvasExtraState;
+}();
+var CanvasGraphics = function CanvasGraphicsClosure() {
+ var EXECUTION_TIME = 15;
+ var EXECUTION_STEPS = 10;
+ function CanvasGraphics(canvasCtx, commonObjs, objs, canvasFactory, imageLayer) {
+ this.ctx = canvasCtx;
+ this.current = new CanvasExtraState();
+ this.stateStack = [];
+ this.pendingClip = null;
+ this.pendingEOFill = false;
+ this.res = null;
+ this.xobjs = null;
+ this.commonObjs = commonObjs;
+ this.objs = objs;
+ this.canvasFactory = canvasFactory;
+ this.imageLayer = imageLayer;
+ this.groupStack = [];
+ this.processingType3 = null;
+ this.baseTransform = null;
+ this.baseTransformStack = [];
+ this.groupLevel = 0;
+ this.smaskStack = [];
+ this.smaskCounter = 0;
+ this.tempSMask = null;
+ this.cachedCanvases = new CachedCanvases(this.canvasFactory);
+ if (canvasCtx) {
+ addContextCurrentTransform(canvasCtx);
+ }
+ this.cachedGetSinglePixelWidth = null;
+ }
+ function putBinaryImageData(ctx, imgData) {
+ if (typeof ImageData !== 'undefined' && imgData instanceof ImageData) {
+ ctx.putImageData(imgData, 0, 0);
+ return;
+ }
+ var height = imgData.height, width = imgData.width;
+ var partialChunkHeight = height % FULL_CHUNK_HEIGHT;
+ var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
+ var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
+ var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
+ var srcPos = 0, destPos;
+ var src = imgData.data;
+ var dest = chunkImgData.data;
+ var i, j, thisChunkHeight, elemsInThisChunk;
+ if (imgData.kind === ImageKind.GRAYSCALE_1BPP) {
+ var srcLength = src.byteLength;
+ var dest32 = HasCanvasTypedArraysCached.value ? new Uint32Array(dest.buffer) : new Uint32ArrayView(dest);
+ var dest32DataLength = dest32.length;
+ var fullSrcDiff = width + 7 >> 3;
+ var white = 0xFFFFFFFF;
+ var black = IsLittleEndianCached.value || !HasCanvasTypedArraysCached.value ? 0xFF000000 : 0x000000FF;
+ for (i = 0; i < totalChunks; i++) {
+ thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
+ destPos = 0;
+ for (j = 0; j < thisChunkHeight; j++) {
+ var srcDiff = srcLength - srcPos;
+ var k = 0;
+ var kEnd = srcDiff > fullSrcDiff ? width : srcDiff * 8 - 7;
+ var kEndUnrolled = kEnd & ~7;
+ var mask = 0;
+ var srcByte = 0;
+ for (; k < kEndUnrolled; k += 8) {
+ srcByte = src[srcPos++];
+ dest32[destPos++] = srcByte & 128 ? white : black;
+ dest32[destPos++] = srcByte & 64 ? white : black;
+ dest32[destPos++] = srcByte & 32 ? white : black;
+ dest32[destPos++] = srcByte & 16 ? white : black;
+ dest32[destPos++] = srcByte & 8 ? white : black;
+ dest32[destPos++] = srcByte & 4 ? white : black;
+ dest32[destPos++] = srcByte & 2 ? white : black;
+ dest32[destPos++] = srcByte & 1 ? white : black;
+ }
+ for (; k < kEnd; k++) {
+ if (mask === 0) {
+ srcByte = src[srcPos++];
+ mask = 128;
+ }
+ dest32[destPos++] = srcByte & mask ? white : black;
+ mask >>= 1;
+ }
+ }
+ while (destPos < dest32DataLength) {
+ dest32[destPos++] = 0;
+ }
+ ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
+ }
+ } else if (imgData.kind === ImageKind.RGBA_32BPP) {
+ j = 0;
+ elemsInThisChunk = width * FULL_CHUNK_HEIGHT * 4;
+ for (i = 0; i < fullChunks; i++) {
+ dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));
+ srcPos += elemsInThisChunk;
+ ctx.putImageData(chunkImgData, 0, j);
+ j += FULL_CHUNK_HEIGHT;
+ }
+ if (i < totalChunks) {
+ elemsInThisChunk = width * partialChunkHeight * 4;
+ dest.set(src.subarray(srcPos, srcPos + elemsInThisChunk));
+ ctx.putImageData(chunkImgData, 0, j);
+ }
+ } else if (imgData.kind === ImageKind.RGB_24BPP) {
+ thisChunkHeight = FULL_CHUNK_HEIGHT;
+ elemsInThisChunk = width * thisChunkHeight;
+ for (i = 0; i < totalChunks; i++) {
+ if (i >= fullChunks) {
+ thisChunkHeight = partialChunkHeight;
+ elemsInThisChunk = width * thisChunkHeight;
+ }
+ destPos = 0;
+ for (j = elemsInThisChunk; j--;) {
+ dest[destPos++] = src[srcPos++];
+ dest[destPos++] = src[srcPos++];
+ dest[destPos++] = src[srcPos++];
+ dest[destPos++] = 255;
+ }
+ ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
+ }
+ } else {
+ error('bad image kind: ' + imgData.kind);
+ }
+ }
+ function putBinaryImageMask(ctx, imgData) {
+ var height = imgData.height, width = imgData.width;
+ var partialChunkHeight = height % FULL_CHUNK_HEIGHT;
+ var fullChunks = (height - partialChunkHeight) / FULL_CHUNK_HEIGHT;
+ var totalChunks = partialChunkHeight === 0 ? fullChunks : fullChunks + 1;
+ var chunkImgData = ctx.createImageData(width, FULL_CHUNK_HEIGHT);
+ var srcPos = 0;
+ var src = imgData.data;
+ var dest = chunkImgData.data;
+ for (var i = 0; i < totalChunks; i++) {
+ var thisChunkHeight = i < fullChunks ? FULL_CHUNK_HEIGHT : partialChunkHeight;
+ var destPos = 3;
+ for (var j = 0; j < thisChunkHeight; j++) {
+ var mask = 0;
+ for (var k = 0; k < width; k++) {
+ if (!mask) {
+ var elem = src[srcPos++];
+ mask = 128;
+ }
+ dest[destPos] = elem & mask ? 0 : 255;
+ destPos += 4;
+ mask >>= 1;
+ }
+ }
+ ctx.putImageData(chunkImgData, 0, i * FULL_CHUNK_HEIGHT);
+ }
+ }
+ function copyCtxState(sourceCtx, destCtx) {
+ var properties = [
+ 'strokeStyle',
+ 'fillStyle',
+ 'fillRule',
+ 'globalAlpha',
+ 'lineWidth',
+ 'lineCap',
+ 'lineJoin',
+ 'miterLimit',
+ 'globalCompositeOperation',
+ 'font'
+ ];
+ for (var i = 0, ii = properties.length; i < ii; i++) {
+ var property = properties[i];
+ if (sourceCtx[property] !== undefined) {
+ destCtx[property] = sourceCtx[property];
+ }
+ }
+ if (sourceCtx.setLineDash !== undefined) {
+ destCtx.setLineDash(sourceCtx.getLineDash());
+ destCtx.lineDashOffset = sourceCtx.lineDashOffset;
+ }
+ }
+ function composeSMaskBackdrop(bytes, r0, g0, b0) {
+ var length = bytes.length;
+ for (var i = 3; i < length; i += 4) {
+ var alpha = bytes[i];
+ if (alpha === 0) {
+ bytes[i - 3] = r0;
+ bytes[i - 2] = g0;
+ bytes[i - 1] = b0;
+ } else if (alpha < 255) {
+ var alpha_ = 255 - alpha;
+ bytes[i - 3] = bytes[i - 3] * alpha + r0 * alpha_ >> 8;
+ bytes[i - 2] = bytes[i - 2] * alpha + g0 * alpha_ >> 8;
+ bytes[i - 1] = bytes[i - 1] * alpha + b0 * alpha_ >> 8;
+ }
+ }
+ }
+ function composeSMaskAlpha(maskData, layerData, transferMap) {
+ var length = maskData.length;
+ var scale = 1 / 255;
+ for (var i = 3; i < length; i += 4) {
+ var alpha = transferMap ? transferMap[maskData[i]] : maskData[i];
+ layerData[i] = layerData[i] * alpha * scale | 0;
+ }
+ }
+ function composeSMaskLuminosity(maskData, layerData, transferMap) {
+ var length = maskData.length;
+ for (var i = 3; i < length; i += 4) {
+ var y = maskData[i - 3] * 77 + maskData[i - 2] * 152 + maskData[i - 1] * 28;
+ layerData[i] = transferMap ? layerData[i] * transferMap[y >> 8] >> 8 : layerData[i] * y >> 16;
+ }
+ }
+ function genericComposeSMask(maskCtx, layerCtx, width, height, subtype, backdrop, transferMap) {
+ var hasBackdrop = !!backdrop;
+ var r0 = hasBackdrop ? backdrop[0] : 0;
+ var g0 = hasBackdrop ? backdrop[1] : 0;
+ var b0 = hasBackdrop ? backdrop[2] : 0;
+ var composeFn;
+ if (subtype === 'Luminosity') {
+ composeFn = composeSMaskLuminosity;
+ } else {
+ composeFn = composeSMaskAlpha;
+ }
+ var PIXELS_TO_PROCESS = 1048576;
+ var chunkSize = Math.min(height, Math.ceil(PIXELS_TO_PROCESS / width));
+ for (var row = 0; row < height; row += chunkSize) {
+ var chunkHeight = Math.min(chunkSize, height - row);
+ var maskData = maskCtx.getImageData(0, row, width, chunkHeight);
+ var layerData = layerCtx.getImageData(0, row, width, chunkHeight);
+ if (hasBackdrop) {
+ composeSMaskBackdrop(maskData.data, r0, g0, b0);
+ }
+ composeFn(maskData.data, layerData.data, transferMap);
+ maskCtx.putImageData(layerData, 0, row);
+ }
+ }
+ function composeSMask(ctx, smask, layerCtx) {
+ var mask = smask.canvas;
+ var maskCtx = smask.context;
+ ctx.setTransform(smask.scaleX, 0, 0, smask.scaleY, smask.offsetX, smask.offsetY);
+ var backdrop = smask.backdrop || null;
+ if (!smask.transferMap && WebGLUtils.isEnabled) {
+ var composed = WebGLUtils.composeSMask(layerCtx.canvas, mask, {
+ subtype: smask.subtype,
+ backdrop: backdrop
+ });
+ ctx.setTransform(1, 0, 0, 1, 0, 0);
+ ctx.drawImage(composed, smask.offsetX, smask.offsetY);
+ return;
+ }
+ genericComposeSMask(maskCtx, layerCtx, mask.width, mask.height, smask.subtype, backdrop, smask.transferMap);
+ ctx.drawImage(mask, 0, 0);
+ }
+ var LINE_CAP_STYLES = [
+ 'butt',
+ 'round',
+ 'square'
+ ];
+ var LINE_JOIN_STYLES = [
+ 'miter',
+ 'round',
+ 'bevel'
+ ];
+ var NORMAL_CLIP = {};
+ var EO_CLIP = {};
+ CanvasGraphics.prototype = {
+ beginDrawing: function CanvasGraphics_beginDrawing(transform, viewport, transparency) {
+ var width = this.ctx.canvas.width;
+ var height = this.ctx.canvas.height;
+ this.ctx.save();
+ this.ctx.fillStyle = 'rgb(255, 255, 255)';
+ this.ctx.fillRect(0, 0, width, height);
+ this.ctx.restore();
+ if (transparency) {
+ var transparentCanvas = this.cachedCanvases.getCanvas('transparent', width, height, true);
+ this.compositeCtx = this.ctx;
+ this.transparentCanvas = transparentCanvas.canvas;
+ this.ctx = transparentCanvas.context;
+ this.ctx.save();
+ this.ctx.transform.apply(this.ctx, this.compositeCtx.mozCurrentTransform);
+ }
+ this.ctx.save();
+ if (transform) {
+ this.ctx.transform.apply(this.ctx, transform);
+ }
+ this.ctx.transform.apply(this.ctx, viewport.transform);
+ this.baseTransform = this.ctx.mozCurrentTransform.slice();
+ if (this.imageLayer) {
+ this.imageLayer.beginLayout();
+ }
+ },
+ executeOperatorList: function CanvasGraphics_executeOperatorList(operatorList, executionStartIdx, continueCallback, stepper) {
+ var argsArray = operatorList.argsArray;
+ var fnArray = operatorList.fnArray;
+ var i = executionStartIdx || 0;
+ var argsArrayLen = argsArray.length;
+ if (argsArrayLen === i) {
+ return i;
+ }
+ var chunkOperations = argsArrayLen - i > EXECUTION_STEPS && typeof continueCallback === 'function';
+ var endTime = chunkOperations ? Date.now() + EXECUTION_TIME : 0;
+ var steps = 0;
+ var commonObjs = this.commonObjs;
+ var objs = this.objs;
+ var fnId;
+ while (true) {
+ if (stepper !== undefined && i === stepper.nextBreakPoint) {
+ stepper.breakIt(i, continueCallback);
+ return i;
+ }
+ fnId = fnArray[i];
+ if (fnId !== OPS.dependency) {
+ this[fnId].apply(this, argsArray[i]);
+ } else {
+ var deps = argsArray[i];
+ for (var n = 0, nn = deps.length; n < nn; n++) {
+ var depObjId = deps[n];
+ var common = depObjId[0] === 'g' && depObjId[1] === '_';
+ var objsPool = common ? commonObjs : objs;
+ if (!objsPool.isResolved(depObjId)) {
+ objsPool.get(depObjId, continueCallback);
+ return i;
}
-
- var xmlhttp;
- xmlhttp = new XMLHttpRequest();
-
- xmlhttp.onreadystatechange = function(){
- if (xmlhttp.readyState != 4) return;
-
- if (xmlhttp.status == 200) {
- info('Loaded worker source through XHR.');
- var workerJSBlob = new Blob([xmlhttp.responseText], { type: 'text/javascript' });
- jsdfd.resolve(window.URL.createObjectURL(workerJSBlob));
- } else {
- jsdfd.reject();
- }
- };
-
- xmlhttp.open('GET', url, true);
- xmlhttp.send();
- return jsdfd.promise;
+ }
}
-
- var workerError = function() {
- loadWorkerXHR().then(function(blob) {
- PDFJS.workerSrc = blob;
- loadWorker();
- }, function() {
- this.setupFakeWorker();
- }.bind(this));
- }.bind(this);
-
- // If worker support isn't disabled explicit and the browser has worker
- // support, create a new web worker and test if it/the browser fullfills
- // all requirements to run parts of pdf.js in a web worker.
- // Right now, the requirement is, that an Uint8Array is still an Uint8Array
- // as it arrives on the worker. Chrome added this with version 15.
- var loadWorker = function() {
- var workerSrc = PDFJS.workerSrc;
- if (!workerSrc) {
- error('No PDFJS.workerSrc specified');
- }
-
- try {
- // Some versions of FF can't create a worker on localhost, see:
- // https://bugzilla.mozilla.org/show_bug.cgi?id=683280
- var worker = new Worker(workerSrc);
- worker.onerror = workerError;
-
- var messageHandler = new MessageHandler('main', worker);
- this.messageHandler = messageHandler;
-
- messageHandler.on('test', function transportTest(data) {
- var supportTypedArray = data && data.supportTypedArray;
- if (supportTypedArray) {
- this.worker = worker;
- if (!data.supportTransfers) {
- PDFJS.postMessageTransfers = false;
- }
- this.setupMessageHandler(messageHandler);
- workerInitializedCapability.resolve();
- } else {
- this.setupFakeWorker();
- }
- }.bind(this));
-
- var testObj = new Uint8Array([PDFJS.postMessageTransfers ? 255 : 0]);
- // Some versions of Opera throw a DATA_CLONE_ERR on serializing the
- // typed array. Also, checking if we can use transfers.
- try {
- messageHandler.send('test', testObj, [testObj.buffer]);
- } catch (ex) {
- info('Cannot use postMessage transfers');
- testObj[0] = 0;
- messageHandler.send('test', testObj);
- }
- return;
- } catch (e) {
- info('The worker has been disabled.');
- workerError();
+ i++;
+ if (i === argsArrayLen) {
+ return i;
+ }
+ if (chunkOperations && ++steps > EXECUTION_STEPS) {
+ if (Date.now() > endTime) {
+ continueCallback();
+ return i;
+ }
+ steps = 0;
+ }
+ }
+ },
+ endDrawing: function CanvasGraphics_endDrawing() {
+ if (this.current.activeSMask !== null) {
+ this.endSMaskGroup();
+ }
+ this.ctx.restore();
+ if (this.transparentCanvas) {
+ this.ctx = this.compositeCtx;
+ this.ctx.save();
+ this.ctx.setTransform(1, 0, 0, 1, 0, 0);
+ this.ctx.drawImage(this.transparentCanvas, 0, 0);
+ this.ctx.restore();
+ this.transparentCanvas = null;
+ }
+ this.cachedCanvases.clear();
+ WebGLUtils.clear();
+ if (this.imageLayer) {
+ this.imageLayer.endLayout();
+ }
+ },
+ setLineWidth: function CanvasGraphics_setLineWidth(width) {
+ this.current.lineWidth = width;
+ this.ctx.lineWidth = width;
+ },
+ setLineCap: function CanvasGraphics_setLineCap(style) {
+ this.ctx.lineCap = LINE_CAP_STYLES[style];
+ },
+ setLineJoin: function CanvasGraphics_setLineJoin(style) {
+ this.ctx.lineJoin = LINE_JOIN_STYLES[style];
+ },
+ setMiterLimit: function CanvasGraphics_setMiterLimit(limit) {
+ this.ctx.miterLimit = limit;
+ },
+ setDash: function CanvasGraphics_setDash(dashArray, dashPhase) {
+ var ctx = this.ctx;
+ if (ctx.setLineDash !== undefined) {
+ ctx.setLineDash(dashArray);
+ ctx.lineDashOffset = dashPhase;
+ }
+ },
+ setRenderingIntent: function CanvasGraphics_setRenderingIntent(intent) {
+ },
+ setFlatness: function CanvasGraphics_setFlatness(flatness) {
+ },
+ setGState: function CanvasGraphics_setGState(states) {
+ for (var i = 0, ii = states.length; i < ii; i++) {
+ var state = states[i];
+ var key = state[0];
+ var value = state[1];
+ switch (key) {
+ case 'LW':
+ this.setLineWidth(value);
+ break;
+ case 'LC':
+ this.setLineCap(value);
+ break;
+ case 'LJ':
+ this.setLineJoin(value);
+ break;
+ case 'ML':
+ this.setMiterLimit(value);
+ break;
+ case 'D':
+ this.setDash(value[0], value[1]);
+ break;
+ case 'RI':
+ this.setRenderingIntent(value);
+ break;
+ case 'FL':
+ this.setFlatness(value);
+ break;
+ case 'Font':
+ this.setFont(value[0], value[1]);
+ break;
+ case 'CA':
+ this.current.strokeAlpha = state[1];
+ break;
+ case 'ca':
+ this.current.fillAlpha = state[1];
+ this.ctx.globalAlpha = state[1];
+ break;
+ case 'BM':
+ if (value && value.name && value.name !== 'Normal') {
+ var mode = value.name.replace(/([A-Z])/g, function (c) {
+ return '-' + c.toLowerCase();
+ }).substring(1);
+ this.ctx.globalCompositeOperation = mode;
+ if (this.ctx.globalCompositeOperation !== mode) {
+ warn('globalCompositeOperation "' + mode + '" is not supported');
+ }
+ } else {
+ this.ctx.globalCompositeOperation = 'source-over';
+ }
+ break;
+ case 'SMask':
+ if (this.current.activeSMask) {
+ if (this.stateStack.length > 0 && this.stateStack[this.stateStack.length - 1].activeSMask === this.current.activeSMask) {
+ this.suspendSMaskGroup();
+ } else {
+ this.endSMaskGroup();
}
- }.bind(this);
- // Either workers are disabled, not supported or have thrown an exception.
- // Thus, we fallback to a faked worker.
- if (!globalScope.PDFJS.disableWorker && typeof Worker !== 'undefined') {
- loadWorker();
+ }
+ this.current.activeSMask = value ? this.tempSMask : null;
+ if (this.current.activeSMask) {
+ this.beginSMaskGroup();
+ }
+ this.tempSMask = null;
+ break;
+ }
+ }
+ },
+ beginSMaskGroup: function CanvasGraphics_beginSMaskGroup() {
+ var activeSMask = this.current.activeSMask;
+ var drawnWidth = activeSMask.canvas.width;
+ var drawnHeight = activeSMask.canvas.height;
+ var cacheId = 'smaskGroupAt' + this.groupLevel;
+ var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
+ var currentCtx = this.ctx;
+ var currentTransform = currentCtx.mozCurrentTransform;
+ this.ctx.save();
+ var groupCtx = scratchCanvas.context;
+ groupCtx.scale(1 / activeSMask.scaleX, 1 / activeSMask.scaleY);
+ groupCtx.translate(-activeSMask.offsetX, -activeSMask.offsetY);
+ groupCtx.transform.apply(groupCtx, currentTransform);
+ activeSMask.startTransformInverse = groupCtx.mozCurrentTransformInverse;
+ copyCtxState(currentCtx, groupCtx);
+ this.ctx = groupCtx;
+ this.setGState([
+ [
+ 'BM',
+ 'Normal'
+ ],
+ [
+ 'ca',
+ 1
+ ],
+ [
+ 'CA',
+ 1
+ ]
+ ]);
+ this.groupStack.push(currentCtx);
+ this.groupLevel++;
+ },
+ suspendSMaskGroup: function CanvasGraphics_endSMaskGroup() {
+ var groupCtx = this.ctx;
+ this.groupLevel--;
+ this.ctx = this.groupStack.pop();
+ composeSMask(this.ctx, this.current.activeSMask, groupCtx);
+ this.ctx.restore();
+ this.ctx.save();
+ copyCtxState(groupCtx, this.ctx);
+ this.current.resumeSMaskCtx = groupCtx;
+ var deltaTransform = Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform);
+ this.ctx.transform.apply(this.ctx, deltaTransform);
+ groupCtx.save();
+ groupCtx.setTransform(1, 0, 0, 1, 0, 0);
+ groupCtx.clearRect(0, 0, groupCtx.canvas.width, groupCtx.canvas.height);
+ groupCtx.restore();
+ },
+ resumeSMaskGroup: function CanvasGraphics_endSMaskGroup() {
+ var groupCtx = this.current.resumeSMaskCtx;
+ var currentCtx = this.ctx;
+ this.ctx = groupCtx;
+ this.groupStack.push(currentCtx);
+ this.groupLevel++;
+ },
+ endSMaskGroup: function CanvasGraphics_endSMaskGroup() {
+ var groupCtx = this.ctx;
+ this.groupLevel--;
+ this.ctx = this.groupStack.pop();
+ composeSMask(this.ctx, this.current.activeSMask, groupCtx);
+ this.ctx.restore();
+ copyCtxState(groupCtx, this.ctx);
+ var deltaTransform = Util.transform(this.current.activeSMask.startTransformInverse, groupCtx.mozCurrentTransform);
+ this.ctx.transform.apply(this.ctx, deltaTransform);
+ },
+ save: function CanvasGraphics_save() {
+ this.ctx.save();
+ var old = this.current;
+ this.stateStack.push(old);
+ this.current = old.clone();
+ this.current.resumeSMaskCtx = null;
+ },
+ restore: function CanvasGraphics_restore() {
+ if (this.current.resumeSMaskCtx) {
+ this.resumeSMaskGroup();
+ }
+ if (this.current.activeSMask !== null && (this.stateStack.length === 0 || this.stateStack[this.stateStack.length - 1].activeSMask !== this.current.activeSMask)) {
+ this.endSMaskGroup();
+ }
+ if (this.stateStack.length !== 0) {
+ this.current = this.stateStack.pop();
+ this.ctx.restore();
+ this.pendingClip = null;
+ this.cachedGetSinglePixelWidth = null;
+ }
+ },
+ transform: function CanvasGraphics_transform(a, b, c, d, e, f) {
+ this.ctx.transform(a, b, c, d, e, f);
+ this.cachedGetSinglePixelWidth = null;
+ },
+ constructPath: function CanvasGraphics_constructPath(ops, args) {
+ var ctx = this.ctx;
+ var current = this.current;
+ var x = current.x, y = current.y;
+ for (var i = 0, j = 0, ii = ops.length; i < ii; i++) {
+ switch (ops[i] | 0) {
+ case OPS.rectangle:
+ x = args[j++];
+ y = args[j++];
+ var width = args[j++];
+ var height = args[j++];
+ if (width === 0) {
+ width = this.getSinglePixelWidth();
+ }
+ if (height === 0) {
+ height = this.getSinglePixelWidth();
+ }
+ var xw = x + width;
+ var yh = y + height;
+ this.ctx.moveTo(x, y);
+ this.ctx.lineTo(xw, y);
+ this.ctx.lineTo(xw, yh);
+ this.ctx.lineTo(x, yh);
+ this.ctx.lineTo(x, y);
+ this.ctx.closePath();
+ break;
+ case OPS.moveTo:
+ x = args[j++];
+ y = args[j++];
+ ctx.moveTo(x, y);
+ break;
+ case OPS.lineTo:
+ x = args[j++];
+ y = args[j++];
+ ctx.lineTo(x, y);
+ break;
+ case OPS.curveTo:
+ x = args[j + 4];
+ y = args[j + 5];
+ ctx.bezierCurveTo(args[j], args[j + 1], args[j + 2], args[j + 3], x, y);
+ j += 6;
+ break;
+ case OPS.curveTo2:
+ ctx.bezierCurveTo(x, y, args[j], args[j + 1], args[j + 2], args[j + 3]);
+ x = args[j + 2];
+ y = args[j + 3];
+ j += 4;
+ break;
+ case OPS.curveTo3:
+ x = args[j + 2];
+ y = args[j + 3];
+ ctx.bezierCurveTo(args[j], args[j + 1], x, y, x, y);
+ j += 4;
+ break;
+ case OPS.closePath:
+ ctx.closePath();
+ break;
+ }
+ }
+ current.setCurrentPoint(x, y);
+ },
+ closePath: function CanvasGraphics_closePath() {
+ this.ctx.closePath();
+ },
+ stroke: function CanvasGraphics_stroke(consumePath) {
+ consumePath = typeof consumePath !== 'undefined' ? consumePath : true;
+ var ctx = this.ctx;
+ var strokeColor = this.current.strokeColor;
+ ctx.lineWidth = Math.max(this.getSinglePixelWidth() * MIN_WIDTH_FACTOR, this.current.lineWidth);
+ ctx.globalAlpha = this.current.strokeAlpha;
+ if (strokeColor && strokeColor.hasOwnProperty('type') && strokeColor.type === 'Pattern') {
+ ctx.save();
+ ctx.strokeStyle = strokeColor.getPattern(ctx, this);
+ ctx.stroke();
+ ctx.restore();
+ } else {
+ ctx.stroke();
+ }
+ if (consumePath) {
+ this.consumePath();
+ }
+ ctx.globalAlpha = this.current.fillAlpha;
+ },
+ closeStroke: function CanvasGraphics_closeStroke() {
+ this.closePath();
+ this.stroke();
+ },
+ fill: function CanvasGraphics_fill(consumePath) {
+ consumePath = typeof consumePath !== 'undefined' ? consumePath : true;
+ var ctx = this.ctx;
+ var fillColor = this.current.fillColor;
+ var isPatternFill = this.current.patternFill;
+ var needRestore = false;
+ if (isPatternFill) {
+ ctx.save();
+ if (this.baseTransform) {
+ ctx.setTransform.apply(ctx, this.baseTransform);
+ }
+ ctx.fillStyle = fillColor.getPattern(ctx, this);
+ needRestore = true;
+ }
+ if (this.pendingEOFill) {
+ ctx.fill('evenodd');
+ this.pendingEOFill = false;
+ } else {
+ ctx.fill();
+ }
+ if (needRestore) {
+ ctx.restore();
+ }
+ if (consumePath) {
+ this.consumePath();
+ }
+ },
+ eoFill: function CanvasGraphics_eoFill() {
+ this.pendingEOFill = true;
+ this.fill();
+ },
+ fillStroke: function CanvasGraphics_fillStroke() {
+ this.fill(false);
+ this.stroke(false);
+ this.consumePath();
+ },
+ eoFillStroke: function CanvasGraphics_eoFillStroke() {
+ this.pendingEOFill = true;
+ this.fillStroke();
+ },
+ closeFillStroke: function CanvasGraphics_closeFillStroke() {
+ this.closePath();
+ this.fillStroke();
+ },
+ closeEOFillStroke: function CanvasGraphics_closeEOFillStroke() {
+ this.pendingEOFill = true;
+ this.closePath();
+ this.fillStroke();
+ },
+ endPath: function CanvasGraphics_endPath() {
+ this.consumePath();
+ },
+ clip: function CanvasGraphics_clip() {
+ this.pendingClip = NORMAL_CLIP;
+ },
+ eoClip: function CanvasGraphics_eoClip() {
+ this.pendingClip = EO_CLIP;
+ },
+ beginText: function CanvasGraphics_beginText() {
+ this.current.textMatrix = IDENTITY_MATRIX;
+ this.current.textMatrixScale = 1;
+ this.current.x = this.current.lineX = 0;
+ this.current.y = this.current.lineY = 0;
+ },
+ endText: function CanvasGraphics_endText() {
+ var paths = this.pendingTextPaths;
+ var ctx = this.ctx;
+ if (paths === undefined) {
+ ctx.beginPath();
+ return;
+ }
+ ctx.save();
+ ctx.beginPath();
+ for (var i = 0; i < paths.length; i++) {
+ var path = paths[i];
+ ctx.setTransform.apply(ctx, path.transform);
+ ctx.translate(path.x, path.y);
+ path.addToPath(ctx, path.fontSize);
+ }
+ ctx.restore();
+ ctx.clip();
+ ctx.beginPath();
+ delete this.pendingTextPaths;
+ },
+ setCharSpacing: function CanvasGraphics_setCharSpacing(spacing) {
+ this.current.charSpacing = spacing;
+ },
+ setWordSpacing: function CanvasGraphics_setWordSpacing(spacing) {
+ this.current.wordSpacing = spacing;
+ },
+ setHScale: function CanvasGraphics_setHScale(scale) {
+ this.current.textHScale = scale / 100;
+ },
+ setLeading: function CanvasGraphics_setLeading(leading) {
+ this.current.leading = -leading;
+ },
+ setFont: function CanvasGraphics_setFont(fontRefName, size) {
+ var fontObj = this.commonObjs.get(fontRefName);
+ var current = this.current;
+ if (!fontObj) {
+ error('Can\'t find font for ' + fontRefName);
+ }
+ current.fontMatrix = fontObj.fontMatrix ? fontObj.fontMatrix : FONT_IDENTITY_MATRIX;
+ if (current.fontMatrix[0] === 0 || current.fontMatrix[3] === 0) {
+ warn('Invalid font matrix for font ' + fontRefName);
+ }
+ if (size < 0) {
+ size = -size;
+ current.fontDirection = -1;
+ } else {
+ current.fontDirection = 1;
+ }
+ this.current.font = fontObj;
+ this.current.fontSize = size;
+ if (fontObj.isType3Font) {
+ return;
+ }
+ var name = fontObj.loadedName || 'sans-serif';
+ var bold = fontObj.black ? '900' : fontObj.bold ? 'bold' : 'normal';
+ var italic = fontObj.italic ? 'italic' : 'normal';
+ var typeface = '"' + name + '", ' + fontObj.fallbackName;
+ var browserFontSize = size < MIN_FONT_SIZE ? MIN_FONT_SIZE : size > MAX_FONT_SIZE ? MAX_FONT_SIZE : size;
+ this.current.fontSizeScale = size / browserFontSize;
+ var rule = italic + ' ' + bold + ' ' + browserFontSize + 'px ' + typeface;
+ this.ctx.font = rule;
+ },
+ setTextRenderingMode: function CanvasGraphics_setTextRenderingMode(mode) {
+ this.current.textRenderingMode = mode;
+ },
+ setTextRise: function CanvasGraphics_setTextRise(rise) {
+ this.current.textRise = rise;
+ },
+ moveText: function CanvasGraphics_moveText(x, y) {
+ this.current.x = this.current.lineX += x;
+ this.current.y = this.current.lineY += y;
+ },
+ setLeadingMoveText: function CanvasGraphics_setLeadingMoveText(x, y) {
+ this.setLeading(-y);
+ this.moveText(x, y);
+ },
+ setTextMatrix: function CanvasGraphics_setTextMatrix(a, b, c, d, e, f) {
+ this.current.textMatrix = [
+ a,
+ b,
+ c,
+ d,
+ e,
+ f
+ ];
+ this.current.textMatrixScale = Math.sqrt(a * a + b * b);
+ this.current.x = this.current.lineX = 0;
+ this.current.y = this.current.lineY = 0;
+ },
+ nextLine: function CanvasGraphics_nextLine() {
+ this.moveText(0, this.current.leading);
+ },
+ paintChar: function CanvasGraphics_paintChar(character, x, y) {
+ var ctx = this.ctx;
+ var current = this.current;
+ var font = current.font;
+ var textRenderingMode = current.textRenderingMode;
+ var fontSize = current.fontSize / current.fontSizeScale;
+ var fillStrokeMode = textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;
+ var isAddToPathSet = !!(textRenderingMode & TextRenderingMode.ADD_TO_PATH_FLAG);
+ var addToPath;
+ if (font.disableFontFace || isAddToPathSet) {
+ addToPath = font.getPathGenerator(this.commonObjs, character);
+ }
+ if (font.disableFontFace) {
+ ctx.save();
+ ctx.translate(x, y);
+ ctx.beginPath();
+ addToPath(ctx, fontSize);
+ if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {
+ ctx.fill();
+ }
+ if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {
+ ctx.stroke();
+ }
+ ctx.restore();
+ } else {
+ if (fillStrokeMode === TextRenderingMode.FILL || fillStrokeMode === TextRenderingMode.FILL_STROKE) {
+ ctx.fillText(character, x, y);
+ }
+ if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {
+ ctx.strokeText(character, x, y);
+ }
+ }
+ if (isAddToPathSet) {
+ var paths = this.pendingTextPaths || (this.pendingTextPaths = []);
+ paths.push({
+ transform: ctx.mozCurrentTransform,
+ x: x,
+ y: y,
+ fontSize: fontSize,
+ addToPath: addToPath
+ });
+ }
+ },
+ get isFontSubpixelAAEnabled() {
+ var ctx = this.canvasFactory.create(10, 10).context;
+ ctx.scale(1.5, 1);
+ ctx.fillText('I', 0, 10);
+ var data = ctx.getImageData(0, 0, 10, 10).data;
+ var enabled = false;
+ for (var i = 3; i < data.length; i += 4) {
+ if (data[i] > 0 && data[i] < 255) {
+ enabled = true;
+ break;
+ }
+ }
+ return shadow(this, 'isFontSubpixelAAEnabled', enabled);
+ },
+ showText: function CanvasGraphics_showText(glyphs) {
+ var current = this.current;
+ var font = current.font;
+ if (font.isType3Font) {
+ return this.showType3Text(glyphs);
+ }
+ var fontSize = current.fontSize;
+ if (fontSize === 0) {
+ return;
+ }
+ var ctx = this.ctx;
+ var fontSizeScale = current.fontSizeScale;
+ var charSpacing = current.charSpacing;
+ var wordSpacing = current.wordSpacing;
+ var fontDirection = current.fontDirection;
+ var textHScale = current.textHScale * fontDirection;
+ var glyphsLength = glyphs.length;
+ var vertical = font.vertical;
+ var spacingDir = vertical ? 1 : -1;
+ var defaultVMetrics = font.defaultVMetrics;
+ var widthAdvanceScale = fontSize * current.fontMatrix[0];
+ var simpleFillText = current.textRenderingMode === TextRenderingMode.FILL && !font.disableFontFace;
+ ctx.save();
+ ctx.transform.apply(ctx, current.textMatrix);
+ ctx.translate(current.x, current.y + current.textRise);
+ if (current.patternFill) {
+ ctx.fillStyle = current.fillColor.getPattern(ctx, this);
+ }
+ if (fontDirection > 0) {
+ ctx.scale(textHScale, -1);
+ } else {
+ ctx.scale(textHScale, 1);
+ }
+ var lineWidth = current.lineWidth;
+ var scale = current.textMatrixScale;
+ if (scale === 0 || lineWidth === 0) {
+ var fillStrokeMode = current.textRenderingMode & TextRenderingMode.FILL_STROKE_MASK;
+ if (fillStrokeMode === TextRenderingMode.STROKE || fillStrokeMode === TextRenderingMode.FILL_STROKE) {
+ this.cachedGetSinglePixelWidth = null;
+ lineWidth = this.getSinglePixelWidth() * MIN_WIDTH_FACTOR;
+ }
+ } else {
+ lineWidth /= scale;
+ }
+ if (fontSizeScale !== 1.0) {
+ ctx.scale(fontSizeScale, fontSizeScale);
+ lineWidth /= fontSizeScale;
+ }
+ ctx.lineWidth = lineWidth;
+ var x = 0, i;
+ for (i = 0; i < glyphsLength; ++i) {
+ var glyph = glyphs[i];
+ if (isNum(glyph)) {
+ x += spacingDir * glyph * fontSize / 1000;
+ continue;
+ }
+ var restoreNeeded = false;
+ var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
+ var character = glyph.fontChar;
+ var accent = glyph.accent;
+ var scaledX, scaledY, scaledAccentX, scaledAccentY;
+ var width = glyph.width;
+ if (vertical) {
+ var vmetric, vx, vy;
+ vmetric = glyph.vmetric || defaultVMetrics;
+ vx = glyph.vmetric ? vmetric[1] : width * 0.5;
+ vx = -vx * widthAdvanceScale;
+ vy = vmetric[2] * widthAdvanceScale;
+ width = vmetric ? -vmetric[0] : width;
+ scaledX = vx / fontSizeScale;
+ scaledY = (x + vy) / fontSizeScale;
+ } else {
+ scaledX = x / fontSizeScale;
+ scaledY = 0;
+ }
+ if (font.remeasure && width > 0) {
+ var measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale;
+ if (width < measuredWidth && this.isFontSubpixelAAEnabled) {
+ var characterScaleX = width / measuredWidth;
+ restoreNeeded = true;
+ ctx.save();
+ ctx.scale(characterScaleX, 1);
+ scaledX /= characterScaleX;
+ } else if (width !== measuredWidth) {
+ scaledX += (width - measuredWidth) / 2000 * fontSize / fontSizeScale;
+ }
+ }
+ if (glyph.isInFont || font.missingFile) {
+ if (simpleFillText && !accent) {
+ ctx.fillText(character, scaledX, scaledY);
+ } else {
+ this.paintChar(character, scaledX, scaledY);
+ if (accent) {
+ scaledAccentX = scaledX + accent.offset.x / fontSizeScale;
+ scaledAccentY = scaledY - accent.offset.y / fontSizeScale;
+ this.paintChar(accent.fontChar, scaledAccentX, scaledAccentY);
+ }
+ }
+ }
+ var charWidth = width * widthAdvanceScale + spacing * fontDirection;
+ x += charWidth;
+ if (restoreNeeded) {
+ ctx.restore();
+ }
+ }
+ if (vertical) {
+ current.y -= x * textHScale;
+ } else {
+ current.x += x * textHScale;
+ }
+ ctx.restore();
+ },
+ showType3Text: function CanvasGraphics_showType3Text(glyphs) {
+ var ctx = this.ctx;
+ var current = this.current;
+ var font = current.font;
+ var fontSize = current.fontSize;
+ var fontDirection = current.fontDirection;
+ var spacingDir = font.vertical ? 1 : -1;
+ var charSpacing = current.charSpacing;
+ var wordSpacing = current.wordSpacing;
+ var textHScale = current.textHScale * fontDirection;
+ var fontMatrix = current.fontMatrix || FONT_IDENTITY_MATRIX;
+ var glyphsLength = glyphs.length;
+ var isTextInvisible = current.textRenderingMode === TextRenderingMode.INVISIBLE;
+ var i, glyph, width, spacingLength;
+ if (isTextInvisible || fontSize === 0) {
+ return;
+ }
+ this.cachedGetSinglePixelWidth = null;
+ ctx.save();
+ ctx.transform.apply(ctx, current.textMatrix);
+ ctx.translate(current.x, current.y);
+ ctx.scale(textHScale, fontDirection);
+ for (i = 0; i < glyphsLength; ++i) {
+ glyph = glyphs[i];
+ if (isNum(glyph)) {
+ spacingLength = spacingDir * glyph * fontSize / 1000;
+ this.ctx.translate(spacingLength, 0);
+ current.x += spacingLength * textHScale;
+ continue;
+ }
+ var spacing = (glyph.isSpace ? wordSpacing : 0) + charSpacing;
+ var operatorList = font.charProcOperatorList[glyph.operatorListId];
+ if (!operatorList) {
+ warn('Type3 character \"' + glyph.operatorListId + '\" is not available');
+ continue;
+ }
+ this.processingType3 = glyph;
+ this.save();
+ ctx.scale(fontSize, fontSize);
+ ctx.transform.apply(ctx, fontMatrix);
+ this.executeOperatorList(operatorList);
+ this.restore();
+ var transformed = Util.applyTransform([
+ glyph.width,
+ 0
+ ], fontMatrix);
+ width = transformed[0] * fontSize + spacing;
+ ctx.translate(width, 0);
+ current.x += width * textHScale;
+ }
+ ctx.restore();
+ this.processingType3 = null;
+ },
+ setCharWidth: function CanvasGraphics_setCharWidth(xWidth, yWidth) {
+ },
+ setCharWidthAndBounds: function CanvasGraphics_setCharWidthAndBounds(xWidth, yWidth, llx, lly, urx, ury) {
+ this.ctx.rect(llx, lly, urx - llx, ury - lly);
+ this.clip();
+ this.endPath();
+ },
+ getColorN_Pattern: function CanvasGraphics_getColorN_Pattern(IR) {
+ var pattern;
+ if (IR[0] === 'TilingPattern') {
+ var color = IR[1];
+ var baseTransform = this.baseTransform || this.ctx.mozCurrentTransform.slice();
+ var self = this;
+ var canvasGraphicsFactory = {
+ createCanvasGraphics: function (ctx) {
+ return new CanvasGraphics(ctx, self.commonObjs, self.objs, self.canvasFactory);
+ }
+ };
+ pattern = new TilingPattern(IR, color, this.ctx, canvasGraphicsFactory, baseTransform);
+ } else {
+ pattern = getShadingPatternFromIR(IR);
+ }
+ return pattern;
+ },
+ setStrokeColorN: function CanvasGraphics_setStrokeColorN() {
+ this.current.strokeColor = this.getColorN_Pattern(arguments);
+ },
+ setFillColorN: function CanvasGraphics_setFillColorN() {
+ this.current.fillColor = this.getColorN_Pattern(arguments);
+ this.current.patternFill = true;
+ },
+ setStrokeRGBColor: function CanvasGraphics_setStrokeRGBColor(r, g, b) {
+ var color = Util.makeCssRgb(r, g, b);
+ this.ctx.strokeStyle = color;
+ this.current.strokeColor = color;
+ },
+ setFillRGBColor: function CanvasGraphics_setFillRGBColor(r, g, b) {
+ var color = Util.makeCssRgb(r, g, b);
+ this.ctx.fillStyle = color;
+ this.current.fillColor = color;
+ this.current.patternFill = false;
+ },
+ shadingFill: function CanvasGraphics_shadingFill(patternIR) {
+ var ctx = this.ctx;
+ this.save();
+ var pattern = getShadingPatternFromIR(patternIR);
+ ctx.fillStyle = pattern.getPattern(ctx, this, true);
+ var inv = ctx.mozCurrentTransformInverse;
+ if (inv) {
+ var canvas = ctx.canvas;
+ var width = canvas.width;
+ var height = canvas.height;
+ var bl = Util.applyTransform([
+ 0,
+ 0
+ ], inv);
+ var br = Util.applyTransform([
+ 0,
+ height
+ ], inv);
+ var ul = Util.applyTransform([
+ width,
+ 0
+ ], inv);
+ var ur = Util.applyTransform([
+ width,
+ height
+ ], inv);
+ var x0 = Math.min(bl[0], br[0], ul[0], ur[0]);
+ var y0 = Math.min(bl[1], br[1], ul[1], ur[1]);
+ var x1 = Math.max(bl[0], br[0], ul[0], ur[0]);
+ var y1 = Math.max(bl[1], br[1], ul[1], ur[1]);
+ this.ctx.fillRect(x0, y0, x1 - x0, y1 - y0);
+ } else {
+ this.ctx.fillRect(-1e10, -1e10, 2e10, 2e10);
+ }
+ this.restore();
+ },
+ beginInlineImage: function CanvasGraphics_beginInlineImage() {
+ error('Should not call beginInlineImage');
+ },
+ beginImageData: function CanvasGraphics_beginImageData() {
+ error('Should not call beginImageData');
+ },
+ paintFormXObjectBegin: function CanvasGraphics_paintFormXObjectBegin(matrix, bbox) {
+ this.save();
+ this.baseTransformStack.push(this.baseTransform);
+ if (isArray(matrix) && matrix.length === 6) {
+ this.transform.apply(this, matrix);
+ }
+ this.baseTransform = this.ctx.mozCurrentTransform;
+ if (isArray(bbox) && bbox.length === 4) {
+ var width = bbox[2] - bbox[0];
+ var height = bbox[3] - bbox[1];
+ this.ctx.rect(bbox[0], bbox[1], width, height);
+ this.clip();
+ this.endPath();
+ }
+ },
+ paintFormXObjectEnd: function CanvasGraphics_paintFormXObjectEnd() {
+ this.restore();
+ this.baseTransform = this.baseTransformStack.pop();
+ },
+ beginGroup: function CanvasGraphics_beginGroup(group) {
+ this.save();
+ var currentCtx = this.ctx;
+ if (!group.isolated) {
+ info('TODO: Support non-isolated groups.');
+ }
+ if (group.knockout) {
+ warn('Knockout groups not supported.');
+ }
+ var currentTransform = currentCtx.mozCurrentTransform;
+ if (group.matrix) {
+ currentCtx.transform.apply(currentCtx, group.matrix);
+ }
+ assert(group.bbox, 'Bounding box is required.');
+ var bounds = Util.getAxialAlignedBoundingBox(group.bbox, currentCtx.mozCurrentTransform);
+ var canvasBounds = [
+ 0,
+ 0,
+ currentCtx.canvas.width,
+ currentCtx.canvas.height
+ ];
+ bounds = Util.intersect(bounds, canvasBounds) || [
+ 0,
+ 0,
+ 0,
+ 0
+ ];
+ var offsetX = Math.floor(bounds[0]);
+ var offsetY = Math.floor(bounds[1]);
+ var drawnWidth = Math.max(Math.ceil(bounds[2]) - offsetX, 1);
+ var drawnHeight = Math.max(Math.ceil(bounds[3]) - offsetY, 1);
+ var scaleX = 1, scaleY = 1;
+ if (drawnWidth > MAX_GROUP_SIZE) {
+ scaleX = drawnWidth / MAX_GROUP_SIZE;
+ drawnWidth = MAX_GROUP_SIZE;
+ }
+ if (drawnHeight > MAX_GROUP_SIZE) {
+ scaleY = drawnHeight / MAX_GROUP_SIZE;
+ drawnHeight = MAX_GROUP_SIZE;
+ }
+ var cacheId = 'groupAt' + this.groupLevel;
+ if (group.smask) {
+ cacheId += '_smask_' + this.smaskCounter++ % 2;
+ }
+ var scratchCanvas = this.cachedCanvases.getCanvas(cacheId, drawnWidth, drawnHeight, true);
+ var groupCtx = scratchCanvas.context;
+ groupCtx.scale(1 / scaleX, 1 / scaleY);
+ groupCtx.translate(-offsetX, -offsetY);
+ groupCtx.transform.apply(groupCtx, currentTransform);
+ if (group.smask) {
+ this.smaskStack.push({
+ canvas: scratchCanvas.canvas,
+ context: groupCtx,
+ offsetX: offsetX,
+ offsetY: offsetY,
+ scaleX: scaleX,
+ scaleY: scaleY,
+ subtype: group.smask.subtype,
+ backdrop: group.smask.backdrop,
+ transferMap: group.smask.transferMap || null,
+ startTransformInverse: null
+ });
+ } else {
+ currentCtx.setTransform(1, 0, 0, 1, 0, 0);
+ currentCtx.translate(offsetX, offsetY);
+ currentCtx.scale(scaleX, scaleY);
+ }
+ copyCtxState(currentCtx, groupCtx);
+ this.ctx = groupCtx;
+ this.setGState([
+ [
+ 'BM',
+ 'Normal'
+ ],
+ [
+ 'ca',
+ 1
+ ],
+ [
+ 'CA',
+ 1
+ ]
+ ]);
+ this.groupStack.push(currentCtx);
+ this.groupLevel++;
+ this.current.activeSMask = null;
+ },
+ endGroup: function CanvasGraphics_endGroup(group) {
+ this.groupLevel--;
+ var groupCtx = this.ctx;
+ this.ctx = this.groupStack.pop();
+ if (this.ctx.imageSmoothingEnabled !== undefined) {
+ this.ctx.imageSmoothingEnabled = false;
+ } else {
+ this.ctx.mozImageSmoothingEnabled = false;
+ }
+ if (group.smask) {
+ this.tempSMask = this.smaskStack.pop();
+ } else {
+ this.ctx.drawImage(groupCtx.canvas, 0, 0);
+ }
+ this.restore();
+ },
+ beginAnnotations: function CanvasGraphics_beginAnnotations() {
+ this.save();
+ this.current = new CanvasExtraState();
+ if (this.baseTransform) {
+ this.ctx.setTransform.apply(this.ctx, this.baseTransform);
+ }
+ },
+ endAnnotations: function CanvasGraphics_endAnnotations() {
+ this.restore();
+ },
+ beginAnnotation: function CanvasGraphics_beginAnnotation(rect, transform, matrix) {
+ this.save();
+ if (isArray(rect) && rect.length === 4) {
+ var width = rect[2] - rect[0];
+ var height = rect[3] - rect[1];
+ this.ctx.rect(rect[0], rect[1], width, height);
+ this.clip();
+ this.endPath();
+ }
+ this.transform.apply(this, transform);
+ this.transform.apply(this, matrix);
+ },
+ endAnnotation: function CanvasGraphics_endAnnotation() {
+ this.restore();
+ },
+ paintJpegXObject: function CanvasGraphics_paintJpegXObject(objId, w, h) {
+ var domImage = this.objs.get(objId);
+ if (!domImage) {
+ warn('Dependent image isn\'t ready yet');
+ return;
+ }
+ this.save();
+ var ctx = this.ctx;
+ ctx.scale(1 / w, -1 / h);
+ ctx.drawImage(domImage, 0, 0, domImage.width, domImage.height, 0, -h, w, h);
+ if (this.imageLayer) {
+ var currentTransform = ctx.mozCurrentTransformInverse;
+ var position = this.getCanvasPosition(0, 0);
+ this.imageLayer.appendImage({
+ objId: objId,
+ left: position[0],
+ top: position[1],
+ width: w / currentTransform[0],
+ height: h / currentTransform[3]
+ });
+ }
+ this.restore();
+ },
+ paintImageMaskXObject: function CanvasGraphics_paintImageMaskXObject(img) {
+ var ctx = this.ctx;
+ var width = img.width, height = img.height;
+ var fillColor = this.current.fillColor;
+ var isPatternFill = this.current.patternFill;
+ var glyph = this.processingType3;
+ if (COMPILE_TYPE3_GLYPHS && glyph && glyph.compiled === undefined) {
+ if (width <= MAX_SIZE_TO_COMPILE && height <= MAX_SIZE_TO_COMPILE) {
+ glyph.compiled = compileType3Glyph({
+ data: img.data,
+ width: width,
+ height: height
+ });
} else {
- this.setupFakeWorker();
+ glyph.compiled = null;
}
- }
- WorkerTransport.prototype = {
- destroy: function WorkerTransport_destroy() {
- this.pageCache = [];
- this.pagePromises = [];
- var self = this;
- this.messageHandler.sendWithPromise('Terminate', null).then(function () {
- FontLoader.clear();
- if (self.worker) {
- self.worker.terminate();
- }
- });
- },
-
- setupFakeWorker: function WorkerTransport_setupFakeWorker() {
- globalScope.PDFJS.disableWorker = true;
-
- if (!PDFJS.fakeWorkerFilesLoadedCapability) {
- PDFJS.fakeWorkerFilesLoadedCapability = createPromiseCapability();
- // In the developer build load worker_loader which in turn loads all the
- // other files and resolves the promise. In production only the
- // pdf.worker.js file is needed.
- Util.loadScript(PDFJS.workerSrc, function() {
- PDFJS.fakeWorkerFilesLoadedCapability.resolve();
- });
- }
- PDFJS.fakeWorkerFilesLoadedCapability.promise.then(function () {
- warn('Setting up fake worker.');
- // If we don't use a worker, just post/sendMessage to the main thread.
- var fakeWorker = {
- postMessage: function WorkerTransport_postMessage(obj) {
- fakeWorker.onmessage({data: obj});
- },
- terminate: function WorkerTransport_terminate() {}
- };
-
- var messageHandler = new MessageHandler('main', fakeWorker);
- this.setupMessageHandler(messageHandler);
-
- // If the main thread is our worker, setup the handling for the messages
- // the main thread sends to it self.
- PDFJS.WorkerMessageHandler.setup(messageHandler);
-
- this.workerInitializedCapability.resolve();
- }.bind(this));
- },
-
- setupMessageHandler:
- function WorkerTransport_setupMessageHandler(messageHandler) {
- this.messageHandler = messageHandler;
-
- function updatePassword(password) {
- messageHandler.send('UpdatePassword', password);
- }
-
- var pdfDataRangeTransport = this.pdfDataRangeTransport;
- if (pdfDataRangeTransport) {
- pdfDataRangeTransport.addRangeListener(function(begin, chunk) {
- messageHandler.send('OnDataRange', {
- begin: begin,
- chunk: chunk
- });
- });
-
- pdfDataRangeTransport.addProgressListener(function(loaded) {
- messageHandler.send('OnDataProgress', {
- loaded: loaded
- });
- });
-
- pdfDataRangeTransport.addProgressiveReadListener(function(chunk) {
- messageHandler.send('OnDataRange', {
- chunk: chunk
- });
- });
-
- messageHandler.on('RequestDataRange',
- function transportDataRange(data) {
- pdfDataRangeTransport.requestDataRange(data.begin, data.end);
- }, this);
- }
-
- messageHandler.on('GetDoc', function transportDoc(data) {
- var pdfInfo = data.pdfInfo;
- this.numPages = data.pdfInfo.numPages;
- var pdfDocument = new PDFDocumentProxy(pdfInfo, this);
- this.pdfDocument = pdfDocument;
- this.loadingTask._capability.resolve(pdfDocument);
- }, this);
-
- messageHandler.on('NeedPassword',
- function transportNeedPassword(exception) {
- var loadingTask = this.loadingTask;
- if (loadingTask.onPassword) {
- return loadingTask.onPassword(updatePassword,
- PasswordResponses.NEED_PASSWORD);
- }
- loadingTask._capability.reject(
- new PasswordException(exception.message, exception.code));
- }, this);
-
- messageHandler.on('IncorrectPassword',
- function transportIncorrectPassword(exception) {
- var loadingTask = this.loadingTask;
- if (loadingTask.onPassword) {
- return loadingTask.onPassword(updatePassword,
- PasswordResponses.INCORRECT_PASSWORD);
- }
- loadingTask._capability.reject(
- new PasswordException(exception.message, exception.code));
- }, this);
-
- messageHandler.on('InvalidPDF', function transportInvalidPDF(exception) {
- this.loadingTask._capability.reject(
- new InvalidPDFException(exception.message));
- }, this);
-
- messageHandler.on('MissingPDF', function transportMissingPDF(exception) {
- this.loadingTask._capability.reject(
- new MissingPDFException(exception.message));
- }, this);
-
- messageHandler.on('UnexpectedResponse',
- function transportUnexpectedResponse(exception) {
- this.loadingTask._capability.reject(
- new UnexpectedResponseException(exception.message, exception.status));
- }, this);
-
- messageHandler.on('UnknownError',
- function transportUnknownError(exception) {
- this.loadingTask._capability.reject(
- new UnknownErrorException(exception.message, exception.details));
- }, this);
-
- messageHandler.on('DataLoaded', function transportPage(data) {
- this.downloadInfoCapability.resolve(data);
- }, this);
-
- messageHandler.on('PDFManagerReady', function transportPage(data) {
- if (this.pdfDataRangeTransport) {
- this.pdfDataRangeTransport.transportReady();
- }
- }, this);
-
- messageHandler.on('StartRenderPage', function transportRender(data) {
- var page = this.pageCache[data.pageIndex];
-
- page.stats.timeEnd('Page Request');
- page._startRenderPage(data.transparency, data.intent);
- }, this);
-
- messageHandler.on('RenderPageChunk', function transportRender(data) {
- var page = this.pageCache[data.pageIndex];
-
- page._renderPageChunk(data.operatorList, data.intent);
- }, this);
-
- messageHandler.on('commonobj', function transportObj(data) {
- var id = data[0];
- var type = data[1];
- if (this.commonObjs.hasData(id)) {
- return;
- }
-
- switch (type) {
- case 'Font':
- var exportedData = data[2];
-
- var font;
- if ('error' in exportedData) {
- var error = exportedData.error;
- warn('Error during font loading: ' + error);
- this.commonObjs.resolve(id, error);
- break;
- } else {
- font = new FontFaceObject(exportedData);
- }
-
- FontLoader.bind(
- [font],
- function fontReady(fontObjs) {
- this.commonObjs.resolve(id, font);
- }.bind(this)
- );
- break;
- case 'FontPath':
- this.commonObjs.resolve(id, data[2]);
- break;
- default:
- error('Got unknown common object type ' + type);
- }
- }, this);
-
- messageHandler.on('obj', function transportObj(data) {
- var id = data[0];
- var pageIndex = data[1];
- var type = data[2];
- var pageProxy = this.pageCache[pageIndex];
- var imageData;
- if (pageProxy.objs.hasData(id)) {
- return;
- }
-
- switch (type) {
- case 'JpegStream':
- imageData = data[3];
- loadJpegStream(id, imageData, pageProxy.objs);
- break;
- case 'Image':
- imageData = data[3];
- pageProxy.objs.resolve(id, imageData);
-
- // heuristics that will allow not to store large data
- var MAX_IMAGE_SIZE_TO_STORE = 8000000;
- if (imageData && 'data' in imageData &&
- imageData.data.length > MAX_IMAGE_SIZE_TO_STORE) {
- pageProxy.cleanupAfterRender = true;
- }
- break;
- default:
- error('Got unknown object type ' + type);
- }
- }, this);
-
- messageHandler.on('DocProgress', function transportDocProgress(data) {
- var loadingTask = this.loadingTask;
- if (loadingTask.onProgress) {
- loadingTask.onProgress({
- loaded: data.loaded,
- total: data.total
- });
- }
- }, this);
-
- messageHandler.on('PageError', function transportError(data) {
- var page = this.pageCache[data.pageNum - 1];
- var intentState = page.intentStates[data.intent];
- if (intentState.displayReadyCapability) {
- intentState.displayReadyCapability.reject(data.error);
- } else {
- error(data.error);
- }
- }, this);
-
- messageHandler.on('JpegDecode', function(data) {
- var imageUrl = data[0];
- var components = data[1];
- if (components !== 3 && components !== 1) {
- return Promise.reject(
- new Error('Only 3 components or 1 component can be returned'));
- }
-
- return new Promise(function (resolve, reject) {
- var img = new Image();
- img.onload = function () {
- var width = img.width;
- var height = img.height;
- var size = width * height;
- var rgbaLength = size * 4;
- var buf = new Uint8Array(size * components);
- var tmpCanvas = createScratchCanvas(width, height);
- var tmpCtx = tmpCanvas.getContext('2d');
- tmpCtx.drawImage(img, 0, 0);
- var data = tmpCtx.getImageData(0, 0, width, height).data;
- var i, j;
-
- if (components === 3) {
- for (i = 0, j = 0; i < rgbaLength; i += 4, j += 3) {
- buf[j] = data[i];
- buf[j + 1] = data[i + 1];
- buf[j + 2] = data[i + 2];
- }
- } else if (components === 1) {
- for (i = 0, j = 0; i < rgbaLength; i += 4, j++) {
- buf[j] = data[i];
- }
- }
- resolve({ data: buf, width: width, height: height});
- };
- img.onerror = function () {
- reject(new Error('JpegDecode failed to load image'));
- };
- img.src = imageUrl;
- });
- });
- },
-
- fetchDocument: function WorkerTransport_fetchDocument(loadingTask, source) {
- this.loadingTask = loadingTask;
-
- source.disableAutoFetch = PDFJS.disableAutoFetch;
- source.disableStream = PDFJS.disableStream;
- source.chunkedViewerLoading = !!this.pdfDataRangeTransport;
- if (this.pdfDataRangeTransport) {
- source.length = this.pdfDataRangeTransport.length;
- source.initialData = this.pdfDataRangeTransport.initialData;
- }
- this.messageHandler.send('GetDocRequest', {
- source: source,
- disableRange: PDFJS.disableRange,
- maxImageSize: PDFJS.maxImageSize,
- cMapUrl: PDFJS.cMapUrl,
- cMapPacked: PDFJS.cMapPacked,
- disableFontFace: PDFJS.disableFontFace,
- disableCreateObjectURL: PDFJS.disableCreateObjectURL,
- verbosity: PDFJS.verbosity
- });
- },
-
- getData: function WorkerTransport_getData() {
- return this.messageHandler.sendWithPromise('GetData', null);
- },
-
- getPage: function WorkerTransport_getPage(pageNumber, capability) {
- if (pageNumber <= 0 || pageNumber > this.numPages ||
- (pageNumber|0) !== pageNumber) {
- return Promise.reject(new Error('Invalid page request'));
- }
-
- var pageIndex = pageNumber - 1;
- if (pageIndex in this.pagePromises) {
- return this.pagePromises[pageIndex];
- }
- var promise = this.messageHandler.sendWithPromise('GetPage', {
- pageIndex: pageIndex
- }).then(function (pageInfo) {
- var page = new PDFPageProxy(pageIndex, pageInfo, this);
- this.pageCache[pageIndex] = page;
- return page;
- }.bind(this));
- this.pagePromises[pageIndex] = promise;
- return promise;
- },
-
- getPageIndex: function WorkerTransport_getPageIndexByRef(ref) {
- return this.messageHandler.sendWithPromise('GetPageIndex', { ref: ref });
- },
-
- getAnnotations: function WorkerTransport_getAnnotations(pageIndex) {
- return this.messageHandler.sendWithPromise('GetAnnotations',
- { pageIndex: pageIndex });
- },
-
- getDestinations: function WorkerTransport_getDestinations() {
- return this.messageHandler.sendWithPromise('GetDestinations', null);
- },
-
- getDestination: function WorkerTransport_getDestination(id) {
- return this.messageHandler.sendWithPromise('GetDestination', { id: id } );
- },
-
- getAttachments: function WorkerTransport_getAttachments() {
- return this.messageHandler.sendWithPromise('GetAttachments', null);
- },
-
- getJavaScript: function WorkerTransport_getJavaScript() {
- return this.messageHandler.sendWithPromise('GetJavaScript', null);
- },
-
- getOutline: function WorkerTransport_getOutline() {
- return this.messageHandler.sendWithPromise('GetOutline', null);
- },
-
- getMetadata: function WorkerTransport_getMetadata() {
- return this.messageHandler.sendWithPromise('GetMetadata', null).
- then(function transportMetadata(results) {
- return {
- info: results[0],
- metadata: (results[1] ? new PDFJS.Metadata(results[1]) : null)
- };
- });
- },
-
- getStats: function WorkerTransport_getStats() {
- return this.messageHandler.sendWithPromise('GetStats', null);
- },
-
- startCleanup: function WorkerTransport_startCleanup() {
- this.messageHandler.sendWithPromise('Cleanup', null).
- then(function endCleanup() {
- for (var i = 0, ii = this.pageCache.length; i < ii; i++) {
- var page = this.pageCache[i];
- if (page) {
- page.destroy();
- }
- }
- this.commonObjs.clear();
- FontLoader.clear();
- }.bind(this));
- }
- };
- return WorkerTransport;
-
-})();
-
-/**
- * A PDF document and page is built of many objects. E.g. there are objects
- * for fonts, images, rendering code and such. These objects might get processed
- * inside of a worker. The `PDFObjects` implements some basic functions to
- * manage these objects.
- * @ignore
- */
-var PDFObjects = (function PDFObjectsClosure() {
- function PDFObjects() {
- this.objs = {};
- }
-
- PDFObjects.prototype = {
- /**
- * Internal function.
- * Ensures there is an object defined for `objId`.
- */
- ensureObj: function PDFObjects_ensureObj(objId) {
- if (this.objs[objId]) {
- return this.objs[objId];
- }
-
- var obj = {
- capability: createPromiseCapability(),
- data: null,
- resolved: false
- };
- this.objs[objId] = obj;
-
- return obj;
- },
-
- /**
- * If called *without* callback, this returns the data of `objId` but the
- * object needs to be resolved. If it isn't, this function throws.
- *
- * If called *with* a callback, the callback is called with the data of the
- * object once the object is resolved. That means, if you call this
- * function and the object is already resolved, the callback gets called
- * right away.
- */
- get: function PDFObjects_get(objId, callback) {
- // If there is a callback, then the get can be async and the object is
- // not required to be resolved right now
- if (callback) {
- this.ensureObj(objId).capability.promise.then(callback);
- return null;
- }
-
- // If there isn't a callback, the user expects to get the resolved data
- // directly.
- var obj = this.objs[objId];
-
- // If there isn't an object yet or the object isn't resolved, then the
- // data isn't ready yet!
- if (!obj || !obj.resolved) {
- error('Requesting object that isn\'t resolved yet ' + objId);
- }
-
- return obj.data;
- },
-
- /**
- * Resolves the object `objId` with optional `data`.
- */
- resolve: function PDFObjects_resolve(objId, data) {
- var obj = this.ensureObj(objId);
-
- obj.resolved = true;
- obj.data = data;
- obj.capability.resolve(data);
- },
-
- isResolved: function PDFObjects_isResolved(objId) {
- var objs = this.objs;
-
- if (!objs[objId]) {
- return false;
- } else {
- return objs[objId].resolved;
- }
- },
-
- hasData: function PDFObjects_hasData(objId) {
- return this.isResolved(objId);
- },
-
- /**
- * Returns the data of `objId` if object exists, null otherwise.
- */
- getData: function PDFObjects_getData(objId) {
- var objs = this.objs;
- if (!objs[objId] || !objs[objId].resolved) {
- return null;
- } else {
- return objs[objId].data;
- }
- },
-
- clear: function PDFObjects_clear() {
- this.objs = {};
- }
- };
- return PDFObjects;
-})();
-
-/**
- * Allows controlling of the rendering tasks.
- * @class
- */
-var RenderTask = (function RenderTaskClosure() {
- function RenderTask(internalRenderTask) {
- this._internalRenderTask = internalRenderTask;
-
- /**
- * Callback for incremental rendering -- a function that will be called
- * each time the rendering is paused. To continue rendering call the
- * function that is the first argument to the callback.
- * @type {function}
- */
- this.onContinue = null;
- }
-
- RenderTask.prototype = /** @lends RenderTask.prototype */ {
- /**
- * Promise for rendering task completion.
- * @return {Promise}
- */
- get promise() {
- return this._internalRenderTask.capability.promise;
- },
-
- /**
- * Cancels the rendering task. If the task is currently rendering it will
- * not be cancelled until graphics pauses with a timeout. The promise that
- * this object extends will resolved when cancelled.
- */
- cancel: function RenderTask_cancel() {
- this._internalRenderTask.cancel();
- },
-
- /**
- * Registers callbacks to indicate the rendering task completion.
- *
- * @param {function} onFulfilled The callback for the rendering completion.
- * @param {function} onRejected The callback for the rendering failure.
- * @return {Promise} A promise that is resolved after the onFulfilled or
- * onRejected callback.
- */
- then: function RenderTask_then(onFulfilled, onRejected) {
- return this.promise.then.apply(this.promise, arguments);
- }
- };
-
- return RenderTask;
-})();
-
-/**
- * For internal use only.
- * @ignore
- */
-var InternalRenderTask = (function InternalRenderTaskClosure() {
-
- function InternalRenderTask(callback, params, objs, commonObjs, operatorList,
- pageNumber) {
- this.callback = callback;
- this.params = params;
- this.objs = objs;
- this.commonObjs = commonObjs;
- this.operatorListIdx = null;
- this.operatorList = operatorList;
- this.pageNumber = pageNumber;
- this.running = false;
- this.graphicsReadyCallback = null;
- this.graphicsReady = false;
- this.useRequestAnimationFrame = false;
- this.cancelled = false;
- this.capability = createPromiseCapability();
- this.task = new RenderTask(this);
- // caching this-bound methods
- this._continueBound = this._continue.bind(this);
- this._scheduleNextBound = this._scheduleNext.bind(this);
- this._nextBound = this._next.bind(this);
- }
-
- InternalRenderTask.prototype = {
-
- initalizeGraphics:
- function InternalRenderTask_initalizeGraphics(transparency) {
-
- if (this.cancelled) {
- return;
- }
- if (PDFJS.pdfBug && 'StepperManager' in globalScope &&
- globalScope.StepperManager.enabled) {
- this.stepper = globalScope.StepperManager.create(this.pageNumber - 1);
- this.stepper.init(this.operatorList);
- this.stepper.nextBreakPoint = this.stepper.getNextBreakPoint();
- }
-
- var params = this.params;
- this.gfx = new CanvasGraphics(params.canvasContext, this.commonObjs,
- this.objs, params.imageLayer);
-
- this.gfx.beginDrawing(params.viewport, transparency);
- this.operatorListIdx = 0;
- this.graphicsReady = true;
- if (this.graphicsReadyCallback) {
- this.graphicsReadyCallback();
- }
- },
-
- cancel: function InternalRenderTask_cancel() {
- this.running = false;
- this.cancelled = true;
- this.callback('cancelled');
- },
-
- operatorListChanged: function InternalRenderTask_operatorListChanged() {
- if (!this.graphicsReady) {
- if (!this.graphicsReadyCallback) {
- this.graphicsReadyCallback = this._continueBound;
- }
- return;
- }
-
- if (this.stepper) {
- this.stepper.updateOperatorList(this.operatorList);
- }
-
- if (this.running) {
- return;
- }
- this._continue();
- },
-
- _continue: function InternalRenderTask__continue() {
- this.running = true;
- if (this.cancelled) {
- return;
- }
- if (this.task.onContinue) {
- this.task.onContinue.call(this.task, this._scheduleNextBound);
- } else {
- this._scheduleNext();
- }
- },
-
- _scheduleNext: function InternalRenderTask__scheduleNext() {
- if (this.useRequestAnimationFrame) {
- window.requestAnimationFrame(this._nextBound);
- } else {
- Promise.resolve(undefined).then(this._nextBound);
- }
- },
-
- _next: function InternalRenderTask__next() {
- if (this.cancelled) {
- return;
- }
- this.operatorListIdx = this.gfx.executeOperatorList(this.operatorList,
- this.operatorListIdx,
- this._continueBound,
- this.stepper);
- if (this.operatorListIdx === this.operatorList.argsArray.length) {
- this.running = false;
- if (this.operatorList.lastChunk) {
- this.gfx.endDrawing();
- this.callback();
- }
- }
- }
-
- };
-
- return InternalRenderTask;
-})();
-
-
-var Metadata = PDFJS.Metadata = (function MetadataClosure() {
- function fixMetadata(meta) {
- return meta.replace(/>\\376\\377([^<]+)/g, function(all, codes) {
- var bytes = codes.replace(/\\([0-3])([0-7])([0-7])/g,
- function(code, d1, d2, d3) {
- return String.fromCharCode(d1 * 64 + d2 * 8 + d3 * 1);
- });
- var chars = '';
- for (var i = 0; i < bytes.length; i += 2) {
- var code = bytes.charCodeAt(i) * 256 + bytes.charCodeAt(i + 1);
- chars += code >= 32 && code < 127 && code !== 60 && code !== 62 &&
- code !== 38 && false ? String.fromCharCode(code) :
- '' + (0x10000 + code).toString(16).substring(1) + ';';
- }
- return '>' + chars;
+ }
+ if (glyph && glyph.compiled) {
+ glyph.compiled(ctx);
+ return;
+ }
+ var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height);
+ var maskCtx = maskCanvas.context;
+ maskCtx.save();
+ putBinaryImageMask(maskCtx, img);
+ maskCtx.globalCompositeOperation = 'source-in';
+ maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;
+ maskCtx.fillRect(0, 0, width, height);
+ maskCtx.restore();
+ this.paintInlineImageXObject(maskCanvas.canvas);
+ },
+ paintImageMaskXObjectRepeat: function CanvasGraphics_paintImageMaskXObjectRepeat(imgData, scaleX, scaleY, positions) {
+ var width = imgData.width;
+ var height = imgData.height;
+ var fillColor = this.current.fillColor;
+ var isPatternFill = this.current.patternFill;
+ var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height);
+ var maskCtx = maskCanvas.context;
+ maskCtx.save();
+ putBinaryImageMask(maskCtx, imgData);
+ maskCtx.globalCompositeOperation = 'source-in';
+ maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;
+ maskCtx.fillRect(0, 0, width, height);
+ maskCtx.restore();
+ var ctx = this.ctx;
+ for (var i = 0, ii = positions.length; i < ii; i += 2) {
+ ctx.save();
+ ctx.transform(scaleX, 0, 0, scaleY, positions[i], positions[i + 1]);
+ ctx.scale(1, -1);
+ ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);
+ ctx.restore();
+ }
+ },
+ paintImageMaskXObjectGroup: function CanvasGraphics_paintImageMaskXObjectGroup(images) {
+ var ctx = this.ctx;
+ var fillColor = this.current.fillColor;
+ var isPatternFill = this.current.patternFill;
+ for (var i = 0, ii = images.length; i < ii; i++) {
+ var image = images[i];
+ var width = image.width, height = image.height;
+ var maskCanvas = this.cachedCanvases.getCanvas('maskCanvas', width, height);
+ var maskCtx = maskCanvas.context;
+ maskCtx.save();
+ putBinaryImageMask(maskCtx, image);
+ maskCtx.globalCompositeOperation = 'source-in';
+ maskCtx.fillStyle = isPatternFill ? fillColor.getPattern(maskCtx, this) : fillColor;
+ maskCtx.fillRect(0, 0, width, height);
+ maskCtx.restore();
+ ctx.save();
+ ctx.transform.apply(ctx, image.transform);
+ ctx.scale(1, -1);
+ ctx.drawImage(maskCanvas.canvas, 0, 0, width, height, 0, -1, 1, 1);
+ ctx.restore();
+ }
+ },
+ paintImageXObject: function CanvasGraphics_paintImageXObject(objId) {
+ var imgData = this.objs.get(objId);
+ if (!imgData) {
+ warn('Dependent image isn\'t ready yet');
+ return;
+ }
+ this.paintInlineImageXObject(imgData);
+ },
+ paintImageXObjectRepeat: function CanvasGraphics_paintImageXObjectRepeat(objId, scaleX, scaleY, positions) {
+ var imgData = this.objs.get(objId);
+ if (!imgData) {
+ warn('Dependent image isn\'t ready yet');
+ return;
+ }
+ var width = imgData.width;
+ var height = imgData.height;
+ var map = [];
+ for (var i = 0, ii = positions.length; i < ii; i += 2) {
+ map.push({
+ transform: [
+ scaleX,
+ 0,
+ 0,
+ scaleY,
+ positions[i],
+ positions[i + 1]
+ ],
+ x: 0,
+ y: 0,
+ w: width,
+ h: height
});
- }
-
- function Metadata(meta) {
- if (typeof meta === 'string') {
- // Ghostscript produces invalid metadata
- meta = fixMetadata(meta);
-
- var parser = new DOMParser();
- meta = parser.parseFromString(meta, 'application/xml');
- } else if (!(meta instanceof Document)) {
- error('Metadata: Invalid metadata object');
+ }
+ this.paintInlineImageXObjectGroup(imgData, map);
+ },
+ paintInlineImageXObject: function CanvasGraphics_paintInlineImageXObject(imgData) {
+ var width = imgData.width;
+ var height = imgData.height;
+ var ctx = this.ctx;
+ this.save();
+ ctx.scale(1 / width, -1 / height);
+ var currentTransform = ctx.mozCurrentTransformInverse;
+ var a = currentTransform[0], b = currentTransform[1];
+ var widthScale = Math.max(Math.sqrt(a * a + b * b), 1);
+ var c = currentTransform[2], d = currentTransform[3];
+ var heightScale = Math.max(Math.sqrt(c * c + d * d), 1);
+ var imgToPaint, tmpCanvas;
+ if (imgData instanceof HTMLElement || !imgData.data) {
+ imgToPaint = imgData;
+ } else {
+ tmpCanvas = this.cachedCanvases.getCanvas('inlineImage', width, height);
+ var tmpCtx = tmpCanvas.context;
+ putBinaryImageData(tmpCtx, imgData);
+ imgToPaint = tmpCanvas.canvas;
+ }
+ var paintWidth = width, paintHeight = height;
+ var tmpCanvasId = 'prescale1';
+ while (widthScale > 2 && paintWidth > 1 || heightScale > 2 && paintHeight > 1) {
+ var newWidth = paintWidth, newHeight = paintHeight;
+ if (widthScale > 2 && paintWidth > 1) {
+ newWidth = Math.ceil(paintWidth / 2);
+ widthScale /= paintWidth / newWidth;
+ }
+ if (heightScale > 2 && paintHeight > 1) {
+ newHeight = Math.ceil(paintHeight / 2);
+ heightScale /= paintHeight / newHeight;
+ }
+ tmpCanvas = this.cachedCanvases.getCanvas(tmpCanvasId, newWidth, newHeight);
+ tmpCtx = tmpCanvas.context;
+ tmpCtx.clearRect(0, 0, newWidth, newHeight);
+ tmpCtx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, 0, newWidth, newHeight);
+ imgToPaint = tmpCanvas.canvas;
+ paintWidth = newWidth;
+ paintHeight = newHeight;
+ tmpCanvasId = tmpCanvasId === 'prescale1' ? 'prescale2' : 'prescale1';
+ }
+ ctx.drawImage(imgToPaint, 0, 0, paintWidth, paintHeight, 0, -height, width, height);
+ if (this.imageLayer) {
+ var position = this.getCanvasPosition(0, -height);
+ this.imageLayer.appendImage({
+ imgData: imgData,
+ left: position[0],
+ top: position[1],
+ width: width / currentTransform[0],
+ height: height / currentTransform[3]
+ });
+ }
+ this.restore();
+ },
+ paintInlineImageXObjectGroup: function CanvasGraphics_paintInlineImageXObjectGroup(imgData, map) {
+ var ctx = this.ctx;
+ var w = imgData.width;
+ var h = imgData.height;
+ var tmpCanvas = this.cachedCanvases.getCanvas('inlineImage', w, h);
+ var tmpCtx = tmpCanvas.context;
+ putBinaryImageData(tmpCtx, imgData);
+ for (var i = 0, ii = map.length; i < ii; i++) {
+ var entry = map[i];
+ ctx.save();
+ ctx.transform.apply(ctx, entry.transform);
+ ctx.scale(1, -1);
+ ctx.drawImage(tmpCanvas.canvas, entry.x, entry.y, entry.w, entry.h, 0, -1, 1, 1);
+ if (this.imageLayer) {
+ var position = this.getCanvasPosition(entry.x, entry.y);
+ this.imageLayer.appendImage({
+ imgData: imgData,
+ left: position[0],
+ top: position[1],
+ width: w,
+ height: h
+ });
}
-
- this.metaDocument = meta;
- this.metadata = {};
- this.parse();
- }
-
- Metadata.prototype = {
- parse: function Metadata_parse() {
- var doc = this.metaDocument;
- var rdf = doc.documentElement;
-
- if (rdf.nodeName.toLowerCase() !== 'rdf:rdf') { // Wrapped in
- rdf = rdf.firstChild;
- while (rdf && rdf.nodeName.toLowerCase() !== 'rdf:rdf') {
- rdf = rdf.nextSibling;
- }
- }
-
- var nodeName = (rdf) ? rdf.nodeName.toLowerCase() : null;
- if (!rdf || nodeName !== 'rdf:rdf' || !rdf.hasChildNodes()) {
- return;
- }
-
- var children = rdf.childNodes, desc, entry, name, i, ii, length, iLength;
- for (i = 0, length = children.length; i < length; i++) {
- desc = children[i];
- if (desc.nodeName.toLowerCase() !== 'rdf:description') {
- continue;
- }
-
- for (ii = 0, iLength = desc.childNodes.length; ii < iLength; ii++) {
- if (desc.childNodes[ii].nodeName.toLowerCase() !== '#text') {
- entry = desc.childNodes[ii];
- name = entry.nodeName.toLowerCase();
- this.metadata[name] = entry.textContent.trim();
- }
- }
- }
- },
-
- get: function Metadata_get(name) {
- return this.metadata[name] || null;
- },
-
- has: function Metadata_has(name) {
- return typeof this.metadata[name] !== 'undefined';
+ ctx.restore();
+ }
+ },
+ paintSolidColorImageMask: function CanvasGraphics_paintSolidColorImageMask() {
+ this.ctx.fillRect(0, 0, 1, 1);
+ },
+ paintXObject: function CanvasGraphics_paintXObject() {
+ warn('Unsupported \'paintXObject\' command.');
+ },
+ markPoint: function CanvasGraphics_markPoint(tag) {
+ },
+ markPointProps: function CanvasGraphics_markPointProps(tag, properties) {
+ },
+ beginMarkedContent: function CanvasGraphics_beginMarkedContent(tag) {
+ },
+ beginMarkedContentProps: function CanvasGraphics_beginMarkedContentProps(tag, properties) {
+ },
+ endMarkedContent: function CanvasGraphics_endMarkedContent() {
+ },
+ beginCompat: function CanvasGraphics_beginCompat() {
+ },
+ endCompat: function CanvasGraphics_endCompat() {
+ },
+ consumePath: function CanvasGraphics_consumePath() {
+ var ctx = this.ctx;
+ if (this.pendingClip) {
+ if (this.pendingClip === EO_CLIP) {
+ ctx.clip('evenodd');
+ } else {
+ ctx.clip();
}
- };
-
- return Metadata;
-})();
-
-
-//