mirror of
https://github.com/mozilla/pdf.js.git
synced 2025-04-26 01:58:06 +02:00
Split the existing PDFFunction
in two classes, a private PDFFunction
and a public PDFFunctionFactory
, and utilize the latter in
PDFDocument to allow various code to access the methods of
PDFFunction`
*Follow-up to PR 8909.* This requires us to pass around `pdfFunctionFactory` to quite a lot of existing code, however I don't see another way of handling this while still guaranteeing that we can access `PDFFunction` as freely as in the old code. Please note that the patch passes all tests locally (unit, font, reference), and I *very* much hope that we have sufficient test-coverage for the code in question to catch any typos/mistakes in the re-factoring.
This commit is contained in:
parent
5c961c76bb
commit
b8ec518a1e
8 changed files with 226 additions and 124 deletions
|
@ -24,7 +24,7 @@ import { OperatorList, PartialEvaluator } from './evaluator';
|
|||
import { AnnotationFactory } from './annotation';
|
||||
import { calculateMD5 } from './crypto';
|
||||
import { Linearization } from './parser';
|
||||
import { PDFFunction } from './function';
|
||||
import { PDFFunctionFactory } from './function';
|
||||
|
||||
var Page = (function PageClosure() {
|
||||
|
||||
|
@ -36,8 +36,8 @@ var Page = (function PageClosure() {
|
|||
(intent === 'print' && annotation.printable);
|
||||
}
|
||||
|
||||
function Page(pdfManager, xref, pageIndex, pageDict, ref, fontCache,
|
||||
builtInCMapCache) {
|
||||
function Page({ pdfManager, xref, pageIndex, pageDict, ref, fontCache,
|
||||
builtInCMapCache, pdfFunctionFactory, }) {
|
||||
this.pdfManager = pdfManager;
|
||||
this.pageIndex = pageIndex;
|
||||
this.pageDict = pageDict;
|
||||
|
@ -45,6 +45,7 @@ var Page = (function PageClosure() {
|
|||
this.ref = ref;
|
||||
this.fontCache = fontCache;
|
||||
this.builtInCMapCache = builtInCMapCache;
|
||||
this.pdfFunctionFactory = pdfFunctionFactory;
|
||||
this.evaluatorOptions = pdfManager.evaluatorOptions;
|
||||
this.resourcesPromise = null;
|
||||
|
||||
|
@ -215,6 +216,7 @@ var Page = (function PageClosure() {
|
|||
fontCache: this.fontCache,
|
||||
builtInCMapCache: this.builtInCMapCache,
|
||||
options: this.evaluatorOptions,
|
||||
pdfFunctionFactory: this.pdfFunctionFactory,
|
||||
});
|
||||
|
||||
var dataPromises = Promise.all([contentStreamPromise, resourcesPromise]);
|
||||
|
@ -290,6 +292,7 @@ var Page = (function PageClosure() {
|
|||
fontCache: this.fontCache,
|
||||
builtInCMapCache: this.builtInCMapCache,
|
||||
options: this.evaluatorOptions,
|
||||
pdfFunctionFactory: this.pdfFunctionFactory,
|
||||
});
|
||||
|
||||
return partialEvaluator.getTextContent({
|
||||
|
@ -361,6 +364,12 @@ var PDFDocument = (function PDFDocumentClosure() {
|
|||
this.pdfManager = pdfManager;
|
||||
this.stream = stream;
|
||||
this.xref = new XRef(stream, pdfManager);
|
||||
|
||||
let evaluatorOptions = pdfManager.evaluatorOptions;
|
||||
this.pdfFunctionFactory = new PDFFunctionFactory({
|
||||
xref: this.xref,
|
||||
isEvalSupported: evaluatorOptions.isEvalSupported,
|
||||
});
|
||||
}
|
||||
|
||||
function find(stream, needle, limit, backwards) {
|
||||
|
@ -528,14 +537,19 @@ var PDFDocument = (function PDFDocumentClosure() {
|
|||
this.xref.parse(recoveryMode);
|
||||
var pageFactory = {
|
||||
createPage: (pageIndex, dict, ref, fontCache, builtInCMapCache) => {
|
||||
return new Page(this.pdfManager, this.xref, pageIndex, dict, ref,
|
||||
fontCache, builtInCMapCache);
|
||||
return new Page({
|
||||
pdfManager: this.pdfManager,
|
||||
xref: this.xref,
|
||||
pageIndex,
|
||||
pageDict: dict,
|
||||
ref,
|
||||
fontCache,
|
||||
builtInCMapCache,
|
||||
pdfFunctionFactory: this.pdfFunctionFactory,
|
||||
});
|
||||
},
|
||||
};
|
||||
this.catalog = new Catalog(this.pdfManager, this.xref, pageFactory);
|
||||
|
||||
let evaluatorOptions = this.pdfManager.evaluatorOptions;
|
||||
PDFFunction.setIsEvalSupported(evaluatorOptions.isEvalSupported);
|
||||
},
|
||||
get numPages() {
|
||||
var linearization = this.linearization;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue