unpdf 1.2.0 → 1.2.2

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 CHANGED
@@ -273,7 +273,7 @@ extractPdfImages().catch(console.error)
273
273
 
274
274
  ### `renderPageAsImage`
275
275
 
276
- To render a PDF page as an image, you can use the `renderPageAsImage` method. This method will return an `ArrayBuffer` of the rendered image.
276
+ To render a PDF page as an image, you can use the `renderPageAsImage` method. This method will return an `ArrayBuffer` of the rendered image. It can also return a data URL (`string`) if `toDataURL` option is set to `true`.
277
277
 
278
278
  > [!NOTE]
279
279
  > This method will only work in Node.js and browser environments.
@@ -286,8 +286,8 @@ In order to use this method, make sure to meet the following requirements:
286
286
  **Type Declaration**
287
287
 
288
288
  ```ts
289
- declare function renderPageAsImage(
290
- data: DocumentInitParameters['data'],
289
+ function renderPageAsImage(
290
+ data: DocumentInitParameters['data'] | PDFDocumentProxy,
291
291
  pageNumber: number,
292
292
  options?: {
293
293
  canvasImport?: () => Promise<typeof import('@napi-rs/canvas')>
@@ -295,11 +295,24 @@ declare function renderPageAsImage(
295
295
  scale?: number
296
296
  width?: number
297
297
  height?: number
298
+ toDataURL?: false
298
299
  },
299
300
  ): Promise<ArrayBuffer>
301
+ function renderPageAsImage(
302
+ data: DocumentInitParameters['data'] | PDFDocumentProxy,
303
+ pageNumber: number,
304
+ options: {
305
+ canvasImport?: () => Promise<typeof import('@napi-rs/canvas')>
306
+ /** @default 1.0 */
307
+ scale?: number
308
+ width?: number
309
+ height?: number
310
+ toDataURL: true
311
+ },
312
+ ): Promise<string>
300
313
  ```
301
314
 
302
- **Example**
315
+ **Examples**
303
316
 
304
317
  ```ts
305
318
  import { definePDFJSModule, renderPageAsImage } from 'unpdf'
@@ -318,6 +331,36 @@ const result = await renderPageAsImage(buffer, pageNumber, {
318
331
  await writeFile('dummy-page-1.png', new Uint8Array(result))
319
332
  ```
320
333
 
334
+ ```ts
335
+ import { definePDFJSModule, renderPageAsImage } from 'unpdf'
336
+
337
+ await definePDFJSModule(() => import('pdfjs-dist'))
338
+
339
+ const pdf = await readFile('./dummy.pdf')
340
+ const buffer = new Uint8Array(pdf)
341
+ const pageNumber = 1
342
+
343
+ const result = await renderPageAsImage(buffer, pageNumber, {
344
+ canvasImport: () => import('@napi-rs/canvas'),
345
+ scale: 2,
346
+ toDataURL: true,
347
+ })
348
+
349
+ const html = `<!DOCTYPE html>
350
+ <html lang="en">
351
+ <head>
352
+ <meta charset="UTF-8">
353
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
354
+ <title>Dummy Page</title>
355
+ </head>
356
+ <body>
357
+ <img alt="Example Page" src="${result}">
358
+ </body>
359
+ </html>`
360
+
361
+ await writeFile('dummy-page-1.html', html)
362
+ ```
363
+
321
364
  ## License
322
365
 
323
366
  [MIT](./LICENSE) License © 2023-PRESENT [Johann Schopplich](https://github.com/johannschopplich)
package/dist/index.cjs CHANGED
@@ -187,6 +187,9 @@ async function renderPageAsImage$1(data, pageNumber, options = {}) {
187
187
  viewport
188
188
  }).promise;
189
189
  const dataUrl = drawingContext.canvas.toDataURL();
190
+ if (options.toDataURL) {
191
+ return dataUrl;
192
+ }
190
193
  const response = await fetch(dataUrl);
191
194
  return await response.arrayBuffer();
192
195
  }
package/dist/index.d.cts CHANGED
@@ -32,7 +32,16 @@ declare function renderPageAsImage$1(data: DocumentInitParameters['data'] | PDFD
32
32
  scale?: number;
33
33
  width?: number;
34
34
  height?: number;
35
+ toDataURL?: false;
35
36
  }): Promise<ArrayBuffer>;
37
+ declare function renderPageAsImage$1(data: DocumentInitParameters['data'] | PDFDocumentProxy, pageNumber: number, options: {
38
+ canvasImport?: () => Promise<typeof _napi_rs_canvas>;
39
+ /** @default 1.0 */
40
+ scale?: number;
41
+ width?: number;
42
+ height?: number;
43
+ toDataURL: true;
44
+ }): Promise<string>;
36
45
 
37
46
  declare function extractLinks$1(data: DocumentInitParameters['data'] | PDFDocumentProxy): Promise<{
38
47
  totalPages: number;
package/dist/index.d.mts CHANGED
@@ -32,7 +32,16 @@ declare function renderPageAsImage$1(data: DocumentInitParameters['data'] | PDFD
32
32
  scale?: number;
33
33
  width?: number;
34
34
  height?: number;
35
+ toDataURL?: false;
35
36
  }): Promise<ArrayBuffer>;
37
+ declare function renderPageAsImage$1(data: DocumentInitParameters['data'] | PDFDocumentProxy, pageNumber: number, options: {
38
+ canvasImport?: () => Promise<typeof _napi_rs_canvas>;
39
+ /** @default 1.0 */
40
+ scale?: number;
41
+ width?: number;
42
+ height?: number;
43
+ toDataURL: true;
44
+ }): Promise<string>;
36
45
 
37
46
  declare function extractLinks$1(data: DocumentInitParameters['data'] | PDFDocumentProxy): Promise<{
38
47
  totalPages: number;
package/dist/index.d.ts CHANGED
@@ -32,7 +32,16 @@ declare function renderPageAsImage$1(data: DocumentInitParameters['data'] | PDFD
32
32
  scale?: number;
33
33
  width?: number;
34
34
  height?: number;
35
+ toDataURL?: false;
35
36
  }): Promise<ArrayBuffer>;
37
+ declare function renderPageAsImage$1(data: DocumentInitParameters['data'] | PDFDocumentProxy, pageNumber: number, options: {
38
+ canvasImport?: () => Promise<typeof _napi_rs_canvas>;
39
+ /** @default 1.0 */
40
+ scale?: number;
41
+ width?: number;
42
+ height?: number;
43
+ toDataURL: true;
44
+ }): Promise<string>;
36
45
 
37
46
  declare function extractLinks$1(data: DocumentInitParameters['data'] | PDFDocumentProxy): Promise<{
38
47
  totalPages: number;
package/dist/index.mjs CHANGED
@@ -185,6 +185,9 @@ async function renderPageAsImage$1(data, pageNumber, options = {}) {
185
185
  viewport
186
186
  }).promise;
187
187
  const dataUrl = drawingContext.canvas.toDataURL();
188
+ if (options.toDataURL) {
189
+ return dataUrl;
190
+ }
188
191
  const response = await fetch(dataUrl);
189
192
  return await response.arrayBuffer();
190
193
  }