Change PDFDocument.prototype._xfaStreams to return a Map
Using a `Map` rather than an `Object` is a nicer, since it has better support for both iteration and checking if a key exists. We also change the initial values to be `null`, rather than empty strings, and reduce duplication when creating the `Map`. *Please note:* Since this is worker-thread code, these changes are "invisible" at the API-level.
This commit is contained in:
parent
9c6e2e6df0
commit
1c80412f61
@ -1117,24 +1117,26 @@ class PDFDocument {
|
|||||||
}
|
}
|
||||||
|
|
||||||
get _xfaStreams() {
|
get _xfaStreams() {
|
||||||
const acroForm = this.catalog.acroForm;
|
const { acroForm } = this.catalog;
|
||||||
if (!acroForm) {
|
if (!acroForm) {
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
const xfa = acroForm.get("XFA");
|
const xfa = acroForm.get("XFA");
|
||||||
const entries = {
|
const entries = new Map(
|
||||||
"xdp:xdp": "",
|
[
|
||||||
template: "",
|
"xdp:xdp",
|
||||||
datasets: "",
|
"template",
|
||||||
config: "",
|
"datasets",
|
||||||
connectionSet: "",
|
"config",
|
||||||
localeSet: "",
|
"connectionSet",
|
||||||
stylesheet: "",
|
"localeSet",
|
||||||
"/xdp:xdp": "",
|
"stylesheet",
|
||||||
};
|
"/xdp:xdp",
|
||||||
|
].map(e => [e, null])
|
||||||
|
);
|
||||||
if (xfa instanceof BaseStream && !xfa.isEmpty) {
|
if (xfa instanceof BaseStream && !xfa.isEmpty) {
|
||||||
entries["xdp:xdp"] = xfa;
|
entries.set("xdp:xdp", xfa);
|
||||||
return entries;
|
return entries;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -1152,14 +1154,14 @@ class PDFDocument {
|
|||||||
name = xfa[i];
|
name = xfa[i];
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!entries.hasOwnProperty(name)) {
|
if (!entries.has(name)) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
const data = this.xref.fetchIfRef(xfa[i + 1]);
|
const data = this.xref.fetchIfRef(xfa[i + 1]);
|
||||||
if (!(data instanceof BaseStream) || data.isEmpty) {
|
if (!(data instanceof BaseStream) || data.isEmpty) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
entries[name] = data;
|
entries.set(name, data);
|
||||||
}
|
}
|
||||||
return entries;
|
return entries;
|
||||||
}
|
}
|
||||||
@ -1170,7 +1172,7 @@ class PDFDocument {
|
|||||||
return shadow(this, "xfaDatasets", null);
|
return shadow(this, "xfaDatasets", null);
|
||||||
}
|
}
|
||||||
for (const key of ["datasets", "xdp:xdp"]) {
|
for (const key of ["datasets", "xdp:xdp"]) {
|
||||||
const stream = streams[key];
|
const stream = streams.get(key);
|
||||||
if (!stream) {
|
if (!stream) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
@ -1192,7 +1194,7 @@ class PDFDocument {
|
|||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
const data = Object.create(null);
|
const data = Object.create(null);
|
||||||
for (const [key, stream] of Object.entries(streams)) {
|
for (const [key, stream] of streams) {
|
||||||
if (!stream) {
|
if (!stream) {
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user