C# Tutorial de ejemplo de código de exportación a PDF
Utilice IronPDF para exportar contenido HTML a PDF en C# con métodos sencillos como SaveAs(), Stream y BinaryData. Esta biblioteca PDF de C# permite a los desarrolladores convertir mediante programación documentos HTML a PDF y servirlos a navegadores web o guardarlos en disco.
IronPDF es una biblioteca PDF para C# que te permite usar C# para guardar tu HTML como un PDF. También permite a los desarrolladores de C# / VB editar documentos PDF mediante programación. Ya se trate de generar informes, crear facturas o convertir páginas web, IronPDF ofrece una solución sólida para generación de PDF en aplicaciones C#.
como-título:2(Inicio rápido: Exportar HTML a PDF en C# con IronPDF)
Exporte su contenido HTML a PDF en C# utilizando IronPDF. Esta guía muestra cómo convertir HTML en un documento PDF y guardarlo con unas pocas líneas de código. IronPDF simplifica la generación de PDF, permitiendo a los desarrolladores integrar la funcionalidad de exportación de PDF en sus aplicaciones.
Empieza a crear PDF con NuGet ahora:
Instalar IronPDF con el gestor de paquetes NuGet
Copie y ejecute este fragmento de código.
new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf("<h1>HelloPDF</h1>").SaveAs("myExportedFile.pdf");Despliegue para probar en su entorno real
Empieza a utilizar IronPDF en tu proyecto hoy mismo con una prueba gratuita
Flujo de trabajo mínimo (5 pasos)
- Descargue e instale la biblioteca C# PDF Export Library de NuGet
- Explore la documentación de
PdfDocumentpara conocer los métodos de firma digital - Guardar PDF en memoria utilizando un
System.IO.MemoryStream - Servir un PDF a la web como datos binarios en lugar de HTML
- Exportar el PDF como archivo
¿Cuáles son las diferentes opciones para guardar archivos PDF?
Al trabajar con documentos PDF en C#, IronPDF ofrece múltiples opciones para guardar y exportar los PDF generados. Cada método sirve para diferentes casos de uso, desde el simple almacenamiento de archivos hasta el servicio de archivos PDF en aplicaciones web. Las siguientes secciones cubren las opciones disponibles para exportar y guardar archivos PDF en C#.
Cómo guardar PDF en disco
Usa el método PdfDocument.SaveAs para guardar tu PDF en disco. Este es el enfoque más sencillo para las aplicaciones de escritorio o cuando se necesita almacenar archivos PDF de forma permanente en el servidor.
// Complete example for saving PDF to disk
using IronPdf;
// Initialize the Chrome PDF renderer
var renderer = new ChromePdfRenderer();
// Create HTML content with styling
string htmlContent = @"
<html>
<head>
<style>
body { font-family: Arial, sans-serif; margin: 40px; }
h1 { color: #333; }
.content { line-height: 1.6; }
</style>
</head>
<body>
<h1>Invoice #12345</h1>
<div class='content'>
<p>Date: " + DateTime.Now.ToString("yyyy-MM-dd") + @"</p>
<p>Thank you for your business!</p>
</div>
</body>
</html>";
// Render HTML to PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Save to disk with standard method
pdf.SaveAs("invoice_12345.pdf");
// Save with password protection for sensitive documents
pdf.Password = "secure123";
pdf.SaveAs("protected_invoice_12345.pdf");// Complete example for saving PDF to disk
using IronPdf;
// Initialize the Chrome PDF renderer
var renderer = new ChromePdfRenderer();
// Create HTML content with styling
string htmlContent = @"
<html>
<head>
<style>
body { font-family: Arial, sans-serif; margin: 40px; }
h1 { color: #333; }
.content { line-height: 1.6; }
</style>
</head>
<body>
<h1>Invoice #12345</h1>
<div class='content'>
<p>Date: " + DateTime.Now.ToString("yyyy-MM-dd") + @"</p>
<p>Thank you for your business!</p>
</div>
</body>
</html>";
// Render HTML to PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Save to disk with standard method
pdf.SaveAs("invoice_12345.pdf");
// Save with password protection for sensitive documents
pdf.Password = "secure123";
pdf.SaveAs("protected_invoice_12345.pdf");IRON VB CONVERTER ERROR developers@ironsoftware.comEste método permite añadir protección por contraseña. Consulta el siguiente artículo para obtener más información sobre la firma digital de PDF exportados: Firmar digitalmente un documento PDF.' Para conocer otras opciones de seguridad, explore nuestra guía sobre Permisos y contraseñas de PDF.
Cómo guardar un archivo PDF en MemoryStream en C# (System.IO.MemoryStream)
La propiedad IronPdf.PdfDocument.Stream guarda el PDF en memoria usando un System.IO.MemoryStream. Este enfoque es ideal cuando se necesita manipular los datos PDF en memoria o pasarlos a otros métodos sin crear archivos temporales. Más información sobre trabajar con flujos de memoria PDF.
// Example: Save PDF to MemoryStream
using IronPdf;
using System.IO;
var renderer = new ChromePdfRenderer();
// Render HTML content
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Monthly Report</h1><p>Sales figures...</p>");
// Get the PDF as a MemoryStream
MemoryStream stream = pdf.Stream;
// Example: Upload to cloud storage or database
// UploadToCloudStorage(stream);
// Example: Email as attachment without saving to disk
// EmailService.SendWithAttachment(stream, "report.pdf");
// Remember to dispose of the stream when done
stream.Dispose();// Example: Save PDF to MemoryStream
using IronPdf;
using System.IO;
var renderer = new ChromePdfRenderer();
// Render HTML content
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Monthly Report</h1><p>Sales figures...</p>");
// Get the PDF as a MemoryStream
MemoryStream stream = pdf.Stream;
// Example: Upload to cloud storage or database
// UploadToCloudStorage(stream);
// Example: Email as attachment without saving to disk
// EmailService.SendWithAttachment(stream, "report.pdf");
// Remember to dispose of the stream when done
stream.Dispose();IRON VB CONVERTER ERROR developers@ironsoftware.comCómo guardar en datos binarios
La propiedad IronPdf.PdfDocument.BinaryData exporta el documento PDF como datos binarios en memoria. Esto resulta especialmente útil para el almacenamiento en bases de datos o cuando se integra con API que requieren matrices de bytes.
Esto genera el PDF como un ByteArray, que se expresa en C# como byte [].
// Example: Convert PDF to binary data
using IronPdf;
var renderer = new ChromePdfRenderer();
// Configure rendering options for better quality
renderer.RenderingOptions = new ChromePdfRenderOptions()
{
MarginTop = 20,
MarginBottom = 20,
MarginLeft = 10,
MarginRight = 10,
PaperSize = IronPdf.Rendering.PdfPaperSize.A4
};
// Render content to PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Contract Document</h1>");
// Get binary data
byte[] binaryData = pdf.BinaryData;
// Example: Store in database
// database.StorePdfDocument(documentId, binaryData);
// Example: Send via API
// apiClient.UploadDocument(binaryData);// Example: Convert PDF to binary data
using IronPdf;
var renderer = new ChromePdfRenderer();
// Configure rendering options for better quality
renderer.RenderingOptions = new ChromePdfRenderOptions()
{
MarginTop = 20,
MarginBottom = 20,
MarginLeft = 10,
MarginRight = 10,
PaperSize = IronPdf.Rendering.PdfPaperSize.A4
};
// Render content to PDF
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Contract Document</h1>");
// Get binary data
byte[] binaryData = pdf.BinaryData;
// Example: Store in database
// database.StorePdfDocument(documentId, binaryData);
// Example: Send via API
// apiClient.UploadDocument(binaryData);IRON VB CONVERTER ERROR developers@ironsoftware.comPara situaciones más avanzadas que impliquen la manipulación de datos binarios, consulte nuestra guía sobre conversión de PDF a MemoryStream.
Cómo servir desde un servidor web al navegador
<Descripción: Diagrama o captura de pantalla que ilustre el concepto de código -->
Para servir un PDF a la web, necesitamos enviarlo como datos binarios en lugar de HTML. Esto es esencial para las aplicaciones web en las que los usuarios necesitan descargar o ver archivos PDF directamente en sus navegadores. IronPDF se integra con aplicaciones MVC y ASP.NET tradicionales.
Exportación de PDF de MVC
En las aplicaciones MVC modernas, servir archivos PDF es sencillo utilizando el FileStreamResult. Este enfoque funciona bien con aplicaciones ASP.NET Core MVC:
// MVC Controller method for PDF export
public IActionResult DownloadInvoice(int invoiceId)
{
// Generate your HTML content
string htmlContent = GenerateInvoiceHtml(invoiceId);
// Create PDF using IronPDF
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Get the PDF stream
MemoryStream stream = pdf.Stream;
// Reset stream position
stream.Position = 0;
// Return file to browser - will prompt download
return new FileStreamResult(stream, "application/pdf")
{
FileDownloadName = $"invoice_{invoiceId}.pdf"
};
}
// Alternative: Display PDF in browser instead of downloading
public IActionResult ViewInvoice(int invoiceId)
{
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(GenerateInvoiceHtml(invoiceId));
// Return PDF for browser viewing
return File(pdf.BinaryData, "application/pdf");
}// MVC Controller method for PDF export
public IActionResult DownloadInvoice(int invoiceId)
{
// Generate your HTML content
string htmlContent = GenerateInvoiceHtml(invoiceId);
// Create PDF using IronPDF
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Get the PDF stream
MemoryStream stream = pdf.Stream;
// Reset stream position
stream.Position = 0;
// Return file to browser - will prompt download
return new FileStreamResult(stream, "application/pdf")
{
FileDownloadName = $"invoice_{invoiceId}.pdf"
};
}
// Alternative: Display PDF in browser instead of downloading
public IActionResult ViewInvoice(int invoiceId)
{
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(GenerateInvoiceHtml(invoiceId));
// Return PDF for browser viewing
return File(pdf.BinaryData, "application/pdf");
}IRON VB CONVERTER ERROR developers@ironsoftware.comExportación de PDF de ASP.NET
Para aplicaciones ASP.NET WebForms tradicionales, puede servir PDF directamente a través del objeto Response:
// ASP.NET WebForms PDF export
protected void ExportButton_Click(object sender, EventArgs e)
{
// Create your PDF document
var renderer = new ChromePdfRenderer();
// Configure rendering options
renderer.RenderingOptions = new ChromePdfRenderOptions()
{
PaperSize = IronPdf.Rendering.PdfPaperSize.Letter,
PrintHtmlBackgrounds = true,
CreatePdfFormsFromHtml = true
};
// Generate PDF from current page or custom HTML
PdfDocument MyPdfDocument = renderer.RenderHtmlAsPdf(GetReportHtml());
// Retrieves the PDF binary data
byte[] Binary = MyPdfDocument.BinaryData;
// Clears the existing response content
Response.Clear();
// Sets the response content type to 'application/octet-stream', suitable for PDF files
Response.ContentType = "application/octet-stream";
// Add content disposition header for download
Response.AddHeader("Content-Disposition",
"attachment; filename=report_" + DateTime.Now.ToString("yyyyMMdd") + ".pdf");
// Writes the binary data to the response output stream
Context.Response.OutputStream.Write(Binary, 0, Binary.Length);
// Flushes the response to send the data to the client
Response.Flush();
// End the response
Response.End();
}// ASP.NET WebForms PDF export
protected void ExportButton_Click(object sender, EventArgs e)
{
// Create your PDF document
var renderer = new ChromePdfRenderer();
// Configure rendering options
renderer.RenderingOptions = new ChromePdfRenderOptions()
{
PaperSize = IronPdf.Rendering.PdfPaperSize.Letter,
PrintHtmlBackgrounds = true,
CreatePdfFormsFromHtml = true
};
// Generate PDF from current page or custom HTML
PdfDocument MyPdfDocument = renderer.RenderHtmlAsPdf(GetReportHtml());
// Retrieves the PDF binary data
byte[] Binary = MyPdfDocument.BinaryData;
// Clears the existing response content
Response.Clear();
// Sets the response content type to 'application/octet-stream', suitable for PDF files
Response.ContentType = "application/octet-stream";
// Add content disposition header for download
Response.AddHeader("Content-Disposition",
"attachment; filename=report_" + DateTime.Now.ToString("yyyyMMdd") + ".pdf");
// Writes the binary data to the response output stream
Context.Response.OutputStream.Write(Binary, 0, Binary.Length);
// Flushes the response to send the data to the client
Response.Flush();
// End the response
Response.End();
}IRON VB CONVERTER ERROR developers@ironsoftware.comEscenarios de exportación avanzados
Exportación de PDF por lotes
Cuando se trata de varios PDF, se puede optimizar el proceso de exportación:
// Batch export multiple PDFs to a zip file
public void ExportMultiplePdfsAsZip(List<string> htmlDocuments, string zipFilePath)
{
using (var zipArchive = ZipFile.Open(zipFilePath, ZipArchiveMode.Create))
{
var renderer = new ChromePdfRenderer();
for (int i = 0; i < htmlDocuments.Count; i++)
{
// Render each HTML document
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlDocuments[i]);
// Add to zip archive
var entry = zipArchive.CreateEntry($"document_{i + 1}.pdf");
using (var entryStream = entry.Open())
{
pdf.Stream.CopyTo(entryStream);
}
}
}
}// Batch export multiple PDFs to a zip file
public void ExportMultiplePdfsAsZip(List<string> htmlDocuments, string zipFilePath)
{
using (var zipArchive = ZipFile.Open(zipFilePath, ZipArchiveMode.Create))
{
var renderer = new ChromePdfRenderer();
for (int i = 0; i < htmlDocuments.Count; i++)
{
// Render each HTML document
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlDocuments[i]);
// Add to zip archive
var entry = zipArchive.CreateEntry($"document_{i + 1}.pdf");
using (var entryStream = entry.Open())
{
pdf.Stream.CopyTo(entryStream);
}
}
}
}IRON VB CONVERTER ERROR developers@ironsoftware.comExportación condicional basada en permisos de usuario
// Export with different options based on user role
public byte[] ExportPdfWithPermissions(string htmlContent, UserRole userRole)
{
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Apply security based on user role
if (userRole == UserRole.Guest)
{
// Restrict printing and copying for guests
pdf.SecuritySettings.AllowUserPrinting = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
}
else if (userRole == UserRole.Standard)
{
// Allow printing but not editing
pdf.SecuritySettings.AllowUserPrinting = true;
pdf.SecuritySettings.AllowUserEditing = false;
}
return pdf.BinaryData;
}// Export with different options based on user role
public byte[] ExportPdfWithPermissions(string htmlContent, UserRole userRole)
{
var renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Apply security based on user role
if (userRole == UserRole.Guest)
{
// Restrict printing and copying for guests
pdf.SecuritySettings.AllowUserPrinting = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
}
else if (userRole == UserRole.Standard)
{
// Allow printing but not editing
pdf.SecuritySettings.AllowUserPrinting = true;
pdf.SecuritySettings.AllowUserEditing = false;
}
return pdf.BinaryData;
}IRON VB CONVERTER ERROR developers@ironsoftware.comPrácticas recomendadas para la exportación de PDF
Al exportar archivos PDF en aplicaciones de producción, tenga en cuenta estas prácticas recomendadas:
- Gestión de memoria: Para PDF de gran tamaño o aplicaciones con mucho tráfico, disponga adecuadamente de los objetos y flujos PDF para evitar fugas de memoria. Considera el uso de métodos
asyncpara un mejor rendimiento. - Manejo de errores: Aplique siempre una gestión de errores adecuada al exportar archivos PDF, especialmente en aplicaciones web en las que pueden producirse problemas de red.
- Compresión: Para PDF de gran tamaño, utilice la compresión de PDF para reducir el tamaño del archivo antes de servirlo a los usuarios.
- Metadatos: establezca los metadatos PDF adecuados, incluidos el título, el autor y la fecha de creación, para una mejor gestión de los documentos.
- Compatibilidad multiplataforma: Asegúrese de que la funcionalidad de exportación funciona en diferentes plataformas. IronPDF es compatible con
Windows,LinuxymacOS.
Conclusión
IronPDF ofrece opciones completas para exportar archivos PDF en aplicaciones C#, desde simples archivos guardados hasta complejos escenarios de servidor web. Utilizar el método de exportación adecuado para su caso de uso le permite generar y entregar documentos PDF a sus usuarios de forma eficaz, manteniendo al mismo tiempo los estándares de seguridad y rendimiento.
Preguntas Frecuentes
¿Cómo se exporta contenido HTML a PDF en C#?
Puede exportar HTML a PDF en C# utilizando la clase ChromePdfRenderer de IronPDF. Basta con crear una instancia del renderizador, utilizar el método RenderHtmlAsPdf() para convertir el contenido HTML y, a continuación, guardarlo mediante el método SaveAs(). IronPDF facilita la conversión de cadenas HTML, archivos o URL directamente en documentos PDF.
¿Cuáles son los diferentes métodos para guardar un PDF utilizando C#?
IronPDF ofrece varios métodos para guardar archivos PDF: SaveAs() para guardar en disco, Stream para servir PDFs en aplicaciones web sin crear archivos temporales, y BinaryData para obtener el PDF como una matriz de bytes. Cada método de IronPDF sirve para diferentes casos de uso, desde el simple almacenamiento de archivos hasta la entrega dinámica a través de la web.
¿Puedo guardar un PDF en la memoria en lugar de en el disco?
Sí, IronPDF le permite guardar archivos PDF en la memoria utilizando System.IO.MemoryStream. Esto es útil para aplicaciones web en las que desea servir archivos PDF directamente a los usuarios sin crear archivos temporales en el servidor. Puede utilizar la propiedad Stream o convertir el PDF en datos binarios.
¿Cómo puedo proteger un PDF con una contraseña?
IronPDF permite la protección mediante contraseña estableciendo la propiedad Password en el objeto PdfDocument antes de guardarlo. Simplemente asigne una cadena de contraseña a pdf.Password y luego utilice SaveAs() para crear un archivo PDF protegido que requiera la contraseña para abrirse.
¿Puedo servir un PDF directamente a navegadores web sin guardarlo en disco?
Sí, IronPDF le permite servir archivos PDF directamente a los navegadores web como datos binarios. Puede utilizar la propiedad BinaryData para obtener el PDF como una matriz de bytes y servirlo a través del flujo de respuesta de su aplicación web, eliminando la necesidad de almacenar archivos temporales.
¿Cuál es la forma más sencilla de convertir y guardar HTML como PDF en una sola línea?
IronPDF proporciona una solución de una sola línea: new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf("Tu HTML").SaveAs("output.pdf"). Esto crea un renderizador, convierte HTML a PDF, y lo guarda en el disco en una sola sentencia.







