# Crear PDFs en C# con convenciones españolas: facturas, certificados, modelos
Crear PDFs programáticamente con convenciones documentales españolas - formato numérico con coma decimal y punto miles (`1.234,56 €`), tipografía A4 estándar ibérica, NIF y dirección fiscal en cabecera de factura, leyendas regulatorias `VERI*FACTU` cuando aplique, sello de empresa, firma PAdES con certificado FNMT-RCM - exige acoplar la API de IronPDF con las particularidades formales del mercado ibérico. Iron Software simplifica este proceso consolidando varias funciones de creación de PDF en métodos intuitivos que el desarrollador combina con la plantilla HTML correspondiente al tipo de documento (factura ordinaria, factura simplificada, factura rectificativa, certificado, recibo, presupuesto, modelo administrativo).
Con IronPDF, puedes agregar formas, texto, imágenes, encabezados y pies de página sin problemas. También tienes la flexibilidad de establecer la orientación del documento, tamaño y metadatos y exportar a varios estándares como PDF/UA y PDF/A. Además, integrar IronPDF en aplicaciones existentes para visualizar PDFs o imprimir documentos programáticamente es sencillo.
En este tutorial, exploraremos cada característica y mostraremos cómo IronPDF mejora la experiencia de desarrollo. Te permite crear componentes de código legibles y reutilizables que se pueden implementar en cualquier entorno y plataforma compatible.
Al final de este artículo, tendrás un sólido entendimiento de cómo crear PDFs estilísticos y únicos adaptados a tus necesidades con IronPDF.
Para comenzar a instalar IronPDF y seguir los ejemplos del tutorial descritos en este artículo, revisa esta [guía de instalación rápida](https://ironpdf.com/docs/) que te ayudará a configurar todo sin problemas.
*as-heading:2(Inicio rápido: crea tu primer PDF con IronPDF)*
Crea fácilmente tu primer PDF en C# usando IronPDF con solo unas pocas líneas de código. Esta guía rápida te muestra cómo inicializar un documento PDF, agregar contenido y guardarlo, asegurando un inicio sin problemas para los desarrolladores nuevos en la biblioteca. Sumérgete en la creación de PDFs en segundos y expande las capacidades de tu aplicación C# con facilidad.
```cs
:title=Instant PDF Creation with IronPDF
new IronPdf.PdfDocument(500, 500).SaveAs("output.pdf");
```
*as-heading:2(Tabla de contenido)*
- **Diseña PDFs Perfectos**
- [Crear PDF en Blanco](#anchor-create-blank-pdf)
- [Agregar Encabezados & Pies de Página](#anchor-add-headers-footers)
- [Agregar Números de Página](#anchor-add-page-numbers)
- [Incrustar Imágenes con DataURIs](#anchor-embed-images-with-datauris)
- [Incrustar Imágenes desde Azure Blob Storage](#anchor-embed-images-with-azure-blob-storage)
- [OpenAI para PDF](#anchor-openai-for-pdf)
- **Personalización Total del PDF Fácil**
- [Orientación & Rotación](#anchor-orientation-rotation)
- [Tamaño de Papel Personalizado](#anchor-custom-paper-size)
- **Conformidad con los Estándares**
- [Exportar Documentos en Formato PDF/A en C#](#anchor-export-pdf-a-format-docs-in-c-num)
- [Exportar Documentos en Formato PDF/UA en C#](#anchor-export-pdf-ua-format-docs-in-c-num)
## Diseñe su PDF perfecto
### Crear PDF en blanco
Crear un PDF en blanco con IronPDF es intuitivo y sencillo, requiriendo solo un par de líneas de código. Primero iniciamos una nueva clase `PdfDocument`, le proporcionamos dimensiones y llamamos al método `SaveAs` para guardarlo. `TextHeaderFooter`
```cs
using IronPdf;
PdfDocument pdf = new PdfDocument(270, 270);
pdf.SaveAs("blankPage.pdf");
```
Para una explicación más detallada de este fragmento de código y para explorar su funcionalidad adicional, por favor consulta nuestra exhaustiva [guía de cómo hacerlo](https://ironpdf.com/how-to/create-new-pdfs/).
### Añadir encabezados y pies de página
Agrega encabezados y pies de página en la parte superior o inferior de tu PDF fácilmente usando IronPDF. IronPDF te permite agregar dos tipos de encabezados y pies de página. `TextHeaderFooter` es ideal para escenarios donde solo se requiere texto, como mostrar el número de página con interpolación de cadenas, por ejemplo, `"{page} of {total-pages}"` `HtmlHeaderFooter`. Al mismo tiempo, `HtmlHeaderFooter` es una variación más avanzada que permite a los desarrolladores personalizar el contenido HTML que colocan.
Para una explicación más detallada de este fragmento de código y para explorar su funcionalidad adicional, por favor consulta nuestra exhaustiva [guía de cómo hacerlo](https://ironpdf.com/how-to/headers-and-footers/).
#### Cabecera y pie de página HTML
Al configurar el objeto `HtmlHeaderFooter` `<center>`, podemos personalizar dónde aparece el texto envolviendo los números de página en etiquetas `span` y agregando un recurso de imagen para asegurar que el documento sea único.
```cs
using IronPdf;
string headerHtml = @"
<html>
<head>
<link rel='stylesheet' href='style.css'>
</head>
<body>
<h1>This is a header!</h1>
</body>
</html>";
string footerHtml = @"
<html>
<head>
<link rel='stylesheet' href='style.css'>
</head>
<body>
<h1>This is a footer!</h1>
</body>
</html>";
// Instantiate renderer and create PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>");
// Create header and footer
HtmlHeaderFooter htmlHeader = new HtmlHeaderFooter
{
HtmlFragment = headerHtml,
LoadStylesAndCSSFromMainHtmlDocument = true,
};
HtmlHeaderFooter htmlFooter = new HtmlHeaderFooter
{
HtmlFragment = footerHtml,
LoadStylesAndCSSFromMainHtmlDocument = true,
};
// Add to PDF
pdf.AddHtmlHeaders(htmlHeader);
pdf.AddHtmlFooters(htmlFooter);
```
Para una explicación más detallada de este fragmento de código y para explorar su funcionalidad adicional, por favor consulta nuestra exhaustiva [guía de cómo hacerlo](https://ironpdf.com/how-to/headers-and-footers/#add-html-header-footer-example).
#### Cabecera y pie de página
El ejemplo a continuación utiliza `TextHeaderFooter` con valores de marcador de posición para denotar los números de página, URLs y fecha.
```cs
using IronPdf;
// Instantiate renderer and create PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>");
// Create text header
TextHeaderFooter textHeader = new TextHeaderFooter
{
CenterText = "This is the header!",
};
// Create text footer
TextHeaderFooter textFooter = new TextHeaderFooter
{
CenterText = "This is the footer!",
};
// Add text header and footer to the PDF
pdf.AddTextHeaders(textHeader);
pdf.AddTextFooters(textFooter);
pdf.SaveAs("addTextHeaderFooter.pdf");
```
Junto con los campos mostrados arriba, también tenemos los siguientes valores de marcador de posición que están disponibles y serán reemplazados al renderizar: `{page}`, `{total-pages}`, `{url}`, `{date}`, `{time}`, `{html-title}`, `{pdf-title}`.
Para una explicación más detallada de este fragmento de código y para explorar su funcionalidad adicional, por favor consulta nuestra exhaustiva [guía de cómo hacerlo](https://ironpdf.com/how-to/headers-and-footers/#add-a-text-header-footer-example).
### Añadir números de página
Similar al ejemplo anterior, podemos usar `TextHeaderFooter` o `HtmlHeaderFooter` para mostrar el número de página colocando valores de marcador de posición en el encabezado o pie de página, que se mostrarán cuando se renderice el documento.
```cs
using IronPdf;
// Create text header
TextHeaderFooter textHeader = new TextHeaderFooter()
{
CenterText = "{page} of {total-pages}"
};
// Create html footer
HtmlHeaderFooter htmlFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"
};
// Render a new PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>");
// Add header and footer
pdf.AddTextHeaders(textHeader);
pdf.AddHtmlFooters(htmlFooter);
pdf.SaveAs("pdfWithPageNumber.pdf");
```
Para una explicación más detallada de este fragmento de código y para explorar su funcionalidad adicional, por favor consulta nuestra exhaustiva [guía de cómo hacerlo](https://ironpdf.com/how-to/page-numbers/).
### Incorporar imágenes con DataURI
Hay ocasiones en las que depender de un directorio de recursos es demasiado lento e ineficaz; por lo tanto, podemos incrustar imágenes con Data URIs como una solución alternativa. Aquí hay un breve fragmento de código sobre cómo hacerlo.
```cs
using IronPdf;
using System;
// Read byte from image file
var pngBinaryData = System.IO.File.ReadAllBytes("My_image.png");
// Convert bytes to base64
var ImgDataURI = @"data:image/png;base64," + Convert.ToBase64String(pngBinaryData);
// Import base64 to img tag
var ImgHtml = $"<img src='{ImgDataURI}'>";
ChromePdfRenderer Renderer = new ChromePdfRenderer();
// Render the HTML string
var pdf = Renderer.RenderHtmlAsPdf(ImgHtml);
pdf.SaveAs("datauri_example.pdf");
```
Para una explicación más detallada de este fragmento de código y para explorar su funcionalidad adicional, por favor consulta nuestra exhaustiva [guía de cómo hacerlo](https://ironpdf.com/how-to/datauris/).
### OpenAI para PDF
IronPDF mejora la eficiencia y escalabilidad al soportar el modelo OpenAI para una rápida resumación, consulta y memorización, todo utilizando Microsoft Semantic Kernel. Aquí hay un breve fragmento de código sobre cómo usar OpenAI para resumir rápidamente los contenidos de un PDF.
```cs
using IronPdf;
using IronPdf.AI;
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Connectors.OpenAI;
using Microsoft.SemanticKernel.Memory;
using System;
using System.Threading.Tasks;
// Setup OpenAI
var azureEndpoint = "<<enter your azure endpoint here>>";
var apiKey = "<<enter your azure API key here>>";
var builder = Kernel.CreateBuilder()
.AddAzureOpenAITextEmbeddingGeneration("oaiembed", azureEndpoint, apiKey)
.AddAzureOpenAIChatCompletion("oaichat", azureEndpoint, apiKey);
var kernel = builder.Build();
// Setup Memory
var memory_builder = new MemoryBuilder()
// optionally use new ChromaMemoryStore("http://127.0.0.1:8000") (see https://github.com/microsoft/semantic-kernel/blob/main/dotnet/notebooks/09-memory-with-chroma.ipynb)
.WithMemoryStore(new VolatileMemoryStore())
.WithAzureOpenAITextEmbeddingGeneration("oaiembed", azureEndpoint, apiKey);
var memory = memory_builder.Build();
// Initialize IronAI
IronDocumentAI.Initialize(kernel, memory);
License.LicenseKey = "<<enter your IronPdf license key here";
// Import PDF document
PdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf");
// Summarize the document
Console.WriteLine("Please wait while I summarize the document...");
string summary = await pdf.Summarize(); // optionally pass AI instance or use AI instance directly
Console.WriteLine($"Document summary: {summary}\n\n");
```
Para una explicación más detallada de este fragmento de código y para explorar su funcionalidad adicional, por favor consulta nuestra exhaustiva [guía de cómo hacerlo](https://ironpdf.com/how-to/openai/).
## Personalización completa de PDF
### Orientación y rotación
#### Orientación
La propiedad `PaperOrientation` de la clase `RenderingOptions` te permite dictar cómo se representa la orientación del PDF. En este ejemplo, lo establecemos en `PdfPaperOrientation.Landscape` para representar la orientación del PDF en modo horizontal.
```csharp
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Change paper orientation
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
PdfDocument pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page");
pdf.SaveAs("landscape.pdf");
```
#### Rotación
Para establecer la rotación de una página PDF, podemos usar el método `SetPageRotation` junto con un enum `PdfPageRotation` como entrada, para rotar la página.
```cs
using IronPdf;
using IronPdf.Rendering;
using System.Collections.Generic;
PdfDocument pdf = PdfDocument.FromFile("landscape.pdf");
// Set all pages
pdf.SetAllPageRotations(PdfPageRotation.Clockwise90);
// Set a single page
pdf.SetPageRotation(1, PdfPageRotation.Clockwise180);
// Set multiple pages
List<int> selectedPages = new List<int>() { 0, 3 };
pdf.SetPageRotations(selectedPages, PdfPageRotation.Clockwise270);
pdf.SaveAs("rotatedLandscape.pdf");
```
Para una explicación más detallada de la configuración de la orientación y rotación del PDF y para explorar su funcionalidad adicional, por favor consulta nuestra exhaustiva [guía de cómo hacerlo](https://ironpdf.com/how-to/page-orientation-rotation/).
### Tamaño de papel personalizado
Establece las dimensiones del PDF configurando `width` y `height` usando el método `SetCustomPaperSizeinCentimeters`. IronPDF también admite configuraciones a tamaños estandarizados como A4 configurando la propiedad `PaperSize` a una lista de enums disponibles.
Para una explicación más detallada de este fragmento de código y para explorar su funcionalidad adicional, por favor consulta nuestra exhaustiva [guía de cómo hacerlo](https://ironpdf.com/how-to/custom-paper-size/).
#### Tamaño de papel personalizado en Cm
```cs
using IronPdf;
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Set custom paper size in cm
renderer.RenderingOptions.SetCustomPaperSizeinCentimeters(15, 15);
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Custom Paper Size</h1>");
pdf.SaveAs("customPaperSize.pdf");
```
#### Tamaño estándar del papel
En este ejemplo, también establecemos la propiedad `PaperSize` al enum de `PdfPaperSize.A4`.
```cs
using IronPdf;
using IronPdf.Rendering;
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Set paper size to A4
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Standard Paper Size</h1>");
pdf.SaveAs("standardPaperSize.pdf");
```
Para una lista de tamaños estandarizados compatibles, por favor haz clic [aquí](https://ironpdf.com/object-reference/api/IronPdf.Rendering.PdfPaperSize.html).
## Cumplimiento de normas
### Export PDF/A Format Docs in C#
Crea y exporta PDFs compatibles con los estándares PDF/UA utilizando el método `SaveAsPdfUA`.
```cs
using IronPdf;
// Create a PdfDocument object or open any PDF File
PdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf");
// Use the SaveAsPdfA method to save to file
pdf.SaveAsPdfA("pdf-a3-wikipedia.pdf", PdfAVersions.PdfA3b);
```
Para una explicación más detallada de este fragmento de código y para explorar su funcionalidad adicional, por favor consulta nuestra exhaustiva [guía de cómo hacerlo](https://ironpdf.com/how-to/pdfua/).
### Export PDF/UA Format Docs in C#
Para convertir PDF a PDF/A en C#, también podemos usar la biblioteca IronPDF, que soporta los estándares más recientes de PDF/A, garantizando la integridad de tus archivos; similar al ejemplo anterior, llamamos a `SaveAsPdfA` para guardar el PDF conforme a los estándares PDF/A.
```cs
using IronPdf;
// Open PDF File
PdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf");
// Export as PDF/UA. Pass the document's natural language so assistive
// technologies announce the correct pronunciation.
pdf.SaveAsPdfUA("pdf-ua-wikipedia.pdf", NaturalLanguage: NaturalLanguages.English);
```
En este ejemplo, guardamos el PDF en la variación PDF/A-3, usando el enum para `PdfAVersions`.
Para una lista completa de versiones de PDF/A compatibles, por favor haz clic [aquí](https://ironpdf.com/object-reference/api/IronPdf.PdfAVersions.html).
## Creación de documentos comerciales españoles
Las particularidades formales del mercado ibérico que conviene contemplar al crear PDFs en C# para el contexto español:
### Tipografía y formato numérico ibérico
La convención numérica española usa **coma como separador decimal** y **punto como separador de miles** - exactamente al revés que la convención angloamericana. Para garantizar formato correcto en el PDF generado, configure la cultura del proceso de renderizado a `es-ES`:
```csharp
using System.Globalization;
using IronPdf;
// Establecer cultura ibérica para que los importes se formateen con
// coma decimal y punto miles (1.234,56 €).
var cultura = new CultureInfo("es-ES");
var importeFormateado = (1234.56m).ToString("C", cultura); // "1.234,56 €"
// Renderizar con la cultura aplicada al HTML
var html = $"<p>Total: {importeFormateado}</p>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("factura-formato-iberico.pdf");
```
El **símbolo €** debe colocarse **postfijo con espacio fino** según la convención ibérica (`1.234,56 €`), no prefijo a la europea o angloamericana (`€1,234.56`). Para fechas, el formato es **DD/MM/YYYY** (`19/05/2026`), no `MM/DD/YYYY` ni `YYYY-MM-DD` salvo en contextos técnicos donde ISO 8601 es preferible.
### Cabecera de factura con NIF, razón social y dirección fiscal
Una factura conforme con el ordenamiento ibérico debe incluir en la cabecera:
- **Razón social completa** del emisor (incluida la forma jurídica: S.L., S.A., S.A.U., S.L.U., C.B., S.C.)
- **NIF del emisor** (8 dígitos + letra para persona física, letra + 7 dígitos + control para entidades, X/Y/Z + 7 dígitos + letra para residentes extranjeros)
- **Dirección fiscal completa** con código postal de cinco dígitos
- **Número de factura** conforme con la convención `{serie}/{ejercicio}/{secuencial}` - por ejemplo `A/2026/00237`
- **Fecha de emisión** y, opcionalmente, fecha de operación si difiere
- **Datos del receptor**: razón social, NIF, dirección fiscal
Para flujos bajo **VeriFactu** (RDL 15/2025, vigente desde 1 ene 2027 para Impuesto de Sociedades / 1 jul 2027 resto), debe añadirse adicionalmente:
- **Código QR de la AEAT** con el payload de verificación
- **Leyenda mandatoria `VERI*FACTU`** (con asterisco en el medio, preservado verbatim) o alternativamente `Factura verificable en la sede electrónica de la AEAT`
- **Identificador del registro de facturación** que enlaza con la `huella` encadenada del libro de eventos VeriFactu
Para flujos bajo **TicketBAI** en territorio foral vasco (Bizkaia, Gipuzkoa, Araba), el ticket lleva su propio QR foral y la leyenda específica de la Diputación Foral correspondiente, además del QR AEAT. El detalle completo se cubre en el tutorial [Generación de facturas en C# .NET para VeriFactu, TicketBAI y Facturae](/tutorials/csharp-invoice-processing/).
### Modelos AEAT, certificados y documentación administrativa
Para crear modelos administrativos (Modelo 303, 390, 347, 720), certificados (asistencia, formación, antigüedad, residencia), o documentación del sector público bajo Esquema Nacional de Interoperabilidad, IronPDF se combina con plantillas HTML que respetan:
- **Sello corporativo** o de organismo, embebido como imagen o como SVG inline
- **Espacio reservado para firma manuscrita** (en flujos no digitales) o **campo de firma electrónica AcroForm** (en flujos digitales con certificado FNMT-RCM)
- **Pie de página con identificación del organismo emisor**, dirección de la sede electrónica, código CSV (si aplica) y URL de verificación
- **Conformidad PDF/A-2b** para documentos archivables, o **PDF/A-3a** para documentos accesibles bajo Real Decreto 1112/2018
### Conformidad LOPDGDD para PDFs con datos personales
Cuando el PDF contiene datos personales del ciudadano (datos identificativos, datos sanitarios bajo Ley 41/2002, datos financieros), aplique las medidas técnicas LOPDGDD: cifrado AES-256 (cubierto en detalle en [Seguridad PDF en C# bajo LOPDGDD](/tutorials/encrypt-pdf-csharp/)), almacenamiento on-premise sin envío a servicios externos durante la generación, y trazabilidad de acceso para auditorías AEPD.
---
## Conclusión
Los breves ejemplos compartidos anteriormente muestran las impresionantes capacidades y características destacadas que puedes desbloquear al crear PDFs usando IronPDF, con énfasis específico en las convenciones documentales españolas y en los flujos del mercado ibérico (facturación VeriFactu/TicketBAI, modelos AEAT, certificados administrativos bajo ENI).
Si deseas solicitar una función o tienes preguntas generales sobre IronPDF o licencias, por favor [contacta a nuestro equipo de soporte](/troubleshooting/engineering-request-pdf/). Estaremos más que felices de asistirte.
Crear PDFs programáticamente con convenciones documentales españolas - formato numérico con coma decimal y punto miles (1.234,56 €), tipografía A4 estándar ibérica, NIF y dirección fiscal en cabecera de factura, leyendas regulatorias VERI*FACTU cuando aplique, sello de empresa, firma PAdES con certificado FNMT-RCM - exige acoplar la API de IronPDF con las particularidades formales del mercado ibérico. Iron Software simplifica este proceso consolidando varias funciones de creación de PDF en métodos intuitivos que el desarrollador combina con la plantilla HTML correspondiente al tipo de documento (factura ordinaria, factura simplificada, factura rectificativa, certificado, recibo, presupuesto, modelo administrativo).
Con IronPDF, puedes agregar formas, texto, imágenes, encabezados y pies de página sin problemas. También tienes la flexibilidad de establecer la orientación del documento, tamaño y metadatos y exportar a varios estándares como PDF/UA y PDF/A. Además, integrar IronPDF en aplicaciones existentes para visualizar PDFs o imprimir documentos programáticamente es sencillo.
En este tutorial, exploraremos cada característica y mostraremos cómo IronPDF mejora la experiencia de desarrollo. Te permite crear componentes de código legibles y reutilizables que se pueden implementar en cualquier entorno y plataforma compatible.
Al final de este artículo, tendrás un sólido entendimiento de cómo crear PDFs estilísticos y únicos adaptados a tus necesidades con IronPDF.
Para comenzar a instalar IronPDF y seguir los ejemplos del tutorial descritos en este artículo, revisa esta guía de instalación rápida que te ayudará a configurar todo sin problemas.
Inicio rápido: crea tu primer PDF con IronPDF
Crea fácilmente tu primer PDF en C# usando IronPDF con solo unas pocas líneas de código. Esta guía rápida te muestra cómo inicializar un documento PDF, agregar contenido y guardarlo, asegurando un inicio sin problemas para los desarrolladores nuevos en la biblioteca. Sumérgete en la creación de PDFs en segundos y expande las capacidades de tu aplicación C# con facilidad.
Crear un PDF en blanco con IronPDF es intuitivo y sencillo, requiriendo solo un par de líneas de código. Primero iniciamos una nueva clase PdfDocument, le proporcionamos dimensiones y llamamos al método SaveAs para guardarlo. TextHeaderFooter
using IronPdf;PdfDocument pdf = new PdfDocument(270, 270);pdf.SaveAs("blankPage.pdf");
using IronPdf;
PdfDocument pdf = new PdfDocument(270, 270);
pdf.SaveAs("blankPage.pdf");
ImportsIronPdfDim pdf As New PdfDocument(270, 270)pdf.SaveAs("blankPage.pdf")
Imports IronPdf
Dim pdf As New PdfDocument(270, 270)
pdf.SaveAs("blankPage.pdf")
Para una explicación más detallada de este fragmento de código y para explorar su funcionalidad adicional, por favor consulta nuestra exhaustiva guía de cómo hacerlo.
Añadir encabezados y pies de página
Agrega encabezados y pies de página en la parte superior o inferior de tu PDF fácilmente usando IronPDF. IronPDF te permite agregar dos tipos de encabezados y pies de página. TextHeaderFooter es ideal para escenarios donde solo se requiere texto, como mostrar el número de página con interpolación de cadenas, por ejemplo, "{page} of {total-pages}"HtmlHeaderFooter. Al mismo tiempo, HtmlHeaderFooter es una variación más avanzada que permite a los desarrolladores personalizar el contenido HTML que colocan.
Para una explicación más detallada de este fragmento de código y para explorar su funcionalidad adicional, por favor consulta nuestra exhaustiva guía de cómo hacerlo.
Cabecera y pie de página HTML
Al configurar el objeto HtmlHeaderFooter<center>, podemos personalizar dónde aparece el texto envolviendo los números de página en etiquetas span y agregando un recurso de imagen para asegurar que el documento sea único.
using IronPdf;string headerHtml = @" <html> <head> <link rel='stylesheet' href='style.css'> </head> <body> <h1>This is a header!</h1> </body> </html>";string footerHtml = @" <html> <head> <link rel='stylesheet' href='style.css'> </head> <body> <h1>This is a footer!</h1> </body> </html>";// Instantiate renderer and create PDFChromePdfRenderer renderer = new ChromePdfRenderer();PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>");// Create header and footerHtmlHeaderFooter htmlHeader = new HtmlHeaderFooter{HtmlFragment = headerHtml,LoadStylesAndCSSFromMainHtmlDocument = true,};HtmlHeaderFooter htmlFooter = new HtmlHeaderFooter{HtmlFragment = footerHtml,LoadStylesAndCSSFromMainHtmlDocument = true,};// Add to PDFpdf.AddHtmlHeaders(htmlHeader);pdf.AddHtmlFooters(htmlFooter);
using IronPdf;
string headerHtml = @"
<html>
<head>
<link rel='stylesheet' href='style.css'>
</head>
<body>
<h1>This is a header!</h1>
</body>
</html>";
string footerHtml = @"
<html>
<head>
<link rel='stylesheet' href='style.css'>
</head>
<body>
<h1>This is a footer!</h1>
</body>
</html>";
// Instantiate renderer and create PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>");
// Create header and footer
HtmlHeaderFooter htmlHeader = new HtmlHeaderFooter
{
HtmlFragment = headerHtml,
LoadStylesAndCSSFromMainHtmlDocument = true,
};
HtmlHeaderFooter htmlFooter = new HtmlHeaderFooter
{
HtmlFragment = footerHtml,
LoadStylesAndCSSFromMainHtmlDocument = true,
};
// Add to PDF
pdf.AddHtmlHeaders(htmlHeader);
pdf.AddHtmlFooters(htmlFooter);
ImportsIronPdfPrivate headerHtml AsString = " <html> <head> <link rel='stylesheet' href='style.css'> </head> <body> <h1>This is a header!</h1> </body> </html>"Private footerHtml AsString = " <html> <head> <link rel='stylesheet' href='style.css'> </head> <body> <h1>This is a footer!</h1> </body> </html>"' Instantiate renderer and create PDFPrivate renderer As New ChromePdfRenderer()Private pdf AsPdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>")' Create header and footerPrivate htmlHeader As New HtmlHeaderFooterWith { .HtmlFragment = headerHtml, .LoadStylesAndCSSFromMainHtmlDocument = True}Private htmlFooter As New HtmlHeaderFooterWith { .HtmlFragment = footerHtml, .LoadStylesAndCSSFromMainHtmlDocument = True}' Add to PDFpdf.AddHtmlHeaders(htmlHeader)pdf.AddHtmlFooters(htmlFooter)
Imports IronPdf
Private headerHtml As String = "
<html>
<head>
<link rel='stylesheet' href='style.css'>
</head>
<body>
<h1>This is a header!</h1>
</body>
</html>"
Private footerHtml As String = "
<html>
<head>
<link rel='stylesheet' href='style.css'>
</head>
<body>
<h1>This is a footer!</h1>
</body>
</html>"
' Instantiate renderer and create PDF
Private renderer As New ChromePdfRenderer()
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>")
' Create header and footer
Private htmlHeader As New HtmlHeaderFooter With {
.HtmlFragment = headerHtml,
.LoadStylesAndCSSFromMainHtmlDocument = True
}
Private htmlFooter As New HtmlHeaderFooter With {
.HtmlFragment = footerHtml,
.LoadStylesAndCSSFromMainHtmlDocument = True
}
' Add to PDF
pdf.AddHtmlHeaders(htmlHeader)
pdf.AddHtmlFooters(htmlFooter)
Para una explicación más detallada de este fragmento de código y para explorar su funcionalidad adicional, por favor consulta nuestra exhaustiva guía de cómo hacerlo.
Cabecera y pie de página
El ejemplo a continuación utiliza TextHeaderFooter con valores de marcador de posición para denotar los números de página, URLs y fecha.
using IronPdf;// Instantiate renderer and create PDFChromePdfRenderer renderer = new ChromePdfRenderer();PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>");// Create text headerTextHeaderFooter textHeader = new TextHeaderFooter{CenterText = "This is the header!",};// Create text footerTextHeaderFooter textFooter = new TextHeaderFooter{CenterText = "This is the footer!",};// Add text header and footer to the PDFpdf.AddTextHeaders(textHeader);pdf.AddTextFooters(textFooter);pdf.SaveAs("addTextHeaderFooter.pdf");
using IronPdf;
// Instantiate renderer and create PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>");
// Create text header
TextHeaderFooter textHeader = new TextHeaderFooter
{
CenterText = "This is the header!",
};
// Create text footer
TextHeaderFooter textFooter = new TextHeaderFooter
{
CenterText = "This is the footer!",
};
// Add text header and footer to the PDF
pdf.AddTextHeaders(textHeader);
pdf.AddTextFooters(textFooter);
pdf.SaveAs("addTextHeaderFooter.pdf");
ImportsIronPdf' Instantiate renderer and create PDFDim renderer As New ChromePdfRenderer()Dim pdf AsPdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>")' Create text headerDim textHeader As New TextHeaderFooterWith { .CenterText = "This is the header!"}' Create text footerDim textFooter As New TextHeaderFooterWith { .CenterText = "This is the footer!"}' Add text header and footer to the PDFpdf.AddTextHeaders(textHeader)pdf.AddTextFooters(textFooter)pdf.SaveAs("addTextHeaderFooter.pdf")
Imports IronPdf
' Instantiate renderer and create PDF
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>")
' Create text header
Dim textHeader As New TextHeaderFooter With {
.CenterText = "This is the header!"
}
' Create text footer
Dim textFooter As New TextHeaderFooter With {
.CenterText = "This is the footer!"
}
' Add text header and footer to the PDF
pdf.AddTextHeaders(textHeader)
pdf.AddTextFooters(textFooter)
pdf.SaveAs("addTextHeaderFooter.pdf")
Junto con los campos mostrados arriba, también tenemos los siguientes valores de marcador de posición que están disponibles y serán reemplazados al renderizar: {page}, {total-pages}, {url}, {date}, {time}, {html-title}, {pdf-title}.
Para una explicación más detallada de este fragmento de código y para explorar su funcionalidad adicional, por favor consulta nuestra exhaustiva guía de cómo hacerlo.
Añadir números de página
Similar al ejemplo anterior, podemos usar TextHeaderFooter o HtmlHeaderFooter para mostrar el número de página colocando valores de marcador de posición en el encabezado o pie de página, que se mostrarán cuando se renderice el documento.
using IronPdf;// Create text headerTextHeaderFooter textHeader = new TextHeaderFooter(){CenterText = "{page} of {total-pages}"};// Create html footerHtmlHeaderFooter htmlFooter = new HtmlHeaderFooter(){HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"};// Render a new PDFChromePdfRenderer renderer = new ChromePdfRenderer();PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>");// Add header and footerpdf.AddTextHeaders(textHeader);pdf.AddHtmlFooters(htmlFooter);pdf.SaveAs("pdfWithPageNumber.pdf");
using IronPdf;
// Create text header
TextHeaderFooter textHeader = new TextHeaderFooter()
{
CenterText = "{page} of {total-pages}"
};
// Create html footer
HtmlHeaderFooter htmlFooter = new HtmlHeaderFooter()
{
HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"
};
// Render a new PDF
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>");
// Add header and footer
pdf.AddTextHeaders(textHeader);
pdf.AddHtmlFooters(htmlFooter);
pdf.SaveAs("pdfWithPageNumber.pdf");
ImportsIronPdf' Create text headerPrivate textHeader As New TextHeaderFooter() With {.CenterText = "{page} of {total-pages}"}' Create html footerPrivate htmlFooter As New HtmlHeaderFooter() With {.HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"}' Render a new PDFPrivate renderer As New ChromePdfRenderer()Private pdf AsPdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>")' Add header and footerpdf.AddTextHeaders(textHeader)pdf.AddHtmlFooters(htmlFooter)pdf.SaveAs("pdfWithPageNumber.pdf")
Imports IronPdf
' Create text header
Private textHeader As New TextHeaderFooter() With {.CenterText = "{page} of {total-pages}"}
' Create html footer
Private htmlFooter As New HtmlHeaderFooter() With {.HtmlFragment = "<center><i>{page} of {total-pages}<i></center>"}
' Render a new PDF
Private renderer As New ChromePdfRenderer()
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Hello World!</h1>")
' Add header and footer
pdf.AddTextHeaders(textHeader)
pdf.AddHtmlFooters(htmlFooter)
pdf.SaveAs("pdfWithPageNumber.pdf")
Para una explicación más detallada de este fragmento de código y para explorar su funcionalidad adicional, por favor consulta nuestra exhaustiva guía de cómo hacerlo.
Incorporar imágenes con DataURI
Hay ocasiones en las que depender de un directorio de recursos es demasiado lento e ineficaz; por lo tanto, podemos incrustar imágenes con Data URIs como una solución alternativa. Aquí hay un breve fragmento de código sobre cómo hacerlo.
using IronPdf;using System;// Read byte from image filevar pngBinaryData = System.IO.File.ReadAllBytes("My_image.png");// Convert bytes to base64varImgDataURI = @"data:image/png;base64," + Convert.ToBase64String(pngBinaryData);// Import base64 to img tagvarImgHtml = $"<img src='{ImgDataURI}'>";ChromePdfRendererRenderer = new ChromePdfRenderer();// Render the HTML stringvar pdf = Renderer.RenderHtmlAsPdf(ImgHtml);pdf.SaveAs("datauri_example.pdf");
using IronPdf;
using System;
// Read byte from image file
var pngBinaryData = System.IO.File.ReadAllBytes("My_image.png");
// Convert bytes to base64
var ImgDataURI = @"data:image/png;base64," + Convert.ToBase64String(pngBinaryData);
// Import base64 to img tag
var ImgHtml = $"<img src='{ImgDataURI}'>";
ChromePdfRenderer Renderer = new ChromePdfRenderer();
// Render the HTML string
var pdf = Renderer.RenderHtmlAsPdf(ImgHtml);
pdf.SaveAs("datauri_example.pdf");
ImportsIronPdfImportsSystem' Read byte from image filePrivate pngBinaryData = System.IO.File.ReadAllBytes("My_image.png")' Convert bytes to base64PrivateImgDataURI = "data:image/png;base64," & Convert.ToBase64String(pngBinaryData)' Import base64 to img tagPrivateImgHtml = $"<img src='{ImgDataURI}'>"PrivateRendererAs New ChromePdfRenderer()' Render the HTML stringPrivate pdf = Renderer.RenderHtmlAsPdf(ImgHtml)pdf.SaveAs("datauri_example.pdf")
Imports IronPdf
Imports System
' Read byte from image file
Private pngBinaryData = System.IO.File.ReadAllBytes("My_image.png")
' Convert bytes to base64
Private ImgDataURI = "data:image/png;base64," & Convert.ToBase64String(pngBinaryData)
' Import base64 to img tag
Private ImgHtml = $"<img src='{ImgDataURI}'>"
Private Renderer As New ChromePdfRenderer()
' Render the HTML string
Private pdf = Renderer.RenderHtmlAsPdf(ImgHtml)
pdf.SaveAs("datauri_example.pdf")
Para una explicación más detallada de este fragmento de código y para explorar su funcionalidad adicional, por favor consulta nuestra exhaustiva guía de cómo hacerlo.
OpenAI para PDF
IronPDF mejora la eficiencia y escalabilidad al soportar el modelo OpenAI para una rápida resumación, consulta y memorización, todo utilizando Microsoft Semantic Kernel. Aquí hay un breve fragmento de código sobre cómo usar OpenAI para resumir rápidamente los contenidos de un PDF.
using IronPdf;using IronPdf.AI;using Microsoft.SemanticKernel;using Microsoft.SemanticKernel.Connectors.OpenAI;using Microsoft.SemanticKernel.Memory;using System;using System.Threading.Tasks;// Setup OpenAIvar azureEndpoint = "<<enter your azure endpoint here>>";var apiKey = "<<enter your azure API key here>>";var builder = Kernel.CreateBuilder() .AddAzureOpenAITextEmbeddingGeneration("oaiembed", azureEndpoint, apiKey) .AddAzureOpenAIChatCompletion("oaichat", azureEndpoint, apiKey);var kernel = builder.Build();// Setup Memoryvar memory_builder = new MemoryBuilder() // optionally use new ChromaMemoryStore("http://127.0.0.1:8000") (see https://github.com/microsoft/semantic-kernel/blob/main/dotnet/notebooks/09-memory-with-chroma.ipynb) .WithMemoryStore(new VolatileMemoryStore()) .WithAzureOpenAITextEmbeddingGeneration("oaiembed", azureEndpoint, apiKey);var memory = memory_builder.Build();// Initialize IronAIIronDocumentAI.Initialize(kernel, memory);License.LicenseKey = "<<enter your IronPdf license key here";// Import PDF documentPdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf");// Summarize the documentConsole.WriteLine("Please wait while I summarize the document...");string summary = await pdf.Summarize(); // optionally pass AI instance or use AI instance directlyConsole.WriteLine($"Document summary: {summary}\n\n");
using IronPdf;
using IronPdf.AI;
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Connectors.OpenAI;
using Microsoft.SemanticKernel.Memory;
using System;
using System.Threading.Tasks;
// Setup OpenAI
var azureEndpoint = "<<enter your azure endpoint here>>";
var apiKey = "<<enter your azure API key here>>";
var builder = Kernel.CreateBuilder()
.AddAzureOpenAITextEmbeddingGeneration("oaiembed", azureEndpoint, apiKey)
.AddAzureOpenAIChatCompletion("oaichat", azureEndpoint, apiKey);
var kernel = builder.Build();
// Setup Memory
var memory_builder = new MemoryBuilder()
// optionally use new ChromaMemoryStore("http://127.0.0.1:8000") (see https://github.com/microsoft/semantic-kernel/blob/main/dotnet/notebooks/09-memory-with-chroma.ipynb)
.WithMemoryStore(new VolatileMemoryStore())
.WithAzureOpenAITextEmbeddingGeneration("oaiembed", azureEndpoint, apiKey);
var memory = memory_builder.Build();
// Initialize IronAI
IronDocumentAI.Initialize(kernel, memory);
License.LicenseKey = "<<enter your IronPdf license key here";
// Import PDF document
PdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf");
// Summarize the document
Console.WriteLine("Please wait while I summarize the document...");
string summary = await pdf.Summarize(); // optionally pass AI instance or use AI instance directly
Console.WriteLine($"Document summary: {summary}\n\n");
ImportsMicrosoft.VisualBasicImportsIronPdfImportsIronPdf.AIImportsMicrosoft.SemanticKernelImportsMicrosoft.SemanticKernel.Connectors.OpenAIImportsMicrosoft.SemanticKernel.MemoryImportsSystemImportsSystem.Threading.Tasks' Setup OpenAIPrivate azureEndpoint = "<<enter your azure endpoint here>>"Private apiKey = "<<enter your azure API key here>>"Private builder = Kernel.CreateBuilder().AddAzureOpenAITextEmbeddingGeneration("oaiembed", azureEndpoint, apiKey).AddAzureOpenAIChatCompletion("oaichat", azureEndpoint, apiKey)Private kernel = builder.Build()' Setup MemoryPrivate memory_builder = (New MemoryBuilder()).WithMemoryStore(New VolatileMemoryStore()).WithAzureOpenAITextEmbeddingGeneration("oaiembed", azureEndpoint, apiKey)Private memory = memory_builder.Build()' Initialize IronAIIronDocumentAI.Initialize(kernel, memory)License.LicenseKey = "<<enter your IronPdf license key here"' Import PDF documentDim pdf AsPdfDocument = PdfDocument.FromFile("wikipedia.pdf")' Summarize the documentConsole.WriteLine("Please wait while I summarize the document...")Dim summary AsString = Await pdf.Summarize() ' optionally pass AI instance or use AI instance directlyConsole.WriteLine($"Document summary: {summary}" & vbLf & vbLf)
Imports Microsoft.VisualBasic
Imports IronPdf
Imports IronPdf.AI
Imports Microsoft.SemanticKernel
Imports Microsoft.SemanticKernel.Connectors.OpenAI
Imports Microsoft.SemanticKernel.Memory
Imports System
Imports System.Threading.Tasks
' Setup OpenAI
Private azureEndpoint = "<<enter your azure endpoint here>>"
Private apiKey = "<<enter your azure API key here>>"
Private builder = Kernel.CreateBuilder().AddAzureOpenAITextEmbeddingGeneration("oaiembed", azureEndpoint, apiKey).AddAzureOpenAIChatCompletion("oaichat", azureEndpoint, apiKey)
Private kernel = builder.Build()
' Setup Memory
Private memory_builder = (New MemoryBuilder()).WithMemoryStore(New VolatileMemoryStore()).WithAzureOpenAITextEmbeddingGeneration("oaiembed", azureEndpoint, apiKey)
Private memory = memory_builder.Build()
' Initialize IronAI
IronDocumentAI.Initialize(kernel, memory)
License.LicenseKey = "<<enter your IronPdf license key here"
' Import PDF document
Dim pdf As PdfDocument = PdfDocument.FromFile("wikipedia.pdf")
' Summarize the document
Console.WriteLine("Please wait while I summarize the document...")
Dim summary As String = Await pdf.Summarize() ' optionally pass AI instance or use AI instance directly
Console.WriteLine($"Document summary: {summary}" & vbLf & vbLf)
Para una explicación más detallada de este fragmento de código y para explorar su funcionalidad adicional, por favor consulta nuestra exhaustiva guía de cómo hacerlo.
Personalización completa de PDF
Orientación y rotación
Orientación
La propiedad PaperOrientation de la clase RenderingOptions te permite dictar cómo se representa la orientación del PDF. En este ejemplo, lo establecemos en PdfPaperOrientation.Landscape para representar la orientación del PDF en modo horizontal.
ChromePdfRenderer renderer = new ChromePdfRenderer();// Change paper orientationrenderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;PdfDocument pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page");pdf.SaveAs("landscape.pdf");
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Change paper orientation
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape;
PdfDocument pdf = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page");
pdf.SaveAs("landscape.pdf");
Dim renderer As New ChromePdfRenderer()' Change paper orientationrenderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.LandscapeDim pdf AsPdfDocument = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page")pdf.SaveAs("landscape.pdf")
Dim renderer As New ChromePdfRenderer()
' Change paper orientation
renderer.RenderingOptions.PaperOrientation = PdfPaperOrientation.Landscape
Dim pdf As PdfDocument = renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Main_Page")
pdf.SaveAs("landscape.pdf")
Rotación
Para establecer la rotación de una página PDF, podemos usar el método SetPageRotation junto con un enum PdfPageRotation como entrada, para rotar la página.
using IronPdf;using IronPdf.Rendering;using System.Collections.Generic;PdfDocument pdf = PdfDocument.FromFile("landscape.pdf");// Set all pagespdf.SetAllPageRotations(PdfPageRotation.Clockwise90);// Set a single pagepdf.SetPageRotation(1, PdfPageRotation.Clockwise180);// Set multiple pagesList<int> selectedPages = new List<int>() { 0, 3 };pdf.SetPageRotations(selectedPages, PdfPageRotation.Clockwise270);pdf.SaveAs("rotatedLandscape.pdf");
using IronPdf;
using IronPdf.Rendering;
using System.Collections.Generic;
PdfDocument pdf = PdfDocument.FromFile("landscape.pdf");
// Set all pages
pdf.SetAllPageRotations(PdfPageRotation.Clockwise90);
// Set a single page
pdf.SetPageRotation(1, PdfPageRotation.Clockwise180);
// Set multiple pages
List<int> selectedPages = new List<int>() { 0, 3 };
pdf.SetPageRotations(selectedPages, PdfPageRotation.Clockwise270);
pdf.SaveAs("rotatedLandscape.pdf");
ImportsIronPdfImportsIronPdf.RenderingImportsSystem.Collections.GenericPrivate pdf AsPdfDocument = PdfDocument.FromFile("landscape.pdf")' Set all pagespdf.SetAllPageRotations(PdfPageRotation.Clockwise90)' Set a single pagepdf.SetPageRotation(1, PdfPageRotation.Clockwise180)' Set multiple pagesDim selectedPages As New List(OfInteger)() From {0, 3}pdf.SetPageRotations(selectedPages, PdfPageRotation.Clockwise270)pdf.SaveAs("rotatedLandscape.pdf")
Imports IronPdf
Imports IronPdf.Rendering
Imports System.Collections.Generic
Private pdf As PdfDocument = PdfDocument.FromFile("landscape.pdf")
' Set all pages
pdf.SetAllPageRotations(PdfPageRotation.Clockwise90)
' Set a single page
pdf.SetPageRotation(1, PdfPageRotation.Clockwise180)
' Set multiple pages
Dim selectedPages As New List(Of Integer)() From {0, 3}
pdf.SetPageRotations(selectedPages, PdfPageRotation.Clockwise270)
pdf.SaveAs("rotatedLandscape.pdf")
Para una explicación más detallada de la configuración de la orientación y rotación del PDF y para explorar su funcionalidad adicional, por favor consulta nuestra exhaustiva guía de cómo hacerlo.
Tamaño de papel personalizado
Establece las dimensiones del PDF configurando width y height usando el método SetCustomPaperSizeinCentimeters. IronPDF también admite configuraciones a tamaños estandarizados como A4 configurando la propiedad PaperSize a una lista de enums disponibles.
Para una explicación más detallada de este fragmento de código y para explorar su funcionalidad adicional, por favor consulta nuestra exhaustiva guía de cómo hacerlo.
Tamaño de papel personalizado en Cm
using IronPdf;ChromePdfRenderer renderer = new ChromePdfRenderer();// Set custom paper size in cmrenderer.RenderingOptions.SetCustomPaperSizeinCentimeters(15, 15);PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Custom Paper Size</h1>");pdf.SaveAs("customPaperSize.pdf");
using IronPdf;
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Set custom paper size in cm
renderer.RenderingOptions.SetCustomPaperSizeinCentimeters(15, 15);
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Custom Paper Size</h1>");
pdf.SaveAs("customPaperSize.pdf");
ImportsIronPdfPrivate renderer As New ChromePdfRenderer()' Set custom paper size in cmrenderer.RenderingOptions.SetCustomPaperSizeinCentimeters(15, 15)Dim pdf AsPdfDocument = renderer.RenderHtmlAsPdf("<h1>Custom Paper Size</h1>")pdf.SaveAs("customPaperSize.pdf")
Imports IronPdf
Private renderer As New ChromePdfRenderer()
' Set custom paper size in cm
renderer.RenderingOptions.SetCustomPaperSizeinCentimeters(15, 15)
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Custom Paper Size</h1>")
pdf.SaveAs("customPaperSize.pdf")
Tamaño estándar del papel
En este ejemplo, también establecemos la propiedad PaperSize al enum de PdfPaperSize.A4.
using IronPdf;using IronPdf.Rendering;ChromePdfRenderer renderer = new ChromePdfRenderer();// Set paper size to A4renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Standard Paper Size</h1>");pdf.SaveAs("standardPaperSize.pdf");
using IronPdf;
using IronPdf.Rendering;
ChromePdfRenderer renderer = new ChromePdfRenderer();
// Set paper size to A4
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4;
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Standard Paper Size</h1>");
pdf.SaveAs("standardPaperSize.pdf");
ImportsIronPdfImportsIronPdf.RenderingPrivate renderer As New ChromePdfRenderer()' Set paper size to A4renderer.RenderingOptions.PaperSize = PdfPaperSize.A4Dim pdf AsPdfDocument = renderer.RenderHtmlAsPdf("<h1>Standard Paper Size</h1>")pdf.SaveAs("standardPaperSize.pdf")
Imports IronPdf
Imports IronPdf.Rendering
Private renderer As New ChromePdfRenderer()
' Set paper size to A4
renderer.RenderingOptions.PaperSize = PdfPaperSize.A4
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Standard Paper Size</h1>")
pdf.SaveAs("standardPaperSize.pdf")
Para una lista de tamaños estandarizados compatibles, por favor haz clic aquí.
Mi biblioteca favorita de este tipo es IronPDF. Permite una manipulación rápida y eficiente de archivos PDF. También tiene muchas funciones valiosas, como exportar al formato PDF/A y firmar documentos PDF digitalmente.
IronOCR significa que podemos ahorrar $40,000 anualmente en el procesamiento manual, mientras mejoramos la productividad y liberamos recursos para tareas de alto impacto. Lo recomendaría encarecidamente.
Crea y exporta PDFs compatibles con los estándares PDF/UA utilizando el método SaveAsPdfUA.
using IronPdf;// Create a PdfDocument object or open any PDF FilePdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf");// Use the SaveAsPdfA method to save to filepdf.SaveAsPdfA("pdf-a3-wikipedia.pdf", PdfAVersions.PdfA3b);
using IronPdf;
// Create a PdfDocument object or open any PDF File
PdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf");
// Use the SaveAsPdfA method to save to file
pdf.SaveAsPdfA("pdf-a3-wikipedia.pdf", PdfAVersions.PdfA3b);
ImportsIronPdf' Create a PdfDocument object or open any PDF FileDim pdf AsPdfDocument = PdfDocument.FromFile("wikipedia.pdf")' Use the SaveAsPdfA method to save to filepdf.SaveAsPdfA("pdf-a3-wikipedia.pdf", PdfAVersions.PdfA3b)
Imports IronPdf
' Create a PdfDocument object or open any PDF File
Dim pdf As PdfDocument = PdfDocument.FromFile("wikipedia.pdf")
' Use the SaveAsPdfA method to save to file
pdf.SaveAsPdfA("pdf-a3-wikipedia.pdf", PdfAVersions.PdfA3b)
Para una explicación más detallada de este fragmento de código y para explorar su funcionalidad adicional, por favor consulta nuestra exhaustiva guía de cómo hacerlo.
Export PDF/UA Format Docs in C#
Para convertir PDF a PDF/A en C#, también podemos usar la biblioteca IronPDF, que soporta los estándares más recientes de PDF/A, garantizando la integridad de tus archivos; similar al ejemplo anterior, llamamos a SaveAsPdfA para guardar el PDF conforme a los estándares PDF/A.
using IronPdf;// Open PDF FilePdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf");// Export as PDF/UA. Pass the document's natural language so assistive// technologies announce the correct pronunciation.pdf.SaveAsPdfUA("pdf-ua-wikipedia.pdf", NaturalLanguage: NaturalLanguages.English);
using IronPdf;
// Open PDF File
PdfDocument pdf = PdfDocument.FromFile("wikipedia.pdf");
// Export as PDF/UA. Pass the document's natural language so assistive
// technologies announce the correct pronunciation.
pdf.SaveAsPdfUA("pdf-ua-wikipedia.pdf", NaturalLanguage: NaturalLanguages.English);
C#
En este ejemplo, guardamos el PDF en la variación PDF/A-3, usando el enum para PdfAVersions.
Para una lista completa de versiones de PDF/A compatibles, por favor haz clic aquí.
Creación de documentos comerciales españoles
Las particularidades formales del mercado ibérico que conviene contemplar al crear PDFs en C# para el contexto español:
Tipografía y formato numérico ibérico
La convención numérica española usa coma como separador decimal y punto como separador de miles - exactamente al revés que la convención angloamericana. Para garantizar formato correcto en el PDF generado, configure la cultura del proceso de renderizado a es-ES:
using System.Globalization;using IronPdf;// Establecer cultura ibérica para que los importes se formateen con// coma decimal y punto miles (1.234,56 €).var cultura = new CultureInfo("es-ES");var importeFormateado = (1234.56m).ToString("C", cultura); // "1.234,56 €"// Renderizar con la cultura aplicada al HTMLvar html = $"<p>Total: {importeFormateado}</p>";var renderer = new ChromePdfRenderer();var pdf = renderer.RenderHtmlAsPdf(html);pdf.SaveAs("factura-formato-iberico.pdf");
using System.Globalization;
using IronPdf;
// Establecer cultura ibérica para que los importes se formateen con
// coma decimal y punto miles (1.234,56 €).
var cultura = new CultureInfo("es-ES");
var importeFormateado = (1234.56m).ToString("C", cultura); // "1.234,56 €"
// Renderizar con la cultura aplicada al HTML
var html = $"<p>Total: {importeFormateado}</p>";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderHtmlAsPdf(html);
pdf.SaveAs("factura-formato-iberico.pdf");
ImportsSystem.GlobalizationImportsIronPdf' Establecer cultura ibérica para que los importes se formateen con' coma decimal y punto miles (1.234,56 €).Dim cultura As New CultureInfo("es-ES")Dim importeFormateado AsString = (1234.56D).ToString("C", cultura) ' "1.234,56 €"' Renderizar con la cultura aplicada al HTMLDim html AsString = $"<p>Total: {importeFormateado}</p>"Dim renderer As New ChromePdfRenderer()Dim pdf AsPdfDocument = renderer.RenderHtmlAsPdf(html)pdf.SaveAs("factura-formato-iberico.pdf")
Imports System.Globalization
Imports IronPdf
' Establecer cultura ibérica para que los importes se formateen con
' coma decimal y punto miles (1.234,56 €).
Dim cultura As New CultureInfo("es-ES")
Dim importeFormateado As String = (1234.56D).ToString("C", cultura) ' "1.234,56 €"
' Renderizar con la cultura aplicada al HTML
Dim html As String = $"<p>Total: {importeFormateado}</p>"
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html)
pdf.SaveAs("factura-formato-iberico.pdf")
El símbolo € debe colocarse postfijo con espacio fino según la convención ibérica (1.234,56 €), no prefijo a la europea o angloamericana (€1,234.56). Para fechas, el formato es DD/MM/YYYY (19/05/2026), no MM/DD/YYYY ni YYYY-MM-DD salvo en contextos técnicos donde ISO 8601 es preferible.
Cabecera de factura con NIF, razón social y dirección fiscal
Una factura conforme con el ordenamiento ibérico debe incluir en la cabecera:
Razón social completa del emisor (incluida la forma jurídica: S.L., S.A., S.A.U., S.L.U., C.B., S.C.)
NIF del emisor (8 dígitos + letra para persona física, letra + 7 dígitos + control para entidades, X/Y/Z + 7 dígitos + letra para residentes extranjeros)
Dirección fiscal completa con código postal de cinco dígitos
Número de factura conforme con la convención {serie}/{ejercicio}/{secuencial} - por ejemplo A/2026/00237
Fecha de emisión y, opcionalmente, fecha de operación si difiere
Datos del receptor: razón social, NIF, dirección fiscal
Para flujos bajo VeriFactu (RDL 15/2025, vigente desde 1 ene 2027 para Impuesto de Sociedades / 1 jul 2027 resto), debe añadirse adicionalmente:
Código QR de la AEAT con el payload de verificación
Leyenda mandatoria VERI*FACTU (con asterisco en el medio, preservado verbatim) o alternativamente Factura verificable en la sede electrónica de la AEAT
Identificador del registro de facturación que enlaza con la huella encadenada del libro de eventos VeriFactu
Para flujos bajo TicketBAI en territorio foral vasco (Bizkaia, Gipuzkoa, Araba), el ticket lleva su propio QR foral y la leyenda específica de la Diputación Foral correspondiente, además del QR AEAT. El detalle completo se cubre en el tutorial Generación de facturas en C# .NET para VeriFactu, TicketBAI y Facturae.
Modelos AEAT, certificados y documentación administrativa
Para crear modelos administrativos (Modelo 303, 390, 347, 720), certificados (asistencia, formación, antigüedad, residencia), o documentación del sector público bajo Esquema Nacional de Interoperabilidad, IronPDF se combina con plantillas HTML que respetan:
Sello corporativo o de organismo, embebido como imagen o como SVG inline
Espacio reservado para firma manuscrita (en flujos no digitales) o campo de firma electrónica AcroForm (en flujos digitales con certificado FNMT-RCM)
Pie de página con identificación del organismo emisor, dirección de la sede electrónica, código CSV (si aplica) y URL de verificación
Conformidad PDF/A-2b para documentos archivables, o PDF/A-3a para documentos accesibles bajo Real Decreto 1112/2018
Conformidad LOPDGDD para PDFs con datos personales
Cuando el PDF contiene datos personales del ciudadano (datos identificativos, datos sanitarios bajo Ley 41/2002, datos financieros), aplique las medidas técnicas LOPDGDD: cifrado AES-256 (cubierto en detalle en Seguridad PDF en C# bajo LOPDGDD), almacenamiento on-premise sin envío a servicios externos durante la generación, y trazabilidad de acceso para auditorías AEPD.
Conclusión
Los breves ejemplos compartidos anteriormente muestran las impresionantes capacidades y características destacadas que puedes desbloquear al crear PDFs usando IronPDF, con énfasis específico en las convenciones documentales españolas y en los flujos del mercado ibérico (facturación VeriFactu/TicketBAI, modelos AEAT, certificados administrativos bajo ENI).
Si deseas solicitar una función o tienes preguntas generales sobre IronPDF o licencias, por favor contacta a nuestro equipo de soporte. Estaremos más que felices de asistirte.
Preguntas Frecuentes
¿Cómo puedo crear un documento PDF en C# usando IronPDF?
Puede crear un documento PDF en C# usando IronPDF al inicializar un nuevo objeto de documento PDF y agregar contenido como texto, imágenes y tablas antes de guardar el archivo.
¿Qué funcionalidades ofrece IronPDF para editar PDFs?
IronPDF proporciona funcionalidades para editar PDFs, incluyendo la adición de marcas de agua, encabezados, pies de página y fondos. También admite la fusión, división y compresión de PDFs.
¿Puedo agregar formularios a un documento PDF usando IronPDF?
Sí, IronPDF le permite agregar formularios interactivos a sus documentos PDF. Puede crear campos de formulario como entradas de texto, casillas de verificación y botones de opción.
¿Es posible proteger un PDF con una contraseña usando IronPDF?
Absolutamente, puede proteger sus documentos PDF con contraseñas usando IronPDF. Le permite establecer contraseñas de usuario y de propietario para controlar el acceso y los permisos.
¿Cómo aplico una marca de agua a un PDF usando IronPDF?
Para aplicar una marca de agua usando IronPDF, puede utilizar las funciones de edición de PDF para superponer texto o una imagen como marca de agua en cada página de su documento PDF.
¿Puede IronPDF comprimir archivos PDF para reducir su tamaño?
Sí, el método CompressAndSaveAs de IronPDF comprime imágenes incrustadas y opcionalmente puede eliminar el árbol de estructura del PDF, reduciendo el tamaño del archivo mientras mantiene la calidad. Simplemente llame a CompressAndSaveAs(outputPath, quality, removeStructureTree) para comprimir y guardar en un solo paso.
¿Cómo puedo agregar encabezados y pies de página a mi PDF usando IronPDF?
Puede agregar encabezados y pies de página a sus documentos PDF con IronPDF especificando el texto o las imágenes que desea incluir en la parte superior o inferior de cada página.
¿IronPDF admite la personalización del fondo para las páginas PDF?
IronPDF admite la personalización del fondo, permitiéndole establecer imágenes o colores como fondo para sus páginas PDF, mejorando el diseño del documento.
¿Puedo convertir HTML a PDF usando IronPDF?
Sí, IronPDF proporciona una función para convertir HTML a PDF. Puede renderizar contenido HTML complejo, incluyendo CSS y JavaScript, en un documento PDF.
¿Cuáles son los requisitos del sistema para usar IronPDF en un proyecto C#?
IronPDF es compatible con .NET Framework y .NET Core. Requiere un sistema operativo Windows, macOS o Linux, y se integra sin problemas en proyectos C# usando Visual Studio.
¿IronPDF es totalmente compatible con .NET 10?
Sí, IronPDF es totalmente compatible con .NET 10. Funciona de inmediato con el entorno de ejecución más reciente, aprovechando las mejoras de rendimiento y del lenguaje de .NET 10. Es compatible con las versiones 10, 9, 8, 7, 6 y 5 de .NET, .NET Standard 2.0+ y .NET Framework 4.6.2+ en entornos Windows, macOS, Linux y contenedores.
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.