@2018kguo/recto 0.1.0 → 0.5.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.
Files changed (44) hide show
  1. package/dist/assets.d.ts +11 -6
  2. package/dist/assets.js +123 -42
  3. package/dist/document.d.ts +144 -2
  4. package/dist/document.js +163 -14
  5. package/dist/engine.d.ts +24 -9
  6. package/dist/engine.js +236 -49
  7. package/dist/errors.d.ts +4 -2
  8. package/dist/errors.js +4 -1
  9. package/dist/index.d.ts +12 -1
  10. package/dist/index.js +13 -0
  11. package/dist/pool-worker.d.ts +15 -0
  12. package/dist/pool-worker.js +65 -0
  13. package/dist/pool.d.ts +42 -0
  14. package/dist/pool.js +295 -0
  15. package/dist/ranged.d.ts +44 -9
  16. package/dist/ranged.js +571 -86
  17. package/package.json +2 -1
  18. package/wasm/FoxitDingbats.pfb +0 -0
  19. package/wasm/FoxitFixed.pfb +0 -0
  20. package/wasm/FoxitFixedBold.pfb +0 -0
  21. package/wasm/FoxitFixedBoldItalic.pfb +0 -0
  22. package/wasm/FoxitFixedItalic.pfb +0 -0
  23. package/wasm/FoxitSans.pfb +0 -0
  24. package/wasm/FoxitSansBold.pfb +0 -0
  25. package/wasm/FoxitSansBoldItalic.pfb +0 -0
  26. package/wasm/FoxitSansItalic.pfb +0 -0
  27. package/wasm/FoxitSerif.pfb +0 -0
  28. package/wasm/FoxitSerifBold.pfb +0 -0
  29. package/wasm/FoxitSerifBoldItalic.pfb +0 -0
  30. package/wasm/FoxitSerifItalic.pfb +0 -0
  31. package/wasm/FoxitSymbol.pfb +0 -0
  32. package/wasm/THIRD_PARTY_NOTICES +2 -158
  33. package/wasm/cmaps.deflate +0 -0
  34. package/wasm/pins.d.mts +1 -1
  35. package/wasm/pins.mjs +19 -3
  36. package/wasm/recto-more.wasm +0 -0
  37. package/wasm/recto-rare.wasm +0 -0
  38. package/wasm/recto-render.wasm +0 -0
  39. package/wasm/recto.gen.d.mts +2 -1
  40. package/wasm/recto.gen.mjs +213 -19
  41. package/wasm/recto.types.d.mts +83 -4
  42. package/wasm/recto.wasm +0 -0
  43. package/wasm/cmaps.brotli +0 -0
  44. package/wasm/fonts.bin +0 -0
@@ -25,13 +25,25 @@ export class Document {
25
25
  free(): void;
26
26
  [Symbol.dispose](): void;
27
27
  annotations(index: number): Annotations;
28
+ fileLength(): number;
29
+ /**
30
+ * Where the file is in this instance's memory, to reopen it on the full engine without a copy.
31
+ */
32
+ filePointer(): number;
33
+ /**
34
+ * Flat, per link: `[annotation, x, y, width, height, kind, text, page, view, destX, destY,
35
+ * zoom, rectX, rectY, rectWidth, rectHeight, name]`, NaN for a number that isn't there.
36
+ * `kind` is "none", "uri", "page", "remote", "launch" or "action"; `text` is the URI, the
37
+ * file, or the action's `/S`; `name` a remote destination's name or a `Named` action's `/N`.
38
+ */
39
+ links(index: number): Array<any>;
28
40
  objects(index: number): PageObjects;
29
41
  /**
30
42
  * A file of `length` bytes read by range. `read(offset, length)`
31
43
  * returns those bytes (a Uint8Array), or undefined when it could not
32
44
  * read them; it is called synchronously, chunk-aligned, at most 1 MiB.
33
45
  */
34
- static openRanged(length: number, chunk: number, read: (offset: number, length: number) => Uint8Array | undefined, password?: string | null): Document;
46
+ static openRanged(length: number, chunk: number, read: (offset: number, length: number, ahead: number) => Uint8Array | undefined, password?: string | null): Document;
35
47
  constructor(bytes: Uint8Array, password?: string | null);
36
48
  /**
37
49
  * Flat, in order: `[title, url or "", level, page]` per item.
@@ -41,15 +53,31 @@ export class Document {
41
53
  * [width, height, rotation]
42
54
  */
43
55
  pageInfo(index: number): Float32Array<ArrayBuffer>;
56
+ /**
57
+ * One string per page, or null if the file gives no labels.
58
+ */
59
+ pageLabels(): any;
44
60
  /**
45
61
  * `PdfPageText` columns.
46
62
  */
47
63
  pageText(index: number): PageText;
48
- render(index: number, width: number, max_height: number): RenderedPage;
64
+ /**
65
+ * A render that returns to its caller between slices, for as long as it's asked to run.
66
+ * The region is x, y, width, height in the viewer frame, or NaNs for the whole page.
67
+ */
68
+ renderTask(index: number, width: number, max_height: number, x: number, y: number, region_width: number, region_height: number): RenderTask;
69
+ /**
70
+ * The region as `renderTask`'s.
71
+ */
72
+ render(index: number, width: number, max_height: number, x: number, y: number, region_width: number, region_height: number): RenderedPage;
49
73
  /**
50
74
  * Text, objects and annotations from one interpretation of the page.
51
75
  */
52
76
  scan(index: number): PageScan;
77
+ /**
78
+ * `[pages, pageLabels, outline]`: whether a limit cut each short.
79
+ */
80
+ structureTruncated(): Uint8Array<ArrayBuffer>;
53
81
  /**
54
82
  * Text and annotations (no objects).
55
83
  */
@@ -121,6 +149,20 @@ export class PageText {
121
149
  readonly wordLastChar: Uint32Array<ArrayBuffer>;
122
150
  }
123
151
 
152
+ export class RenderTask {
153
+ private constructor();
154
+ free(): void;
155
+ [Symbol.dispose](): void;
156
+ /**
157
+ * Rasterizes what `step` drew: the rest of the page, in one call.
158
+ */
159
+ finish(): RenderedPage;
160
+ /**
161
+ * Runs for about `budget_ms`; true once the page's content is done.
162
+ */
163
+ step(budget_ms: number): boolean;
164
+ }
165
+
124
166
  export class RenderedPage {
125
167
  private constructor();
126
168
  free(): void;
@@ -130,18 +172,36 @@ export class RenderedPage {
130
172
  */
131
173
  takeRgba(): Uint8Array<ArrayBuffer>;
132
174
  height: number;
175
+ pageHeight: number;
176
+ pageWidth: number;
133
177
  truncated: boolean;
134
178
  width: number;
179
+ /**
180
+ * Where it is in the page's bitmap, and that bitmap's size: see `Bitmap`.
181
+ */
182
+ x: number;
183
+ y: number;
135
184
  }
136
185
 
137
186
  /**
138
187
  * The host's asset loader: `(index) => Uint8Array | undefined`, called
139
188
  * synchronously the first time a document needs a built-in font (0..13,
140
- * `fonts.bin` order), the CJK fallback (14) or the predefined CMaps (15).
189
+ * `STANDARD_FONTS` order), the CJK fallback (14) or the predefined CMaps (15).
141
190
  * Fonts are kept per instance; the CMaps are decompressed once and kept.
142
191
  */
143
192
  export function setAssetLoader(loader: (index: number) => Uint8Array | undefined): void;
144
193
 
194
+ /**
195
+ * The most bytes one stream may decode to and one image hold, for this instance: past it, it's left
196
+ * out and the page's results say `truncated`.
197
+ */
198
+ export function setMaxDecodedBytes(bytes: number): void;
199
+
200
+ /**
201
+ * SHA-256, for the JavaScript side's checks on large assets it read synchronously.
202
+ */
203
+ export function sha256(bytes: Uint8Array): Uint8Array<ArrayBuffer>;
204
+
145
205
  export type InitInput = RequestInfo | URL | Response | BufferSource | WebAssembly.Module;
146
206
 
147
207
  export interface InitOutput {
@@ -149,15 +209,24 @@ export interface InitOutput {
149
209
  readonly __wbg_annotations_free: (a: number, b: number) => void;
150
210
  readonly __wbg_document_free: (a: number, b: number) => void;
151
211
  readonly __wbg_get_renderedpage_height: (a: number) => number;
212
+ readonly __wbg_get_renderedpage_pageHeight: (a: number) => number;
213
+ readonly __wbg_get_renderedpage_pageWidth: (a: number) => number;
152
214
  readonly __wbg_get_renderedpage_truncated: (a: number) => number;
153
215
  readonly __wbg_get_renderedpage_width: (a: number) => number;
216
+ readonly __wbg_get_renderedpage_x: (a: number) => number;
217
+ readonly __wbg_get_renderedpage_y: (a: number) => number;
154
218
  readonly __wbg_pageobjects_free: (a: number, b: number) => void;
155
219
  readonly __wbg_pagescan_free: (a: number, b: number) => void;
156
220
  readonly __wbg_pagetext_free: (a: number, b: number) => void;
157
221
  readonly __wbg_renderedpage_free: (a: number, b: number) => void;
222
+ readonly __wbg_rendertask_free: (a: number, b: number) => void;
158
223
  readonly __wbg_set_renderedpage_height: (a: number, b: number) => void;
224
+ readonly __wbg_set_renderedpage_pageHeight: (a: number, b: number) => void;
225
+ readonly __wbg_set_renderedpage_pageWidth: (a: number, b: number) => void;
159
226
  readonly __wbg_set_renderedpage_truncated: (a: number, b: number) => void;
160
227
  readonly __wbg_set_renderedpage_width: (a: number, b: number) => void;
228
+ readonly __wbg_set_renderedpage_x: (a: number, b: number) => void;
229
+ readonly __wbg_set_renderedpage_y: (a: number, b: number) => void;
161
230
  readonly annotations_appearanceObjects: (a: number) => [number, number];
162
231
  readonly annotations_appearanceText: (a: number) => [number, number];
163
232
  readonly annotations_appearanceTextObjects: (a: number) => [number, number];
@@ -169,15 +238,21 @@ export interface InitOutput {
169
238
  readonly annotations_hasField: (a: number) => [number, number];
170
239
  readonly annotations_subtypes: (a: number) => [number, number];
171
240
  readonly document_annotations: (a: number, b: number) => [number, number, number];
241
+ readonly document_fileLength: (a: number) => number;
242
+ readonly document_filePointer: (a: number) => number;
243
+ readonly document_links: (a: number, b: number) => [number, number, number];
172
244
  readonly document_objects: (a: number, b: number) => [number, number, number];
173
245
  readonly document_open: (a: number, b: number, c: number, d: number) => [number, number, number];
174
246
  readonly document_openRanged: (a: number, b: number, c: any, d: number, e: number) => [number, number, number];
175
247
  readonly document_outline: (a: number) => any;
176
248
  readonly document_pageCount: (a: number) => number;
177
249
  readonly document_pageInfo: (a: number, b: number) => [number, number, number, number];
250
+ readonly document_pageLabels: (a: number) => any;
178
251
  readonly document_pageText: (a: number, b: number) => [number, number, number];
179
- readonly document_render: (a: number, b: number, c: number, d: number) => [number, number, number];
252
+ readonly document_render: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number, number];
253
+ readonly document_renderTask: (a: number, b: number, c: number, d: number, e: number, f: number, g: number, h: number) => [number, number, number];
180
254
  readonly document_scan: (a: number, b: number) => [number, number, number];
255
+ readonly document_structureTruncated: (a: number) => [number, number];
181
256
  readonly document_textAndAnnotations: (a: number, b: number) => [number, number, number];
182
257
  readonly pageobjects_imageBoxes: (a: number) => [number, number];
183
258
  readonly pageobjects_imagePixels: (a: number) => [number, number];
@@ -215,7 +290,11 @@ export interface InitOutput {
215
290
  readonly pagetext_wordFirstChar: (a: number) => [number, number];
216
291
  readonly pagetext_wordLastChar: (a: number) => [number, number];
217
292
  readonly renderedpage_takeRgba: (a: number) => [number, number];
293
+ readonly rendertask_finish: (a: number) => number;
294
+ readonly rendertask_step: (a: number, b: number) => number;
218
295
  readonly setAssetLoader: (a: any) => void;
296
+ readonly setMaxDecodedBytes: (a: number) => void;
297
+ readonly sha256: (a: number, b: number) => [number, number];
219
298
  readonly __wbindgen_exn_store: (a: number) => void;
220
299
  readonly __externref_table_alloc: () => number;
221
300
  readonly __wbindgen_externrefs: WebAssembly.Table;
package/wasm/recto.wasm CHANGED
Binary file
package/wasm/cmaps.brotli DELETED
Binary file
package/wasm/fonts.bin DELETED
Binary file