@iqx-limited/quick-pdf 1.0.5 → 1.0.7

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
@@ -28,7 +28,15 @@ html2pdf(input: string | URL)
28
28
  | Parameter | Type | Description | Data that can be passed |
29
29
  |-----------|---------------|--------------------------------------------------|--------------------------------------------|
30
30
  | `input` | `string \| URL` | The HTML content to convert to PDF. | A file path or a URL pointing to HTML content, as either a Node URL object or a Node string. Alternativly pass an html string directly. |
31
- | `base64` | `string?` | Return a base64 encoded string instead of a buffer | Boolean |
31
+ | `options` | `Options` | Optional configuration for the PDF conversion. | An object with optional to configure PDF |
32
+
33
+ ### Options Type:
34
+
35
+ | Property | Type | Description | Default |
36
+ |-----------|----------|--------------------------------------------------|---------|
37
+ | `base64` | `boolean` | PDF should be returned as a base64 encoded string. |false|
38
+ | `rules` | `object` | Optional custom validation rules for HTML content - see https://html-validate.org/rules/ for more details. Default is all standard rules enabled. |''|
39
+ | `scale` | `number` | Scale of the PDF | 1 |
32
40
 
33
41
  ## 2. `img2pdf`
34
42
 
@@ -42,14 +50,15 @@ img2pdf(input: Buffer | string | URL, options: Options = {})
42
50
  | Parameter | Type | Description | Data that can be passed |
43
51
  |-----------|---------------------------|--------------------------------------------------|--------------------------------------------|
44
52
  | `input` | `Buffer \| string \| URL` | The image content to convert to PDF. | A Buffer, file path, or URL pointing to an image. String or URL object can be passed for an HTTP or Local Path. |
45
- | `options` | `Options` | Optional configuration for the PDF conversion. | An object with optional headers and footers |
53
+ | `options` | `Options` | Optional configuration for the PDF conversion. | An object with optional configurations. |
46
54
 
47
55
  ### Options Type:
48
56
 
49
- | Property | Type | Description |
50
- |-----------|----------|--------------------------------------------------|
51
- | `header` | `string` | Optional header text to include in the PDF. |
52
- | `footer` | `string` | Optional footer text to include in the PDF. |
57
+ | Property | Type | Description | Default |
58
+ |-----------|----------|--------------------------------------------------|---------|
59
+ | `header` | `string` | Optional header text to include in the PDF. |undefined|
60
+ | `footer` | `string` | Optional footer text to include in the PDF. |undefined|
61
+ | `fontSize` | `number` | Font Size of the header or footer | 10 |
53
62
 
54
63
  ## 3. `pdf2img`
55
64
 
@@ -1 +1,6 @@
1
- export declare const html2pdf: (input: string | URL, base64?: boolean) => Promise<string | Buffer>;
1
+ export type Options = {
2
+ base64?: boolean;
3
+ rules?: object;
4
+ scale?: number;
5
+ };
6
+ export declare const html2pdf: (input: string | URL, options?: Options) => Promise<string | Buffer>;
@@ -2,8 +2,13 @@ import { existsSync } from "fs";
2
2
  import { HtmlValidate } from "html-validate/node";
3
3
  import { chromium } from "playwright";
4
4
  import { fetchHtmlFromUrl, readHtmlFromFilePath } from "../utilies.js";
5
- export const html2pdf = async (input, base64) => {
6
- const validator = new HtmlValidate();
5
+ export const html2pdf = async (input, options = {}) => {
6
+ const validator = new HtmlValidate(options.rules ?? {
7
+ extends: ["html-validate:standard"],
8
+ rules: {
9
+ "no-trailing-whitespace": "off"
10
+ }
11
+ });
7
12
  let htmlContent = input.toString();
8
13
  if (htmlContent.startsWith("http://") || htmlContent.startsWith("https://")) {
9
14
  htmlContent = await fetchHtmlFromUrl(htmlContent);
@@ -16,25 +21,38 @@ export const html2pdf = async (input, base64) => {
16
21
  const browser = await chromium.launch();
17
22
  const page = await browser.newPage();
18
23
  await page.setContent(htmlContent, { waitUntil: "load" });
19
- const pdfBuffer = await page.pdf({ format: "A4", printBackground: true });
24
+ const pdfBuffer = await page.pdf({ format: "A4", printBackground: true, scale: options.scale ?? 1 });
20
25
  await browser.close();
21
- if (base64) {
26
+ if (options.base64 ?? false) {
22
27
  return pdfBuffer.toString("base64");
23
28
  }
24
29
  return pdfBuffer;
25
30
  }
26
31
  else {
27
- return Promise.reject(`Validation Error\n` +
28
- res.results
29
- .map((result) => {
30
- return (`File Path: ${result.filePath}\n` +
31
- result.messages
32
- .map((message) => {
33
- return `Message: ${message.message}\nLine: ${message.line}\nColumn: ${message.column}\nSource: ${result.source}`;
32
+ return Promise.reject({
33
+ valid: false,
34
+ count: {
35
+ errors: res.errorCount,
36
+ warnings: res.warningCount
37
+ },
38
+ validation: res.results.map(res => {
39
+ return {
40
+ file: res.filePath,
41
+ count: {
42
+ errors: res.errorCount,
43
+ warnings: res.warningCount
44
+ },
45
+ messages: res.messages.map(msg => {
46
+ return {
47
+ message: msg.message,
48
+ line: msg.line,
49
+ column: msg.column,
50
+ ruleId: msg.ruleId
51
+ };
34
52
  })
35
- .join("\n"));
53
+ };
36
54
  })
37
- .join("\n"));
55
+ });
38
56
  }
39
57
  });
40
58
  };
@@ -1 +1 @@
1
- {"version":3,"file":"html2pdf.js","sourceRoot":"","sources":["../../src/modules/html2pdf.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AAStE,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAC3B,KAAmB,EACnB,MAAgB,EAChB,EAAE;IACF,MAAM,SAAS,GAAG,IAAI,YAAY,EAAG,CAAA;IAErC,IAAI,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAG,CAAA;IAGnC,IAAK,WAAW,CAAC,UAAU,CAAG,SAAS,CAAE,IAAI,WAAW,CAAC,UAAU,CAAG,UAAU,CAAE,EAAG,CAAC;QACpF,WAAW,GAAG,MAAM,gBAAgB,CAAG,WAAW,CAAE,CAAA;IACtD,CAAC;SAEI,IAAK,UAAU,CAAG,KAAK,CAAE,EAAG,CAAC;QAChC,WAAW,GAAG,MAAM,oBAAoB,CAAG,WAAW,CAAE,CAAA;IAC1D,CAAC;IAED,OAAO,SAAS,CAAC,cAAc,CAAG,WAAW,CAAE,CAAC,IAAI,CAAG,KAAK,EAAG,GAAG,EAAG,EAAE;QACrE,IAAK,GAAG,CAAC,KAAK,EAAG,CAAC;YAChB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAG,CAAA;YACxC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAG,CAAA;YACrC,MAAM,IAAI,CAAC,UAAU,CAAG,WAAW,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAE,CAAA;YAC5D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,CAAG,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,CAAE,CAAA;YAC5E,MAAM,OAAO,CAAC,KAAK,EAAG,CAAA;YACtB,IAAK,MAAM,EAAG,CAAC;gBACb,OAAO,SAAS,CAAC,QAAQ,CAAG,QAAQ,CAAE,CAAA;YACxC,CAAC;YACD,OAAO,SAAS,CAAA;QAClB,CAAC;aAAM,CAAC;YAEN,OAAO,OAAO,CAAC,MAAM,CACnB,oBAAoB;gBAClB,GAAG,CAAC,OAAO;qBACR,GAAG,CAAG,CAAE,MAAM,EAAG,EAAE;oBAClB,OAAO,CACL,cAAc,MAAM,CAAC,QAAQ,IAAI;wBACjC,MAAM,CAAC,QAAQ;6BACZ,GAAG,CAAG,CAAE,OAAO,EAAG,EAAE;4BACnB,OAAO,YAAY,OAAO,CAAC,OAAO,WAAW,OAAO,CAAC,IAAI,aAAa,OAAO,CAAC,MAAM,aAAa,MAAM,CAAC,MAAM,EAAE,CAAA;wBAClH,CAAC,CAAE;6BACF,IAAI,CAAG,IAAI,CAAE,CACjB,CAAA;gBACH,CAAC,CAAE;qBACF,IAAI,CAAG,IAAI,CAAE,CACnB,CAAA;QACH,CAAC;IACH,CAAC,CAAE,CAAA;AACL,CAAC,CAAA"}
1
+ {"version":3,"file":"html2pdf.js","sourceRoot":"","sources":["../../src/modules/html2pdf.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,UAAU,EAAE,MAAM,IAAI,CAAA;AAC/B,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAA;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAA;AACrC,OAAO,EAAE,gBAAgB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AA2BtE,MAAM,CAAC,MAAM,QAAQ,GAAG,KAAK,EAC3B,KAAmB,EACnB,UAAmB,EAAG,EACtB,EAAE;IACF,MAAM,SAAS,GAAG,IAAI,YAAY,CAAG,OAAO,CAAC,KAAK,IAAI;QACpD,OAAO,EAAE,CAAE,wBAAwB,CAAE;QACrC,KAAK,EAAE;YACL,wBAAwB,EAAE,KAAK;SAChC;KACF,CAAE,CAAA;IAEH,IAAI,WAAW,GAAG,KAAK,CAAC,QAAQ,EAAG,CAAA;IAGnC,IAAK,WAAW,CAAC,UAAU,CAAG,SAAS,CAAE,IAAI,WAAW,CAAC,UAAU,CAAG,UAAU,CAAE,EAAG,CAAC;QACpF,WAAW,GAAG,MAAM,gBAAgB,CAAG,WAAW,CAAE,CAAA;IACtD,CAAC;SAEI,IAAK,UAAU,CAAG,KAAK,CAAE,EAAG,CAAC;QAChC,WAAW,GAAG,MAAM,oBAAoB,CAAG,WAAW,CAAE,CAAA;IAC1D,CAAC;IAED,OAAO,SAAS,CAAC,cAAc,CAAG,WAAW,CAAE,CAAC,IAAI,CAAG,KAAK,EAAG,GAAG,EAAG,EAAE;QACrE,IAAK,GAAG,CAAC,KAAK,EAAG,CAAC;YAChB,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAG,CAAA;YACxC,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAG,CAAA;YACrC,MAAM,IAAI,CAAC,UAAU,CAAG,WAAW,EAAE,EAAE,SAAS,EAAE,MAAM,EAAE,CAAE,CAAA;YAC5D,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,GAAG,CAAG,EAAE,MAAM,EAAE,IAAI,EAAE,eAAe,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,EAAE,CAAE,CAAA;YACvG,MAAM,OAAO,CAAC,KAAK,EAAI,CAAA;YACvB,IAAK,OAAO,CAAC,MAAM,IAAI,KAAK,EAAG,CAAC;gBAC9B,OAAO,SAAS,CAAC,QAAQ,CAAG,QAAQ,CAAE,CAAA;YACxC,CAAC;YACD,OAAO,SAAS,CAAA;QAClB,CAAC;aAAM,CAAC;YAEN,OAAO,OAAO,CAAC,MAAM,CAAG;gBACtB,KAAK,EAAE,KAAK;gBACZ,KAAK,EAAE;oBACL,MAAM,EAAE,GAAG,CAAC,UAAU;oBACtB,QAAQ,EAAE,GAAG,CAAC,YAAY;iBAC3B;gBACD,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,GAAG,CAAG,GAAG,CAAC,EAAE;oBAClC,OAAO;wBACL,IAAI,EAAE,GAAG,CAAC,QAAQ;wBAClB,KAAK,EAAE;4BACL,MAAM,EAAE,GAAG,CAAC,UAAU;4BACtB,QAAQ,EAAE,GAAG,CAAC,YAAY;yBAC3B;wBACD,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAG,GAAG,CAAC,EAAE;4BACjC,OAAO;gCACL,OAAO,EAAE,GAAG,CAAC,OAAO;gCACpB,IAAI,EAAE,GAAG,CAAC,IAAI;gCACd,MAAM,EAAE,GAAG,CAAC,MAAM;gCAClB,MAAM,EAAE,GAAG,CAAC,MAAM;6BACnB,CAAA;wBACH,CAAC,CAAE;qBACJ,CAAA;gBACH,CAAC,CAAE;aACJ,CAAC,CAAA;QACJ,CAAC;IACH,CAAC,CAAE,CAAA;AACL,CAAC,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@iqx-limited/quick-pdf",
3
- "version": "1.0.5",
3
+ "version": "1.0.7",
4
4
  "author": "IQX",
5
5
  "description": "Converting PDFs to images (📃 to 📸)",
6
6
  "type": "module",