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
|
// Fonte Fira Sans (se disponível), senão Helvetica
|
||||||
let font = await pdfDoc.embedFont(StandardFonts.Helvetica);
|
let font = null, fontBold = null, fontItalic = null, fontBoldItalic = null;
|
||||||
let fontBold = font, fontItalic = font, fontBoldItalic = font;
|
let useCustomFont = false;
|
||||||
try {
|
try {
|
||||||
const firaPath = path.join(process.cwd(), 'public', 'fonts', 'FiraSans-Regular.ttf');
|
const firaPath = path.join(process.cwd(), 'public', 'fonts', 'FiraSans-Regular.ttf');
|
||||||
const firaBoldPath = path.join(process.cwd(), 'public', 'fonts', 'FiraSans-Bold.ttf');
|
const firaBoldPath = path.join(process.cwd(), 'public', 'fonts', 'FiraSans-Bold.ttf');
|
||||||
const firaItalicPath = path.join(process.cwd(), 'public', 'fonts', 'FiraSans-Italic.ttf');
|
const firaItalicPath = path.join(process.cwd(), 'public', 'fonts', 'FiraSans-Italic.ttf');
|
||||||
const firaBoldItalicPath = path.join(process.cwd(), 'public', 'fonts', 'FiraSans-BoldItalic.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(firaPath).catch(() => null),
|
||||||
fs.readFile(firaBoldPath).catch(() => null),
|
fs.readFile(firaBoldPath).catch(() => null),
|
||||||
fs.readFile(firaItalicPath).catch(() => null),
|
fs.readFile(firaItalicPath).catch(() => null),
|
||||||
fs.readFile(firaBoldItalicPath).catch(() => null),
|
fs.readFile(firaBoldItalicPath).catch(() => null),
|
||||||
]);
|
]);
|
||||||
if (fira) font = await pdfDoc.embedFont(fira);
|
if (fira) { font = await pdfDoc.embedFont(fira); useCustomFont = true; }
|
||||||
if (firaBold) fontBold = await pdfDoc.embedFont(firaBold);
|
if (firaBoldBuf) fontBold = await pdfDoc.embedFont(firaBoldBuf);
|
||||||
if (firaItalic) fontItalic = await pdfDoc.embedFont(firaItalic);
|
if (firaItalicBuf) fontItalic = await pdfDoc.embedFont(firaItalicBuf);
|
||||||
if (firaBoldItalic) fontBoldItalic = await pdfDoc.embedFont(firaBoldItalic);
|
if (firaBoldItalicBuf) fontBoldItalic = await pdfDoc.embedFont(firaBoldItalicBuf);
|
||||||
} catch { /* fallback para Helvetica */ }
|
} 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
|
// Parse TinyMCE HTML para blocos estilizados
|
||||||
const blocks = parseHtmlToBlocks(conteudo);
|
const blocks = parseHtmlToBlocks(conteudo);
|
||||||
@@ -426,8 +430,11 @@ export class PdfService {
|
|||||||
if (block.styles.heading === 'h2') blockFontSize = 18;
|
if (block.styles.heading === 'h2') blockFontSize = 18;
|
||||||
if (block.styles.heading === 'h3') blockFontSize = 16;
|
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 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
|
// Centralização
|
||||||
if (block.styles.align === 'center' || block.styles.heading === 'h1') {
|
if (block.styles.align === 'center' || block.styles.heading === 'h1') {
|
||||||
@@ -453,8 +460,8 @@ export class PdfService {
|
|||||||
y = PAGE_HEIGHT - margens.top;
|
y = PAGE_HEIGHT - margens.top;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Renderiza o texto
|
// Renderiza o texto (sem \n)
|
||||||
page.drawText(block.text, {
|
page.drawText(cleanText, {
|
||||||
x,
|
x,
|
||||||
y,
|
y,
|
||||||
size: blockFontSize,
|
size: blockFontSize,
|
||||||
|
|||||||
Reference in new issue
Block a user