Skip to content

Commit 75a8d86

Browse files
authored
Merge pull request #8 from Doczilla-APP/improvements
chore: Updated deps
2 parents 12097f5 + 04eb54b commit 75a8d86

File tree

3 files changed

+127
-310
lines changed

3 files changed

+127
-310
lines changed

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@
3737
"test": "jest --passWithNoTests"
3838
},
3939
"dependencies": {
40-
"canvas": "^3.1.0",
40+
"@napi-rs/canvas": "0.1.65",
4141
"node-addon-api": "^8.3.0",
4242
"node-gyp": "^11.0.0",
4343
"pdfjs-dist": "4.10.38"

src/pdf-to-png.ts

Lines changed: 13 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,25 @@
11
/**
22
* https://github.com/mozilla/pdf.js/blob/3b94e9fdce616a9b4899800559cbca15169acca6/examples/node/pdf2png/pdf2png.mjs
33
*/
4-
import * as Canvas from 'canvas'
54
import { readFileSync } from 'node:fs'
65
import { dirname, join } from 'node:path'
7-
import { getDocument } from 'pdfjs-dist'
6+
import { getDocument } from 'pdfjs-dist/legacy/build/pdf.mjs'
87

9-
const PDFJS_DIR = dirname(require.resolve('pdfjs-dist'))
10-
const C_MAP_URL = join(PDFJS_DIR, '../cmaps/')
11-
12-
// Where the standard fonts are located.
13-
const STANDARD_FONT_DATA_URL = join(PDFJS_DIR, '../standard_fonts/')
8+
const PDFJS_DIR = join(dirname(require.resolve('pdfjs-dist')), '..')
149

1510
export async function pdfToPng(
1611
pdf: string | Buffer
1712
): Promise<Buffer[]> {
13+
1814
// Load PDF
1915
const data = new Uint8Array(Buffer.isBuffer(pdf) ? pdf : readFileSync(pdf))
2016
const loadingTask = getDocument({
2117
data,
22-
cMapUrl: C_MAP_URL,
23-
cMapPacked: true,
24-
standardFontDataUrl: STANDARD_FONT_DATA_URL
18+
// Where the standard fonts are located.
19+
standardFontDataUrl: join(PDFJS_DIR, 'standard_fonts/'),
20+
// Some PDFs need external cmaps.
21+
cMapUrl: join(PDFJS_DIR, 'cmaps/'),
22+
cMapPacked: true
2523
})
2624

2725
const pdfDocument = await loadingTask.promise
@@ -31,18 +29,19 @@ export async function pdfToPng(
3129
const images: Buffer[] = []
3230
for (let page = 1; page <= numPages; page += 1) {
3331
const pdfPage = await pdfDocument.getPage(page)
32+
const canvasFactory = pdfDocument.canvasFactory
3433

3534
const viewport = pdfPage.getViewport({ scale: 1.0 })
36-
const canvasAndContext = Canvas.createCanvas(viewport.width, viewport.height)
35+
// @ts-expect-error unknown method on Object
36+
const canvasAndContext = canvasFactory.create(viewport.width, viewport.height)
3737

3838
await pdfPage.render({
39-
canvasContext: canvasAndContext.getContext('2d') as never,
39+
canvasContext: canvasAndContext.context,
4040
viewport
4141
}).promise
4242

43+
images.push(canvasAndContext.canvas.toBuffer('image/png'))
4344
pdfPage.cleanup()
44-
45-
images.push(canvasAndContext.toBuffer('image/png'))
4645
}
4746

4847
return images

0 commit comments

Comments
 (0)