🚧 📑 pdf helpers, todos for signign

This commit is contained in:
Timur Ercan
2023-02-18 14:37:26 +01:00
parent 15cd0d2a7b
commit 017a76ef5d
9 changed files with 174 additions and 3 deletions

2
packages/pdf/index.ts Normal file
View File

@ -0,0 +1,2 @@
export { insertTextInPDF } from "./insertTextInPDF";
export { insertImageInPDF } from "./insertImageInPDF";

View File

@ -0,0 +1,25 @@
import { degrees, PDFDocument, PDFImage, rgb, StandardFonts } from "pdf-lib";
export async function insertImageInPDF(
pdfAsBase64: string,
image: string | Uint8Array | ArrayBuffer,
positionX: number,
positionY: number,
page: number = 0
): Promise<string> {
const existingPdfBytes = pdfAsBase64;
const pdfDoc = await PDFDocument.load(existingPdfBytes);
const pages = pdfDoc.getPages();
const pdfPage = pages[page];
const pngImage = await pdfDoc.embedPng(image);
pdfPage.drawImage(pngImage, {
x: positionX,
y: positionY,
width: pngImage.width,
height: pngImage.height,
});
const pdfAsUint8Array = await pdfDoc.save();
return Buffer.from(pdfAsUint8Array).toString("base64");
}

View File

@ -0,0 +1,27 @@
import { degrees, PDFDocument, rgb, StandardFonts } from "pdf-lib";
export async function insertTextInPDF(
pdfAsBase64: string,
text: string,
positionX: number,
positionY: number,
page: number = 0
): Promise<string> {
const existingPdfBytes = pdfAsBase64;
const pdfDoc = await PDFDocument.load(existingPdfBytes);
const helveticaFont = await pdfDoc.embedFont(StandardFonts.Helvetica);
const pages = pdfDoc.getPages();
const firstPage = pages[page];
firstPage.drawText(text, {
x: positionX,
y: positionY,
size: 25,
font: helveticaFont,
color: rgb(0, 0, 0),
});
const pdfAsUint8Array = await pdfDoc.save();
return Buffer.from(pdfAsUint8Array).toString("base64");
}

View File

@ -0,0 +1,7 @@
{
"name": "@documenso/pdf",
"version": "0.0.0",
"private": true,
"main": "index.ts",
"dependencies": {}
}