From 8488bd7b84c26762225a3b61a48992ec9e21774a Mon Sep 17 00:00:00 2001 From: Rodrigo Martins Date: Tue, 22 Apr 2025 16:37:51 -0300 Subject: [PATCH] tenta fix pdfservice.js --- src/server/services/PdfService.ts | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/src/server/services/PdfService.ts b/src/server/services/PdfService.ts index 76f21da..ac2dd6f 100644 --- a/src/server/services/PdfService.ts +++ b/src/server/services/PdfService.ts @@ -197,17 +197,14 @@ export class PdfService { const page = pdfDoc.getPage(i); page.drawPage(timbradoEmbed, { x: 0, y: 0, width: page.getWidth(), height: page.getHeight() }); } - // Remove última página se ela for vazia (heurística: largura e altura padrão, nenhum objeto além do fundo) - if (pdfDoc.getPageCount() > 1) { - const lastPage = pdfDoc.getPage(pdfDoc.getPageCount() - 1); - // Heurística: se a última página não tem annotations nem xObjects além do fundo, é vazia - const annots = lastPage.node.Annots(); - const xObjects = lastPage.node.Resources().XObject(); - const hasAnnots = annots && annots.size && annots.size() > 0; - const hasXObjects = xObjects && xObjects.size && xObjects.size() > 0; - // Se não tem anotações nem xObjects, remove - if (!hasAnnots && !hasXObjects) { - pdfDoc.removePage(pdfDoc.getPageCount() - 1); + // Após mesclar o timbrado + const pageCountBefore = pdfDoc.getPageCount(); + if (pageCountBefore > 1) { + // Heurística: remove a última página se ela estiver completamente em branco (sem texto) + const lastPage = pdfDoc.getPage(pageCountBefore - 1); + const text = await lastPage.getTextContent?.(); + if (!text || (Array.isArray(text.items) && text.items.length === 0)) { + pdfDoc.removePage(pageCountBefore - 1); } } const mergedPdf = await pdfDoc.save();