# Solución de problemas de CMYK y PDF en idiomas internacionales
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/](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.
```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>
```
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:
```csharp
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");
}
}
```
- **`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](https://ironpdf.com/object-reference/api/IronPdf.ChromePdfRenderOptions.html#IronPdf_PdfPrintOptions_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:
```csharp
// 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");
```
### 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:
```csharp
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);
```
### 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.
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:
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.
La etiqueta <meta charset="UTF-8"> especifica la codificación de caracteres UTF-8, que es capaz de manejar cualquier carácter Unicode.
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 voidMain() { // Instantiate a renderer varRenderer = new HtmlToPdf { // Set the input encoding to UTF-8RenderOptions = new ChromePdfRendererOptions {InputEncoding = "UTF-8" } }; // Convert HTML to PDF varPDF = Renderer.RenderHtmlAsPdf("<p>Sample content with UTF-8 encoding</p>"); // Save the PDF to diskPDF.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");
}
}
ImportsIronPdfFriend Class ProgramShared Sub Main() ' Instantiate a renderer DimRenderer = New HtmlToPdfWith { .RenderOptions = New ChromePdfRendererOptionsWith {.InputEncoding = "UTF-8"} } ' Convert HTML to PDF DimPDF = Renderer.RenderHtmlAsPdf("<p>Sample content with UTF-8 encoding</p>") ' Save the PDF to diskPDF.SaveAs("output.pdf") End SubEnd Class
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
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.
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 renderingstring htmlIso = File.ReadAllText("factura.html", Encoding.Latin1);string htmlUtf8 = htmlIso; // already re-encoded in memory as UTF-16 .NET stringvar 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");
ImportsSystem.IOImportsSystem.Text' Convert ISO 8859-1 encoded HTML to UTF-8 before renderingDim htmlIso AsString = File.ReadAllText("factura.html", Encoding.Latin1)Dim htmlUtf8 AsString = htmlIso ' already re-encoded in memory as UTF-16 .NET stringDim renderer As New ChromePdfRenderer()renderer.RenderingOptions.InputEncoding = System.Text.Encoding.UTF8Dim 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")
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 templatestring 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);
ImportsSystem.Text' Normalize to NFC before embedding in HTML templateDim leyenda AsString = "Factura emitida conforme a TicketBAI (Gipuzkoa)"Dim leyendaNfc AsString = 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)
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.
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 estructurados y visualmente atractivos.