tenta fix pdfservice.js

This commit is contained in:
rodrigo committed 2025-04-21 19:48:27 -03:00
1 parent 3a3c64f1b3
commit e179fb33d7
1 file changed
+19
+19
View File
@@ -284,9 +284,27 @@ export class PdfService {
.replace(/&#(\d+);/g, (m, code) => String.fromCharCode(code)); .replace(/&#(\d+);/g, (m, code) => String.fromCharCode(code));
} }
// Função para remover todas as tags HTML, exceto as de formatação suportadas
function stripUnsupportedTags(html: string): string {
// Remove todas as tags, exceto <b>, <strong>, <i>, <em>, <u>, <br>, <p>, <span style="text-indent:2em;">
// Remove atributos de <span> exceto text-indent
return html
// Remove spans que não são recuo
.replace(/<span\b((?!text-indent)[^>])*?>/gi, '')
// Remove atributos de <b>, <strong>, <i>, <em>, <u>, <p>
.replace(/<(b|strong|i|em|u|p)[^>]*>/gi, '<$1>')
// Remove todas as outras tags e atributos
.replace(/<(?!\/?(b|strong|i|em|u|br|p|span)[ >])[^>]+>/gi, '')
// Remove spans sem text-indent
.replace(/<span>(.*?)<\/span>/gi, '$1')
// Remove comentários HTML
.replace(/<!--[\s\S]*?-->/g, '');
}
// Processar variáveis do template e decodificar entidades HTML // Processar variáveis do template e decodificar entidades HTML
// Mantém tags <b>, <strong>, <i>, <em>, <u>, <br>, <p>, <span style="text-indent:2em;"> // Mantém tags <b>, <strong>, <i>, <em>, <u>, <br>, <p>, <span style="text-indent:2em;">
const texto = decodeHtmlEntities( const texto = decodeHtmlEntities(
stripUnsupportedTags(
this.processarTemplate(conteudo, escritorio) this.processarTemplate(conteudo, escritorio)
.replace(/<br\s*\/?>/gi, '\n') .replace(/<br\s*\/?>/gi, '\n')
.replace(/<\/p>/gi, '\n\n') .replace(/<\/p>/gi, '\n\n')
@@ -297,6 +315,7 @@ export class PdfService {
.replace(/\r/g, '\n') .replace(/\r/g, '\n')
.replace(/\n{3,}/g, '\n\n') .replace(/\n{3,}/g, '\n\n')
.trim() .trim()
)
); );
// Quebra o texto em parágrafos (mantendo quebras de linha duplas como parágrafo) // Quebra o texto em parágrafos (mantendo quebras de linha duplas como parágrafo)