diff --git a/src/server/services/PdfService.ts b/src/server/services/PdfService.ts index df74406..9df9d44 100644 --- a/src/server/services/PdfService.ts +++ b/src/server/services/PdfService.ts @@ -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) {