diff --git a/src/server/services/PdfService.ts b/src/server/services/PdfService.ts index d911937..01ebafe 100644 --- a/src/server/services/PdfService.ts +++ b/src/server/services/PdfService.ts @@ -340,38 +340,12 @@ export class PdfService { } } - // Fonte Times New Roman (se disponível), senão Times padrão do PDF-LIB - let font = null, fontBold = null, fontItalic = null, fontBoldItalic = null; - try { - const timesPath = path.join(process.cwd(), 'public', 'fonts', 'TimesNewRoman.ttf'); - const timesBoldPath = path.join(process.cwd(), 'public', 'fonts', 'TimesNewRoman-Bold.ttf'); - const timesItalicPath = path.join(process.cwd(), 'public', 'fonts', 'TimesNewRoman-Italic.ttf'); - 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; + // Fonte padrão do pdf-lib: Garamond-like (serif) = StandardFonts.TimesRoman + // Não tenta carregar fontes externas, apenas usa as fontes padrão do pdf-lib + const font = await pdfDoc.embedFont(StandardFonts.TimesRoman); + const fontBold = await pdfDoc.embedFont(StandardFonts.TimesBold); + const fontItalic = await pdfDoc.embedFont(StandardFonts.TimesItalic); + const fontBoldItalic = fontBold; // pdf-lib não tem TimesBoldItalic, usa bold // 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 }[] {