backend: fix PDFService.ts

This commit is contained in:
Rodrigo B. de Sousa Martins committed 2025-06-11 11:57:33 -03:00
1 parent 0fef046d38
commit b9e7de0ca0
1 file changed
+13 -13
+13 -13
View File
@@ -187,19 +187,9 @@ export class PdfService {
return Buffer.from(pdfBuffer);
}
// Mescla cada página do PDF gerado com o timbrado
const pdfDoc = await PDFDocument.load(pdfBuffer);
const timbradoDoc = await PDFDocument.load(timbradoBytes);
const timbradoPage = timbradoDoc.getPage(0);
const [timbradoEmbed] = await pdfDoc.embedPages([timbradoPage]);
const pageCount = pdfDoc.getPageCount();
for (let i = 0; i < pageCount; i++) {
const page = pdfDoc.getPage(i);
page.drawPage(timbradoEmbed, { x: 0, y: 0, width: page.getWidth(), height: page.getHeight() });
}
// Após mesclar o timbrado
// Remove página vazia do final ANTES de mesclar o timbrado
let pdfDoc = await PDFDocument.load(pdfBuffer);
let pageCountBefore = pdfDoc.getPageCount();
// Remove apenas a ÚLTIMA página se ela estiver realmente vazia (sem conteúdo)
if (pageCountBefore > 1) {
const lastPage = pdfDoc.getPage(pageCountBefore - 1);
const contentStreams = (lastPage as any).node.Contents?.();
@@ -208,7 +198,6 @@ export class PdfService {
if (!contentStreams) {
isBlank = true;
} else if (Array.isArray(contentStreams)) {
// Se todos os streams são vazios ou muito pequenos
isBlank = contentStreams.every(
(stream: any) =>
!stream.contents ||
@@ -222,6 +211,17 @@ export class PdfService {
pdfDoc.removePage(pageCountBefore - 1);
}
}
// Agora sim, mescle o timbrado nas páginas restantes
const timbradoDoc = await PDFDocument.load(timbradoBytes);
const timbradoPage = timbradoDoc.getPage(0);
const [timbradoEmbed] = await pdfDoc.embedPages([timbradoPage]);
const pageCount = pdfDoc.getPageCount();
for (let i = 0; i < pageCount; i++) {
const page = pdfDoc.getPage(i);
page.drawPage(timbradoEmbed, { x: 0, y: 0, width: page.getWidth(), height: page.getHeight() });
}
const mergedPdf = await pdfDoc.save();
return Buffer.from(mergedPdf);
} catch (error) {