tenta fix pdfservice.js

This commit is contained in:
rodrigo committed 2025-04-21 21:09:46 -03:00
1 parent 8cf2c23774
commit 0a651f94c0
1 file changed
+6 -32
+6 -32
View File
@@ -340,38 +340,12 @@ export class PdfService {
} }
} }
// Fonte Times New Roman (se disponível), senão Times padrão do PDF-LIB // Fonte padrão do pdf-lib: Garamond-like (serif) = StandardFonts.TimesRoman
let font = null, fontBold = null, fontItalic = null, fontBoldItalic = null; // Não tenta carregar fontes externas, apenas usa as fontes padrão do pdf-lib
try { const font = await pdfDoc.embedFont(StandardFonts.TimesRoman);
const timesPath = path.join(process.cwd(), 'public', 'fonts', 'TimesNewRoman.ttf'); const fontBold = await pdfDoc.embedFont(StandardFonts.TimesBold);
const timesBoldPath = path.join(process.cwd(), 'public', 'fonts', 'TimesNewRoman-Bold.ttf'); const fontItalic = await pdfDoc.embedFont(StandardFonts.TimesItalic);
const timesItalicPath = path.join(process.cwd(), 'public', 'fonts', 'TimesNewRoman-Italic.ttf'); const fontBoldItalic = fontBold; // pdf-lib não tem TimesBoldItalic, usa bold
const timesBoldItalicPath = path.join(process.cwd(), 'public', 'fonts', 'TimesNewRoman-BoldItalic.ttf');
const [times, timesBoldBuf, timesItalicBuf, timesBoldItalicBuf] = await Promise.all([
fs.readFile(timesPath).catch(() => null),
fs.readFile(timesBoldPath).catch(() => null),
fs.readFile(timesItalicPath).catch(() => null),
fs.readFile(timesBoldItalicPath).catch(() => null),
]);
// Se algum arquivo foi encontrado mas está vazio, lança erro explícito
if ((timesPath && times !== null && (!Buffer.isBuffer(times) || times.length === 0)) ||
(timesBoldPath && timesBoldBuf !== null && (!Buffer.isBuffer(timesBoldBuf) || timesBoldBuf.length === 0)) ||
(timesItalicPath && timesItalicBuf !== null && (!Buffer.isBuffer(timesItalicBuf) || timesItalicBuf.length === 0)) ||
(timesBoldItalicPath && timesBoldItalicBuf !== null && (!Buffer.isBuffer(timesBoldItalicBuf) || timesBoldItalicBuf.length === 0))) {
throw new Error('Arquivo de fonte Times New Roman encontrado mas está vazio ou corrompido.');
}
if (times && Buffer.isBuffer(times) && times.length > 0) font = await pdfDoc.embedFont(times);
if (timesBoldBuf && Buffer.isBuffer(timesBoldBuf) && timesBoldBuf.length > 0) fontBold = await pdfDoc.embedFont(timesBoldBuf);
if (timesItalicBuf && Buffer.isBuffer(timesItalicBuf) && timesItalicBuf.length > 0) fontItalic = await pdfDoc.embedFont(timesItalicBuf);
if (timesBoldItalicBuf && Buffer.isBuffer(timesBoldItalicBuf) && timesBoldItalicBuf.length > 0) fontBoldItalic = await pdfDoc.embedFont(timesBoldItalicBuf);
} catch (err) {
console.error('Erro ao carregar fontes Times New Roman:', err);
font = null; fontBold = null; fontItalic = null; fontBoldItalic = null;
}
if (!font) font = await pdfDoc.embedFont(StandardFonts.TimesRoman);
if (!fontBold) fontBold = await pdfDoc.embedFont(StandardFonts.TimesBold);
if (!fontItalic) fontItalic = await pdfDoc.embedFont(StandardFonts.TimesItalic);
if (!fontBoldItalic) fontBoldItalic = fontBold;
// Função para quebrar texto em linhas respeitando largura máxima e manter quebras de linha simples // Função para quebrar texto em linhas respeitando largura máxima e manter quebras de linha simples
function wrapTextStyled(text: string, font: any, fontBold: any, fontItalic: any, fontBoldItalic: any, fontSize: number, maxWidth: number, indent: boolean, align: string, bold: boolean, italic: boolean): { text: string, font: any, indent: boolean, align: string, bold: boolean, italic: boolean }[] { function wrapTextStyled(text: string, font: any, fontBold: any, fontItalic: any, fontBoldItalic: any, fontSize: number, maxWidth: number, indent: boolean, align: string, bold: boolean, italic: boolean): { text: string, font: any, indent: boolean, align: string, bold: boolean, italic: boolean }[] {