Solución de problemas de CMYK y PDF en idiomas internacionales

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF admite conversión de HTML a PDF en todos los idiomas internacionales soportados por Unicode, incluidos documentos de idiomas mixtos.

Dos puntos a considerar son Tipografías y Codificación de Entrada, que se explican en más detalle en esta página de FAQ: https://ironpdf.com/how-to/utf-8/

Un tipo de letra que soporte tu juego de caracteres debe estar instalado en tu servidor.

Es posible que tenga que especificar la codificación de entrada de su documento para renderizarlo correctamente.

Puede lograr esto de las siguientes maneras:

  1. Añadiendo una etiqueta HTML 'Meta Charset'

    Este método implica incluir una etiqueta <meta> dentro de la sección <head> del HTML para definir el conjunto de caracteres. Esto asegura que su documento HTML use los caracteres correctos.

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Your Document Title</title>
    </head>
    <body>
        <p>Your document content goes here...</p>
    </body>
    </html>
    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Your Document Title</title>
    </head>
    <body>
        <p>Your document content goes here...</p>
    </body>
    </html>
    HTML

    La etiqueta <meta charset="UTF-8"> especifica la codificación de caracteres UTF-8, que es capaz de manejar cualquier carácter Unicode.

  2. Configurando la propiedad inputEncoding de su convertidor HTML a PDF de IronPDF

    Puede establecer la propiedad inputEncoding de su convertidor IronPDF, lo que le permite especificar la codificación de caracteres durante el proceso de conversión.

    Esto se puede hacer en su código C# de la siguiente manera:

    using IronPdf;
    
    class Program
    {
        static void Main()
        {
            // Instantiate a renderer
            var Renderer = new HtmlToPdf
            {
                // Set the input encoding to UTF-8
                RenderOptions = new ChromePdfRendererOptions
                {
                    InputEncoding = "UTF-8"
                }
            };
    
            // Convert HTML to PDF
            var PDF = Renderer.RenderHtmlAsPdf("<p>Sample content with UTF-8 encoding</p>");
    
            // Save the PDF to disk
            PDF.SaveAs("output.pdf");
        }
    }
    using IronPdf;
    
    class Program
    {
        static void Main()
        {
            // Instantiate a renderer
            var Renderer = new HtmlToPdf
            {
                // Set the input encoding to UTF-8
                RenderOptions = new ChromePdfRendererOptions
                {
                    InputEncoding = "UTF-8"
                }
            };
    
            // Convert HTML to PDF
            var PDF = Renderer.RenderHtmlAsPdf("<p>Sample content with UTF-8 encoding</p>");
    
            // Save the PDF to disk
            PDF.SaveAs("output.pdf");
        }
    }
    Imports IronPdf
    
    Friend Class Program
    	Shared Sub Main()
    		' Instantiate a renderer
    		Dim Renderer = New HtmlToPdf With {
    			.RenderOptions = New ChromePdfRendererOptions With {.InputEncoding = "UTF-8"}
    		}
    
    		' Convert HTML to PDF
    		Dim PDF = Renderer.RenderHtmlAsPdf("<p>Sample content with UTF-8 encoding</p>")
    
    		' Save the PDF to disk
    		PDF.SaveAs("output.pdf")
    	End Sub
    End Class
    $vbLabelText   $csharpLabel
    • HtmlToPdf: Esta es una clase de la biblioteca IronPDF utilizada para convertir documentos HTML a PDF.
    • RenderOptions.InputEncoding: Esta propiedad le permite establecer la codificación de los datos de entrada. Aquí, se establece en "UTF-8" para soportar idiomas internacionales.
    • RenderHtmlAsPdf: Este método renderiza el contenido HTML dado en un formato PDF.
    • SaveAs: Este método se utiliza para guardar el archivo PDF renderizado en una ruta de archivo especificada.

Por favor, lea más sobre la propiedad inputEncoding en la documentación de IronPDF: IronPdf.ChromePdfRenderOptions.inputEncoding

Codificación en documentos fiscales y legales españoles

La correcta configuración de codificación tiene especial relevancia para los desarrolladores españoles que generan documentos PDF en entornos de facturación y cumplimiento normativo.

UTF-8 y caracteres castellanos en documentos VeriFactu y Facturae

Los documentos fiscales españoles —facturas VeriFactu (reguladas por la AEAT), facturas Facturae (formato XML v3.2.2 obligatorio para el sector público a través de FACe) y registros del SII (Suministro Inmediato de Información)— contienen caracteres castellanos con tilde (á, é, í, ó, ú), eñe (ñ) y signos de apertura (¿, ¡). Cuando el HTML de origen proviene de un sistema de facturación heredado con codificación ISO 8859-1 (Windows-1252), es imprescindible configurar InputEncoding = "UTF-8" o convertir el HTML a UTF-8 antes de pasarlo a IronPDF para evitar caracteres corruptos en el PDF final.

Recomendación para sistemas heredados: Si su ERP o software de facturación genera HTML con codificación ISO 8859-1 y los caracteres castellanos aparecen corruptos en el PDF, convierta el HTML a UTF-8 antes de invocar IronPDF:

// Convert ISO 8859-1 encoded HTML to UTF-8 before rendering
string htmlIso = File.ReadAllText("factura.html", Encoding.Latin1);
string htmlUtf8 = htmlIso; // already re-encoded in memory as UTF-16 .NET string
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.InputEncoding = System.Text.Encoding.UTF8;
var pdf = renderer.RenderHtmlAsPdf(htmlUtf8);
pdf.SaveAs("factura-verifactu.pdf");
// Convert ISO 8859-1 encoded HTML to UTF-8 before rendering
string htmlIso = File.ReadAllText("factura.html", Encoding.Latin1);
string htmlUtf8 = htmlIso; // already re-encoded in memory as UTF-16 .NET string
var renderer = new ChromePdfRenderer();
renderer.RenderingOptions.InputEncoding = System.Text.Encoding.UTF8;
var pdf = renderer.RenderHtmlAsPdf(htmlUtf8);
pdf.SaveAs("factura-verifactu.pdf");
Imports System.IO
Imports System.Text

' Convert ISO 8859-1 encoded HTML to UTF-8 before rendering
Dim htmlIso As String = File.ReadAllText("factura.html", Encoding.Latin1)
Dim htmlUtf8 As String = htmlIso ' already re-encoded in memory as UTF-16 .NET string
Dim renderer As New ChromePdfRenderer()
renderer.RenderingOptions.InputEncoding = System.Text.Encoding.UTF8
Dim pdf = renderer.RenderHtmlAsPdf(htmlUtf8)
pdf.SaveAs("factura-verifactu.pdf")
$vbLabelText   $csharpLabel

Normalización NFC para tildes en documentos TicketBAI

El sistema TicketBAI, aplicado en los tres territorios forales vascos (Bizkaia, Gipuzkoa y Araba), requiere que el texto de la leyenda obligatoria del tique sea legible y esté correctamente codificado. En cadenas de texto procedentes de bases de datos o APIs externas, los caracteres acentuados pueden almacenarse en forma NFD (descompuesta) en lugar de NFC (compuesta), lo que puede causar diferencias visuales sutiles en el PDF. Normalice las cadenas a NFC antes de inyectarlas en el HTML:

using System.Text;
// Normalize to NFC before embedding in HTML template
string leyenda = "Factura emitida conforme a TicketBAI (Gipuzkoa)";
string leyendaNfc = leyenda.Normalize(NormalizationForm.FormC);
using System.Text;
// Normalize to NFC before embedding in HTML template
string leyenda = "Factura emitida conforme a TicketBAI (Gipuzkoa)";
string leyendaNfc = leyenda.Normalize(NormalizationForm.FormC);
Imports System.Text

' Normalize to NFC before embedding in HTML template
Dim leyenda As String = "Factura emitida conforme a TicketBAI (Gipuzkoa)"
Dim leyendaNfc As String = leyenda.Normalize(NormalizationForm.FormC)
$vbLabelText   $csharpLabel

LOPDGDD y codificación en documentos con datos personales

La LOPDGDD (Ley Orgánica de Protección de Datos y Garantía de Derechos Digitales) exige que los documentos con datos personales sean legibles e íntegros. Un PDF con caracteres corruptos por problemas de codificación puede incumplir el requisito de legibilidad. Configure siempre InputEncoding = "UTF-8" en IronPDF al generar documentos que contengan nombres, direcciones o cualquier otro dato personal en castellano.

Preguntas Frecuentes

¿Cómo evitar caracteres corruptos al generar PDFs VeriFactu o Facturae con IronPDF desde sistemas de facturación heredados con ISO 8859-1?

Si su sistema de facturación genera HTML con codificación ISO 8859-1 (Windows-1252), convierta el HTML a una cadena .NET (que usa UTF-16 internamente) antes de pasarlo a IronPDF y configure `RenderingOptions.InputEncoding = System.Text.Encoding.UTF8`. Esto garantiza que caracteres castellanos como á, é, ñ, ¿ y ¡ se representen correctamente en el PDF final de la factura VeriFactu o Facturae.

¿Es necesaria la normalización NFC para textos en castellano en documentos TicketBAI generados con IronPDF?

Sí. En sistemas donde las cadenas de texto provienen de bases de datos o APIs externas, los caracteres acentuados pueden estar en forma NFD (descompuesta). Normalice las cadenas a NFC usando `string.Normalize(NormalizationForm.FormC)` antes de inyectarlas en la plantilla HTML. Esto es especialmente importante para la leyenda obligatoria de los tiques TicketBAI en Bizkaia, Gipuzkoa y Araba, cuyo texto debe ser legible según los requisitos de cada hacienda foral.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más
¿Listo para empezar?
Nuget Descargas 19,014,616 | Versión: 2026.5 just released
Still Scrolling Icon

¿Aún desplazándote?

¿Quieres una prueba rápida? PM > Install-Package IronPdf
ejecutar una muestra Mira cómo tu HTML se convierte en PDF.