@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.
- package/dist/cjs/src/img2pdf.js +34 -3
- package/dist/cjs/src/img2pdf.js.map +1 -1
- package/dist/esm/src/img2pdf.js +34 -3
- package/dist/esm/src/img2pdf.js.map +1 -1
- package/package.json +1 -1
- package/src/img2pdf.ts +39 -3
package/dist/cjs/src/img2pdf.js
CHANGED
@@ -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
|
-
|
16
|
-
|
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":";;
|
1
|
+
{"version":3,"file":"img2pdf.js","sourceRoot":"","sources":["../../../src/img2pdf.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/src/img2pdf.js
CHANGED
@@ -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
|
-
|
13
|
-
|
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":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AAUtC,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,IAAmB,EACnB,UAA0B,EAAE;IAE5B,IAAI,CAAC;QACH,MAAM,EAAE,KAAK,GAAG,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,GAAG,OAAO,CAAC;QAE3D,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC9C,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,CAAC;QACvC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,
|
1
|
+
{"version":3,"file":"img2pdf.js","sourceRoot":"","sources":["../../../src/img2pdf.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
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
|
-
|
27
|
-
|
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
|
|