tenta fix pdfservice.js
This commit is contained in:
1 parent
8cf2c23774
commit
0a651f94c0
1 file changed
+6
-32
@@ -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 }[] {
|
||||
|
||||
Reference in new issue
Block a user