|
|
|
@ -28,8 +28,8 @@ factory((root.pdfjsDistBuildPdfCombined = {}));
@@ -28,8 +28,8 @@ factory((root.pdfjsDistBuildPdfCombined = {}));
|
|
|
|
|
// Use strict in our context only - users might not want it
|
|
|
|
|
'use strict'; |
|
|
|
|
|
|
|
|
|
var pdfjsVersion = '1.5.347'; |
|
|
|
|
var pdfjsBuild = '50d6e4f'; |
|
|
|
|
var pdfjsVersion = '1.5.351'; |
|
|
|
|
var pdfjsBuild = '5678486'; |
|
|
|
|
|
|
|
|
|
var pdfjsFilePath = |
|
|
|
|
typeof document !== 'undefined' && document.currentScript ? |
|
|
|
@ -45775,8 +45775,8 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
@@ -45775,8 +45775,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; |
|
|
|
|
} |
|
|
|
@ -45785,7 +45785,12 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
@@ -45785,7 +45785,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); |
|
|
|
@ -45795,36 +45800,53 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
@@ -45795,36 +45800,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; |
|
|
|
|
|
|
|
|
@ -47234,7 +47256,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
@@ -47234,7 +47256,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++) { |
|
|
|
@ -47242,7 +47264,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
@@ -47242,7 +47264,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|,
|
|
|
|
|