tenta fix pdfservice.js

This commit is contained in:
rodrigo committed 2025-04-22 10:16:47 -03:00
1 parent 07b677be29
commit ac2891ce0d
2 files changed
+686 -61

No files matched your search

+52 -61
View File
@@ -294,67 +294,58 @@ export class PdfService {
function decodeHtmlEntities(str: string): string {
if (!str) return '';
// Usa o método nativo do DOM para decodificar entidades HTML
const textarea = document.createElement('textarea');
textarea.innerHTML = str;
let decoded = textarea.value;
// Fallback para ambientes sem DOM (Node.js)
if (decoded === str) {
return str
// Acentos minúsculos e maiúsculos
.replace(/Á/g, 'Á').replace(/á/g, 'á')
.replace(/É/g, 'É').replace(/é/g, 'é')
.replace(/Í/g, 'Í').replace(/í/g, 'í')
.replace(/Ó/g, 'Ó').replace(/ó/g, 'ó')
.replace(/Ú/g, 'Ú').replace(/ú/g, 'ú')
.replace(/À/g, 'À').replace(/à/g, 'à')
.replace(/È/g, 'È').replace(/è/g, 'è')
.replace(/Ì/g, 'Ì').replace(/ì/g, 'ì')
.replace(/Ò/g, 'Ò').replace(/ò/g, 'ò')
.replace(/Ù/g, 'Ù').replace(/ù/g, 'ù')
.replace(/Â/g, 'Â').replace(/â/g, 'â')
.replace(/Ê/g, 'Ê').replace(/ê/g, 'ê')
.replace(/Î/g, 'Î').replace(/î/g, 'î')
.replace(/Ô/g, 'Ô').replace(/ô/g, 'ô')
.replace(/Û/g, 'Û').replace(/û/g, 'û')
.replace(/Ã/g, 'Ã').replace(/ã/g, 'ã')
.replace(/Õ/g, 'Õ').replace(/õ/g, 'õ')
.replace(/Ç/g, 'Ç').replace(/ç/g, 'ç')
.replace(/Ñ/g, 'Ñ').replace(/ñ/g, 'ñ')
.replace(/Ü/g, 'Ü').replace(/ü/g, 'ü')
// Símbolos comuns
.replace(/º/gi, 'º')
.replace(/ª/gi, 'ª')
.replace(/§/gi, '§')
.replace(/°/gi, '°')
.replace(/©/gi, '©')
.replace(/®/gi, '®')
.replace(/¶/gi, '')
.replace(/•/gi, '•')
.replace(/–/gi, '–')
.replace(/—/gi, '—')
.replace(/«/gi, '«')
.replace(/»/gi, '»')
.replace(/‘/gi, ''')
.replace(/’/gi, ''')
.replace(/“/gi, '"')
.replace(/”/gi, '"')
.replace(/€/gi, '€')
.replace(/¥/gi, '¥')
.replace(/£/gi, '£')
.replace(/¢/gi, '¢')
.replace(/ /gi, ' ')
.replace(/&/gi, '&')
.replace(/"/gi, '"')
.replace(/'/g, "'")
.replace(/&lt;/gi, '<')
.replace(/&gt;/gi, '>')
// Numéricos
.replace(/&#(\d+);/g, (m, code) => String.fromCharCode(code));
}
return decoded;
// Como estamos em Node.js, usamos apenas o método de substituição
return str
// Acentos minúsculos e maiúsculos
.replace(/&Aacute;/g, 'Á').replace(/&aacute;/g, 'á')
.replace(/&Eacute;/g, 'É').replace(/&eacute;/g, 'é')
.replace(/&Iacute;/g, 'Í').replace(/&iacute;/g, 'í')
.replace(/&Oacute;/g, 'Ó').replace(/&oacute;/g, 'ó')
.replace(/&Uacute;/g, 'Ú').replace(/&uacute;/g, 'ú')
.replace(/&Agrave;/g, 'À').replace(/&agrave;/g, 'à')
.replace(/&Egrave;/g, 'È').replace(/&egrave;/g, 'è')
.replace(/&Igrave;/g, 'Ì').replace(/&igrave;/g, 'ì')
.replace(/&Ograve;/g, 'Ò').replace(/&ograve;/g, 'ò')
.replace(/&Ugrave;/g, 'Ù').replace(/&ugrave;/g, 'ù')
.replace(/&Acirc;/g, 'Â').replace(/&acirc;/g, 'â')
.replace(/&Ecirc;/g, 'Ê').replace(/&ecirc;/g, 'ê')
.replace(/&Icirc;/g, 'Î').replace(/&icirc;/g, 'î')
.replace(/&Ocirc;/g, 'Ô').replace(/&ocirc;/g, 'ô')
.replace(/&Ucirc;/g, 'Û').replace(/&ucirc;/g, 'û')
.replace(/&Atilde;/g, 'Ã').replace(/&atilde;/g, 'ã')
.replace(/&Otilde;/g, 'Õ').replace(/&otilde;/g, 'õ')
.replace(/&Ccedil;/g, 'Ç').replace(/&ccedil;/g, 'ç')
.replace(/&Ntilde;/g, 'Ñ').replace(/&ntilde;/g, 'ñ')
.replace(/&Uuml;/g, 'Ü').replace(/&uuml;/g, 'ü')
// Símbolos comuns
.replace(/&ordm;/gi, 'º')
.replace(/&ordf;/gi, 'ª')
.replace(/&sect;/gi, '§')
.replace(/&deg;/gi, '°')
.replace(/&copy;/gi, '©')
.replace(/&reg;/gi, '®')
.replace(/&para;/gi, '')
.replace(/&bull;/gi, '•')
.replace(/&ndash;/gi, '–')
.replace(/&mdash;/gi, '—')
.replace(/&laquo;/gi, '«')
.replace(/&raquo;/gi, '»')
.replace(/&lsquo;/gi, ''')
.replace(/&rsquo;/gi, ''')
.replace(/&ldquo;/gi, '"')
.replace(/&rdquo;/gi, '"')
.replace(/&euro;/gi, '€')
.replace(/&yen;/gi, '¥')
.replace(/&pound;/gi, '£')
.replace(/&cent;/gi, '¢')
.replace(/&nbsp;/gi, ' ')
.replace(/&amp;/gi, '&')
.replace(/&quot;/gi, '"')
.replace(/&#39;/g, "'")
.replace(/&lt;/gi, '<')
.replace(/&gt;/gi, '>')
// Numéricos
.replace(/&#(\d+);/g, (m, code) => String.fromCharCode(code));
}
const texto = decodeHtmlEntities(