@pdfme/converter 5.3.15 → 5.3.16-dev.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.
@@ -3,6 +3,24 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.img2pdf = img2pdf;
4
4
  const pdf_lib_1 = require("@pdfme/pdf-lib");
5
5
  const common_1 = require("@pdfme/common");
6
+ function detectImageType(buffer) {
7
+ const bytes = new Uint8Array(buffer);
8
+ if (bytes.length >= 2 && bytes[0] === 0xFF && bytes[1] === 0xD8) {
9
+ return 'jpeg';
10
+ }
11
+ if (bytes.length >= 8 &&
12
+ bytes[0] === 0x89 &&
13
+ bytes[1] === 0x50 &&
14
+ bytes[2] === 0x4E &&
15
+ bytes[3] === 0x47 &&
16
+ bytes[4] === 0x0D &&
17
+ bytes[5] === 0x0A &&
18
+ bytes[6] === 0x1A &&
19
+ bytes[7] === 0x0A) {
20
+ return 'png';
21
+ }
22
+ return 'unknown';
23
+ }
6
24
  async function img2pdf(imgs, options = {}) {
7
25
  try {
8
26
  const { scale = 1, size, margin = [0, 0, 0, 0] } = options;
@@ -12,9 +30,22 @@ async function img2pdf(imgs, options = {}) {
12
30
  const doc = await pdf_lib_1.PDFDocument.create();
13
31
  for (const img of imgs) {
14
32
  try {
15
- const image = await doc.embedJpg(img).catch(async () => {
16
- return await doc.embedPng(img);
17
- });
33
+ let image;
34
+ const type = detectImageType(img);
35
+ if (type === 'jpeg') {
36
+ image = await doc.embedJpg(img);
37
+ }
38
+ else if (type === 'png') {
39
+ image = await doc.embedPng(img);
40
+ }
41
+ else {
42
+ try {
43
+ image = await doc.embedJpg(img);
44
+ }
45
+ catch {
46
+ image = await doc.embedPng(img);
47
+ }
48
+ }
18
49
  const page = doc.addPage();
19
50
  const { width: imgWidth, height: imgHeight } = image.scale(scale);
20
51
  // Set page size based on size option or image dimensions
@@ -1 +1 @@
1
- {"version":3,"file":"img2pdf.js","sourceRoot":"","sources":["../../../src/img2pdf.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"img2pdf.js","sourceRoot":"","sources":["../../../src/img2pdf.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,23 @@
1
1
  import { PDFDocument } from '@pdfme/pdf-lib';
2
2
  import { mm2pt } from '@pdfme/common';
3
+ function detectImageType(buffer) {
4
+ const bytes = new Uint8Array(buffer);
5
+ if (bytes.length >= 2 && bytes[0] === 0xFF && bytes[1] === 0xD8) {
6
+ return 'jpeg';
7
+ }
8
+ if (bytes.length >= 8 &&
9
+ bytes[0] === 0x89 &&
10
+ bytes[1] === 0x50 &&
11
+ bytes[2] === 0x4E &&
12
+ bytes[3] === 0x47 &&
13
+ bytes[4] === 0x0D &&
14
+ bytes[5] === 0x0A &&
15
+ bytes[6] === 0x1A &&
16
+ bytes[7] === 0x0A) {
17
+ return 'png';
18
+ }
19
+ return 'unknown';
20
+ }
3
21
  export async function img2pdf(imgs, options = {}) {
4
22
  try {
5
23
  const { scale = 1, size, margin = [0, 0, 0, 0] } = options;
@@ -9,9 +27,22 @@ export async function img2pdf(imgs, options = {}) {
9
27
  const doc = await PDFDocument.create();
10
28
  for (const img of imgs) {
11
29
  try {
12
- const image = await doc.embedJpg(img).catch(async () => {
13
- return await doc.embedPng(img);
14
- });
30
+ let image;
31
+ const type = detectImageType(img);
32
+ if (type === 'jpeg') {
33
+ image = await doc.embedJpg(img);
34
+ }
35
+ else if (type === 'png') {
36
+ image = await doc.embedPng(img);
37
+ }
38
+ else {
39
+ try {
40
+ image = await doc.embedJpg(img);
41
+ }
42
+ catch {
43
+ image = await doc.embedPng(img);
44
+ }
45
+ }
15
46
  const page = doc.addPage();
16
47
  const { width: imgWidth, height: imgHeight } = image.scale(scale);
17
48
  // Set page size based on size option or image dimensions
@@ -1 +1 @@
1
- {"version":3,"file":"img2pdf.js","sourceRoot":"","sources":["../../../src/img2pdf.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"img2pdf.js","sourceRoot":"","sources":["../../../src/img2pdf.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pdfme/converter",
3
- "version": "5.3.15",
3
+ "version": "5.3.16-dev.1",
4
4
  "sideEffects": false,
5
5
  "author": "hand-dot",
6
6
  "license": "MIT",
package/src/img2pdf.ts CHANGED
@@ -9,6 +9,30 @@ interface Img2PdfOptions {
9
9
  margin?: [number, number, number, number]; // in millimeters [top, right, bottom, left]
10
10
  }
11
11
 
12
+ function detectImageType(buffer: ArrayBuffer): 'jpeg' | 'png' | 'unknown' {
13
+ const bytes = new Uint8Array(buffer);
14
+
15
+ if (bytes.length >= 2 && bytes[0] === 0xFF && bytes[1] === 0xD8) {
16
+ return 'jpeg';
17
+ }
18
+
19
+ if (
20
+ bytes.length >= 8 &&
21
+ bytes[0] === 0x89 &&
22
+ bytes[1] === 0x50 &&
23
+ bytes[2] === 0x4E &&
24
+ bytes[3] === 0x47 &&
25
+ bytes[4] === 0x0D &&
26
+ bytes[5] === 0x0A &&
27
+ bytes[6] === 0x1A &&
28
+ bytes[7] === 0x0A
29
+ ) {
30
+ return 'png';
31
+ }
32
+
33
+ return 'unknown';
34
+ }
35
+
12
36
  export async function img2pdf(
13
37
  imgs: ArrayBuffer[],
14
38
  options: Img2PdfOptions = {},
@@ -23,9 +47,21 @@ export async function img2pdf(
23
47
  const doc = await PDFDocument.create();
24
48
  for (const img of imgs) {
25
49
  try {
26
- const image = await doc.embedJpg(img).catch(async () => {
27
- return await doc.embedPng(img);
28
- });
50
+ let image;
51
+ const type = detectImageType(img);
52
+
53
+ if (type === 'jpeg') {
54
+ image = await doc.embedJpg(img);
55
+ } else if (type === 'png') {
56
+ image = await doc.embedPng(img);
57
+ } else {
58
+ try {
59
+ image = await doc.embedJpg(img);
60
+ } catch {
61
+ image = await doc.embedPng(img);
62
+ }
63
+ }
64
+
29
65
  const page = doc.addPage();
30
66
  const { width: imgWidth, height: imgHeight } = image.scale(scale);
31
67