@build-qube/papyra 0.1.0 → 0.2.0
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 +28 -1
- package/dist/document.d.ts +118 -4
- package/dist/document.d.ts.map +1 -1
- package/dist/document.js +208 -7
- package/dist/document.js.map +1 -1
- package/dist/encode.d.ts +2 -2
- package/dist/encode.d.ts.map +1 -1
- package/dist/encode.js +1 -1
- package/dist/encode.js.map +1 -1
- package/dist/encoded.d.ts +34 -5
- package/dist/encoded.d.ts.map +1 -1
- package/dist/encoded.js +28 -0
- package/dist/encoded.js.map +1 -1
- package/dist/errors.d.ts +45 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +69 -0
- package/dist/errors.js.map +1 -0
- package/dist/fingerprint.d.ts +18 -0
- package/dist/fingerprint.d.ts.map +1 -0
- package/dist/fingerprint.js +48 -0
- package/dist/fingerprint.js.map +1 -0
- package/dist/index.d.ts +7 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -2
- package/dist/index.js.map +1 -1
- package/dist/links.d.ts +53 -0
- package/dist/links.d.ts.map +1 -0
- package/dist/links.js +26 -0
- package/dist/links.js.map +1 -0
- package/dist/outline.d.ts +9 -1
- package/dist/outline.d.ts.map +1 -1
- package/dist/outline.js +9 -3
- package/dist/outline.js.map +1 -1
- package/dist/text.d.ts +2 -0
- package/dist/text.d.ts.map +1 -1
- package/dist/text.js +9 -0
- package/dist/text.js.map +1 -1
- package/dist/types.d.ts +50 -0
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -75,7 +75,34 @@ for (const node of await doc.outline()) {
|
|
|
75
75
|
```
|
|
76
76
|
|
|
77
77
|
`renderImage` keeps the pixels in Rust and encodes on demand, so nothing but the
|
|
78
|
-
finished file crosses into JS.
|
|
78
|
+
finished file crosses into JS. For output that has to survive being scaled there is
|
|
79
|
+
`doc.renderSvg(0)`, which returns vector markup instead of pixels and so takes no
|
|
80
|
+
size and no quality.
|
|
81
|
+
|
|
82
|
+
## Links, labels, and what the file says about itself
|
|
83
|
+
|
|
84
|
+
```ts
|
|
85
|
+
const scale = rendered.width / doc.pageSize(index).width;
|
|
86
|
+
for (const link of await doc.links(index)) {
|
|
87
|
+
const box = scaleRect(link.rect, scale);
|
|
88
|
+
if (link.target.kind === 'uri') openExternally(link.target.uri);
|
|
89
|
+
else goTo(link.target.dest.page);
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
const labels = await doc.pageLabels();
|
|
93
|
+
const shown = labels[index] || String(index + 1); // "iv", not "4"
|
|
94
|
+
|
|
95
|
+
doc.metadata.title; // null when the document never said
|
|
96
|
+
doc.fingerprint; // stable key for per-document state
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
Link rectangles are in the same space as extracted text — 72 DPI from the top-left,
|
|
100
|
+
rotation applied — so one multiply places them over any render. `pageLabels()` is empty
|
|
101
|
+
when the document defines no labels, which is your signal to number by index.
|
|
102
|
+
|
|
103
|
+
Encrypted files throw `PasswordRequiredError` or `IncorrectPasswordError`, both
|
|
104
|
+
extending `PasswordError` with a `retry` flag, so one dialog handles the cold ask and
|
|
105
|
+
the wrong answer.
|
|
79
106
|
|
|
80
107
|
## Two things that will bite you
|
|
81
108
|
|
package/dist/document.d.ts
CHANGED
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
import { PdfDocument as NativeDocument } from '@build-qube/papyra-native';
|
|
2
2
|
import { type CacheStats } from './cache.js';
|
|
3
|
-
import { PageImage } from './encode.js';
|
|
3
|
+
import { PageImage, type SvgPage } from './encode.js';
|
|
4
|
+
import { type PageLink } from './links.js';
|
|
4
5
|
import { type OutlineNode } from './outline.js';
|
|
5
6
|
import { type JobHandle } from './scheduler.js';
|
|
6
7
|
import { type SearchMatch } from './search.js';
|
|
7
8
|
import { type PageText } from './text.js';
|
|
8
|
-
import type { OpenOptions, PageSize, PdfSource, RenderedPage, RenderOptions, SearchOptions, StreamedPage, StreamOptions } from './types.js';
|
|
9
|
+
import type { DocumentMetadata, OpenOptions, PageSize, PdfSource, RenderedPage, RenderOptions, SearchOptions, StreamedPage, StreamOptions, SvgOptions } from './types.js';
|
|
9
10
|
/** A queued render, plus whether it was served from cache without rendering at all. */
|
|
10
11
|
export interface RenderHandle extends JobHandle<RenderedPage> {
|
|
11
12
|
/**
|
|
@@ -21,7 +22,19 @@ export interface RenderHandle extends JobHandle<RenderedPage> {
|
|
|
21
22
|
* never comes from the cache, which is keyed by page and size with no format dimension.
|
|
22
23
|
*/
|
|
23
24
|
export type ImageHandle = JobHandle<PageImage>;
|
|
24
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* A queued SVG conversion. Uncached for the same reason as {@link ImageHandle}, and
|
|
27
|
+
* unsized: an SVG has no DPI to key on.
|
|
28
|
+
*/
|
|
29
|
+
export type SvgHandle = JobHandle<SvgPage>;
|
|
30
|
+
/**
|
|
31
|
+
* Open a PDF from bytes, an `ArrayBuffer`, a `Blob`, or a `File`.
|
|
32
|
+
*
|
|
33
|
+
* Throws {@link PasswordRequiredError} when the document is encrypted and no
|
|
34
|
+
* {@link OpenOptions.password} was given, and {@link IncorrectPasswordError} when one
|
|
35
|
+
* was given and rejected. Both extend {@link PasswordError}, so a viewer that shows
|
|
36
|
+
* one dialog for both can catch the base.
|
|
37
|
+
*/
|
|
25
38
|
export declare function open(source: PdfSource, options?: OpenOptions): Promise<Document>;
|
|
26
39
|
/**
|
|
27
40
|
* An open PDF, and the queue and caches that serve it.
|
|
@@ -32,8 +45,20 @@ export declare function open(source: PdfSource, options?: OpenOptions): Promise<
|
|
|
32
45
|
*/
|
|
33
46
|
export declare class Document {
|
|
34
47
|
#private;
|
|
48
|
+
/**
|
|
49
|
+
* A stable identifier for this document's bytes.
|
|
50
|
+
*
|
|
51
|
+
* Sixteen hex characters, for keying whatever you remember per document — the page
|
|
52
|
+
* it was left on, a zoom level, a set of highlights. Two `open` calls on the same
|
|
53
|
+
* file always agree.
|
|
54
|
+
*
|
|
55
|
+
* It is a hash of the file, **not** the PDF's own `/ID`: the engine exposes no
|
|
56
|
+
* trailer accessor, so that identifier is out of reach. The practical difference is
|
|
57
|
+
* that saving an incremental update changes this while `/ID` would have survived.
|
|
58
|
+
*/
|
|
59
|
+
readonly fingerprint: string;
|
|
35
60
|
/** @internal — construct via {@link open}. */
|
|
36
|
-
constructor(inner: NativeDocument, options?: OpenOptions);
|
|
61
|
+
constructor(inner: NativeDocument, fingerprintOfBytes: string, options?: OpenOptions);
|
|
37
62
|
/** Rendered pages held for reuse, and how often that has paid off. */
|
|
38
63
|
get cache(): CacheStats;
|
|
39
64
|
/** Drop every cached page. */
|
|
@@ -54,6 +79,18 @@ export declare class Document {
|
|
|
54
79
|
};
|
|
55
80
|
/** How many pages the document has. Page indices are 0-based throughout. */
|
|
56
81
|
get pageCount(): number;
|
|
82
|
+
/**
|
|
83
|
+
* The PDF specification version the file declares, e.g. `'1.7'`.
|
|
84
|
+
*
|
|
85
|
+
* Deliberately not part of {@link Document.metadata}: that is what the producer
|
|
86
|
+
* chose to say about the document, while this is a structural property read from
|
|
87
|
+
* the file's header — and from the catalog, which overrides it for 1.4 and later,
|
|
88
|
+
* so an incrementally saved file reports the version it was last written as.
|
|
89
|
+
*
|
|
90
|
+
* `'1.0'` is worth treating with suspicion. Genuine PDF 1.0 files are close to
|
|
91
|
+
* extinct, and it is also what a file with an unreadable header reports.
|
|
92
|
+
*/
|
|
93
|
+
get pdfVersion(): string | null;
|
|
57
94
|
/**
|
|
58
95
|
* The document outline — bookmarks, the table of contents — as a tree.
|
|
59
96
|
*
|
|
@@ -73,6 +110,58 @@ export declare class Document {
|
|
|
73
110
|
* ```
|
|
74
111
|
*/
|
|
75
112
|
outline(): Promise<OutlineNode[]>;
|
|
113
|
+
/**
|
|
114
|
+
* What the document says about itself: title, author, dates, the tool that wrote it.
|
|
115
|
+
*
|
|
116
|
+
* Synchronous — the engine reads the information dictionary while loading, so this
|
|
117
|
+
* only decodes strings. Every field is independently `null`, and none of it is
|
|
118
|
+
* verified; `title` in particular is often a filename or missing entirely.
|
|
119
|
+
*/
|
|
120
|
+
get metadata(): DocumentMetadata;
|
|
121
|
+
/**
|
|
122
|
+
* The label printed on each page, one entry per page.
|
|
123
|
+
*
|
|
124
|
+
* Resolves to an **empty array** when the document defines no page labels, which is
|
|
125
|
+
* the common case — that is the signal to number pages by index yourself. A
|
|
126
|
+
* document that defines labels but says nothing about a particular page gives that
|
|
127
|
+
* page an empty string, which is a different answer.
|
|
128
|
+
*
|
|
129
|
+
* Worth honouring wherever a page number is shown: a document with front matter
|
|
130
|
+
* numbers its first pages i, ii, iii, and a viewer that says "page 4 of 300" when
|
|
131
|
+
* the sheet reads "A101" is describing a document nobody else can see.
|
|
132
|
+
*
|
|
133
|
+
* The walk runs off the event loop and the result is memoised.
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```ts
|
|
137
|
+
* const labels = await doc.pageLabels();
|
|
138
|
+
* const shown = labels[index] || String(index + 1);
|
|
139
|
+
* ```
|
|
140
|
+
*/
|
|
141
|
+
pageLabels(): Promise<readonly string[]>;
|
|
142
|
+
/**
|
|
143
|
+
* The links on one page — where they are, and where they go.
|
|
144
|
+
*
|
|
145
|
+
* Rectangles are in the same 72-DPI top-left space as {@link Document.pageText} and
|
|
146
|
+
* {@link Document.pageSize}, so placing them over a render is one multiply; see
|
|
147
|
+
* {@link scaleRect}. Only links that resolve to something actionable are reported.
|
|
148
|
+
*
|
|
149
|
+
* Unlike text extraction this never interprets a content stream — it is an
|
|
150
|
+
* object-graph read, roughly a thousandth the cost of rendering the page — so it
|
|
151
|
+
* does **not** go through the priority queue. Making a link layer wait behind
|
|
152
|
+
* renders would add latency a viewer can feel, for work that costs nothing.
|
|
153
|
+
* Results are cached, and two calls for the same page share one read.
|
|
154
|
+
*
|
|
155
|
+
* @example
|
|
156
|
+
* ```ts
|
|
157
|
+
* const scale = rendered.width / doc.pageSize(index).width;
|
|
158
|
+
* for (const link of await doc.links(index)) {
|
|
159
|
+
* const { x, y, width, height } = scaleRect(link.rect, scale);
|
|
160
|
+
* // ...position an anchor over the canvas
|
|
161
|
+
* }
|
|
162
|
+
* ```
|
|
163
|
+
*/
|
|
164
|
+
links(index: number): Promise<readonly PageLink[]>;
|
|
76
165
|
/** Page dimensions in PDF points (1/72 inch). */
|
|
77
166
|
pageSize(index: number): PageSize;
|
|
78
167
|
/** Render a single page. Never blocks the event loop. */
|
|
@@ -107,6 +196,31 @@ export declare class Document {
|
|
|
107
196
|
* render time, which end-to-end timing around the promise cannot.
|
|
108
197
|
*/
|
|
109
198
|
imageHandle(index: number, options?: RenderOptions): ImageHandle;
|
|
199
|
+
/**
|
|
200
|
+
* Convert a page to SVG — vector output, not pixels.
|
|
201
|
+
*
|
|
202
|
+
* Paths stay paths and text stays glyph outlines, so the result scales to any size
|
|
203
|
+
* and can be edited downstream. That is the trade: an SVG of a dense drawing is
|
|
204
|
+
* larger than a WebP of the same page at screen size and slower for a browser to
|
|
205
|
+
* paint, but it is the only output that survives being scaled up.
|
|
206
|
+
*
|
|
207
|
+
* Conversion is content-stream interpretation without rasterisation — roughly the
|
|
208
|
+
* non-preemptible portion of a render — so it shares the scheduler with everything
|
|
209
|
+
* else and honours {@link SvgOptions.priority}. **Not cached**, for the same reason
|
|
210
|
+
* {@link renderImage} is not.
|
|
211
|
+
*
|
|
212
|
+
* @example
|
|
213
|
+
* ```ts
|
|
214
|
+
* const page = await doc.renderSvg(0, { background: 'transparent' });
|
|
215
|
+
* await writeFile('page-0.svg', page.markup);
|
|
216
|
+
* ```
|
|
217
|
+
*/
|
|
218
|
+
renderSvg(index: number, options?: SvgOptions): Promise<SvgPage>;
|
|
219
|
+
/**
|
|
220
|
+
* As {@link renderSvg}, but returns the handle so the job can be reprioritised,
|
|
221
|
+
* cancelled, or timed — the same relationship `imageHandle` has to `renderImage`.
|
|
222
|
+
*/
|
|
223
|
+
svgHandle(index: number, options?: SvgOptions): SvgHandle;
|
|
110
224
|
/**
|
|
111
225
|
* Render a page, returning a handle you can reprioritise or drop.
|
|
112
226
|
*
|
package/dist/document.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,IAAI,cAAc,
|
|
1
|
+
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"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"}
|
package/dist/document.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { PdfDocument as NativeDocument, } from '@build-qube/papyra-native';
|
|
2
2
|
import { RenderCache } from './cache.js';
|
|
3
|
-
import { PageImage } from './encode.js';
|
|
3
|
+
import { PageImage, svgPage } from './encode.js';
|
|
4
|
+
import { rethrowLoadError } from './errors.js';
|
|
5
|
+
import { fingerprint } from './fingerprint.js';
|
|
6
|
+
import { toPageLink } from './links.js';
|
|
4
7
|
import { buildOutlineTree } from './outline.js';
|
|
5
8
|
import { currentRuntime, hardwareConcurrency, init, MAX_WASM_CONCURRENCY, } from './runtime.js';
|
|
6
9
|
import { DEFAULT_PRIORITY, Scheduler } from './scheduler.js';
|
|
@@ -24,6 +27,16 @@ const DEFAULT_CACHE_BYTES = 128 * 1024 * 1024;
|
|
|
24
27
|
* and a repeated search never re-extracts.
|
|
25
28
|
*/
|
|
26
29
|
const DEFAULT_TEXT_CACHE_BYTES = 32 * 1024 * 1024;
|
|
30
|
+
/**
|
|
31
|
+
* Bytes of page links to keep.
|
|
32
|
+
*
|
|
33
|
+
* Not an option, unlike the render and text budgets: links are two orders of
|
|
34
|
+
* magnitude smaller again — a page of a linked table of contents is a few hundred
|
|
35
|
+
* bytes — so 4 MB holds tens of thousands of them and there is nothing to tune.
|
|
36
|
+
*/
|
|
37
|
+
const LINK_CACHE_BYTES = 4 * 1024 * 1024;
|
|
38
|
+
/** Rough bytes per cached link: two objects, a rect, and a short string. */
|
|
39
|
+
const LINK_BYTES = 96;
|
|
27
40
|
/**
|
|
28
41
|
* Where text extraction sits in the queue by default.
|
|
29
42
|
*
|
|
@@ -31,6 +44,19 @@ const DEFAULT_TEXT_CACHE_BYTES = 32 * 1024 * 1024;
|
|
|
31
44
|
* than one that takes another beat to fill in.
|
|
32
45
|
*/
|
|
33
46
|
const DEFAULT_TEXT_PRIORITY = 3;
|
|
47
|
+
/** napi omits absent strings rather than nulling them; normalise to one shape. */
|
|
48
|
+
function toMetadata(info) {
|
|
49
|
+
return {
|
|
50
|
+
title: info.title ?? null,
|
|
51
|
+
author: info.author ?? null,
|
|
52
|
+
subject: info.subject ?? null,
|
|
53
|
+
keywords: info.keywords ?? null,
|
|
54
|
+
creator: info.creator ?? null,
|
|
55
|
+
producer: info.producer ?? null,
|
|
56
|
+
created: info.created ?? null,
|
|
57
|
+
modified: info.modified ?? null,
|
|
58
|
+
};
|
|
59
|
+
}
|
|
34
60
|
/** Wire an `AbortSignal` to a queued job. Cancelling only drops work not yet started. */
|
|
35
61
|
function attachSignal(handle, signal) {
|
|
36
62
|
if (!signal)
|
|
@@ -43,14 +69,26 @@ function attachSignal(handle, signal) {
|
|
|
43
69
|
once: true,
|
|
44
70
|
});
|
|
45
71
|
}
|
|
46
|
-
/**
|
|
72
|
+
/**
|
|
73
|
+
* Open a PDF from bytes, an `ArrayBuffer`, a `Blob`, or a `File`.
|
|
74
|
+
*
|
|
75
|
+
* Throws {@link PasswordRequiredError} when the document is encrypted and no
|
|
76
|
+
* {@link OpenOptions.password} was given, and {@link IncorrectPasswordError} when one
|
|
77
|
+
* was given and rejected. Both extend {@link PasswordError}, so a viewer that shows
|
|
78
|
+
* one dialog for both can catch the base.
|
|
79
|
+
*/
|
|
47
80
|
export async function open(source, options = {}) {
|
|
48
81
|
init();
|
|
49
82
|
const bytes = await toBytes(source);
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
83
|
+
try {
|
|
84
|
+
const inner = options.password === undefined
|
|
85
|
+
? NativeDocument.load(bytes)
|
|
86
|
+
: NativeDocument.loadWithPassword(bytes, options.password);
|
|
87
|
+
return new Document(inner, fingerprint(bytes), options);
|
|
88
|
+
}
|
|
89
|
+
catch (e) {
|
|
90
|
+
rethrowLoadError(e);
|
|
91
|
+
}
|
|
54
92
|
}
|
|
55
93
|
/**
|
|
56
94
|
* An open PDF, and the queue and caches that serve it.
|
|
@@ -67,19 +105,40 @@ export class Document {
|
|
|
67
105
|
#limit;
|
|
68
106
|
#cache;
|
|
69
107
|
#text;
|
|
108
|
+
#links;
|
|
109
|
+
/** In-flight link reads, so two callers on one page share a single task. */
|
|
110
|
+
#linksPending = new Map();
|
|
70
111
|
/** Memoised by {@link outline}; the outline cannot change under us. */
|
|
71
112
|
#outline;
|
|
113
|
+
/** Memoised by {@link pageLabels}. */
|
|
114
|
+
#labels;
|
|
115
|
+
/** Memoised by {@link metadata}. */
|
|
116
|
+
#metadata;
|
|
72
117
|
/** Memoised by {@link indexText}. */
|
|
73
118
|
#indexed;
|
|
119
|
+
/**
|
|
120
|
+
* A stable identifier for this document's bytes.
|
|
121
|
+
*
|
|
122
|
+
* Sixteen hex characters, for keying whatever you remember per document — the page
|
|
123
|
+
* it was left on, a zoom level, a set of highlights. Two `open` calls on the same
|
|
124
|
+
* file always agree.
|
|
125
|
+
*
|
|
126
|
+
* It is a hash of the file, **not** the PDF's own `/ID`: the engine exposes no
|
|
127
|
+
* trailer accessor, so that identifier is out of reach. The practical difference is
|
|
128
|
+
* that saving an incremental update changes this while `/ID` would have survived.
|
|
129
|
+
*/
|
|
130
|
+
fingerprint;
|
|
74
131
|
/** @internal — construct via {@link open}. */
|
|
75
|
-
constructor(inner, options = {}) {
|
|
132
|
+
constructor(inner, fingerprintOfBytes, options = {}) {
|
|
76
133
|
this.#inner = inner;
|
|
134
|
+
this.fingerprint = fingerprintOfBytes;
|
|
77
135
|
this.#limit = Math.max(1, options.concurrency ?? defaultConcurrency());
|
|
78
136
|
this.#scheduler = new Scheduler(this.#limit, {
|
|
79
137
|
yieldToUrgent: options.yieldToUrgent,
|
|
80
138
|
});
|
|
81
139
|
this.#cache = new RenderCache(options.cacheBytes ?? DEFAULT_CACHE_BYTES, (page) => page.data.byteLength);
|
|
82
140
|
this.#text = new RenderCache(options.textCacheBytes ?? DEFAULT_TEXT_CACHE_BYTES, pageTextBytes);
|
|
141
|
+
this.#links = new RenderCache(LINK_CACHE_BYTES, (links) => links.length * LINK_BYTES);
|
|
83
142
|
}
|
|
84
143
|
/** Rendered pages held for reuse, and how often that has paid off. */
|
|
85
144
|
get cache() {
|
|
@@ -101,6 +160,20 @@ export class Document {
|
|
|
101
160
|
get pageCount() {
|
|
102
161
|
return this.#inner.pageCount;
|
|
103
162
|
}
|
|
163
|
+
/**
|
|
164
|
+
* The PDF specification version the file declares, e.g. `'1.7'`.
|
|
165
|
+
*
|
|
166
|
+
* Deliberately not part of {@link Document.metadata}: that is what the producer
|
|
167
|
+
* chose to say about the document, while this is a structural property read from
|
|
168
|
+
* the file's header — and from the catalog, which overrides it for 1.4 and later,
|
|
169
|
+
* so an incrementally saved file reports the version it was last written as.
|
|
170
|
+
*
|
|
171
|
+
* `'1.0'` is worth treating with suspicion. Genuine PDF 1.0 files are close to
|
|
172
|
+
* extinct, and it is also what a file with an unreadable header reports.
|
|
173
|
+
*/
|
|
174
|
+
get pdfVersion() {
|
|
175
|
+
return this.#inner.pdfVersion ?? null;
|
|
176
|
+
}
|
|
104
177
|
/**
|
|
105
178
|
* The document outline — bookmarks, the table of contents — as a tree.
|
|
106
179
|
*
|
|
@@ -130,6 +203,93 @@ export class Document {
|
|
|
130
203
|
});
|
|
131
204
|
return this.#outline;
|
|
132
205
|
}
|
|
206
|
+
/**
|
|
207
|
+
* What the document says about itself: title, author, dates, the tool that wrote it.
|
|
208
|
+
*
|
|
209
|
+
* Synchronous — the engine reads the information dictionary while loading, so this
|
|
210
|
+
* only decodes strings. Every field is independently `null`, and none of it is
|
|
211
|
+
* verified; `title` in particular is often a filename or missing entirely.
|
|
212
|
+
*/
|
|
213
|
+
get metadata() {
|
|
214
|
+
this.#metadata ??= toMetadata(this.#inner.info());
|
|
215
|
+
return this.#metadata;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* The label printed on each page, one entry per page.
|
|
219
|
+
*
|
|
220
|
+
* Resolves to an **empty array** when the document defines no page labels, which is
|
|
221
|
+
* the common case — that is the signal to number pages by index yourself. A
|
|
222
|
+
* document that defines labels but says nothing about a particular page gives that
|
|
223
|
+
* page an empty string, which is a different answer.
|
|
224
|
+
*
|
|
225
|
+
* Worth honouring wherever a page number is shown: a document with front matter
|
|
226
|
+
* numbers its first pages i, ii, iii, and a viewer that says "page 4 of 300" when
|
|
227
|
+
* the sheet reads "A101" is describing a document nobody else can see.
|
|
228
|
+
*
|
|
229
|
+
* The walk runs off the event loop and the result is memoised.
|
|
230
|
+
*
|
|
231
|
+
* @example
|
|
232
|
+
* ```ts
|
|
233
|
+
* const labels = await doc.pageLabels();
|
|
234
|
+
* const shown = labels[index] || String(index + 1);
|
|
235
|
+
* ```
|
|
236
|
+
*/
|
|
237
|
+
async pageLabels() {
|
|
238
|
+
this.#labels ??= this.#inner.pageLabels().catch((e) => {
|
|
239
|
+
// A failed walk must not be cached as a permanent absence of labels.
|
|
240
|
+
this.#labels = undefined;
|
|
241
|
+
throw e;
|
|
242
|
+
});
|
|
243
|
+
return this.#labels;
|
|
244
|
+
}
|
|
245
|
+
/**
|
|
246
|
+
* The links on one page — where they are, and where they go.
|
|
247
|
+
*
|
|
248
|
+
* Rectangles are in the same 72-DPI top-left space as {@link Document.pageText} and
|
|
249
|
+
* {@link Document.pageSize}, so placing them over a render is one multiply; see
|
|
250
|
+
* {@link scaleRect}. Only links that resolve to something actionable are reported.
|
|
251
|
+
*
|
|
252
|
+
* Unlike text extraction this never interprets a content stream — it is an
|
|
253
|
+
* object-graph read, roughly a thousandth the cost of rendering the page — so it
|
|
254
|
+
* does **not** go through the priority queue. Making a link layer wait behind
|
|
255
|
+
* renders would add latency a viewer can feel, for work that costs nothing.
|
|
256
|
+
* Results are cached, and two calls for the same page share one read.
|
|
257
|
+
*
|
|
258
|
+
* @example
|
|
259
|
+
* ```ts
|
|
260
|
+
* const scale = rendered.width / doc.pageSize(index).width;
|
|
261
|
+
* for (const link of await doc.links(index)) {
|
|
262
|
+
* const { x, y, width, height } = scaleRect(link.rect, scale);
|
|
263
|
+
* // ...position an anchor over the canvas
|
|
264
|
+
* }
|
|
265
|
+
* ```
|
|
266
|
+
*/
|
|
267
|
+
async links(index) {
|
|
268
|
+
const key = `links:${index}`;
|
|
269
|
+
const hit = this.#links.get(key);
|
|
270
|
+
if (hit)
|
|
271
|
+
return hit;
|
|
272
|
+
const pending = this.#linksPending.get(index);
|
|
273
|
+
if (pending)
|
|
274
|
+
return pending;
|
|
275
|
+
const read = this.#inner
|
|
276
|
+
.pageLinks(index)
|
|
277
|
+
.then((native) => {
|
|
278
|
+
// `toPageLink` only returns null for a link with no resolvable target, which
|
|
279
|
+
// the bindings do not emit — the filter is here so a future one cannot leak
|
|
280
|
+
// a null into the array.
|
|
281
|
+
const links = native
|
|
282
|
+
.map(toPageLink)
|
|
283
|
+
.filter((link) => link !== null);
|
|
284
|
+
this.#links.set(key, links);
|
|
285
|
+
return links;
|
|
286
|
+
})
|
|
287
|
+
.finally(() => {
|
|
288
|
+
this.#linksPending.delete(index);
|
|
289
|
+
});
|
|
290
|
+
this.#linksPending.set(index, read);
|
|
291
|
+
return read;
|
|
292
|
+
}
|
|
133
293
|
/** Page dimensions in PDF points (1/72 inch). */
|
|
134
294
|
pageSize(index) {
|
|
135
295
|
return this.#inner.pageSize(index);
|
|
@@ -181,6 +341,47 @@ export class Document {
|
|
|
181
341
|
attachSignal(handle, options.signal);
|
|
182
342
|
return handle;
|
|
183
343
|
}
|
|
344
|
+
/**
|
|
345
|
+
* Convert a page to SVG — vector output, not pixels.
|
|
346
|
+
*
|
|
347
|
+
* Paths stay paths and text stays glyph outlines, so the result scales to any size
|
|
348
|
+
* and can be edited downstream. That is the trade: an SVG of a dense drawing is
|
|
349
|
+
* larger than a WebP of the same page at screen size and slower for a browser to
|
|
350
|
+
* paint, but it is the only output that survives being scaled up.
|
|
351
|
+
*
|
|
352
|
+
* Conversion is content-stream interpretation without rasterisation — roughly the
|
|
353
|
+
* non-preemptible portion of a render — so it shares the scheduler with everything
|
|
354
|
+
* else and honours {@link SvgOptions.priority}. **Not cached**, for the same reason
|
|
355
|
+
* {@link renderImage} is not.
|
|
356
|
+
*
|
|
357
|
+
* @example
|
|
358
|
+
* ```ts
|
|
359
|
+
* const page = await doc.renderSvg(0, { background: 'transparent' });
|
|
360
|
+
* await writeFile('page-0.svg', page.markup);
|
|
361
|
+
* ```
|
|
362
|
+
*/
|
|
363
|
+
async renderSvg(index, options = {}) {
|
|
364
|
+
return this.svgHandle(index, options).promise;
|
|
365
|
+
}
|
|
366
|
+
/**
|
|
367
|
+
* As {@link renderSvg}, but returns the handle so the job can be reprioritised,
|
|
368
|
+
* cancelled, or timed — the same relationship `imageHandle` has to `renderImage`.
|
|
369
|
+
*/
|
|
370
|
+
svgHandle(index, options = {}) {
|
|
371
|
+
if (index < 0 || index >= this.pageCount) {
|
|
372
|
+
throw new RangeError(`papyra: page ${index} is out of range (0..${this.pageCount - 1})`);
|
|
373
|
+
}
|
|
374
|
+
const opaque = options.background !== 'transparent';
|
|
375
|
+
const handle = this.#scheduler.submit({
|
|
376
|
+
// The background is part of the key: the scheduler coalesces same-key requests,
|
|
377
|
+
// and an opaque and a transparent conversion of one page are different output.
|
|
378
|
+
key: `svg:${index}${opaque ? '' : ':transparent'}`,
|
|
379
|
+
priority: options.priority ?? DEFAULT_PRIORITY,
|
|
380
|
+
run: () => this.#inner.renderPageSvgAsync(index, opaque, options.signal).then(svgPage),
|
|
381
|
+
});
|
|
382
|
+
attachSignal(handle, options.signal);
|
|
383
|
+
return handle;
|
|
384
|
+
}
|
|
184
385
|
/**
|
|
185
386
|
* Render a page, returning a handle you can reprioritise or drop.
|
|
186
387
|
*
|
package/dist/document.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.js","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"document.js","sourceRoot":"","sources":["../src/document.ts"],"names":[],"mappings":"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"}
|
package/dist/encode.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { type PageImage as NativePageImage } from '@build-qube/papyra-native';
|
|
2
2
|
import { type EncodedImage, type EncodeOptions } from './encoded.js';
|
|
3
3
|
import type { RenderedPage } from './types.js';
|
|
4
|
-
export type { EncodedFormat, EncodedImage, EncodeOptions } from './encoded.js';
|
|
5
|
-
export { encodedImage, mimeType } from './encoded.js';
|
|
4
|
+
export type { EncodedFormat, EncodedImage, EncodeOptions, RasterFormat, SvgPage, } from './encoded.js';
|
|
5
|
+
export { encodedImage, mimeType, svgPage } from './encoded.js';
|
|
6
6
|
/**
|
|
7
7
|
* Encode a page you already hold — a cache hit, or one you have just painted.
|
|
8
8
|
*
|
package/dist/encode.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../src/encode.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,SAAS,IAAI,eAAe,EAClC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,aAAa,EAEnB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,YAAY,
|
|
1
|
+
{"version":3,"file":"encode.d.ts","sourceRoot":"","sources":["../src/encode.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,KAAK,SAAS,IAAI,eAAe,EAClC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,aAAa,EAEnB,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C,YAAY,EACV,aAAa,EACb,YAAY,EACZ,aAAa,EACb,YAAY,EACZ,OAAO,GACR,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE/D;;;;;;GAMG;AACH,wBAAsB,MAAM,CAC1B,IAAI,EAAE,YAAY,EAClB,OAAO,GAAE,aAAkB,GAC1B,OAAO,CAAC,YAAY,CAAC,CAYvB;AAED;;;;;;;GAOG;AACH,qBAAa,SAAS;;IAGpB,YAAY,KAAK,EAAE,eAAe,EAEjC;IAED,8BAA8B;IAC9B,IAAI,KAAK,IAAI,MAAM,CAElB;IAED,+BAA+B;IAC/B,IAAI,MAAM,IAAI,MAAM,CAEnB;IAED,mFAAmF;IACnF,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED,kEAAkE;IAC5D,MAAM,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,YAAY,CAAC,CAQ/D;IAED,4EAA4E;IAC5E,MAAM,CAAC,OAAO,GAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,GAAG,SAAS,CAAM,yBAE7D;IAED,mFAAmF;IACnF,KAAK,CAAC,OAAO,GAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,GAAG,SAAS,CAAM,yBAE5D;IAED;;;;OAIG;IACH,MAAM,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,OAAO,GAAE,IAAI,CAAC,aAAa,EAAE,QAAQ,CAAM,yBAEnE;IAED;;;OAGG;IACH,SAAS,CAAC,OAAO,GAAE,aAAkB,GAAG,OAAO,CAAC,MAAM,CAAC,CAMtD;CACF"}
|
package/dist/encode.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { encodeBitmap, } from '@build-qube/papyra-native';
|
|
2
2
|
import { encodedImage, } from './encoded.js';
|
|
3
|
-
export { encodedImage, mimeType } from './encoded.js';
|
|
3
|
+
export { encodedImage, mimeType, svgPage } from './encoded.js';
|
|
4
4
|
/**
|
|
5
5
|
* Encode a page you already hold — a cache hit, or one you have just painted.
|
|
6
6
|
*
|
package/dist/encode.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"encode.js","sourceRoot":"","sources":["../src/encode.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,GAGb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAGL,YAAY,GACb,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"encode.js","sourceRoot":"","sources":["../src/encode.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,GAGb,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAGL,YAAY,GACb,MAAM,cAAc,CAAC;AAUtB,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAE/D;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,IAAkB,EAClB,OAAO,GAAkB,EAAE;IAE3B,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC;IACxC,MAAM,KAAK,GAAG,MAAM,YAAY,CAC9B,IAAI,CAAC,IAAI,EACT,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,MAAM,EACX,IAAI,CAAC,MAAM,EACX,MAAsB,EACtB,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,MAAM,CACf,CAAC;IACF,OAAO,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACrC,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,SAAS;IACX,MAAM,CAAkB;IAEjC,YAAY,KAAsB;QAChC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACtB,CAAC;IAED,8BAA8B;IAC9B,IAAI,KAAK;QACP,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC;IAC3B,CAAC;IAED,+BAA+B;IAC/B,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;IAC5B,CAAC;IAED,mFAAmF;IACnF,IAAI,UAAU;QACZ,OAAO,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC;IAChC,CAAC;IAED,kEAAkE;IAClE,KAAK,CAAC,MAAM,CAAC,OAAO,GAAkB,EAAE;QACtC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC;QACxC,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,CACpC,MAAsB,EACtB,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,MAAM,CACf,CAAC;QACF,OAAO,YAAY,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IACrC,CAAC;IAED,4EAA4E;IAC5E,MAAM,CAAC,OAAO,GAA8C,EAAE;QAC5D,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACrD,CAAC;IAED,mFAAmF;IACnF,KAAK,CAAC,OAAO,GAA8C,EAAE;QAC3D,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACpD,CAAC;IAED;;;;OAIG;IACH,MAAM,CAAC,OAAgB,EAAE,OAAO,GAAkC,EAAE;QAClE,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,GAAG,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED;;;OAGG;IACH,SAAS,CAAC,OAAO,GAAkB,EAAE;QACnC,OAAO,IAAI,CAAC,MAAM,CAAC,SAAS,CAC1B,CAAC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAiB,EAC1C,OAAO,CAAC,OAAO,EACf,OAAO,CAAC,MAAM,CACf,CAAC;IACJ,CAAC;CACF"}
|