tenta fix pdfservice.js
This commit is contained in:
1 parent
8a09720030
commit
e91294df22
1 file changed
+17
-10
@@ -375,24 +375,28 @@ export class PdfService {
|
||||
}
|
||||
|
||||
// Fonte Fira Sans (se disponível), senão Helvetica
|
||||
let font = await pdfDoc.embedFont(StandardFonts.Helvetica);
|
||||
let fontBold = font, fontItalic = font, fontBoldItalic = font;
|
||||
let font = null, fontBold = null, fontItalic = null, fontBoldItalic = null;
|
||||
let useCustomFont = false;
|
||||
try {
|
||||
const firaPath = path.join(process.cwd(), 'public', 'fonts', 'FiraSans-Regular.ttf');
|
||||
const firaBoldPath = path.join(process.cwd(), 'public', 'fonts', 'FiraSans-Bold.ttf');
|
||||
const firaItalicPath = path.join(process.cwd(), 'public', 'fonts', 'FiraSans-Italic.ttf');
|
||||
const firaBoldItalicPath = path.join(process.cwd(), 'public', 'fonts', 'FiraSans-BoldItalic.ttf');
|
||||
const [fira, firaBold, firaItalic, firaBoldItalic] = await Promise.all([
|
||||
const [fira, firaBoldBuf, firaItalicBuf, firaBoldItalicBuf] = await Promise.all([
|
||||
fs.readFile(firaPath).catch(() => null),
|
||||
fs.readFile(firaBoldPath).catch(() => null),
|
||||
fs.readFile(firaItalicPath).catch(() => null),
|
||||
fs.readFile(firaBoldItalicPath).catch(() => null),
|
||||
]);
|
||||
if (fira) font = await pdfDoc.embedFont(fira);
|
||||
if (firaBold) fontBold = await pdfDoc.embedFont(firaBold);
|
||||
if (firaItalic) fontItalic = await pdfDoc.embedFont(firaItalic);
|
||||
if (firaBoldItalic) fontBoldItalic = await pdfDoc.embedFont(firaBoldItalic);
|
||||
if (fira) { font = await pdfDoc.embedFont(fira); useCustomFont = true; }
|
||||
if (firaBoldBuf) fontBold = await pdfDoc.embedFont(firaBoldBuf);
|
||||
if (firaItalicBuf) fontItalic = await pdfDoc.embedFont(firaItalicBuf);
|
||||
if (firaBoldItalicBuf) fontBoldItalic = await pdfDoc.embedFont(firaBoldItalicBuf);
|
||||
} catch { /* fallback para Helvetica */ }
|
||||
if (!font) font = await pdfDoc.embedFont(StandardFonts.Helvetica);
|
||||
if (!fontBold) fontBold = await pdfDoc.embedFont(StandardFonts.HelveticaBold);
|
||||
if (!fontItalic) fontItalic = await pdfDoc.embedFont(StandardFonts.HelveticaOblique);
|
||||
if (!fontBoldItalic) fontBoldItalic = fontBold;
|
||||
|
||||
// Parse TinyMCE HTML para blocos estilizados
|
||||
const blocks = parseHtmlToBlocks(conteudo);
|
||||
@@ -426,8 +430,11 @@ export class PdfService {
|
||||
if (block.styles.heading === 'h2') blockFontSize = 18;
|
||||
if (block.styles.heading === 'h3') blockFontSize = 16;
|
||||
|
||||
// Remove quebras de linha do texto antes de medir e desenhar
|
||||
const cleanText = (block.text || '').replace(/\r?\n/g, ' ');
|
||||
|
||||
let x = margens.left + (block.styles.indent ? FONT_SIZE * 2 : 0);
|
||||
let width = usedFont.widthOfTextAtSize(block.text, blockFontSize);
|
||||
let width = usedFont.widthOfTextAtSize(cleanText, blockFontSize);
|
||||
|
||||
// Centralização
|
||||
if (block.styles.align === 'center' || block.styles.heading === 'h1') {
|
||||
@@ -453,8 +460,8 @@ export class PdfService {
|
||||
y = PAGE_HEIGHT - margens.top;
|
||||
}
|
||||
|
||||
// Renderiza o texto
|
||||
page.drawText(block.text, {
|
||||
// Renderiza o texto (sem \n)
|
||||
page.drawText(cleanText, {
|
||||
x,
|
||||
y,
|
||||
size: blockFontSize,
|
||||
|
||||
Reference in new issue
Block a user