@iqx-limited/quick-pdf 1.5.0 → 1.6.1

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
@@ -14,7 +14,7 @@ This project provides a set of utilities for converting various file formats wit
14
14
  ## Requirements
15
15
 
16
16
  - **Node.js**: This project is built with Node.js and uses ES modules. NodeJS > v20 required.
17
- - Firefox Browser installed on machine.
17
+ - Firefox or Chrome (Module Dependant) either remotely or on your machine.
18
18
 
19
19
  # Operations Available in the Package
20
20
 
@@ -62,6 +62,7 @@ Validation occurs on the html string passed. The Error Object returned is:
62
62
  |-----------|----------|--------------------------------------------------|---------|
63
63
  | `base64` | `boolean` | PDF should be returned as a base64 encoded string. |false|
64
64
  | `rules` | `object` | Optional custom validation rules for HTML content - see https://html-validate.org/rules/ for more details. Default is all standard rules enabled. |''|
65
+ | `closeBrowser` | `boolean` | Optional flag to close the browser after conversion. | false |
65
66
 
66
67
  ## 2. `img2pdf`
67
68
 
@@ -84,9 +85,12 @@ img2pdf(input: Buffer | string | URL, options: Options = {})
84
85
  | `header` | `string` | Optional header text to include in the PDF. |undefined|
85
86
  | `footer` | `string` | Optional footer text to include in the PDF. |undefined|
86
87
  | `fontSize` | `number` | Font Size of the header or footer | 10 |
88
+ | `closeBrowser` | `boolean` | Optional flag to close the browser after conversion. | false |
87
89
 
88
90
  ## 3. `pdf2img`
89
91
 
92
+ FIREFOX is a hard requirement. Chrome will not work with this module.
93
+
90
94
  ### Function Signature:
91
95
  ```typescript
92
96
  pdf2img(input: Buffer | string | URL, options: Options = {})
@@ -106,3 +110,19 @@ pdf2img(input: Buffer | string | URL, options: Options = {})
106
110
  | `quality` | `number` | Quality for rendering the PDF pages, not applicable for PNG. Default is 100. |
107
111
  | `password`| `string` | Optional password for decrypting password-protected PDFs. |
108
112
  | `type` | `string` | The mime type to output - "png" | "jpeg" | "webp". Default is "png". |
113
+ | `page` | `number` | Optional page number to return. If not specified, all pages are returned. |
114
+ | `closeBrowser` | `boolean` | Optional flag to close the browser after conversion. Default is false. |
115
+
116
+ ## 3. `browsers`
117
+
118
+ ### Function Signature:
119
+ ```typescript
120
+ launchBrowser(browserType?: "firefox" | "chrome", wsURL?: string): { browser: Browser; type: string }
121
+ closeBrowser()
122
+ ```
123
+
124
+ If no browserType is specified, the first existing instance of a browser will be returned - starting with firefox. If no browser is found, it will try and retrieve the first instance of a browser locally. Where this results in no browser an error will be thrown.
125
+ If a browserType is specified and no cached browser of that type is found, the browser will attempt to launch from your local machine. Include a wsURL to connect to a remote browser instance. An error will be thrown if not found.
126
+
127
+ `closeBrowser()` will close all running browsers, if remote the browser will disconnect.
128
+ On calling a module without a running instance, the browser will be created automatically - starting with firefox. Pass the closeBrowser parameter to your given module to call `closeBrowser()` on completion.
package/dist/index.cjs CHANGED
@@ -4,14 +4,21 @@ var semver = require('semver');
4
4
  var node_url = require('node:url');
5
5
  var node_path = require('node:path');
6
6
  var promises = require('node:fs/promises');
7
- var puppeteer = require('puppeteer');
7
+ var puppeteer = require('puppeteer-core');
8
8
  var imageSize = require('image-size');
9
9
  var PDFDocument = require('pdfkit');
10
10
  var node_fs = require('node:fs');
11
11
  var node = require('html-validate/node');
12
12
 
13
13
  let firefox = null;
14
+ let chrome = null;
15
+ let isRemoteBrowser = false;
14
16
  const BROWSER_PATHS = {
17
+ chrome: {
18
+ linux: "/usr/bin/google-chrome",
19
+ mac: "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
20
+ windows: node_path.join("C:", "Program Files", "Google", "Chrome", "Application", "chrome.exe")
21
+ },
15
22
  firefox: {
16
23
  linux: "/usr/bin/firefox",
17
24
  mac: "/Applications/Firefox.app/Contents/MacOS/firefox",
@@ -36,99 +43,194 @@ const isBrowserInstalled = async (browser) => {
36
43
  return false;
37
44
  }
38
45
  };
39
- async function launchBrowser(browserType) {
40
- return new Promise(async (resolve) => {
41
- if (firefox)
42
- return resolve(firefox);
43
- if (!firefox) {
44
- const os = getOS();
45
- const executablePath = BROWSER_PATHS[browserType][os];
46
- if (!(await isBrowserInstalled(browserType))) {
47
- console.error(`${browserType.toUpperCase()} is not installed.`);
48
- process.exit(1);
46
+ let launching = null;
47
+ const pagePoolSize = 5;
48
+ const RESOURCE_LIMIT = 100;
49
+ let resourceCount = 0;
50
+ let firefoxPagePool = [];
51
+ let chromePagePool = [];
52
+ async function launchPages(browser, type) {
53
+ let pool = type === "chrome" ? chromePagePool : firefoxPagePool;
54
+ if (!browser) {
55
+ throw new Error("Browser Not Launched");
56
+ }
57
+ if (pool.length > 0) {
58
+ return pool;
59
+ }
60
+ pool = await Promise.all(Array.from({ length: pagePoolSize }, async () => {
61
+ if (browser?.connected) {
62
+ const page = await browser.newPage();
63
+ await page.setRequestInterception(true);
64
+ await page.setDefaultNavigationTimeout(10000);
65
+ await page.goto("about:blank");
66
+ page.on("request", request => {
67
+ resourceCount++;
68
+ if (resourceCount > RESOURCE_LIMIT) {
69
+ page.reload();
70
+ resourceCount = 0;
71
+ }
72
+ else {
73
+ request.continue();
74
+ }
75
+ });
76
+ return page;
77
+ }
78
+ else {
79
+ throw new Error("Browser not available");
80
+ }
81
+ }));
82
+ if (type === "chrome") {
83
+ chromePagePool = pool;
84
+ }
85
+ else {
86
+ firefoxPagePool = pool;
87
+ }
88
+ return pool;
89
+ }
90
+ async function getPage(type) {
91
+ await launchPages(type === "chrome" ? chrome : firefox, type);
92
+ const pool = type === "chrome" ? chromePagePool : firefoxPagePool;
93
+ const page = pool.pop();
94
+ if (!page)
95
+ throw new Error("Page pool unexpectedly empty");
96
+ return page;
97
+ }
98
+ async function restorePage(type, page) {
99
+ await page.setViewport({
100
+ width: 800,
101
+ height: 600,
102
+ deviceScaleFactor: 1
103
+ });
104
+ if (type === "chrome") {
105
+ chromePagePool.push(page);
106
+ }
107
+ else if (type === "firefox") {
108
+ firefoxPagePool.push(page);
109
+ }
110
+ }
111
+ async function launchBrowser(browserType, wsURL) {
112
+ if (!browserType) {
113
+ if (firefox?.connected) {
114
+ return { browser: firefox, type: "firefox" };
115
+ }
116
+ else if (chrome?.connected) {
117
+ return { browser: chrome, type: "chrome" };
118
+ }
119
+ else {
120
+ const [firefox, chrome] = await Promise.all([
121
+ launchBrowser("firefox", wsURL).catch(() => null),
122
+ launchBrowser("chrome", wsURL).catch(() => null)
123
+ ]);
124
+ if (firefox) {
125
+ return firefox;
126
+ }
127
+ else if (chrome) {
128
+ return chrome;
49
129
  }
50
- const browser = await puppeteer.launch({
130
+ throw new Error("No browser launched yet");
131
+ }
132
+ }
133
+ if (browserType === "firefox" && firefox?.connected) {
134
+ return {
135
+ browser: firefox,
136
+ type: "firefox"
137
+ };
138
+ }
139
+ else if (browserType === "chrome" && chrome?.connected) {
140
+ return {
141
+ browser: chrome,
142
+ type: "chrome"
143
+ };
144
+ }
145
+ if (!(await isBrowserInstalled(browserType))) {
146
+ throw new Error(`${browserType.toUpperCase()} is not installed.`);
147
+ }
148
+ if (launching) {
149
+ await launching;
150
+ return launchBrowser(browserType, wsURL);
151
+ }
152
+ launching = (async () => {
153
+ isRemoteBrowser = !!wsURL;
154
+ let browser;
155
+ if (wsURL) {
156
+ console.log(`Launching remote ${browserType.toUpperCase()} browser...`);
157
+ browser = await puppeteer.connect({
158
+ browserWSEndpoint: wsURL,
159
+ acceptInsecureCerts: true
160
+ });
161
+ }
162
+ else {
163
+ console.log(`Launching local ${browserType.toUpperCase()} browser...`);
164
+ browser = await puppeteer.launch({
51
165
  browser: browserType,
52
166
  headless: "shell",
53
- executablePath,
167
+ executablePath: BROWSER_PATHS[browserType][getOS()],
54
168
  args: ["--no-sandbox", "--disable-setuid-sandbox"]
55
169
  });
56
- {
57
- firefox = browser;
58
- }
59
- return resolve(browser);
60
170
  }
61
- throw new Error(`Browser type ${browserType} is not supported`);
62
- });
171
+ await launchPages(browser, browserType);
172
+ if (browserType === "chrome") {
173
+ chrome = browser;
174
+ chrome.on("disconnected", () => {
175
+ chrome = null;
176
+ });
177
+ }
178
+ else {
179
+ firefox = browser;
180
+ firefox.on("disconnected", () => {
181
+ firefox = null;
182
+ });
183
+ }
184
+ launching = null;
185
+ return {
186
+ browser,
187
+ type: browserType
188
+ };
189
+ })();
190
+ return launching;
63
191
  }
64
- async function closeBrowsers() {
192
+ async function closeBrowser() {
65
193
  try {
66
- if (firefox) {
67
- await (await firefox).close();
68
- firefox = null;
194
+ if (chrome?.connected) {
195
+ await chrome.disconnect();
196
+ }
197
+ if (firefox?.connected) {
198
+ await firefox.disconnect();
69
199
  }
200
+ if (!isRemoteBrowser) {
201
+ if (chrome) {
202
+ await chrome.close();
203
+ }
204
+ if (firefox) {
205
+ await firefox.close();
206
+ }
207
+ }
208
+ console.log("Browser closed successfully.");
209
+ chrome = null;
210
+ firefox = null;
70
211
  }
71
212
  catch (err) {
72
213
  console.error("Error closing browsers in @iqx-limited/quick-form:", err);
73
214
  }
74
215
  }
75
216
  process.on("exit", async () => {
76
- await closeBrowsers();
217
+ await closeBrowser();
77
218
  });
78
219
  process.on("SIGINT", async () => {
79
220
  console.log("SIGINT received. Closing browsers...");
80
- await closeBrowsers();
221
+ await closeBrowser();
81
222
  });
82
223
  process.on("SIGTERM", async () => {
83
224
  console.log("SIGTERM received. Closing browsers...");
84
- await closeBrowsers();
225
+ await closeBrowser();
85
226
  });
86
227
 
87
- const pagePoolSize$1 = 5;
88
- const RESOURCE_LIMIT$1 = 100;
89
- let resourceCount$1 = 0;
90
- let pagePool$1 = [];
91
- let browser$1 = null;
92
- async function launchPages$1() {
93
- if (pagePool$1.length > 0) {
94
- return pagePool$1;
95
- }
96
- pagePool$1 = await Promise.all(Array.from({ length: pagePoolSize$1 }, async () => {
97
- if (browser$1) {
98
- const page = await browser$1.newPage();
99
- await page.setRequestInterception(true);
100
- await page.setDefaultNavigationTimeout(10000);
101
- await page.goto("about:blank");
102
- page.on("request", request => {
103
- resourceCount$1++;
104
- if (resourceCount$1 > RESOURCE_LIMIT$1) {
105
- page.reload();
106
- resourceCount$1 = 0;
107
- }
108
- else {
109
- request.continue();
110
- }
111
- });
112
- return page;
113
- }
114
- else {
115
- throw new Error("Browser not available");
116
- }
117
- }));
118
- return pagePool$1;
119
- }
120
228
  const pdf2img = async (input, options = {}) => {
121
- browser$1 = await launchBrowser("firefox");
122
- if (!browser$1?.connected) {
229
+ const { browser } = await launchBrowser("firefox");
230
+ if (!browser?.connected) {
123
231
  throw new Error("Browser not available");
124
232
  }
125
- const pagePool = await launchPages$1();
126
- let page = pagePool.pop();
127
- let tempPage = false;
128
- if (!page) {
129
- tempPage = true;
130
- page = await browser$1.newPage();
131
- }
233
+ const page = await getPage("firefox");
132
234
  let path = "";
133
235
  let address = "";
134
236
  let tempFile = false;
@@ -163,10 +265,6 @@ const pdf2img = async (input, options = {}) => {
163
265
  catch { }
164
266
  }
165
267
  await page.waitForSelector("canvas", { timeout: 5000 });
166
- await page.waitForSelector(".loadingIcon", {
167
- timeout: 5000,
168
- hidden: true
169
- });
170
268
  const imageBuffers = [];
171
269
  const pageCount = await page.evaluate(() => {
172
270
  if (window.PDFViewerApplication) {
@@ -191,57 +289,21 @@ const pdf2img = async (input, options = {}) => {
191
289
  height: pdfPage.height,
192
290
  deviceScaleFactor: 1
193
291
  });
194
- for (let i = 1; i <= pageCount; i++) {
195
- await page.evaluate((pageNum) => {
196
- if (window.PDFViewerApplication) {
197
- window.PDFViewerApplication.page = pageNum;
198
- }
199
- }, i);
200
- const pageBoundingBox = await page.evaluate((pageNum) => {
201
- const pageContainer = document.querySelector(`.page[data-page-number="${pageNum}"]`);
202
- if (!pageContainer)
203
- throw new Error(`Page container for page ${pageNum} not found`);
204
- const canvas = pageContainer.querySelector("canvas");
205
- if (!canvas)
206
- throw new Error(`Canvas for page ${pageNum} not found`);
207
- const { x, y, width, height } = canvas.getBoundingClientRect();
208
- return { x, y, width, height };
209
- }, i);
210
- const screenshotOptions = {
211
- fullPage: false,
212
- type: options.type ?? "png",
213
- clip: {
214
- x: pageBoundingBox.x,
215
- y: pageBoundingBox.y,
216
- width: pageBoundingBox.width,
217
- height: pageBoundingBox.height
218
- }
219
- };
220
- if (options.type && options.type !== "png") {
221
- screenshotOptions.quality = options.quality ?? 100;
222
- }
223
- try {
224
- const uint8array = await page.screenshot(screenshotOptions);
225
- imageBuffers.push(Buffer.from(uint8array));
292
+ if (options.page) {
293
+ if (options.page < 1 || options.page > pageCount) {
294
+ throw new Error(`Page number ${options.page} is out of bounds. PDF has ${pageCount} pages.`);
226
295
  }
227
- catch {
228
- throw new Error(`Failed to render page ${i} of the PDF`);
296
+ imageBuffers.push(await renderPage(page, options.page, options));
297
+ }
298
+ else {
299
+ for (let i = 1; i <= pageCount; i++) {
300
+ imageBuffers.push(await renderPage(page, i, options));
229
301
  }
230
302
  }
231
303
  if (tempFile) {
232
304
  await promises.unlink(path);
233
305
  }
234
- if (tempPage) {
235
- page.close();
236
- }
237
- else {
238
- await page.setViewport({
239
- width: 800,
240
- height: 600,
241
- deviceScaleFactor: 1
242
- });
243
- pagePool.push(page);
244
- }
306
+ await restorePage("firefox", page);
245
307
  return {
246
308
  length: pageCount,
247
309
  metadata: metadata.info,
@@ -252,18 +314,57 @@ const pdf2img = async (input, options = {}) => {
252
314
  if (tempFile) {
253
315
  await promises.unlink(path);
254
316
  }
255
- if (tempPage) {
256
- page.close();
317
+ await restorePage("firefox", page);
318
+ throw error;
319
+ }
320
+ finally {
321
+ if (options.closeBrowser) {
322
+ await closeBrowser();
257
323
  }
258
- else {
259
- await page.setViewport({
260
- width: 800,
261
- height: 600,
262
- deviceScaleFactor: 1
263
- });
264
- pagePool.push(page);
324
+ }
325
+ };
326
+ const renderPage = async (page, pageNumber, options) => {
327
+ await page.evaluate((pageNum) => {
328
+ if (window.PDFViewerApplication) {
329
+ window.PDFViewerApplication.page = pageNum;
265
330
  }
266
- throw error;
331
+ }, pageNumber);
332
+ await page.waitForSelector(`.page[data-page-number="${pageNumber}"]`, { timeout: 5000 });
333
+ await page.waitForFunction((pageNum) => {
334
+ const pageContainer = document.querySelector(`.page[data-page-number="${pageNum}"]`);
335
+ if (!pageContainer)
336
+ return true;
337
+ return !pageContainer.querySelector(".loadingIcon");
338
+ }, {}, pageNumber);
339
+ const pageBoundingBox = await page.evaluate((pageNum) => {
340
+ const pageContainer = document.querySelector(`.page[data-page-number="${pageNum}"]`);
341
+ if (!pageContainer)
342
+ throw new Error(`Page container for page ${pageNum} not found`);
343
+ const canvas = pageContainer.querySelector("canvas");
344
+ if (!canvas)
345
+ throw new Error(`Canvas for page ${pageNum} not found`);
346
+ const { x, y, width, height } = canvas.getBoundingClientRect();
347
+ return { x, y, width, height };
348
+ }, pageNumber);
349
+ const screenshotOptions = {
350
+ fullPage: false,
351
+ type: options.type ?? "png",
352
+ clip: {
353
+ x: pageBoundingBox.x,
354
+ y: pageBoundingBox.y,
355
+ width: pageBoundingBox.width,
356
+ height: pageBoundingBox.height
357
+ }
358
+ };
359
+ if (options.type && options.type !== "png") {
360
+ screenshotOptions.quality = options.quality ?? 100;
361
+ }
362
+ try {
363
+ const uint8array = await page.screenshot(screenshotOptions);
364
+ return Buffer.from(uint8array);
365
+ }
366
+ catch {
367
+ throw new Error(`Failed to render page ${pageNumber} of the PDF`);
267
368
  }
268
369
  };
269
370
 
@@ -355,44 +456,16 @@ const img2pdf = async (input, options = {}) => {
355
456
  doc.end();
356
457
  }).catch((e) => {
357
458
  reject(e);
459
+ }).finally(async () => {
460
+ if (options.closeBrowser) {
461
+ await closeBrowser();
462
+ }
358
463
  });
359
464
  });
360
465
  };
361
466
 
362
- const pagePoolSize = 5;
363
- const RESOURCE_LIMIT = 100;
364
- let resourceCount = 0;
365
- let pagePool = [];
366
- let browser = null;
367
- async function launchPages() {
368
- if (pagePool.length > 0) {
369
- return pagePool;
370
- }
371
- pagePool = await Promise.all(Array.from({ length: pagePoolSize }, async () => {
372
- if (browser && browser.connected) {
373
- const page = await browser.newPage();
374
- await page.setRequestInterception(true);
375
- await page.setDefaultNavigationTimeout(10000);
376
- await page.goto("about:blank");
377
- page.on("request", request => {
378
- resourceCount++;
379
- if (resourceCount > RESOURCE_LIMIT) {
380
- page.reload();
381
- resourceCount = 0;
382
- }
383
- else {
384
- request.continue();
385
- }
386
- });
387
- return page;
388
- }
389
- else {
390
- throw new Error("Browser not available");
391
- }
392
- }));
393
- return pagePool;
394
- }
395
467
  const html2pdf = async (input, options = {}) => {
468
+ const { browser, type } = await launchBrowser();
396
469
  const validator = new node.HtmlValidate(options.rules ?? {
397
470
  extends: ["html-validate:standard"],
398
471
  rules: {
@@ -406,17 +479,10 @@ const html2pdf = async (input, options = {}) => {
406
479
  else if (node_fs.existsSync(input)) {
407
480
  htmlContent = await readHtmlFromFilePath(htmlContent);
408
481
  }
409
- browser = await launchBrowser("firefox");
410
482
  if (!browser?.connected) {
411
483
  throw new Error("Browser not available");
412
484
  }
413
- const pagePool = await launchPages();
414
- let page = pagePool.pop();
415
- let tempPage = false;
416
- if (!page) {
417
- tempPage = true;
418
- page = await browser.newPage();
419
- }
485
+ const page = await getPage(type);
420
486
  const validation = (options.validation ?? true);
421
487
  try {
422
488
  const res = validation ? await validator.validateString(htmlContent) : { valid: true };
@@ -460,16 +526,9 @@ const html2pdf = async (input, options = {}) => {
460
526
  }
461
527
  }
462
528
  finally {
463
- if (tempPage) {
464
- page.close();
465
- }
466
- else {
467
- await page.setViewport({
468
- width: 800,
469
- height: 600,
470
- deviceScaleFactor: 1
471
- });
472
- pagePool.push(page);
529
+ await restorePage(type, page);
530
+ if (options.closeBrowser) {
531
+ await closeBrowser();
473
532
  }
474
533
  }
475
534
  };
@@ -480,7 +539,9 @@ if (!semver.satisfies(process.version, requiredVersion)) {
480
539
  process.exit(1);
481
540
  }
482
541
 
542
+ exports.closeBrowser = closeBrowser;
483
543
  exports.html2pdf = html2pdf;
484
544
  exports.img2pdf = img2pdf;
545
+ exports.launchBrowser = launchBrowser;
485
546
  exports.pdf2img = pdf2img;
486
547
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/browsers.ts","../src/modules/pdf2img.ts","../src/utilies.ts","../src/modules/img2pdf.ts","../src/modules/html2pdf.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null],"names":["join","access","pagePoolSize","RESOURCE_LIMIT","resourceCount","pagePool","browser","launchPages","resolve","pathToFileURL","writeFile","unlink","existsSync","readFileSync","imageSize","HtmlValidate","satisfies"],"mappings":"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"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/browsers.ts","../src/modules/pdf2img.ts","../src/utilies.ts","../src/modules/img2pdf.ts","../src/modules/html2pdf.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null],"names":["join","access","resolve","pathToFileURL","writeFile","unlink","existsSync","readFileSync","imageSize","HtmlValidate","satisfies"],"mappings":"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"}
package/dist/index.mjs CHANGED
@@ -2,14 +2,21 @@ import { satisfies } from 'semver';
2
2
  import { pathToFileURL } from 'node:url';
3
3
  import { join, resolve } from 'node:path';
4
4
  import { access, writeFile, unlink } from 'node:fs/promises';
5
- import puppeteer from 'puppeteer';
5
+ import puppeteer from 'puppeteer-core';
6
6
  import { imageSize } from 'image-size';
7
7
  import PDFDocument from 'pdfkit';
8
8
  import { existsSync, readFileSync } from 'node:fs';
9
9
  import { HtmlValidate } from 'html-validate/node';
10
10
 
11
11
  let firefox = null;
12
+ let chrome = null;
13
+ let isRemoteBrowser = false;
12
14
  const BROWSER_PATHS = {
15
+ chrome: {
16
+ linux: "/usr/bin/google-chrome",
17
+ mac: "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome",
18
+ windows: join("C:", "Program Files", "Google", "Chrome", "Application", "chrome.exe")
19
+ },
13
20
  firefox: {
14
21
  linux: "/usr/bin/firefox",
15
22
  mac: "/Applications/Firefox.app/Contents/MacOS/firefox",
@@ -34,99 +41,194 @@ const isBrowserInstalled = async (browser) => {
34
41
  return false;
35
42
  }
36
43
  };
37
- async function launchBrowser(browserType) {
38
- return new Promise(async (resolve) => {
39
- if (firefox)
40
- return resolve(firefox);
41
- if (!firefox) {
42
- const os = getOS();
43
- const executablePath = BROWSER_PATHS[browserType][os];
44
- if (!(await isBrowserInstalled(browserType))) {
45
- console.error(`${browserType.toUpperCase()} is not installed.`);
46
- process.exit(1);
44
+ let launching = null;
45
+ const pagePoolSize = 5;
46
+ const RESOURCE_LIMIT = 100;
47
+ let resourceCount = 0;
48
+ let firefoxPagePool = [];
49
+ let chromePagePool = [];
50
+ async function launchPages(browser, type) {
51
+ let pool = type === "chrome" ? chromePagePool : firefoxPagePool;
52
+ if (!browser) {
53
+ throw new Error("Browser Not Launched");
54
+ }
55
+ if (pool.length > 0) {
56
+ return pool;
57
+ }
58
+ pool = await Promise.all(Array.from({ length: pagePoolSize }, async () => {
59
+ if (browser?.connected) {
60
+ const page = await browser.newPage();
61
+ await page.setRequestInterception(true);
62
+ await page.setDefaultNavigationTimeout(10000);
63
+ await page.goto("about:blank");
64
+ page.on("request", request => {
65
+ resourceCount++;
66
+ if (resourceCount > RESOURCE_LIMIT) {
67
+ page.reload();
68
+ resourceCount = 0;
69
+ }
70
+ else {
71
+ request.continue();
72
+ }
73
+ });
74
+ return page;
75
+ }
76
+ else {
77
+ throw new Error("Browser not available");
78
+ }
79
+ }));
80
+ if (type === "chrome") {
81
+ chromePagePool = pool;
82
+ }
83
+ else {
84
+ firefoxPagePool = pool;
85
+ }
86
+ return pool;
87
+ }
88
+ async function getPage(type) {
89
+ await launchPages(type === "chrome" ? chrome : firefox, type);
90
+ const pool = type === "chrome" ? chromePagePool : firefoxPagePool;
91
+ const page = pool.pop();
92
+ if (!page)
93
+ throw new Error("Page pool unexpectedly empty");
94
+ return page;
95
+ }
96
+ async function restorePage(type, page) {
97
+ await page.setViewport({
98
+ width: 800,
99
+ height: 600,
100
+ deviceScaleFactor: 1
101
+ });
102
+ if (type === "chrome") {
103
+ chromePagePool.push(page);
104
+ }
105
+ else if (type === "firefox") {
106
+ firefoxPagePool.push(page);
107
+ }
108
+ }
109
+ async function launchBrowser(browserType, wsURL) {
110
+ if (!browserType) {
111
+ if (firefox?.connected) {
112
+ return { browser: firefox, type: "firefox" };
113
+ }
114
+ else if (chrome?.connected) {
115
+ return { browser: chrome, type: "chrome" };
116
+ }
117
+ else {
118
+ const [firefox, chrome] = await Promise.all([
119
+ launchBrowser("firefox", wsURL).catch(() => null),
120
+ launchBrowser("chrome", wsURL).catch(() => null)
121
+ ]);
122
+ if (firefox) {
123
+ return firefox;
124
+ }
125
+ else if (chrome) {
126
+ return chrome;
47
127
  }
48
- const browser = await puppeteer.launch({
128
+ throw new Error("No browser launched yet");
129
+ }
130
+ }
131
+ if (browserType === "firefox" && firefox?.connected) {
132
+ return {
133
+ browser: firefox,
134
+ type: "firefox"
135
+ };
136
+ }
137
+ else if (browserType === "chrome" && chrome?.connected) {
138
+ return {
139
+ browser: chrome,
140
+ type: "chrome"
141
+ };
142
+ }
143
+ if (!(await isBrowserInstalled(browserType))) {
144
+ throw new Error(`${browserType.toUpperCase()} is not installed.`);
145
+ }
146
+ if (launching) {
147
+ await launching;
148
+ return launchBrowser(browserType, wsURL);
149
+ }
150
+ launching = (async () => {
151
+ isRemoteBrowser = !!wsURL;
152
+ let browser;
153
+ if (wsURL) {
154
+ console.log(`Launching remote ${browserType.toUpperCase()} browser...`);
155
+ browser = await puppeteer.connect({
156
+ browserWSEndpoint: wsURL,
157
+ acceptInsecureCerts: true
158
+ });
159
+ }
160
+ else {
161
+ console.log(`Launching local ${browserType.toUpperCase()} browser...`);
162
+ browser = await puppeteer.launch({
49
163
  browser: browserType,
50
164
  headless: "shell",
51
- executablePath,
165
+ executablePath: BROWSER_PATHS[browserType][getOS()],
52
166
  args: ["--no-sandbox", "--disable-setuid-sandbox"]
53
167
  });
54
- {
55
- firefox = browser;
56
- }
57
- return resolve(browser);
58
168
  }
59
- throw new Error(`Browser type ${browserType} is not supported`);
60
- });
169
+ await launchPages(browser, browserType);
170
+ if (browserType === "chrome") {
171
+ chrome = browser;
172
+ chrome.on("disconnected", () => {
173
+ chrome = null;
174
+ });
175
+ }
176
+ else {
177
+ firefox = browser;
178
+ firefox.on("disconnected", () => {
179
+ firefox = null;
180
+ });
181
+ }
182
+ launching = null;
183
+ return {
184
+ browser,
185
+ type: browserType
186
+ };
187
+ })();
188
+ return launching;
61
189
  }
62
- async function closeBrowsers() {
190
+ async function closeBrowser() {
63
191
  try {
64
- if (firefox) {
65
- await (await firefox).close();
66
- firefox = null;
192
+ if (chrome?.connected) {
193
+ await chrome.disconnect();
194
+ }
195
+ if (firefox?.connected) {
196
+ await firefox.disconnect();
67
197
  }
198
+ if (!isRemoteBrowser) {
199
+ if (chrome) {
200
+ await chrome.close();
201
+ }
202
+ if (firefox) {
203
+ await firefox.close();
204
+ }
205
+ }
206
+ console.log("Browser closed successfully.");
207
+ chrome = null;
208
+ firefox = null;
68
209
  }
69
210
  catch (err) {
70
211
  console.error("Error closing browsers in @iqx-limited/quick-form:", err);
71
212
  }
72
213
  }
73
214
  process.on("exit", async () => {
74
- await closeBrowsers();
215
+ await closeBrowser();
75
216
  });
76
217
  process.on("SIGINT", async () => {
77
218
  console.log("SIGINT received. Closing browsers...");
78
- await closeBrowsers();
219
+ await closeBrowser();
79
220
  });
80
221
  process.on("SIGTERM", async () => {
81
222
  console.log("SIGTERM received. Closing browsers...");
82
- await closeBrowsers();
223
+ await closeBrowser();
83
224
  });
84
225
 
85
- const pagePoolSize$1 = 5;
86
- const RESOURCE_LIMIT$1 = 100;
87
- let resourceCount$1 = 0;
88
- let pagePool$1 = [];
89
- let browser$1 = null;
90
- async function launchPages$1() {
91
- if (pagePool$1.length > 0) {
92
- return pagePool$1;
93
- }
94
- pagePool$1 = await Promise.all(Array.from({ length: pagePoolSize$1 }, async () => {
95
- if (browser$1) {
96
- const page = await browser$1.newPage();
97
- await page.setRequestInterception(true);
98
- await page.setDefaultNavigationTimeout(10000);
99
- await page.goto("about:blank");
100
- page.on("request", request => {
101
- resourceCount$1++;
102
- if (resourceCount$1 > RESOURCE_LIMIT$1) {
103
- page.reload();
104
- resourceCount$1 = 0;
105
- }
106
- else {
107
- request.continue();
108
- }
109
- });
110
- return page;
111
- }
112
- else {
113
- throw new Error("Browser not available");
114
- }
115
- }));
116
- return pagePool$1;
117
- }
118
226
  const pdf2img = async (input, options = {}) => {
119
- browser$1 = await launchBrowser("firefox");
120
- if (!browser$1?.connected) {
227
+ const { browser } = await launchBrowser("firefox");
228
+ if (!browser?.connected) {
121
229
  throw new Error("Browser not available");
122
230
  }
123
- const pagePool = await launchPages$1();
124
- let page = pagePool.pop();
125
- let tempPage = false;
126
- if (!page) {
127
- tempPage = true;
128
- page = await browser$1.newPage();
129
- }
231
+ const page = await getPage("firefox");
130
232
  let path = "";
131
233
  let address = "";
132
234
  let tempFile = false;
@@ -161,10 +263,6 @@ const pdf2img = async (input, options = {}) => {
161
263
  catch { }
162
264
  }
163
265
  await page.waitForSelector("canvas", { timeout: 5000 });
164
- await page.waitForSelector(".loadingIcon", {
165
- timeout: 5000,
166
- hidden: true
167
- });
168
266
  const imageBuffers = [];
169
267
  const pageCount = await page.evaluate(() => {
170
268
  if (window.PDFViewerApplication) {
@@ -189,57 +287,21 @@ const pdf2img = async (input, options = {}) => {
189
287
  height: pdfPage.height,
190
288
  deviceScaleFactor: 1
191
289
  });
192
- for (let i = 1; i <= pageCount; i++) {
193
- await page.evaluate((pageNum) => {
194
- if (window.PDFViewerApplication) {
195
- window.PDFViewerApplication.page = pageNum;
196
- }
197
- }, i);
198
- const pageBoundingBox = await page.evaluate((pageNum) => {
199
- const pageContainer = document.querySelector(`.page[data-page-number="${pageNum}"]`);
200
- if (!pageContainer)
201
- throw new Error(`Page container for page ${pageNum} not found`);
202
- const canvas = pageContainer.querySelector("canvas");
203
- if (!canvas)
204
- throw new Error(`Canvas for page ${pageNum} not found`);
205
- const { x, y, width, height } = canvas.getBoundingClientRect();
206
- return { x, y, width, height };
207
- }, i);
208
- const screenshotOptions = {
209
- fullPage: false,
210
- type: options.type ?? "png",
211
- clip: {
212
- x: pageBoundingBox.x,
213
- y: pageBoundingBox.y,
214
- width: pageBoundingBox.width,
215
- height: pageBoundingBox.height
216
- }
217
- };
218
- if (options.type && options.type !== "png") {
219
- screenshotOptions.quality = options.quality ?? 100;
220
- }
221
- try {
222
- const uint8array = await page.screenshot(screenshotOptions);
223
- imageBuffers.push(Buffer.from(uint8array));
290
+ if (options.page) {
291
+ if (options.page < 1 || options.page > pageCount) {
292
+ throw new Error(`Page number ${options.page} is out of bounds. PDF has ${pageCount} pages.`);
224
293
  }
225
- catch {
226
- throw new Error(`Failed to render page ${i} of the PDF`);
294
+ imageBuffers.push(await renderPage(page, options.page, options));
295
+ }
296
+ else {
297
+ for (let i = 1; i <= pageCount; i++) {
298
+ imageBuffers.push(await renderPage(page, i, options));
227
299
  }
228
300
  }
229
301
  if (tempFile) {
230
302
  await unlink(path);
231
303
  }
232
- if (tempPage) {
233
- page.close();
234
- }
235
- else {
236
- await page.setViewport({
237
- width: 800,
238
- height: 600,
239
- deviceScaleFactor: 1
240
- });
241
- pagePool.push(page);
242
- }
304
+ await restorePage("firefox", page);
243
305
  return {
244
306
  length: pageCount,
245
307
  metadata: metadata.info,
@@ -250,18 +312,57 @@ const pdf2img = async (input, options = {}) => {
250
312
  if (tempFile) {
251
313
  await unlink(path);
252
314
  }
253
- if (tempPage) {
254
- page.close();
315
+ await restorePage("firefox", page);
316
+ throw error;
317
+ }
318
+ finally {
319
+ if (options.closeBrowser) {
320
+ await closeBrowser();
255
321
  }
256
- else {
257
- await page.setViewport({
258
- width: 800,
259
- height: 600,
260
- deviceScaleFactor: 1
261
- });
262
- pagePool.push(page);
322
+ }
323
+ };
324
+ const renderPage = async (page, pageNumber, options) => {
325
+ await page.evaluate((pageNum) => {
326
+ if (window.PDFViewerApplication) {
327
+ window.PDFViewerApplication.page = pageNum;
263
328
  }
264
- throw error;
329
+ }, pageNumber);
330
+ await page.waitForSelector(`.page[data-page-number="${pageNumber}"]`, { timeout: 5000 });
331
+ await page.waitForFunction((pageNum) => {
332
+ const pageContainer = document.querySelector(`.page[data-page-number="${pageNum}"]`);
333
+ if (!pageContainer)
334
+ return true;
335
+ return !pageContainer.querySelector(".loadingIcon");
336
+ }, {}, pageNumber);
337
+ const pageBoundingBox = await page.evaluate((pageNum) => {
338
+ const pageContainer = document.querySelector(`.page[data-page-number="${pageNum}"]`);
339
+ if (!pageContainer)
340
+ throw new Error(`Page container for page ${pageNum} not found`);
341
+ const canvas = pageContainer.querySelector("canvas");
342
+ if (!canvas)
343
+ throw new Error(`Canvas for page ${pageNum} not found`);
344
+ const { x, y, width, height } = canvas.getBoundingClientRect();
345
+ return { x, y, width, height };
346
+ }, pageNumber);
347
+ const screenshotOptions = {
348
+ fullPage: false,
349
+ type: options.type ?? "png",
350
+ clip: {
351
+ x: pageBoundingBox.x,
352
+ y: pageBoundingBox.y,
353
+ width: pageBoundingBox.width,
354
+ height: pageBoundingBox.height
355
+ }
356
+ };
357
+ if (options.type && options.type !== "png") {
358
+ screenshotOptions.quality = options.quality ?? 100;
359
+ }
360
+ try {
361
+ const uint8array = await page.screenshot(screenshotOptions);
362
+ return Buffer.from(uint8array);
363
+ }
364
+ catch {
365
+ throw new Error(`Failed to render page ${pageNumber} of the PDF`);
265
366
  }
266
367
  };
267
368
 
@@ -353,44 +454,16 @@ const img2pdf = async (input, options = {}) => {
353
454
  doc.end();
354
455
  }).catch((e) => {
355
456
  reject(e);
457
+ }).finally(async () => {
458
+ if (options.closeBrowser) {
459
+ await closeBrowser();
460
+ }
356
461
  });
357
462
  });
358
463
  };
359
464
 
360
- const pagePoolSize = 5;
361
- const RESOURCE_LIMIT = 100;
362
- let resourceCount = 0;
363
- let pagePool = [];
364
- let browser = null;
365
- async function launchPages() {
366
- if (pagePool.length > 0) {
367
- return pagePool;
368
- }
369
- pagePool = await Promise.all(Array.from({ length: pagePoolSize }, async () => {
370
- if (browser && browser.connected) {
371
- const page = await browser.newPage();
372
- await page.setRequestInterception(true);
373
- await page.setDefaultNavigationTimeout(10000);
374
- await page.goto("about:blank");
375
- page.on("request", request => {
376
- resourceCount++;
377
- if (resourceCount > RESOURCE_LIMIT) {
378
- page.reload();
379
- resourceCount = 0;
380
- }
381
- else {
382
- request.continue();
383
- }
384
- });
385
- return page;
386
- }
387
- else {
388
- throw new Error("Browser not available");
389
- }
390
- }));
391
- return pagePool;
392
- }
393
465
  const html2pdf = async (input, options = {}) => {
466
+ const { browser, type } = await launchBrowser();
394
467
  const validator = new HtmlValidate(options.rules ?? {
395
468
  extends: ["html-validate:standard"],
396
469
  rules: {
@@ -404,17 +477,10 @@ const html2pdf = async (input, options = {}) => {
404
477
  else if (existsSync(input)) {
405
478
  htmlContent = await readHtmlFromFilePath(htmlContent);
406
479
  }
407
- browser = await launchBrowser("firefox");
408
480
  if (!browser?.connected) {
409
481
  throw new Error("Browser not available");
410
482
  }
411
- const pagePool = await launchPages();
412
- let page = pagePool.pop();
413
- let tempPage = false;
414
- if (!page) {
415
- tempPage = true;
416
- page = await browser.newPage();
417
- }
483
+ const page = await getPage(type);
418
484
  const validation = (options.validation ?? true);
419
485
  try {
420
486
  const res = validation ? await validator.validateString(htmlContent) : { valid: true };
@@ -458,16 +524,9 @@ const html2pdf = async (input, options = {}) => {
458
524
  }
459
525
  }
460
526
  finally {
461
- if (tempPage) {
462
- page.close();
463
- }
464
- else {
465
- await page.setViewport({
466
- width: 800,
467
- height: 600,
468
- deviceScaleFactor: 1
469
- });
470
- pagePool.push(page);
527
+ await restorePage(type, page);
528
+ if (options.closeBrowser) {
529
+ await closeBrowser();
471
530
  }
472
531
  }
473
532
  };
@@ -478,5 +537,5 @@ if (!satisfies(process.version, requiredVersion)) {
478
537
  process.exit(1);
479
538
  }
480
539
 
481
- export { html2pdf, img2pdf, pdf2img };
540
+ export { closeBrowser, html2pdf, img2pdf, launchBrowser, pdf2img };
482
541
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/browsers.ts","../src/modules/pdf2img.ts","../src/utilies.ts","../src/modules/img2pdf.ts","../src/modules/html2pdf.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null],"names":["pagePoolSize","RESOURCE_LIMIT","resourceCount","pagePool","browser","launchPages"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/browsers.ts","../src/modules/pdf2img.ts","../src/utilies.ts","../src/modules/img2pdf.ts","../src/modules/html2pdf.ts","../src/index.ts"],"sourcesContent":[null,null,null,null,null,null],"names":[],"mappings":"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"}
@@ -1,3 +1,9 @@
1
- import { Browser } from "puppeteer";
2
- declare function launchBrowser(browserType: "firefox"): Promise<Browser>;
3
- export { launchBrowser };
1
+ import { Browser, Page } from "puppeteer-core";
2
+ export declare function getPage(type: "chrome" | "firefox"): Promise<Page>;
3
+ export declare function restorePage(type: "chrome" | "firefox", page: Page): Promise<void>;
4
+ declare function launchBrowser(browserType?: "firefox" | "chrome", wsURL?: string): Promise<{
5
+ browser: Browser;
6
+ type: "chrome" | "firefox";
7
+ }>;
8
+ declare function closeBrowser(): Promise<void>;
9
+ export { launchBrowser, closeBrowser };
@@ -1,3 +1,4 @@
1
1
  export * from "./modules/pdf2img.js";
2
2
  export * from "./modules/img2pdf.js";
3
3
  export * from "./modules/html2pdf.js";
4
+ export { launchBrowser, closeBrowser } from "./browsers.js";
@@ -2,5 +2,6 @@ export type Options = {
2
2
  base64?: boolean;
3
3
  rules?: object;
4
4
  validation?: boolean;
5
+ closeBrowser?: boolean;
5
6
  };
6
7
  export declare const html2pdf: (input: string | URL, options?: Options) => Promise<string | Buffer<ArrayBuffer>>;
@@ -2,6 +2,7 @@ type Options = {
2
2
  header?: string;
3
3
  footer?: string;
4
4
  fontSize?: number;
5
+ closeBrowser?: boolean;
5
6
  };
6
7
  export declare const img2pdf: (input: Buffer | string | URL, options?: Options) => Promise<Buffer<ArrayBufferLike>>;
7
8
  export {};
@@ -2,10 +2,12 @@ type Options = {
2
2
  quality?: number;
3
3
  password?: string;
4
4
  type?: "png" | "jpeg" | "webp";
5
+ page?: number;
6
+ closeBrowser?: boolean;
5
7
  };
6
8
  export declare const pdf2img: (input: Buffer | string | URL, options?: Options) => Promise<{
7
9
  length: any;
8
10
  metadata: any;
9
- pages: Buffer<ArrayBuffer>[];
11
+ pages: Buffer<ArrayBufferLike>[];
10
12
  }>;
11
13
  export {};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iqx-limited/quick-pdf",
3
- "version": "1.5.0",
3
+ "version": "1.6.1",
4
4
  "author": "IQX",
5
5
  "description": "Converting PDFs to images (📃 to 📸)",
6
6
  "type": "module",
@@ -49,7 +49,7 @@
49
49
  "image-size": "^2.0.2",
50
50
  "path2d-polyfill": "^3.1.3",
51
51
  "pdfkit": "^0.17.1",
52
- "puppeteer": "^24.10.0",
52
+ "puppeteer-core": "^24.10.0",
53
53
  "rollup-plugin-node-externals": "^8.0.0",
54
54
  "semver": "^7.7.2"
55
55
  },
@@ -63,7 +63,7 @@
63
63
  "@types/pdfkit": "^0.13.9",
64
64
  "@types/semver": "^7.7.0",
65
65
  "eslint": "^9.28.0",
66
- "rollup": "^4.41.2",
66
+ "rollup": "^4.42.0",
67
67
  "typescript": "^5.8.3",
68
68
  "typescript-eslint": "^8.33.1"
69
69
  }