pdf-parser.js 3.0.7 → 4.5.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +105 -54
- package/dist/{afm-widths-Dxucrg7D.js → afm-widths-BTu0IDp2.cjs} +1517 -4
- package/dist/{afm-widths-DyDq56Ph.d.cts → afm-widths-CneRyu5l.d.cts} +1 -1
- package/dist/{afm-widths-DyDq56Ph.d.ts → afm-widths-CneRyu5l.d.ts} +1 -1
- package/dist/{afm-widths-BoeTOK2r.cjs → afm-widths-De_QMWgC.js} +1416 -51
- package/dist/afm-widths.cjs +1 -1
- package/dist/afm-widths.d.cts +1 -1
- package/dist/afm-widths.d.ts +1 -1
- package/dist/afm-widths.js +1 -1
- package/dist/annotations.cjs +104 -0
- package/dist/annotations.d.cts +9 -0
- package/dist/annotations.d.ts +9 -0
- package/dist/annotations.js +103 -0
- package/dist/attachments.cjs +65 -0
- package/dist/attachments.d.cts +8 -0
- package/dist/attachments.d.ts +8 -0
- package/dist/attachments.js +64 -0
- package/dist/builtin-encoding.cjs +221 -0
- package/dist/builtin-encoding.d.cts +8 -0
- package/dist/builtin-encoding.d.ts +8 -0
- package/dist/builtin-encoding.js +220 -0
- package/dist/bytes/flate.cjs +1 -1
- package/dist/bytes/flate.js +1 -1
- package/dist/cff.cjs +14 -0
- package/dist/cff.d.cts +4 -1
- package/dist/cff.d.ts +4 -1
- package/dist/cff.js +12 -1
- package/dist/cmap-table.cjs +76 -13
- package/dist/cmap-table.d.cts +9 -1
- package/dist/cmap-table.d.ts +9 -1
- package/dist/cmap-table.js +77 -15
- package/dist/codec.cjs +1 -1
- package/dist/codec.d.cts +134 -0
- package/dist/codec.d.ts +134 -0
- package/dist/codec.js +1 -1
- package/dist/content-read.cjs +1 -1
- package/dist/content-read.d.cts +3 -3
- package/dist/content-read.d.ts +3 -3
- package/dist/content-read.js +1 -1
- package/dist/content-write.cjs +32 -10
- package/dist/content-write.d.cts +12 -5
- package/dist/content-write.d.ts +12 -5
- package/dist/content-write.js +32 -10
- package/dist/crypto/random.cjs +9 -0
- package/dist/crypto/random.d.cts +4 -0
- package/dist/crypto/random.d.ts +4 -0
- package/dist/crypto/random.js +8 -0
- package/dist/diagnostics.d.cts +1 -1
- package/dist/diagnostics.d.ts +1 -1
- package/dist/document.cjs +12 -3
- package/dist/document.d.cts +3 -1
- package/dist/document.d.ts +3 -1
- package/dist/document.js +12 -3
- package/dist/{embedded-font-fREdbxnr.d.ts → embedded-font-B4p9a3O3.d.ts} +3 -1
- package/dist/{embedded-font-BU6Jgcof.d.cts → embedded-font-oc65VGlr.d.cts} +3 -1
- package/dist/embedded-font-write.cjs +1 -1
- package/dist/embedded-font-write.d.cts +3 -3
- package/dist/embedded-font-write.d.ts +3 -3
- package/dist/embedded-font-write.js +1 -1
- package/dist/embedded-font.cjs +46 -15
- package/dist/embedded-font.d.cts +1 -1
- package/dist/embedded-font.d.ts +1 -1
- package/dist/embedded-font.js +46 -15
- package/dist/encoding.cjs +10 -1
- package/dist/encoding.d.cts +10 -1
- package/dist/encoding.d.ts +10 -1
- package/dist/encoding.js +2 -2
- package/dist/encrypt-write.cjs +234 -0
- package/dist/encrypt-write.d.cts +31 -0
- package/dist/encrypt-write.d.ts +31 -0
- package/dist/encrypt-write.js +231 -0
- package/dist/encrypt.cjs +51 -21
- package/dist/encrypt.d.cts +19 -3
- package/dist/encrypt.d.ts +19 -3
- package/dist/encrypt.js +36 -22
- package/dist/filters.cjs +18 -14
- package/dist/filters.d.cts +1 -1
- package/dist/filters.d.ts +1 -1
- package/dist/filters.js +18 -14
- package/dist/font-read.cjs +68 -13
- package/dist/font-read.d.cts +1 -1
- package/dist/font-read.d.ts +1 -1
- package/dist/font-read.js +69 -14
- package/dist/font-registry.cjs +1 -1
- package/dist/font-registry.d.cts +4 -4
- package/dist/font-registry.d.ts +4 -4
- package/dist/font-registry.js +1 -1
- package/dist/font-substitutes.d.cts +1 -1
- package/dist/font-substitutes.d.ts +1 -1
- package/dist/font-tables.cjs +31 -0
- package/dist/font-tables.d.cts +3 -1
- package/dist/font-tables.d.ts +3 -1
- package/dist/font-tables.js +31 -2
- package/dist/fonts.d.cts +2 -2
- package/dist/fonts.d.ts +2 -2
- package/dist/form.cjs +138 -0
- package/dist/form.d.cts +9 -0
- package/dist/form.d.ts +9 -0
- package/dist/form.js +137 -0
- package/dist/gsub-table-BRTQ8EUW.d.ts +10 -0
- package/dist/gsub-table-URczLd85.d.cts +10 -0
- package/dist/gsub-table.cjs +225 -0
- package/dist/gsub-table.d.cts +2 -0
- package/dist/gsub-table.d.ts +2 -0
- package/dist/gsub-table.js +224 -0
- package/dist/image/ccitt-encode.cjs +119 -0
- package/dist/image/ccitt-encode.d.cts +9 -0
- package/dist/image/ccitt-encode.d.ts +9 -0
- package/dist/image/ccitt-encode.js +118 -0
- package/dist/image/ccitt.cjs +3 -0
- package/dist/image/ccitt.d.cts +4 -1
- package/dist/image/ccitt.d.ts +4 -1
- package/dist/image/ccitt.js +1 -1
- package/dist/image/jbig2-bitmap.d.cts +1 -1
- package/dist/image/jbig2-bitmap.d.ts +1 -1
- package/dist/image/jbig2.cjs +3 -1
- package/dist/image/jbig2.js +3 -1
- package/dist/image/jp2-boxes.d.cts +1 -1
- package/dist/image/jp2-boxes.d.ts +1 -1
- package/dist/image/jpeg2000-codestream.d.cts +3 -3
- package/dist/image/jpeg2000-codestream.d.ts +3 -3
- package/dist/image/jpeg2000-t1.d.cts +1 -1
- package/dist/image/jpeg2000-t1.d.ts +1 -1
- package/dist/image/jpeg2000.cjs +1 -0
- package/dist/image/jpeg2000.d.cts +3 -0
- package/dist/image/jpeg2000.d.ts +3 -0
- package/dist/image/jpeg2000.js +1 -0
- package/dist/image/png-decode.cjs +1 -1
- package/dist/image/png-decode.js +1 -1
- package/dist/image/png-filter.d.cts +1 -1
- package/dist/image/png-filter.d.ts +1 -1
- package/dist/images-read.cjs +18 -12
- package/dist/images-read.d.cts +2 -2
- package/dist/images-read.d.ts +2 -2
- package/dist/images-read.js +15 -9
- package/dist/index.cjs +17 -4
- package/dist/index.d.cts +7 -6
- package/dist/index.d.ts +7 -6
- package/dist/index.js +6 -5
- package/dist/interpret.cjs +178 -56
- package/dist/interpret.d.cts +27 -12
- package/dist/interpret.d.ts +27 -12
- package/dist/interpret.js +178 -56
- package/dist/layout.cjs +149 -2
- package/dist/layout.d.cts +394 -1
- package/dist/layout.d.ts +394 -1
- package/dist/layout.js +140 -4
- package/dist/lexer.d.cts +9 -9
- package/dist/lexer.d.ts +9 -9
- package/dist/math-content-write.cjs +1 -1
- package/dist/math-content-write.js +1 -1
- package/dist/math-font-write.cjs +1 -1
- package/dist/math-font-write.d.cts +1 -1
- package/dist/math-font-write.d.ts +1 -1
- package/dist/math-font-write.js +1 -1
- package/dist/math-font.cjs +2 -2
- package/dist/math-font.d.cts +1 -1
- package/dist/math-font.d.ts +1 -1
- package/dist/math-font.js +2 -2
- package/dist/{math-stretch-a_rHNRvc.d.ts → math-stretch-BbC2o4Br.d.ts} +1 -1
- package/dist/{math-stretch-E26z6byT.d.cts → math-stretch-C2JanDAz.d.cts} +1 -1
- package/dist/math-stretch.d.cts +1 -1
- package/dist/math-stretch.d.ts +1 -1
- package/dist/measure.cjs +1 -1
- package/dist/measure.d.cts +1 -1
- package/dist/measure.d.ts +1 -1
- package/dist/measure.js +1 -1
- package/dist/names.cjs +41 -0
- package/dist/names.d.cts +11 -0
- package/dist/names.d.ts +11 -0
- package/dist/names.js +40 -0
- package/dist/navigation.cjs +210 -0
- package/dist/navigation.d.cts +18 -0
- package/dist/navigation.d.ts +18 -0
- package/dist/navigation.js +207 -0
- package/dist/notes-annotation-author.cjs +5 -0
- package/dist/notes-annotation-author.d.cts +4 -0
- package/dist/notes-annotation-author.d.ts +4 -0
- package/dist/notes-annotation-author.js +4 -0
- package/dist/objects-B7HdMeWS.d.cts +59 -0
- package/dist/objects-B7HdMeWS.d.ts +59 -0
- package/dist/objects.d.cts +1 -58
- package/dist/objects.d.ts +1 -58
- package/dist/optional-content.cjs +63 -0
- package/dist/optional-content.d.cts +12 -0
- package/dist/optional-content.d.ts +12 -0
- package/dist/optional-content.js +62 -0
- package/dist/parse.cjs +1 -1
- package/dist/parse.d.cts +2 -2
- package/dist/parse.d.ts +2 -2
- package/dist/parse.js +1 -1
- package/dist/pdf-text.cjs +21 -0
- package/dist/pdf-text.d.cts +5 -0
- package/dist/pdf-text.d.ts +5 -0
- package/dist/pdf-text.js +19 -0
- package/dist/predictors.d.cts +1 -1
- package/dist/predictors.d.ts +1 -1
- package/dist/read.cjs +287 -72
- package/dist/read.d.cts +2 -4
- package/dist/read.d.ts +2 -4
- package/dist/read.js +284 -67
- package/dist/serialize.cjs +5 -1
- package/dist/serialize.d.cts +3 -2
- package/dist/serialize.d.ts +3 -2
- package/dist/serialize.js +5 -2
- package/dist/sfnt-subset.cjs +10 -3
- package/dist/sfnt-subset.d.cts +1 -1
- package/dist/sfnt-subset.d.ts +1 -1
- package/dist/sfnt-subset.js +10 -3
- package/dist/structure.cjs +184 -0
- package/dist/structure.d.cts +12 -0
- package/dist/structure.d.ts +12 -0
- package/dist/structure.js +183 -0
- package/dist/tounicode.cjs +8 -3
- package/dist/tounicode.d.cts +2 -2
- package/dist/tounicode.d.ts +2 -2
- package/dist/tounicode.js +8 -3
- package/dist/util/base64.cjs +4 -4
- package/dist/util/base64.js +4 -4
- package/dist/winansi.cjs +1 -1
- package/dist/winansi.d.cts +1 -1
- package/dist/winansi.d.ts +1 -1
- package/dist/winansi.js +1 -1
- package/dist/write.cjs +464 -21
- package/dist/write.d.cts +4 -3
- package/dist/write.d.ts +4 -3
- package/dist/write.js +464 -20
- package/dist/xmp.cjs +46 -0
- package/dist/xmp.d.cts +14 -0
- package/dist/xmp.d.ts +14 -0
- package/dist/xmp.js +45 -0
- package/dist/xref.cjs +2 -2
- package/dist/xref.d.cts +3 -3
- package/dist/xref.d.ts +3 -3
- package/dist/xref.js +2 -2
- package/package.json +46 -31
- package/dist/image/png-encode.cjs +0 -64
- package/dist/image/png-encode.d.cts +0 -8
- package/dist/image/png-encode.d.ts +0 -8
- package/dist/image/png-encode.js +0 -63
|
@@ -0,0 +1,210 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_objects = require("./objects.cjs");
|
|
3
|
+
const require_pdf_text = require("./pdf-text.cjs");
|
|
4
|
+
const require_names = require("./names.cjs");
|
|
5
|
+
//#region src/navigation.ts
|
|
6
|
+
function coordinateAt(arr, index) {
|
|
7
|
+
return require_objects.asNumber(arr[index]);
|
|
8
|
+
}
|
|
9
|
+
function parseDestination(value, resolver, pageIndex, sink) {
|
|
10
|
+
const arr = require_objects.asArray(resolver.resolve(value));
|
|
11
|
+
if (arr === void 0 || arr.length < 2) {
|
|
12
|
+
sink({
|
|
13
|
+
code: "pdf/destination-invalid",
|
|
14
|
+
severity: "warning",
|
|
15
|
+
message: "a destination is not a display destination array; skipping it"
|
|
16
|
+
});
|
|
17
|
+
return;
|
|
18
|
+
}
|
|
19
|
+
const pageEl = arr[0];
|
|
20
|
+
const resolvedPageIndex = pageEl?.kind === "number" ? Number.isInteger(pageEl.value) && pageEl.value >= 0 ? pageEl.value : void 0 : pageIndex(pageEl);
|
|
21
|
+
if (resolvedPageIndex === void 0) {
|
|
22
|
+
sink({
|
|
23
|
+
code: "pdf/destination-invalid",
|
|
24
|
+
severity: "warning",
|
|
25
|
+
message: "a destination names a page that is not in the document's page tree; skipping it"
|
|
26
|
+
});
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
const type = require_objects.asName(arr[1]);
|
|
30
|
+
if (type === "XYZ") return {
|
|
31
|
+
pageIndex: resolvedPageIndex,
|
|
32
|
+
target: {
|
|
33
|
+
kind: "xyz",
|
|
34
|
+
...optionalCoords(arr, [
|
|
35
|
+
["leftPt", 2],
|
|
36
|
+
["topPt", 3],
|
|
37
|
+
["zoom", 4]
|
|
38
|
+
])
|
|
39
|
+
}
|
|
40
|
+
};
|
|
41
|
+
if (type === "Fit") return {
|
|
42
|
+
pageIndex: resolvedPageIndex,
|
|
43
|
+
target: { kind: "fit" }
|
|
44
|
+
};
|
|
45
|
+
if (type === "FitH") return {
|
|
46
|
+
pageIndex: resolvedPageIndex,
|
|
47
|
+
target: {
|
|
48
|
+
kind: "fitH",
|
|
49
|
+
...optionalCoords(arr, [["topPt", 2]])
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
if (type === "FitV") return {
|
|
53
|
+
pageIndex: resolvedPageIndex,
|
|
54
|
+
target: {
|
|
55
|
+
kind: "fitV",
|
|
56
|
+
...optionalCoords(arr, [["leftPt", 2]])
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
if (type === "FitR") return {
|
|
60
|
+
pageIndex: resolvedPageIndex,
|
|
61
|
+
target: {
|
|
62
|
+
kind: "fitR",
|
|
63
|
+
...optionalCoords(arr, [
|
|
64
|
+
["leftPt", 2],
|
|
65
|
+
["bottomPt", 3],
|
|
66
|
+
["rightPt", 4],
|
|
67
|
+
["topPt", 5]
|
|
68
|
+
])
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
if (type === "FitB") return {
|
|
72
|
+
pageIndex: resolvedPageIndex,
|
|
73
|
+
target: { kind: "fitB" }
|
|
74
|
+
};
|
|
75
|
+
if (type === "FitBH") return {
|
|
76
|
+
pageIndex: resolvedPageIndex,
|
|
77
|
+
target: {
|
|
78
|
+
kind: "fitBH",
|
|
79
|
+
...optionalCoords(arr, [["topPt", 2]])
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
if (type === "FitBV") return {
|
|
83
|
+
pageIndex: resolvedPageIndex,
|
|
84
|
+
target: {
|
|
85
|
+
kind: "fitBV",
|
|
86
|
+
...optionalCoords(arr, [["leftPt", 2]])
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
sink({
|
|
90
|
+
code: "pdf/destination-invalid",
|
|
91
|
+
severity: "warning",
|
|
92
|
+
message: `a destination carries unknown display type /${type ?? "?"}; skipping it`
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
function optionalCoords(arr, fields) {
|
|
96
|
+
const out = {};
|
|
97
|
+
for (const [field, index] of fields) {
|
|
98
|
+
const value = coordinateAt(arr, index);
|
|
99
|
+
if (value !== void 0) out[field] = value;
|
|
100
|
+
}
|
|
101
|
+
return out;
|
|
102
|
+
}
|
|
103
|
+
function createDestinationRegistry(catalog, resolver, pageIndex, sink) {
|
|
104
|
+
const entries = [];
|
|
105
|
+
const byName = /* @__PURE__ */ new Map();
|
|
106
|
+
const add = (name, parsed) => {
|
|
107
|
+
const entry = {
|
|
108
|
+
name,
|
|
109
|
+
pageIndex: parsed.pageIndex,
|
|
110
|
+
target: parsed.target
|
|
111
|
+
};
|
|
112
|
+
entries.push(entry);
|
|
113
|
+
byName.set(name, entry);
|
|
114
|
+
};
|
|
115
|
+
const destsDict = resolver.resolveDict(require_objects.dictGet(catalog, "Dests"));
|
|
116
|
+
if (destsDict !== void 0) for (const [name, value] of destsDict.entries) {
|
|
117
|
+
if (byName.has(name)) {
|
|
118
|
+
sink({
|
|
119
|
+
code: "pdf/destination-duplicate",
|
|
120
|
+
severity: "warning",
|
|
121
|
+
message: `destination name "${name}" is declared more than once; keeping the first`
|
|
122
|
+
});
|
|
123
|
+
continue;
|
|
124
|
+
}
|
|
125
|
+
const parsed = parseDestination(value, resolver, pageIndex, sink);
|
|
126
|
+
if (parsed !== void 0) add(name, parsed);
|
|
127
|
+
}
|
|
128
|
+
const namesRoot = resolver.resolveDict(require_objects.dictGet(catalog, "Names"));
|
|
129
|
+
for (const entry of require_names.walkNameTree(namesRoot === void 0 ? void 0 : require_objects.dictGet(namesRoot, "Dests"), resolver, sink)) {
|
|
130
|
+
if (byName.has(entry.name)) {
|
|
131
|
+
sink({
|
|
132
|
+
code: "pdf/destination-duplicate",
|
|
133
|
+
severity: "warning",
|
|
134
|
+
message: `destination name "${entry.name}" is declared more than once; keeping the first`
|
|
135
|
+
});
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
const parsed = parseDestination(entry.value, resolver, pageIndex, sink);
|
|
139
|
+
if (parsed !== void 0) add(entry.name, parsed);
|
|
140
|
+
}
|
|
141
|
+
const minted = (obj) => {
|
|
142
|
+
const parsed = parseDestination(obj, resolver, pageIndex, sink);
|
|
143
|
+
if (parsed === void 0) return;
|
|
144
|
+
let n = 1;
|
|
145
|
+
while (byName.has(`dest${n}`)) n++;
|
|
146
|
+
const name = `dest${n}`;
|
|
147
|
+
add(name, parsed);
|
|
148
|
+
return name;
|
|
149
|
+
};
|
|
150
|
+
return {
|
|
151
|
+
entries,
|
|
152
|
+
intern(obj) {
|
|
153
|
+
const resolved = resolver.resolve(obj);
|
|
154
|
+
if (resolved?.kind === "string") {
|
|
155
|
+
const name = require_pdf_text.decodePdfString(resolved.bytes);
|
|
156
|
+
if (byName.has(name)) return name;
|
|
157
|
+
sink({
|
|
158
|
+
code: "pdf/destination-unresolved",
|
|
159
|
+
severity: "warning",
|
|
160
|
+
message: `a destination names "${name}", which no /Dests or /Names /Dests entry declares`
|
|
161
|
+
});
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
if (resolved?.kind === "array") return minted(resolved);
|
|
165
|
+
}
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
function readOutline(catalog, registry, resolver, sink) {
|
|
169
|
+
const root = resolver.resolveDict(require_objects.dictGet(catalog, "Outlines"));
|
|
170
|
+
const first = root === void 0 ? void 0 : resolver.resolveDict(require_objects.dictGet(root, "First"));
|
|
171
|
+
if (first === void 0) return [];
|
|
172
|
+
const items = [];
|
|
173
|
+
walkOutlineSiblings(first, items, registry, resolver, sink, /* @__PURE__ */ new Set());
|
|
174
|
+
return items;
|
|
175
|
+
}
|
|
176
|
+
function walkOutlineSiblings(node, out, registry, resolver, sink, visited) {
|
|
177
|
+
let current = node;
|
|
178
|
+
while (current !== void 0) {
|
|
179
|
+
if (visited.has(current)) {
|
|
180
|
+
sink({
|
|
181
|
+
code: "pdf/outline-cycle",
|
|
182
|
+
severity: "warning",
|
|
183
|
+
message: "the outline contains a cycle; stopping the sibling chain at the repeated item"
|
|
184
|
+
});
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
visited.add(current);
|
|
188
|
+
const titleObj = require_objects.dictGet(current, "Title");
|
|
189
|
+
const children = [];
|
|
190
|
+
const childFirst = resolver.resolveDict(require_objects.dictGet(current, "First"));
|
|
191
|
+
if (childFirst !== void 0) walkOutlineSiblings(childFirst, children, registry, resolver, sink, visited);
|
|
192
|
+
const destination = internOutlineDestination(current, registry, resolver);
|
|
193
|
+
out.push({
|
|
194
|
+
title: titleObj?.kind === "string" ? require_pdf_text.decodePdfString(titleObj.bytes) : "",
|
|
195
|
+
...destination !== void 0 ? { destination } : {},
|
|
196
|
+
children
|
|
197
|
+
});
|
|
198
|
+
current = resolver.resolveDict(require_objects.dictGet(current, "Next"));
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
function internOutlineDestination(node, registry, resolver) {
|
|
202
|
+
const dest = require_objects.dictGet(node, "Dest");
|
|
203
|
+
if (dest !== void 0) return registry.intern(dest);
|
|
204
|
+
const action = resolver.resolveDict(require_objects.dictGet(node, "A"));
|
|
205
|
+
if (action !== void 0 && require_objects.asName(require_objects.dictGet(action, "S")) === "GoTo") return registry.intern(require_objects.dictGet(action, "D"));
|
|
206
|
+
}
|
|
207
|
+
//#endregion
|
|
208
|
+
exports.createDestinationRegistry = createDestinationRegistry;
|
|
209
|
+
exports.parseDestination = parseDestination;
|
|
210
|
+
exports.readOutline = readOutline;
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { PdfDiagnosticSink } from "./diagnostics.cjs";
|
|
2
|
+
import { n as PdfDict, r as PdfObject } from "./objects-B7HdMeWS.cjs";
|
|
3
|
+
import { PdfObjectResolver } from "./interpret.cjs";
|
|
4
|
+
import { LayoutDestination, LayoutDestinationTarget, LayoutOutlineItem } from "./layout.cjs";
|
|
5
|
+
//#region src/navigation.d.ts
|
|
6
|
+
type PageIndexLookup = (obj: PdfObject | undefined) => number | undefined;
|
|
7
|
+
declare function parseDestination(value: PdfObject | undefined, resolver: PdfObjectResolver, pageIndex: PageIndexLookup, sink: PdfDiagnosticSink): {
|
|
8
|
+
pageIndex: number;
|
|
9
|
+
target: LayoutDestinationTarget;
|
|
10
|
+
} | undefined;
|
|
11
|
+
interface DestinationRegistry {
|
|
12
|
+
readonly entries: readonly LayoutDestination[];
|
|
13
|
+
intern(obj: PdfObject | undefined): string | undefined;
|
|
14
|
+
}
|
|
15
|
+
declare function createDestinationRegistry(catalog: PdfDict, resolver: PdfObjectResolver, pageIndex: PageIndexLookup, sink: PdfDiagnosticSink): DestinationRegistry;
|
|
16
|
+
declare function readOutline(catalog: PdfDict, registry: DestinationRegistry, resolver: PdfObjectResolver, sink: PdfDiagnosticSink): LayoutOutlineItem[];
|
|
17
|
+
//#endregion
|
|
18
|
+
export { DestinationRegistry, PageIndexLookup, createDestinationRegistry, parseDestination, readOutline };
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { PdfDiagnosticSink } from "./diagnostics.js";
|
|
2
|
+
import { n as PdfDict, r as PdfObject } from "./objects-B7HdMeWS.js";
|
|
3
|
+
import { PdfObjectResolver } from "./interpret.js";
|
|
4
|
+
import { LayoutDestination, LayoutDestinationTarget, LayoutOutlineItem } from "./layout.js";
|
|
5
|
+
//#region src/navigation.d.ts
|
|
6
|
+
type PageIndexLookup = (obj: PdfObject | undefined) => number | undefined;
|
|
7
|
+
declare function parseDestination(value: PdfObject | undefined, resolver: PdfObjectResolver, pageIndex: PageIndexLookup, sink: PdfDiagnosticSink): {
|
|
8
|
+
pageIndex: number;
|
|
9
|
+
target: LayoutDestinationTarget;
|
|
10
|
+
} | undefined;
|
|
11
|
+
interface DestinationRegistry {
|
|
12
|
+
readonly entries: readonly LayoutDestination[];
|
|
13
|
+
intern(obj: PdfObject | undefined): string | undefined;
|
|
14
|
+
}
|
|
15
|
+
declare function createDestinationRegistry(catalog: PdfDict, resolver: PdfObjectResolver, pageIndex: PageIndexLookup, sink: PdfDiagnosticSink): DestinationRegistry;
|
|
16
|
+
declare function readOutline(catalog: PdfDict, registry: DestinationRegistry, resolver: PdfObjectResolver, sink: PdfDiagnosticSink): LayoutOutlineItem[];
|
|
17
|
+
//#endregion
|
|
18
|
+
export { DestinationRegistry, PageIndexLookup, createDestinationRegistry, parseDestination, readOutline };
|
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { asArray, asName, asNumber, dictGet } from "./objects.js";
|
|
2
|
+
import { decodePdfString } from "./pdf-text.js";
|
|
3
|
+
import { walkNameTree } from "./names.js";
|
|
4
|
+
//#region src/navigation.ts
|
|
5
|
+
function coordinateAt(arr, index) {
|
|
6
|
+
return asNumber(arr[index]);
|
|
7
|
+
}
|
|
8
|
+
function parseDestination(value, resolver, pageIndex, sink) {
|
|
9
|
+
const arr = asArray(resolver.resolve(value));
|
|
10
|
+
if (arr === void 0 || arr.length < 2) {
|
|
11
|
+
sink({
|
|
12
|
+
code: "pdf/destination-invalid",
|
|
13
|
+
severity: "warning",
|
|
14
|
+
message: "a destination is not a display destination array; skipping it"
|
|
15
|
+
});
|
|
16
|
+
return;
|
|
17
|
+
}
|
|
18
|
+
const pageEl = arr[0];
|
|
19
|
+
const resolvedPageIndex = pageEl?.kind === "number" ? Number.isInteger(pageEl.value) && pageEl.value >= 0 ? pageEl.value : void 0 : pageIndex(pageEl);
|
|
20
|
+
if (resolvedPageIndex === void 0) {
|
|
21
|
+
sink({
|
|
22
|
+
code: "pdf/destination-invalid",
|
|
23
|
+
severity: "warning",
|
|
24
|
+
message: "a destination names a page that is not in the document's page tree; skipping it"
|
|
25
|
+
});
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const type = asName(arr[1]);
|
|
29
|
+
if (type === "XYZ") return {
|
|
30
|
+
pageIndex: resolvedPageIndex,
|
|
31
|
+
target: {
|
|
32
|
+
kind: "xyz",
|
|
33
|
+
...optionalCoords(arr, [
|
|
34
|
+
["leftPt", 2],
|
|
35
|
+
["topPt", 3],
|
|
36
|
+
["zoom", 4]
|
|
37
|
+
])
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
if (type === "Fit") return {
|
|
41
|
+
pageIndex: resolvedPageIndex,
|
|
42
|
+
target: { kind: "fit" }
|
|
43
|
+
};
|
|
44
|
+
if (type === "FitH") return {
|
|
45
|
+
pageIndex: resolvedPageIndex,
|
|
46
|
+
target: {
|
|
47
|
+
kind: "fitH",
|
|
48
|
+
...optionalCoords(arr, [["topPt", 2]])
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
if (type === "FitV") return {
|
|
52
|
+
pageIndex: resolvedPageIndex,
|
|
53
|
+
target: {
|
|
54
|
+
kind: "fitV",
|
|
55
|
+
...optionalCoords(arr, [["leftPt", 2]])
|
|
56
|
+
}
|
|
57
|
+
};
|
|
58
|
+
if (type === "FitR") return {
|
|
59
|
+
pageIndex: resolvedPageIndex,
|
|
60
|
+
target: {
|
|
61
|
+
kind: "fitR",
|
|
62
|
+
...optionalCoords(arr, [
|
|
63
|
+
["leftPt", 2],
|
|
64
|
+
["bottomPt", 3],
|
|
65
|
+
["rightPt", 4],
|
|
66
|
+
["topPt", 5]
|
|
67
|
+
])
|
|
68
|
+
}
|
|
69
|
+
};
|
|
70
|
+
if (type === "FitB") return {
|
|
71
|
+
pageIndex: resolvedPageIndex,
|
|
72
|
+
target: { kind: "fitB" }
|
|
73
|
+
};
|
|
74
|
+
if (type === "FitBH") return {
|
|
75
|
+
pageIndex: resolvedPageIndex,
|
|
76
|
+
target: {
|
|
77
|
+
kind: "fitBH",
|
|
78
|
+
...optionalCoords(arr, [["topPt", 2]])
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
if (type === "FitBV") return {
|
|
82
|
+
pageIndex: resolvedPageIndex,
|
|
83
|
+
target: {
|
|
84
|
+
kind: "fitBV",
|
|
85
|
+
...optionalCoords(arr, [["leftPt", 2]])
|
|
86
|
+
}
|
|
87
|
+
};
|
|
88
|
+
sink({
|
|
89
|
+
code: "pdf/destination-invalid",
|
|
90
|
+
severity: "warning",
|
|
91
|
+
message: `a destination carries unknown display type /${type ?? "?"}; skipping it`
|
|
92
|
+
});
|
|
93
|
+
}
|
|
94
|
+
function optionalCoords(arr, fields) {
|
|
95
|
+
const out = {};
|
|
96
|
+
for (const [field, index] of fields) {
|
|
97
|
+
const value = coordinateAt(arr, index);
|
|
98
|
+
if (value !== void 0) out[field] = value;
|
|
99
|
+
}
|
|
100
|
+
return out;
|
|
101
|
+
}
|
|
102
|
+
function createDestinationRegistry(catalog, resolver, pageIndex, sink) {
|
|
103
|
+
const entries = [];
|
|
104
|
+
const byName = /* @__PURE__ */ new Map();
|
|
105
|
+
const add = (name, parsed) => {
|
|
106
|
+
const entry = {
|
|
107
|
+
name,
|
|
108
|
+
pageIndex: parsed.pageIndex,
|
|
109
|
+
target: parsed.target
|
|
110
|
+
};
|
|
111
|
+
entries.push(entry);
|
|
112
|
+
byName.set(name, entry);
|
|
113
|
+
};
|
|
114
|
+
const destsDict = resolver.resolveDict(dictGet(catalog, "Dests"));
|
|
115
|
+
if (destsDict !== void 0) for (const [name, value] of destsDict.entries) {
|
|
116
|
+
if (byName.has(name)) {
|
|
117
|
+
sink({
|
|
118
|
+
code: "pdf/destination-duplicate",
|
|
119
|
+
severity: "warning",
|
|
120
|
+
message: `destination name "${name}" is declared more than once; keeping the first`
|
|
121
|
+
});
|
|
122
|
+
continue;
|
|
123
|
+
}
|
|
124
|
+
const parsed = parseDestination(value, resolver, pageIndex, sink);
|
|
125
|
+
if (parsed !== void 0) add(name, parsed);
|
|
126
|
+
}
|
|
127
|
+
const namesRoot = resolver.resolveDict(dictGet(catalog, "Names"));
|
|
128
|
+
for (const entry of walkNameTree(namesRoot === void 0 ? void 0 : dictGet(namesRoot, "Dests"), resolver, sink)) {
|
|
129
|
+
if (byName.has(entry.name)) {
|
|
130
|
+
sink({
|
|
131
|
+
code: "pdf/destination-duplicate",
|
|
132
|
+
severity: "warning",
|
|
133
|
+
message: `destination name "${entry.name}" is declared more than once; keeping the first`
|
|
134
|
+
});
|
|
135
|
+
continue;
|
|
136
|
+
}
|
|
137
|
+
const parsed = parseDestination(entry.value, resolver, pageIndex, sink);
|
|
138
|
+
if (parsed !== void 0) add(entry.name, parsed);
|
|
139
|
+
}
|
|
140
|
+
const minted = (obj) => {
|
|
141
|
+
const parsed = parseDestination(obj, resolver, pageIndex, sink);
|
|
142
|
+
if (parsed === void 0) return;
|
|
143
|
+
let n = 1;
|
|
144
|
+
while (byName.has(`dest${n}`)) n++;
|
|
145
|
+
const name = `dest${n}`;
|
|
146
|
+
add(name, parsed);
|
|
147
|
+
return name;
|
|
148
|
+
};
|
|
149
|
+
return {
|
|
150
|
+
entries,
|
|
151
|
+
intern(obj) {
|
|
152
|
+
const resolved = resolver.resolve(obj);
|
|
153
|
+
if (resolved?.kind === "string") {
|
|
154
|
+
const name = decodePdfString(resolved.bytes);
|
|
155
|
+
if (byName.has(name)) return name;
|
|
156
|
+
sink({
|
|
157
|
+
code: "pdf/destination-unresolved",
|
|
158
|
+
severity: "warning",
|
|
159
|
+
message: `a destination names "${name}", which no /Dests or /Names /Dests entry declares`
|
|
160
|
+
});
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
if (resolved?.kind === "array") return minted(resolved);
|
|
164
|
+
}
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
function readOutline(catalog, registry, resolver, sink) {
|
|
168
|
+
const root = resolver.resolveDict(dictGet(catalog, "Outlines"));
|
|
169
|
+
const first = root === void 0 ? void 0 : resolver.resolveDict(dictGet(root, "First"));
|
|
170
|
+
if (first === void 0) return [];
|
|
171
|
+
const items = [];
|
|
172
|
+
walkOutlineSiblings(first, items, registry, resolver, sink, /* @__PURE__ */ new Set());
|
|
173
|
+
return items;
|
|
174
|
+
}
|
|
175
|
+
function walkOutlineSiblings(node, out, registry, resolver, sink, visited) {
|
|
176
|
+
let current = node;
|
|
177
|
+
while (current !== void 0) {
|
|
178
|
+
if (visited.has(current)) {
|
|
179
|
+
sink({
|
|
180
|
+
code: "pdf/outline-cycle",
|
|
181
|
+
severity: "warning",
|
|
182
|
+
message: "the outline contains a cycle; stopping the sibling chain at the repeated item"
|
|
183
|
+
});
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
visited.add(current);
|
|
187
|
+
const titleObj = dictGet(current, "Title");
|
|
188
|
+
const children = [];
|
|
189
|
+
const childFirst = resolver.resolveDict(dictGet(current, "First"));
|
|
190
|
+
if (childFirst !== void 0) walkOutlineSiblings(childFirst, children, registry, resolver, sink, visited);
|
|
191
|
+
const destination = internOutlineDestination(current, registry, resolver);
|
|
192
|
+
out.push({
|
|
193
|
+
title: titleObj?.kind === "string" ? decodePdfString(titleObj.bytes) : "",
|
|
194
|
+
...destination !== void 0 ? { destination } : {},
|
|
195
|
+
children
|
|
196
|
+
});
|
|
197
|
+
current = resolver.resolveDict(dictGet(current, "Next"));
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
function internOutlineDestination(node, registry, resolver) {
|
|
201
|
+
const dest = dictGet(node, "Dest");
|
|
202
|
+
if (dest !== void 0) return registry.intern(dest);
|
|
203
|
+
const action = resolver.resolveDict(dictGet(node, "A"));
|
|
204
|
+
if (action !== void 0 && asName(dictGet(action, "S")) === "GoTo") return registry.intern(dictGet(action, "D"));
|
|
205
|
+
}
|
|
206
|
+
//#endregion
|
|
207
|
+
export { createDestinationRegistry, parseDestination, readOutline };
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
//#region src/objects.d.ts
|
|
2
|
+
type PdfObject = {
|
|
3
|
+
kind: "null";
|
|
4
|
+
} | {
|
|
5
|
+
kind: "bool";
|
|
6
|
+
value: boolean;
|
|
7
|
+
} | {
|
|
8
|
+
kind: "number";
|
|
9
|
+
value: number;
|
|
10
|
+
} | {
|
|
11
|
+
kind: "name";
|
|
12
|
+
name: string;
|
|
13
|
+
} | {
|
|
14
|
+
kind: "string";
|
|
15
|
+
bytes: Uint8Array<ArrayBuffer>;
|
|
16
|
+
hex: boolean;
|
|
17
|
+
} | {
|
|
18
|
+
kind: "array";
|
|
19
|
+
items: PdfObject[];
|
|
20
|
+
} | {
|
|
21
|
+
kind: "dict";
|
|
22
|
+
entries: Map<string, PdfObject>;
|
|
23
|
+
} | {
|
|
24
|
+
kind: "stream";
|
|
25
|
+
dict: PdfDict;
|
|
26
|
+
raw: Uint8Array<ArrayBuffer>;
|
|
27
|
+
} | {
|
|
28
|
+
kind: "ref";
|
|
29
|
+
num: number;
|
|
30
|
+
gen: number;
|
|
31
|
+
};
|
|
32
|
+
type PdfDict = Extract<PdfObject, {
|
|
33
|
+
kind: "dict";
|
|
34
|
+
}>;
|
|
35
|
+
type PdfArray = Extract<PdfObject, {
|
|
36
|
+
kind: "array";
|
|
37
|
+
}>;
|
|
38
|
+
type PdfStream = Extract<PdfObject, {
|
|
39
|
+
kind: "stream";
|
|
40
|
+
}>;
|
|
41
|
+
declare function pdfNull(): PdfObject;
|
|
42
|
+
declare function pdfBool(value: boolean): PdfObject;
|
|
43
|
+
declare function pdfNum(value: number): PdfObject;
|
|
44
|
+
declare function pdfName(name: string): PdfObject;
|
|
45
|
+
declare function pdfHexString(bytes: Uint8Array<ArrayBuffer>): PdfObject;
|
|
46
|
+
declare function pdfLiteralString(bytes: Uint8Array<ArrayBuffer>): PdfObject;
|
|
47
|
+
declare function pdfArray(items: PdfObject[]): PdfObject;
|
|
48
|
+
declare function pdfDict(entries: Record<string, PdfObject> | Map<string, PdfObject>): PdfDict;
|
|
49
|
+
declare function pdfStream(dict: PdfDict, raw: Uint8Array<ArrayBuffer>): PdfObject;
|
|
50
|
+
declare function pdfRef(num: number, gen: number): PdfObject;
|
|
51
|
+
declare function isName(obj: PdfObject | undefined, name: string): boolean;
|
|
52
|
+
declare function asNumber(obj: PdfObject | undefined): number | undefined;
|
|
53
|
+
declare function asName(obj: PdfObject | undefined): string | undefined;
|
|
54
|
+
declare function asBool(obj: PdfObject | undefined): boolean | undefined;
|
|
55
|
+
declare function asArray(obj: PdfObject | undefined): PdfObject[] | undefined;
|
|
56
|
+
declare function asDict(obj: PdfObject | undefined): PdfDict | undefined;
|
|
57
|
+
declare function dictGet(dict: PdfDict, key: string): PdfObject | undefined;
|
|
58
|
+
//#endregion
|
|
59
|
+
export { pdfName as _, asArray as a, pdfRef as b, asName as c, isName as d, pdfArray as f, pdfLiteralString as g, pdfHexString as h, PdfStream as i, asNumber as l, pdfDict as m, PdfDict as n, asBool as o, pdfBool as p, PdfObject as r, asDict as s, PdfArray as t, dictGet as u, pdfNull as v, pdfStream as x, pdfNum as y };
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
//#region src/objects.d.ts
|
|
2
|
+
type PdfObject = {
|
|
3
|
+
kind: "null";
|
|
4
|
+
} | {
|
|
5
|
+
kind: "bool";
|
|
6
|
+
value: boolean;
|
|
7
|
+
} | {
|
|
8
|
+
kind: "number";
|
|
9
|
+
value: number;
|
|
10
|
+
} | {
|
|
11
|
+
kind: "name";
|
|
12
|
+
name: string;
|
|
13
|
+
} | {
|
|
14
|
+
kind: "string";
|
|
15
|
+
bytes: Uint8Array<ArrayBuffer>;
|
|
16
|
+
hex: boolean;
|
|
17
|
+
} | {
|
|
18
|
+
kind: "array";
|
|
19
|
+
items: PdfObject[];
|
|
20
|
+
} | {
|
|
21
|
+
kind: "dict";
|
|
22
|
+
entries: Map<string, PdfObject>;
|
|
23
|
+
} | {
|
|
24
|
+
kind: "stream";
|
|
25
|
+
dict: PdfDict;
|
|
26
|
+
raw: Uint8Array<ArrayBuffer>;
|
|
27
|
+
} | {
|
|
28
|
+
kind: "ref";
|
|
29
|
+
num: number;
|
|
30
|
+
gen: number;
|
|
31
|
+
};
|
|
32
|
+
type PdfDict = Extract<PdfObject, {
|
|
33
|
+
kind: "dict";
|
|
34
|
+
}>;
|
|
35
|
+
type PdfArray = Extract<PdfObject, {
|
|
36
|
+
kind: "array";
|
|
37
|
+
}>;
|
|
38
|
+
type PdfStream = Extract<PdfObject, {
|
|
39
|
+
kind: "stream";
|
|
40
|
+
}>;
|
|
41
|
+
declare function pdfNull(): PdfObject;
|
|
42
|
+
declare function pdfBool(value: boolean): PdfObject;
|
|
43
|
+
declare function pdfNum(value: number): PdfObject;
|
|
44
|
+
declare function pdfName(name: string): PdfObject;
|
|
45
|
+
declare function pdfHexString(bytes: Uint8Array<ArrayBuffer>): PdfObject;
|
|
46
|
+
declare function pdfLiteralString(bytes: Uint8Array<ArrayBuffer>): PdfObject;
|
|
47
|
+
declare function pdfArray(items: PdfObject[]): PdfObject;
|
|
48
|
+
declare function pdfDict(entries: Record<string, PdfObject> | Map<string, PdfObject>): PdfDict;
|
|
49
|
+
declare function pdfStream(dict: PdfDict, raw: Uint8Array<ArrayBuffer>): PdfObject;
|
|
50
|
+
declare function pdfRef(num: number, gen: number): PdfObject;
|
|
51
|
+
declare function isName(obj: PdfObject | undefined, name: string): boolean;
|
|
52
|
+
declare function asNumber(obj: PdfObject | undefined): number | undefined;
|
|
53
|
+
declare function asName(obj: PdfObject | undefined): string | undefined;
|
|
54
|
+
declare function asBool(obj: PdfObject | undefined): boolean | undefined;
|
|
55
|
+
declare function asArray(obj: PdfObject | undefined): PdfObject[] | undefined;
|
|
56
|
+
declare function asDict(obj: PdfObject | undefined): PdfDict | undefined;
|
|
57
|
+
declare function dictGet(dict: PdfDict, key: string): PdfObject | undefined;
|
|
58
|
+
//#endregion
|
|
59
|
+
export { pdfName as _, asArray as a, pdfRef as b, asName as c, isName as d, pdfArray as f, pdfLiteralString as g, pdfHexString as h, PdfStream as i, asNumber as l, pdfDict as m, PdfDict as n, asBool as o, pdfBool as p, PdfObject as r, asDict as s, PdfArray as t, dictGet as u, pdfNull as v, pdfStream as x, pdfNum as y };
|
package/dist/objects.d.cts
CHANGED
|
@@ -1,59 +1,2 @@
|
|
|
1
|
-
|
|
2
|
-
type PdfObject = {
|
|
3
|
-
kind: 'null';
|
|
4
|
-
} | {
|
|
5
|
-
kind: 'bool';
|
|
6
|
-
value: boolean;
|
|
7
|
-
} | {
|
|
8
|
-
kind: 'number';
|
|
9
|
-
value: number;
|
|
10
|
-
} | {
|
|
11
|
-
kind: 'name';
|
|
12
|
-
name: string;
|
|
13
|
-
} | {
|
|
14
|
-
kind: 'string';
|
|
15
|
-
bytes: Uint8Array<ArrayBuffer>;
|
|
16
|
-
hex: boolean;
|
|
17
|
-
} | {
|
|
18
|
-
kind: 'array';
|
|
19
|
-
items: PdfObject[];
|
|
20
|
-
} | {
|
|
21
|
-
kind: 'dict';
|
|
22
|
-
entries: Map<string, PdfObject>;
|
|
23
|
-
} | {
|
|
24
|
-
kind: 'stream';
|
|
25
|
-
dict: PdfDict;
|
|
26
|
-
raw: Uint8Array<ArrayBuffer>;
|
|
27
|
-
} | {
|
|
28
|
-
kind: 'ref';
|
|
29
|
-
num: number;
|
|
30
|
-
gen: number;
|
|
31
|
-
};
|
|
32
|
-
type PdfDict = Extract<PdfObject, {
|
|
33
|
-
kind: 'dict';
|
|
34
|
-
}>;
|
|
35
|
-
type PdfArray = Extract<PdfObject, {
|
|
36
|
-
kind: 'array';
|
|
37
|
-
}>;
|
|
38
|
-
type PdfStream = Extract<PdfObject, {
|
|
39
|
-
kind: 'stream';
|
|
40
|
-
}>;
|
|
41
|
-
declare function pdfNull(): PdfObject;
|
|
42
|
-
declare function pdfBool(value: boolean): PdfObject;
|
|
43
|
-
declare function pdfNum(value: number): PdfObject;
|
|
44
|
-
declare function pdfName(name: string): PdfObject;
|
|
45
|
-
declare function pdfHexString(bytes: Uint8Array<ArrayBuffer>): PdfObject;
|
|
46
|
-
declare function pdfLiteralString(bytes: Uint8Array<ArrayBuffer>): PdfObject;
|
|
47
|
-
declare function pdfArray(items: PdfObject[]): PdfObject;
|
|
48
|
-
declare function pdfDict(entries: Record<string, PdfObject> | Map<string, PdfObject>): PdfDict;
|
|
49
|
-
declare function pdfStream(dict: PdfDict, raw: Uint8Array<ArrayBuffer>): PdfObject;
|
|
50
|
-
declare function pdfRef(num: number, gen: number): PdfObject;
|
|
51
|
-
declare function isName(obj: PdfObject | undefined, name: string): boolean;
|
|
52
|
-
declare function asNumber(obj: PdfObject | undefined): number | undefined;
|
|
53
|
-
declare function asName(obj: PdfObject | undefined): string | undefined;
|
|
54
|
-
declare function asBool(obj: PdfObject | undefined): boolean | undefined;
|
|
55
|
-
declare function asArray(obj: PdfObject | undefined): PdfObject[] | undefined;
|
|
56
|
-
declare function asDict(obj: PdfObject | undefined): PdfDict | undefined;
|
|
57
|
-
declare function dictGet(dict: PdfDict, key: string): PdfObject | undefined;
|
|
58
|
-
//#endregion
|
|
1
|
+
import { _ as pdfName, a as asArray, b as pdfRef, c as asName, d as isName, f as pdfArray, g as pdfLiteralString, h as pdfHexString, i as PdfStream, l as asNumber, m as pdfDict, n as PdfDict, o as asBool, p as pdfBool, r as PdfObject, s as asDict, t as PdfArray, u as dictGet, v as pdfNull, x as pdfStream, y as pdfNum } from "./objects-B7HdMeWS.cjs";
|
|
59
2
|
export { PdfArray, PdfDict, PdfObject, PdfStream, asArray, asBool, asDict, asName, asNumber, dictGet, isName, pdfArray, pdfBool, pdfDict, pdfHexString, pdfLiteralString, pdfName, pdfNull, pdfNum, pdfRef, pdfStream };
|