mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-24 21:31:04 +00:00
Bug 1290245 - Update pdf.js to version 1.5.365. r=bdahl
--HG-- extra : rebase_source : 7de149319fb8a5a7236fba3ee8e7310833f0fba5
This commit is contained in:
parent
97c23c220b
commit
44258616e6
@ -1,3 +1,3 @@
|
||||
This is the pdf.js project output, https://github.com/mozilla/pdf.js
|
||||
|
||||
Current extension version is: 1.5.345
|
||||
Current extension version is: 1.5.365
|
||||
|
@ -28,8 +28,8 @@ factory((root.pdfjsDistBuildPdf = {}));
|
||||
// Use strict in our context only - users might not want it
|
||||
'use strict';
|
||||
|
||||
var pdfjsVersion = '1.5.345';
|
||||
var pdfjsBuild = '10f9f11';
|
||||
var pdfjsVersion = '1.5.365';
|
||||
var pdfjsBuild = '19105f0';
|
||||
|
||||
var pdfjsFilePath =
|
||||
typeof document !== 'undefined' && document.currentScript ?
|
||||
@ -6771,6 +6771,8 @@ var PDFDocumentProxy = (function PDFDocumentProxyClosure() {
|
||||
* @typedef {Object} getTextContentParameters
|
||||
* @param {boolean} normalizeWhitespace - replaces all occurrences of
|
||||
* whitespace with standard spaces (0x20). The default value is `false`.
|
||||
* @param {boolean} disableCombineTextItems - do not attempt to combine
|
||||
* same line {@link TextItem}'s. The default value is `false`.
|
||||
*/
|
||||
|
||||
/**
|
||||
@ -7062,11 +7064,12 @@ var PDFPageProxy = (function PDFPageProxyClosure() {
|
||||
* object that represent the page text content.
|
||||
*/
|
||||
getTextContent: function PDFPageProxy_getTextContent(params) {
|
||||
var normalizeWhitespace = (params && params.normalizeWhitespace) || false;
|
||||
|
||||
return this.transport.messageHandler.sendWithPromise('GetTextContent', {
|
||||
pageIndex: this.pageNumber - 1,
|
||||
normalizeWhitespace: normalizeWhitespace,
|
||||
normalizeWhitespace: (params && params.normalizeWhitespace === true ?
|
||||
true : /* Default */ false),
|
||||
combineTextItems: (params && params.disableCombineTextItems === true ?
|
||||
false : /* Default */ true),
|
||||
});
|
||||
},
|
||||
|
||||
|
113
browser/extensions/pdfjs/content/build/pdf.worker.js
vendored
113
browser/extensions/pdfjs/content/build/pdf.worker.js
vendored
@ -28,8 +28,8 @@ factory((root.pdfjsDistBuildPdfWorker = {}));
|
||||
// Use strict in our context only - users might not want it
|
||||
'use strict';
|
||||
|
||||
var pdfjsVersion = '1.5.345';
|
||||
var pdfjsBuild = '10f9f11';
|
||||
var pdfjsVersion = '1.5.365';
|
||||
var pdfjsBuild = '19105f0';
|
||||
|
||||
var pdfjsFilePath =
|
||||
typeof document !== 'undefined' && document.currentScript ?
|
||||
@ -36506,8 +36506,8 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
||||
return errorFont();
|
||||
}
|
||||
|
||||
// We are holding font.translated references just for fontRef that are not
|
||||
// dictionaries (Dict). See explanation below.
|
||||
// We are holding `font.translated` references just for `fontRef`s that
|
||||
// are not actually `Ref`s, but rather `Dict`s. See explanation below.
|
||||
if (font.translated) {
|
||||
return font.translated;
|
||||
}
|
||||
@ -36516,7 +36516,12 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
||||
|
||||
var preEvaluatedFont = this.preEvaluateFont(font, xref);
|
||||
var descriptor = preEvaluatedFont.descriptor;
|
||||
var fontID = fontRef.num + '_' + fontRef.gen;
|
||||
|
||||
var fontRefIsRef = isRef(fontRef), fontID;
|
||||
if (fontRefIsRef) {
|
||||
fontID = fontRef.toString();
|
||||
}
|
||||
|
||||
if (isDict(descriptor)) {
|
||||
if (!descriptor.fontAliases) {
|
||||
descriptor.fontAliases = Object.create(null);
|
||||
@ -36526,36 +36531,53 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
||||
var hash = preEvaluatedFont.hash;
|
||||
if (fontAliases[hash]) {
|
||||
var aliasFontRef = fontAliases[hash].aliasRef;
|
||||
if (aliasFontRef && this.fontCache.has(aliasFontRef)) {
|
||||
if (fontRefIsRef && aliasFontRef &&
|
||||
this.fontCache.has(aliasFontRef)) {
|
||||
this.fontCache.putAlias(fontRef, aliasFontRef);
|
||||
return this.fontCache.get(fontRef);
|
||||
}
|
||||
}
|
||||
|
||||
if (!fontAliases[hash]) {
|
||||
} else {
|
||||
fontAliases[hash] = {
|
||||
fontID: Font.getFontID()
|
||||
};
|
||||
}
|
||||
|
||||
fontAliases[hash].aliasRef = fontRef;
|
||||
if (fontRefIsRef) {
|
||||
fontAliases[hash].aliasRef = fontRef;
|
||||
}
|
||||
fontID = fontAliases[hash].fontID;
|
||||
}
|
||||
|
||||
// Workaround for bad PDF generators that don't reference fonts
|
||||
// properly, i.e. by not using an object identifier.
|
||||
// Check if the fontRef is a Dict (as opposed to a standard object),
|
||||
// in which case we don't cache the font and instead reference it by
|
||||
// fontName in font.loadedName below.
|
||||
var fontRefIsDict = isDict(fontRef);
|
||||
if (!fontRefIsDict) {
|
||||
// Workaround for bad PDF generators that reference fonts incorrectly,
|
||||
// where `fontRef` is a `Dict` rather than a `Ref` (fixes bug946506.pdf).
|
||||
// In this case we should not put the font into `this.fontCache` (which is
|
||||
// a `RefSetCache`), since it's not meaningful to use a `Dict` as a key.
|
||||
//
|
||||
// However, if we don't cache the font it's not possible to remove it
|
||||
// when `cleanup` is triggered from the API, which causes issues on
|
||||
// subsequent rendering operations (see issue7403.pdf).
|
||||
// A simple workaround would be to just not hold `font.translated`
|
||||
// references in this case, but this would force us to unnecessarily load
|
||||
// the same fonts over and over.
|
||||
//
|
||||
// Instead, we cheat a bit by attempting to use a modified `fontID` as a
|
||||
// key in `this.fontCache`, to allow the font to be cached.
|
||||
// NOTE: This works because `RefSetCache` calls `toString()` on provided
|
||||
// keys. Also, since `fontRef` is used when getting cached fonts,
|
||||
// we'll not accidentally match fonts cached with the `fontID`.
|
||||
if (fontRefIsRef) {
|
||||
this.fontCache.put(fontRef, fontCapability.promise);
|
||||
} else {
|
||||
if (!fontID) {
|
||||
fontID = (this.uniquePrefix || 'F_') + (++this.idCounters.obj);
|
||||
}
|
||||
this.fontCache.put('id_' + fontID, fontCapability.promise);
|
||||
}
|
||||
assert(fontID, 'The "fontID" must be defined.');
|
||||
|
||||
// Keep track of each font we translated so the caller can
|
||||
// load them asynchronously before calling display on a page.
|
||||
font.loadedName = 'g_' + this.pdfManager.docId + '_f' + (fontRefIsDict ?
|
||||
fontName.replace(/\W/g, '') : fontID);
|
||||
font.loadedName = 'g_' + this.pdfManager.docId + '_f' + fontID;
|
||||
|
||||
font.translated = fontCapability.promise;
|
||||
|
||||
@ -36954,7 +36976,8 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
||||
getTextContent:
|
||||
function PartialEvaluator_getTextContent(stream, task, resources,
|
||||
stateManager,
|
||||
normalizeWhitespace) {
|
||||
normalizeWhitespace,
|
||||
combineTextItems) {
|
||||
|
||||
stateManager = (stateManager || new StateManager(new TextState()));
|
||||
|
||||
@ -37265,7 +37288,8 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
||||
var isSameTextLine = !textState.font ? false :
|
||||
((textState.font.vertical ? args[0] : args[1]) === 0);
|
||||
advance = args[0] - args[1];
|
||||
if (isSameTextLine && textContentItem.initialized &&
|
||||
if (combineTextItems &&
|
||||
isSameTextLine && textContentItem.initialized &&
|
||||
advance > 0 &&
|
||||
advance <= textContentItem.fakeMultiSpaceMax) {
|
||||
textState.translateTextLineMatrix(args[0], args[1]);
|
||||
@ -37297,7 +37321,8 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
||||
// Optimization to treat same line movement as advance.
|
||||
advance = textState.calcTextLineMatrixAdvance(
|
||||
args[0], args[1], args[2], args[3], args[4], args[5]);
|
||||
if (advance !== null && textContentItem.initialized &&
|
||||
if (combineTextItems &&
|
||||
advance !== null && textContentItem.initialized &&
|
||||
advance.value > 0 &&
|
||||
advance.value <= textContentItem.fakeMultiSpaceMax) {
|
||||
textState.translateTextLineMatrix(advance.width,
|
||||
@ -37438,7 +37463,8 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
||||
|
||||
next(self.getTextContent(xobj, task,
|
||||
xobj.dict.get('Resources') || resources, stateManager,
|
||||
normalizeWhitespace).then(function (formTextContent) {
|
||||
normalizeWhitespace, combineTextItems).then(
|
||||
function (formTextContent) {
|
||||
Util.appendToArray(textContent.items, formTextContent.items);
|
||||
Util.extendObj(textContent.styles, formTextContent.styles);
|
||||
stateManager.restore();
|
||||
@ -37594,7 +37620,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
||||
// the differences array only contains adobe standard or symbol set names,
|
||||
// in pratice it seems better to always try to create a toUnicode
|
||||
// map based of the default encoding.
|
||||
var toUnicode, charcode;
|
||||
var toUnicode, charcode, glyphName;
|
||||
if (!properties.composite /* is simple font */) {
|
||||
toUnicode = [];
|
||||
var encoding = properties.defaultEncoding.slice();
|
||||
@ -37602,12 +37628,18 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
||||
// Merge in the differences array.
|
||||
var differences = properties.differences;
|
||||
for (charcode in differences) {
|
||||
encoding[charcode] = differences[charcode];
|
||||
glyphName = differences[charcode];
|
||||
if (glyphName === '.notdef') {
|
||||
// Skip .notdef to prevent rendering errors, e.g. boxes appearing
|
||||
// where there should be spaces (fixes issue5256.pdf).
|
||||
continue;
|
||||
}
|
||||
encoding[charcode] = glyphName;
|
||||
}
|
||||
var glyphsUnicodeMap = getGlyphsUnicode();
|
||||
for (charcode in encoding) {
|
||||
// a) Map the character code to a character name.
|
||||
var glyphName = encoding[charcode];
|
||||
glyphName = encoding[charcode];
|
||||
// b) Look up the character name in the Adobe Glyph List (see the
|
||||
// Bibliography) to obtain the corresponding Unicode value.
|
||||
if (glyphName === '') {
|
||||
@ -37959,7 +37991,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
||||
if (isName(encoding)) {
|
||||
hash.update(encoding.name);
|
||||
} else if (isRef(encoding)) {
|
||||
hash.update(encoding.num + '_' + encoding.gen);
|
||||
hash.update(encoding.toString());
|
||||
} else if (isDict(encoding)) {
|
||||
var keys = encoding.getKeys();
|
||||
for (var i = 0, ii = keys.length; i < ii; i++) {
|
||||
@ -37967,7 +37999,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
|
||||
if (isName(entry)) {
|
||||
hash.update(entry.name);
|
||||
} else if (isRef(entry)) {
|
||||
hash.update(entry.num + '_' + entry.gen);
|
||||
hash.update(entry.toString());
|
||||
} else if (isArray(entry)) { // 'Differences' entry.
|
||||
// Ideally we should check the contents of the array, but to avoid
|
||||
// parsing it here and then again in |extractDataStructures|,
|
||||
@ -39165,13 +39197,14 @@ AnnotationFactory.prototype = /** @lends AnnotationFactory.prototype */ {
|
||||
|
||||
// Determine the annotation's subtype.
|
||||
var subtype = dict.get('Subtype');
|
||||
subtype = isName(subtype) ? subtype.name : '';
|
||||
subtype = isName(subtype) ? subtype.name : null;
|
||||
|
||||
// Return the right annotation object based on the subtype and field type.
|
||||
var parameters = {
|
||||
xref: xref,
|
||||
dict: dict,
|
||||
ref: ref
|
||||
ref: ref,
|
||||
subtype: subtype,
|
||||
};
|
||||
|
||||
switch (subtype) {
|
||||
@ -39207,8 +39240,12 @@ AnnotationFactory.prototype = /** @lends AnnotationFactory.prototype */ {
|
||||
return new FileAttachmentAnnotation(parameters);
|
||||
|
||||
default:
|
||||
warn('Unimplemented annotation type "' + subtype + '", ' +
|
||||
'falling back to base annotation');
|
||||
if (!subtype) {
|
||||
warn('Annotation is missing the required /Subtype.');
|
||||
} else {
|
||||
warn('Unimplemented annotation type "' + subtype + '", ' +
|
||||
'falling back to base annotation.');
|
||||
}
|
||||
return new Annotation(parameters);
|
||||
}
|
||||
}
|
||||
@ -39272,7 +39309,7 @@ var Annotation = (function AnnotationClosure() {
|
||||
// Expose public properties using a data object.
|
||||
this.data = {};
|
||||
this.data.id = params.ref.toString();
|
||||
this.data.subtype = dict.get('Subtype').name;
|
||||
this.data.subtype = params.subtype;
|
||||
this.data.annotationFlags = this.flags;
|
||||
this.data.rect = this.rectangle;
|
||||
this.data.color = this.color;
|
||||
@ -40280,7 +40317,8 @@ var Page = (function PageClosure() {
|
||||
},
|
||||
|
||||
extractTextContent: function Page_extractTextContent(task,
|
||||
normalizeWhitespace) {
|
||||
normalizeWhitespace,
|
||||
combineTextItems) {
|
||||
var handler = {
|
||||
on: function nullHandlerOn() {},
|
||||
send: function nullHandlerSend() {}
|
||||
@ -40313,7 +40351,8 @@ var Page = (function PageClosure() {
|
||||
task,
|
||||
self.resources,
|
||||
/* stateManager = */ null,
|
||||
normalizeWhitespace);
|
||||
normalizeWhitespace,
|
||||
combineTextItems);
|
||||
});
|
||||
},
|
||||
|
||||
@ -41577,12 +41616,14 @@ var WorkerMessageHandler = {
|
||||
handler.on('GetTextContent', function wphExtractText(data) {
|
||||
var pageIndex = data.pageIndex;
|
||||
var normalizeWhitespace = data.normalizeWhitespace;
|
||||
var combineTextItems = data.combineTextItems;
|
||||
return pdfManager.getPage(pageIndex).then(function(page) {
|
||||
var task = new WorkerTask('GetTextContent: page ' + pageIndex);
|
||||
startWorkerTask(task);
|
||||
var pageNum = pageIndex + 1;
|
||||
var start = Date.now();
|
||||
return page.extractTextContent(task, normalizeWhitespace).then(
|
||||
return page.extractTextContent(task, normalizeWhitespace,
|
||||
combineTextItems).then(
|
||||
function(textContent) {
|
||||
finishWorkerTask(task);
|
||||
info('text indexing: page=' + pageNum + ' - time=' +
|
||||
|
@ -2526,7 +2526,6 @@ exports.binarySearchFirstItem = binarySearchFirstItem;
|
||||
var event = document.createEvent('UIEvents');
|
||||
event.initUIEvent('pagechange', true, true, window, 0);
|
||||
event.pageNumber = e.pageNumber;
|
||||
event.previousPageNumber = e.previousPageNumber;
|
||||
e.source.container.dispatchEvent(event);
|
||||
});
|
||||
eventBus.on('pagesinit', function (e) {
|
||||
@ -5474,12 +5473,12 @@ var PDFPageView = (function PDFPageViewClosure() {
|
||||
function pdfPageRenderCallback() {
|
||||
pageViewDrawCallback(null);
|
||||
if (textLayer) {
|
||||
self.pdfPage.getTextContent({ normalizeWhitespace: true }).then(
|
||||
function textContentResolved(textContent) {
|
||||
textLayer.setTextContent(textContent);
|
||||
textLayer.render(TEXT_LAYER_RENDER_DELAY);
|
||||
}
|
||||
);
|
||||
self.pdfPage.getTextContent({
|
||||
normalizeWhitespace: true,
|
||||
}).then(function textContentResolved(textContent) {
|
||||
textLayer.setTextContent(textContent);
|
||||
textLayer.render(TEXT_LAYER_RENDER_DELAY);
|
||||
});
|
||||
}
|
||||
},
|
||||
function pdfPageRenderError(error) {
|
||||
@ -6357,6 +6356,9 @@ var PDFViewer = (function pdfViewer() {
|
||||
* @param {number} val - The page number.
|
||||
*/
|
||||
set currentPageNumber(val) {
|
||||
if ((val | 0) !== val) { // Ensure that `val` is an integer.
|
||||
throw new Error('Invalid page number.');
|
||||
}
|
||||
if (!this.pdfDocument) {
|
||||
this._currentPageNumber = val;
|
||||
return;
|
||||
@ -6376,22 +6378,14 @@ var PDFViewer = (function pdfViewer() {
|
||||
}
|
||||
return;
|
||||
}
|
||||
var arg;
|
||||
|
||||
if (!(0 < val && val <= this.pagesCount)) {
|
||||
arg = {
|
||||
source: this,
|
||||
pageNumber: this._currentPageNumber,
|
||||
previousPageNumber: val
|
||||
};
|
||||
this.eventBus.dispatch('pagechanging', arg);
|
||||
this.eventBus.dispatch('pagechange', arg);
|
||||
return;
|
||||
}
|
||||
|
||||
arg = {
|
||||
var arg = {
|
||||
source: this,
|
||||
pageNumber: val,
|
||||
previousPageNumber: this._currentPageNumber
|
||||
};
|
||||
this._currentPageNumber = val;
|
||||
this.eventBus.dispatch('pagechanging', arg);
|
||||
@ -6414,7 +6408,7 @@ var PDFViewer = (function pdfViewer() {
|
||||
* @param {number} val - Scale of the pages in percents.
|
||||
*/
|
||||
set currentScale(val) {
|
||||
if (isNaN(val)) {
|
||||
if (isNaN(val)) {
|
||||
throw new Error('Invalid numeric scale');
|
||||
}
|
||||
if (!this.pdfDocument) {
|
||||
@ -6975,7 +6969,9 @@ var PDFViewer = (function pdfViewer() {
|
||||
|
||||
getPageTextContent: function (pageIndex) {
|
||||
return this.pdfDocument.getPage(pageIndex + 1).then(function (page) {
|
||||
return page.getTextContent({ normalizeWhitespace: true });
|
||||
return page.getTextContent({
|
||||
normalizeWhitespace: true,
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
@ -8333,11 +8329,12 @@ function webViewerInitialized() {
|
||||
});
|
||||
|
||||
appConfig.toolbar.pageNumber.addEventListener('change', function() {
|
||||
// Handle the user inputting a floating point number.
|
||||
PDFViewerApplication.page = (this.value | 0);
|
||||
|
||||
if (this.value !== (this.value | 0).toString()) {
|
||||
this.value = PDFViewerApplication.page;
|
||||
// Ensure that the page number input displays the correct value, even if the
|
||||
// value entered by the user was invalid (e.g. a floating point number).
|
||||
if (this.value !== PDFViewerApplication.page.toString()) {
|
||||
PDFViewerApplication._updateUIToolbar({});
|
||||
}
|
||||
});
|
||||
|
||||
@ -8693,8 +8690,8 @@ function webViewerPageChanging(e) {
|
||||
PDFViewerApplication._updateUIToolbar({
|
||||
pageNumber: page,
|
||||
});
|
||||
if (e.previousPageNumber !== page &&
|
||||
PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) {
|
||||
|
||||
if (PDFViewerApplication.pdfSidebar.isThumbnailViewVisible) {
|
||||
PDFViewerApplication.pdfThumbnailViewer.scrollThumbnailIntoView(page);
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user