@2018kguo/recto 0.3.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.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@2018kguo/recto",
3
- "version": "0.3.0",
3
+ "version": "0.5.0",
4
4
  "description": "A PDF engine for JavaScript: text with boxes, page objects, annotations and rendering, in Rust compiled to WebAssembly.",
5
5
  "license": "MIT",
6
6
  "repository": {
package/wasm/pins.mjs CHANGED
@@ -1,9 +1,9 @@
1
1
  // Generated by scripts/package-wasm.mjs.
2
2
  export const PINS = {
3
- "recto.wasm": "1ca7ee27355011de489c91749e764c9ac76fcb0f37020f96273075f5fe4d4841",
4
- "recto-render.wasm": "356f4f94b1cf4125247da4991f1ff827879e5cf1c35354ecb572e53545b01b2c",
5
- "recto-more.wasm": "a4d05fc178ebc4696f72dfd2b3f3d027ac30931383363754b9629be69dd80f99",
6
- "recto-rare.wasm": "e5f0137133d92c8bf2aacbc6e2363c55276b258d0dc81bcaa8ba7a9c2c891f2a",
3
+ "recto.wasm": "6ea5dcbefb46130b65af4e3e8abd4c36204ecff4beaa089960c5d24e58dd6345",
4
+ "recto-render.wasm": "903b95817bb9c23769db27cedf3a29a7b5d3dcff0c65fbe28c0d0191943d59b7",
5
+ "recto-more.wasm": "e612392af0129e4e2f9083605f56c1e39b6eca0e2c5fef6ee39b72849b384f9b",
6
+ "recto-rare.wasm": "da54f130b42290ff9ef8c0ba45a0f9f49545f038f3bcfa19c5ec75ac2e9f4e6e",
7
7
  "FoxitFixed.pfb": "b6c8fe53f134b8b6d4578cd2d544df4cee9624c4efa8d51a560fb40ea296101b",
8
8
  "FoxitFixedBold.pfb": "f1b7159702973f54fc86254ea38bcf3712b2a736eb3a0995751e9f4bb45ad603",
9
9
  "FoxitFixedBoldItalic.pfb": "8a000945843bd31add06aee63bf9fd41b7578b4f3242a4b7cd46349ad9d24d4d",
Binary file
Binary file
Binary file
@@ -1,3 +1,3 @@
1
1
  import type * as Glue from "./recto.types.mjs";
2
- export declare function createGlue(placeholders: Record<string, object>, finalizing: (free: () => void) => void): Pick<typeof Glue, "Annotations" | "Document" | "PageObjects" | "PageScan" | "PageText" | "RenderTask" | "RenderedPage" | "setAssetLoader" | "sha256" | "initSync">;
2
+ export declare function createGlue(placeholders: Record<string, object>, finalizing: (free: () => void) => void): Pick<typeof Glue, "Annotations" | "Document" | "PageObjects" | "PageScan" | "PageText" | "RenderTask" | "RenderedPage" | "setAssetLoader" | "setMaxDecodedBytes" | "sha256" | "initSync">;
3
3
  export declare const PART_TABLE: string;
@@ -157,6 +157,21 @@ class Document {
157
157
  const ret = wasm.document_filePointer(this.__wbg_ptr);
158
158
  return ret >>> 0;
159
159
  }
160
+ /**
161
+ * Flat, per link: `[annotation, x, y, width, height, kind, text, page, view, destX, destY,
162
+ * zoom, rectX, rectY, rectWidth, rectHeight, name]`, NaN for a number that isn't there.
163
+ * `kind` is "none", "uri", "page", "remote", "launch" or "action"; `text` is the URI, the
164
+ * file, or the action's `/S`; `name` a remote destination's name or a `Named` action's `/N`.
165
+ * @param {number} index
166
+ * @returns {Array<any>}
167
+ */
168
+ links(index) {
169
+ const ret = wasm.document_links(this.__wbg_ptr, index);
170
+ if (ret[2]) {
171
+ throw takeFromExternrefTable0(ret[1]);
172
+ }
173
+ return takeFromExternrefTable0(ret[0]);
174
+ }
160
175
  /**
161
176
  * @param {number} index
162
177
  * @returns {PageObjects}
@@ -174,7 +189,7 @@ class Document {
174
189
  * read them; it is called synchronously, chunk-aligned, at most 1 MiB.
175
190
  * @param {number} length
176
191
  * @param {number} chunk
177
- * @param {(offset: number, length: number) => Uint8Array | undefined} read
192
+ * @param {(offset: number, length: number, ahead: number) => Uint8Array | undefined} read
178
193
  * @param {string | null} [password]
179
194
  * @returns {Document}
180
195
  */
@@ -255,26 +270,36 @@ class Document {
255
270
  }
256
271
  /**
257
272
  * A render that returns to its caller between slices, for as long as it's asked to run.
273
+ * The region is x, y, width, height in the viewer frame, or NaNs for the whole page.
258
274
  * @param {number} index
259
275
  * @param {number} width
260
276
  * @param {number} max_height
277
+ * @param {number} x
278
+ * @param {number} y
279
+ * @param {number} region_width
280
+ * @param {number} region_height
261
281
  * @returns {RenderTask}
262
282
  */
263
- renderTask(index, width, max_height) {
264
- const ret = wasm.document_renderTask(this.__wbg_ptr, index, width, max_height);
283
+ renderTask(index, width, max_height, x, y, region_width, region_height) {
284
+ const ret = wasm.document_renderTask(this.__wbg_ptr, index, width, max_height, x, y, region_width, region_height);
265
285
  if (ret[2]) {
266
286
  throw takeFromExternrefTable0(ret[1]);
267
287
  }
268
288
  return RenderTask.__wrap(ret[0]);
269
289
  }
270
290
  /**
291
+ * The region as `renderTask`'s.
271
292
  * @param {number} index
272
293
  * @param {number} width
273
294
  * @param {number} max_height
295
+ * @param {number} x
296
+ * @param {number} y
297
+ * @param {number} region_width
298
+ * @param {number} region_height
274
299
  * @returns {RenderedPage}
275
300
  */
276
- render(index, width, max_height) {
277
- const ret = wasm.document_render(this.__wbg_ptr, index, width, max_height);
301
+ render(index, width, max_height, x, y, region_width, region_height) {
302
+ const ret = wasm.document_render(this.__wbg_ptr, index, width, max_height, x, y, region_width, region_height);
278
303
  if (ret[2]) {
279
304
  throw takeFromExternrefTable0(ret[1]);
280
305
  }
@@ -756,6 +781,20 @@ class RenderedPage {
756
781
  const ret = wasm.__wbg_get_renderedpage_height(this.__wbg_ptr);
757
782
  return ret >>> 0;
758
783
  }
784
+ /**
785
+ * @returns {number}
786
+ */
787
+ get pageHeight() {
788
+ const ret = wasm.__wbg_get_renderedpage_pageHeight(this.__wbg_ptr);
789
+ return ret >>> 0;
790
+ }
791
+ /**
792
+ * @returns {number}
793
+ */
794
+ get pageWidth() {
795
+ const ret = wasm.__wbg_get_renderedpage_pageWidth(this.__wbg_ptr);
796
+ return ret >>> 0;
797
+ }
759
798
  /**
760
799
  * @returns {boolean}
761
800
  */
@@ -770,6 +809,21 @@ class RenderedPage {
770
809
  const ret = wasm.__wbg_get_renderedpage_width(this.__wbg_ptr);
771
810
  return ret >>> 0;
772
811
  }
812
+ /**
813
+ * Where it is in the page's bitmap, and that bitmap's size: see `Bitmap`.
814
+ * @returns {number}
815
+ */
816
+ get x() {
817
+ const ret = wasm.__wbg_get_renderedpage_x(this.__wbg_ptr);
818
+ return ret >>> 0;
819
+ }
820
+ /**
821
+ * @returns {number}
822
+ */
823
+ get y() {
824
+ const ret = wasm.__wbg_get_renderedpage_y(this.__wbg_ptr);
825
+ return ret >>> 0;
826
+ }
773
827
  /**
774
828
  * Moves the pixels out; call once.
775
829
  * @returns {Uint8Array}
@@ -786,6 +840,18 @@ class RenderedPage {
786
840
  set height(arg0) {
787
841
  wasm.__wbg_set_renderedpage_height(this.__wbg_ptr, arg0);
788
842
  }
843
+ /**
844
+ * @param {number} arg0
845
+ */
846
+ set pageHeight(arg0) {
847
+ wasm.__wbg_set_renderedpage_pageHeight(this.__wbg_ptr, arg0);
848
+ }
849
+ /**
850
+ * @param {number} arg0
851
+ */
852
+ set pageWidth(arg0) {
853
+ wasm.__wbg_set_renderedpage_pageWidth(this.__wbg_ptr, arg0);
854
+ }
789
855
  /**
790
856
  * @param {boolean} arg0
791
857
  */
@@ -798,6 +864,19 @@ class RenderedPage {
798
864
  set width(arg0) {
799
865
  wasm.__wbg_set_renderedpage_width(this.__wbg_ptr, arg0);
800
866
  }
867
+ /**
868
+ * Where it is in the page's bitmap, and that bitmap's size: see `Bitmap`.
869
+ * @param {number} arg0
870
+ */
871
+ set x(arg0) {
872
+ wasm.__wbg_set_renderedpage_x(this.__wbg_ptr, arg0);
873
+ }
874
+ /**
875
+ * @param {number} arg0
876
+ */
877
+ set y(arg0) {
878
+ wasm.__wbg_set_renderedpage_y(this.__wbg_ptr, arg0);
879
+ }
801
880
  }
802
881
  if (Symbol.dispose) RenderedPage.prototype[Symbol.dispose] = RenderedPage.prototype.free;
803
882
 
@@ -812,6 +891,15 @@ function setAssetLoader(loader) {
812
891
  wasm.setAssetLoader(loader);
813
892
  }
814
893
 
894
+ /**
895
+ * The most bytes one stream may decode to and one image hold, for this instance: past it, it's left
896
+ * out and the page's results say `truncated`.
897
+ * @param {number} bytes
898
+ */
899
+ function setMaxDecodedBytes(bytes) {
900
+ wasm.setMaxDecodedBytes(bytes);
901
+ }
902
+
815
903
  /**
816
904
  * SHA-256, for the JavaScript side's checks on large assets it read synchronously.
817
905
  * @param {Uint8Array} bytes
@@ -828,7 +916,7 @@ function sha256(bytes) {
828
916
  function __wbg_get_imports() {
829
917
  const import0 = {
830
918
  __proto__: null,
831
- __wbg_Error_ea7352bf93a3f61d: function(arg0, arg1) {
919
+ __wbg_Error_ac777cef8e847b72: function(arg0, arg1) {
832
920
  const ret = Error(getStringFromWasm0(arg0, arg1));
833
921
  return ret;
834
922
  },
@@ -843,14 +931,14 @@ function __wbg_get_imports() {
843
931
  __wbg___wbindgen_throw_41e9ee4f547fc59a: function(arg0, arg1) {
844
932
  throw new Error(getStringFromWasm0(arg0, arg1));
845
933
  },
846
- __wbg_call_1875a20c43a36133: function() { return handleError(function (arg0, arg1, arg2, arg3) {
847
- const ret = arg0.call(arg1, arg2, arg3);
848
- return ret;
849
- }, arguments); },
850
934
  __wbg_call_187d372bd5fdd4aa: function() { return handleError(function (arg0, arg1, arg2) {
851
935
  const ret = arg0.call(arg1, arg2);
852
936
  return ret;
853
937
  }, arguments); },
938
+ __wbg_call_939a2607c4484b0b: function() { return handleError(function (arg0, arg1, arg2, arg3, arg4) {
939
+ const ret = arg0.call(arg1, arg2, arg3, arg4);
940
+ return ret;
941
+ }, arguments); },
854
942
  __wbg_length_7f3c00c40364105e: function(arg0) {
855
943
  const ret = arg0.length;
856
944
  return ret;
@@ -874,7 +962,7 @@ function __wbg_get_imports() {
874
962
  const ret = arg0.push(arg1);
875
963
  return ret;
876
964
  },
877
- __wbg_set_807eb08c2580223b: function() { return handleError(function (arg0, arg1, arg2) {
965
+ __wbg_set_0fd79ff56b8778a4: function() { return handleError(function (arg0, arg1, arg2) {
878
966
  const ret = Reflect.set(arg0, arg1, arg2);
879
967
  return ret;
880
968
  }, arguments); },
@@ -1198,6 +1286,6 @@ async function __wbg_init(module_or_path) {
1198
1286
 
1199
1287
 
1200
1288
 
1201
- return { Annotations, Document, PageObjects, PageScan, PageText, RenderTask, RenderedPage, setAssetLoader, sha256, initSync };
1289
+ return { Annotations, Document, PageObjects, PageScan, PageText, RenderTask, RenderedPage, setAssetLoader, setMaxDecodedBytes, sha256, initSync };
1202
1290
  }
1203
1291
  export const PART_TABLE = "%c";
@@ -30,13 +30,20 @@ export class Document {
30
30
  * Where the file is in this instance's memory, to reopen it on the full engine without a copy.
31
31
  */
32
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>;
33
40
  objects(index: number): PageObjects;
34
41
  /**
35
42
  * A file of `length` bytes read by range. `read(offset, length)`
36
43
  * returns those bytes (a Uint8Array), or undefined when it could not
37
44
  * read them; it is called synchronously, chunk-aligned, at most 1 MiB.
38
45
  */
39
- 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;
40
47
  constructor(bytes: Uint8Array, password?: string | null);
41
48
  /**
42
49
  * Flat, in order: `[title, url or "", level, page]` per item.
@@ -56,9 +63,13 @@ export class Document {
56
63
  pageText(index: number): PageText;
57
64
  /**
58
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.
59
67
  */
60
- renderTask(index: number, width: number, max_height: number): RenderTask;
61
- render(index: number, width: number, max_height: number): RenderedPage;
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;
62
73
  /**
63
74
  * Text, objects and annotations from one interpretation of the page.
64
75
  */
@@ -161,8 +172,15 @@ export class RenderedPage {
161
172
  */
162
173
  takeRgba(): Uint8Array<ArrayBuffer>;
163
174
  height: number;
175
+ pageHeight: number;
176
+ pageWidth: number;
164
177
  truncated: boolean;
165
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;
166
184
  }
167
185
 
168
186
  /**
@@ -173,6 +191,12 @@ export class RenderedPage {
173
191
  */
174
192
  export function setAssetLoader(loader: (index: number) => Uint8Array | undefined): void;
175
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
+
176
200
  /**
177
201
  * SHA-256, for the JavaScript side's checks on large assets it read synchronously.
178
202
  */
@@ -185,16 +209,24 @@ export interface InitOutput {
185
209
  readonly __wbg_annotations_free: (a: number, b: number) => void;
186
210
  readonly __wbg_document_free: (a: number, b: number) => void;
187
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;
188
214
  readonly __wbg_get_renderedpage_truncated: (a: number) => number;
189
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;
190
218
  readonly __wbg_pageobjects_free: (a: number, b: number) => void;
191
219
  readonly __wbg_pagescan_free: (a: number, b: number) => void;
192
220
  readonly __wbg_pagetext_free: (a: number, b: number) => void;
193
221
  readonly __wbg_renderedpage_free: (a: number, b: number) => void;
194
222
  readonly __wbg_rendertask_free: (a: number, b: number) => void;
195
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;
196
226
  readonly __wbg_set_renderedpage_truncated: (a: number, b: number) => void;
197
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;
198
230
  readonly annotations_appearanceObjects: (a: number) => [number, number];
199
231
  readonly annotations_appearanceText: (a: number) => [number, number];
200
232
  readonly annotations_appearanceTextObjects: (a: number) => [number, number];
@@ -208,6 +240,7 @@ export interface InitOutput {
208
240
  readonly document_annotations: (a: number, b: number) => [number, number, number];
209
241
  readonly document_fileLength: (a: number) => number;
210
242
  readonly document_filePointer: (a: number) => number;
243
+ readonly document_links: (a: number, b: number) => [number, number, number];
211
244
  readonly document_objects: (a: number, b: number) => [number, number, number];
212
245
  readonly document_open: (a: number, b: number, c: number, d: number) => [number, number, number];
213
246
  readonly document_openRanged: (a: number, b: number, c: any, d: number, e: number) => [number, number, number];
@@ -216,8 +249,8 @@ export interface InitOutput {
216
249
  readonly document_pageInfo: (a: number, b: number) => [number, number, number, number];
217
250
  readonly document_pageLabels: (a: number) => any;
218
251
  readonly document_pageText: (a: number, b: number) => [number, number, number];
219
- readonly document_render: (a: number, b: number, c: number, d: number) => [number, number, number];
220
- readonly document_renderTask: (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];
221
254
  readonly document_scan: (a: number, b: number) => [number, number, number];
222
255
  readonly document_structureTruncated: (a: number) => [number, number];
223
256
  readonly document_textAndAnnotations: (a: number, b: number) => [number, number, number];
@@ -260,6 +293,7 @@ export interface InitOutput {
260
293
  readonly rendertask_finish: (a: number) => number;
261
294
  readonly rendertask_step: (a: number, b: number) => number;
262
295
  readonly setAssetLoader: (a: any) => void;
296
+ readonly setMaxDecodedBytes: (a: number) => void;
263
297
  readonly sha256: (a: number, b: number) => [number, number];
264
298
  readonly __wbindgen_exn_store: (a: number) => void;
265
299
  readonly __externref_table_alloc: () => number;
package/wasm/recto.wasm CHANGED
Binary file