compactor
Version:
Compress pdf and img on browser
39 lines (31 loc) • 1.3 kB
JavaScript
import PDFDocument from "pdfkit/js/pdfkit.standalone";
import blobStream from "../../lib/blob-stream";
import {getImageObject, setCompressedFileFields} from "../util/FileUtils";
import {blobToBase64} from "../util/Base64Utils";
const convertIMGtoPDF = async (images, inputFile, callBackFunc) => {
const pdfDocument = createPDF(inputFile);
const stream = pdfDocument.pipe(blobStream());
for (let image of images) {
let imageObject = await getImageObject(image);
pdfDocument.addPage({size: [imageObject.width, imageObject.height]});
pdfDocument.image(imageObject.src, 0, 0);
}
pdfDocument.end();
stream.on("finish", async () => {
const outputBlob = stream.toBlob("application/pdf");
let base64String = await blobToBase64(outputBlob);
setCompressedFileFields(inputFile, base64String);
callBackFunc(inputFile);
});
}
const createPDF = (inputFile) => {
const pdfDocument = new PDFDocument({ autoFirstPage: false, compress: false });
const fileName = inputFile.fileName.split(".")[0];
pdfDocument.info = {
Title: `${fileName}.pdf`,
Author: "mys",
Keywords: `${fileName}, pdf`
};
return pdfDocument;
}
export default convertIMGtoPDF;