Skip to content

Commit

Permalink
Merge pull request #12021 from Snuffleupagus/move-fetchBuiltInCMap
Browse files Browse the repository at this point in the history
Move the `fetchBuiltInCMap` method to the `PartialEvaluator.prototype`
  • Loading branch information
timvandermeij authored Jun 24, 2020
2 parents c1cb9ee + f070871 commit ac4a5c3
Showing 1 changed file with 35 additions and 32 deletions.
67 changes: 35 additions & 32 deletions src/core/evaluator.js
Original file line number Diff line number Diff line change
Expand Up @@ -116,34 +116,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
this.pdfFunctionFactory = pdfFunctionFactory;
this.parsingType3Font = false;

this.fetchBuiltInCMap = async name => {
if (this.builtInCMapCache.has(name)) {
return this.builtInCMapCache.get(name);
}
const readableStream = this.handler.sendWithStream("FetchBuiltInCMap", {
name,
});
const reader = readableStream.getReader();

const data = await new Promise(function (resolve, reject) {
function pump() {
reader.read().then(function ({ value, done }) {
if (done) {
return;
}
resolve(value);
pump();
}, reject);
}
pump();
});

if (data.compressionType !== CMapCompressionType.NONE) {
// Given the size of uncompressed CMaps, only cache compressed ones.
this.builtInCMapCache.set(name, data);
}
return data;
};
this._fetchBuiltInCMapBound = this.fetchBuiltInCMap.bind(this);
}

// Trying to minimize Date.now() usage and check every 100 time
Expand Down Expand Up @@ -375,6 +348,36 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
return false;
},

async fetchBuiltInCMap(name) {
const cachedData = this.builtInCMapCache.get(name);
if (cachedData) {
return cachedData;
}
const readableStream = this.handler.sendWithStream("FetchBuiltInCMap", {
name,
});
const reader = readableStream.getReader();

const data = await new Promise(function (resolve, reject) {
function pump() {
reader.read().then(function ({ value, done }) {
if (done) {
return;
}
resolve(value);
pump();
}, reject);
}
pump();
});

if (data.compressionType !== CMapCompressionType.NONE) {
// Given the size of uncompressed CMaps, only cache compressed ones.
this.builtInCMapCache.set(name, data);
}
return data;
},

async buildFormXObject(
resources,
xobj,
Expand Down Expand Up @@ -2691,7 +2694,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
// from the ASN Web site; see the Bibliography).
return CMapFactory.create({
encoding: ucs2CMapName,
fetchBuiltInCMap: this.fetchBuiltInCMap,
fetchBuiltInCMap: this._fetchBuiltInCMapBound,
useCMap: null,
}).then(function (ucs2CMap) {
const cMap = properties.cMap;
Expand Down Expand Up @@ -2724,7 +2727,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
if (isName(cmapObj)) {
return CMapFactory.create({
encoding: cmapObj,
fetchBuiltInCMap: this.fetchBuiltInCMap,
fetchBuiltInCMap: this._fetchBuiltInCMapBound,
useCMap: null,
}).then(function (cmap) {
if (cmap instanceof IdentityCMap) {
Expand All @@ -2735,7 +2738,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
} else if (isStream(cmapObj)) {
return CMapFactory.create({
encoding: cmapObj,
fetchBuiltInCMap: this.fetchBuiltInCMap,
fetchBuiltInCMap: this._fetchBuiltInCMapBound,
useCMap: null,
}).then(
function (cmap) {
Expand Down Expand Up @@ -3230,7 +3233,7 @@ var PartialEvaluator = (function PartialEvaluatorClosure() {
}
cMapPromise = CMapFactory.create({
encoding: cidEncoding,
fetchBuiltInCMap: this.fetchBuiltInCMap,
fetchBuiltInCMap: this._fetchBuiltInCMapBound,
useCMap: null,
}).then(function (cMap) {
properties.cMap = cMap;
Expand Down

0 comments on commit ac4a5c3

Please sign in to comment.