backend: fix PDFService.ts
This commit is contained in:
1 parent
0fef046d38
commit
b9e7de0ca0
1 file changed
+13
-13
@@ -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) {
|
||||
|
||||
Reference in new issue
Block a user