Tutorial de exemplo de código C# para exportar para PDF
Use o IronPDF para exportar conteúdo HTML para PDF em C# com métodos simples como SaveAs(), Stream e BinaryData. Esta biblioteca C# para PDF permite que desenvolvedores convertam programaticamente documentos HTML em PDF e os disponibilizem em navegadores web ou os salvem em disco.
IronPDF é uma biblioteca C# para PDF que permite usar C# para salvar seu HTML como um arquivo PDF. Também permite que desenvolvedores C# / VB editem documentos PDF programaticamente. Seja para gerar relatórios, criar faturas ou converter páginas da web, o IronPDF oferece uma solução robusta para geração de PDFs em aplicações C# .
Início rápido: Exportar HTML para PDF em C# com IronPDF
Exporte seu conteúdo HTML para PDF em C# usando o IronPDF. Este guia mostra como converter HTML em um documento PDF e salvá-lo com apenas algumas linhas de código. O IronPDF simplifica a geração de PDFs, permitindo que os desenvolvedores integrem a funcionalidade de exportação de PDFs em seus aplicativos.
-
Instale IronPDF com o Gerenciador de Pacotes NuGet
PM > Install-Package IronPdf -
Copie e execute este trecho de código.
new IronPdf.ChromePdfRenderer().RenderHtmlAsPdf("<h1>HelloPDF</h1>").SaveAs("myExportedFile.pdf"); -
Implante para testar em seu ambiente de produção.
Comece a usar IronPDF em seu projeto hoje com uma avaliação gratuita
Fluxo de trabalho mínimo (5 etapas)
- Baixe e instale a biblioteca de exportação para PDF em C# do NuGet.
- Explore a documentação `PdfDocument` sobre métodos de assinatura digital.
- Salvar PDF na memória usando um `System.IO.MemoryStream`
- Disponibilizar um PDF na web como dados binários em vez de HTML.
- Exportar o PDF como arquivo
Quais são as diferentes opções para salvar PDFs?
Ao trabalhar com documentos PDF em C#, o IronPDF oferece diversas opções para salvar e exportar os PDFs gerados. Cada método serve a diferentes casos de uso, desde o simples armazenamento de arquivos até a disponibilização de PDFs em aplicações web. As seções a seguir abordam as opções disponíveis para exportar e salvar PDFs em C# .
Como salvar um PDF no disco
Use o método PdfDocument.SaveAs para salvar seu PDF no disco. Essa é a abordagem mais simples para aplicativos de desktop ou quando você precisa armazenar PDFs permanentemente no 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.com
Este método permite adicionar proteção por senha. Confira o seguinte artigo para saber mais sobre como assinar digitalmente PDFs exportados: ' Assinar digitalmente um documento PDF '. Para opções de segurança adicionais, explore nosso guia sobre permissões e senhas de PDF .
Como salvar um arquivo PDF em um MemoryStream em C# (System.IO.MemoryStream)
A propriedade IronPdf.PdfDocument.Stream salva o PDF na memória usando um System.IO.MemoryStream. Essa abordagem é ideal quando você precisa manipular os dados do PDF na memória ou passá-los para outros métodos sem criar arquivos temporários. Saiba mais sobre como trabalhar com fluxos de memória 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();
Imports IronPdf
Imports System.IO
' Example: Save PDF to MemoryStream
Dim renderer As New ChromePdfRenderer()
' Render HTML content
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Monthly Report</h1><p>Sales figures...</p>")
' Get the PDF as a MemoryStream
Dim stream As MemoryStream = 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()
Como salvar dados binários
A propriedade IronPdf.PdfDocument.BinaryData exporta o documento PDF como dados binários na memória. Isso é particularmente útil para armazenamento em banco de dados ou ao integrar com APIs que exigem matrizes de bytes.
Isso gera o PDF como um ByteArray, que é expresso em 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);
Imports IronPdf
' Example: Convert PDF to binary data
Dim renderer As New ChromePdfRenderer()
' Configure rendering options for better quality
renderer.RenderingOptions = New ChromePdfRenderOptions() With {
.MarginTop = 20,
.MarginBottom = 20,
.MarginLeft = 10,
.MarginRight = 10,
.PaperSize = IronPdf.Rendering.PdfPaperSize.A4
}
' Render content to PDF
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Contract Document</h1>")
' Get binary data
Dim binaryData As Byte() = pdf.BinaryData
' Example: Store in database
' database.StorePdfDocument(documentId, binaryData)
' Example: Send via API
' apiClient.UploadDocument(binaryData)
Para cenários mais avançados que envolvem manipulação de dados binários, consulte nosso guia sobre como converter PDFs em MemoryStream .
Como servir conteúdo de um servidor web para um navegador.
Para disponibilizar um PDF na web, precisamos enviá-lo como dados binários em vez de HTML. Isso é essencial para aplicações web onde os usuários precisam baixar ou visualizar PDFs diretamente em seus navegadores. O IronPDF integra-se tanto com aplicações MVC quanto com aplicações ASP.NET tradicionais.
Exportação de PDF MVC
Em aplicações MVC modernas, servir PDFs é simples usando o FileStreamResult. Essa abordagem funciona bem com aplicações 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");
}
Imports System.IO
Imports Microsoft.AspNetCore.Mvc
Imports IronPdf
' MVC Controller method for PDF export
Public Function DownloadInvoice(invoiceId As Integer) As IActionResult
' Generate your HTML content
Dim htmlContent As String = GenerateInvoiceHtml(invoiceId)
' Create PDF using IronPDF
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
' Get the PDF stream
Dim stream As MemoryStream = pdf.Stream
' Reset stream position
stream.Position = 0
' Return file to browser - will prompt download
Return New FileStreamResult(stream, "application/pdf") With {
.FileDownloadName = $"invoice_{invoiceId}.pdf"
}
End Function
' Alternative: Display PDF in browser instead of downloading
Public Function ViewInvoice(invoiceId As Integer) As IActionResult
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(GenerateInvoiceHtml(invoiceId))
' Return PDF for browser viewing
Return File(pdf.BinaryData, "application/pdf")
End Function
Exportação de PDF em ASP.NET
Para aplicações ASP.NET WebForms tradicionais, você pode disponibilizar PDFs diretamente através do 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();
}
' ASP.NET WebForms PDF export
Protected Sub ExportButton_Click(sender As Object, e As EventArgs)
' Create your PDF document
Dim renderer As New ChromePdfRenderer()
' Configure rendering options
renderer.RenderingOptions = New ChromePdfRenderOptions() With {
.PaperSize = IronPdf.Rendering.PdfPaperSize.Letter,
.PrintHtmlBackgrounds = True,
.CreatePdfFormsFromHtml = True
}
' Generate PDF from current page or custom HTML
Dim MyPdfDocument As PdfDocument = renderer.RenderHtmlAsPdf(GetReportHtml())
' Retrieves the PDF binary data
Dim Binary As Byte() = 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()
End Sub
Cenários avançados de exportação
Exportação em lote para PDF
Ao lidar com vários PDFs, você pode otimizar o processo de exportação:
// 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);
}
}
}
}
Imports System.IO.Compression
' Batch export multiple PDFs to a zip file
Public Sub ExportMultiplePdfsAsZip(htmlDocuments As List(Of String), zipFilePath As String)
Using zipArchive = ZipFile.Open(zipFilePath, ZipArchiveMode.Create)
Dim renderer = New ChromePdfRenderer()
For i As Integer = 0 To htmlDocuments.Count - 1
' Render each HTML document
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlDocuments(i))
' Add to zip archive
Dim entry = zipArchive.CreateEntry($"document_{i + 1}.pdf")
Using entryStream = entry.Open()
pdf.Stream.CopyTo(entryStream)
End Using
Next
End Using
End Sub
Exportação condicional baseada em permissões do usuário
// 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;
}
' Export with different options based on user role
Public Function ExportPdfWithPermissions(htmlContent As String, userRole As UserRole) As Byte()
Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(htmlContent)
' Apply security based on user role
If userRole = UserRole.Guest Then
' Restrict printing and copying for guests
pdf.SecuritySettings.AllowUserPrinting = False
pdf.SecuritySettings.AllowUserCopyPasteContent = False
ElseIf userRole = UserRole.Standard Then
' Allow printing but not editing
pdf.SecuritySettings.AllowUserPrinting = True
pdf.SecuritySettings.AllowUserEditing = False
End If
Return pdf.BinaryData
End Function
Melhores práticas para exportação de PDF
Ao exportar PDFs em aplicações de produção, considere estas boas práticas:
- Gerenciamento de memória : Para PDFs grandes ou aplicativos com alto tráfego, descarte adequadamente os objetos e fluxos do PDF para evitar vazamentos de memória. Considere usar os métodos
asyncpara obter melhor desempenho. - Tratamento de erros : Sempre implemente um tratamento de erros adequado ao exportar PDFs, especialmente em aplicações web onde podem ocorrer problemas de rede.
- Compressão : Para PDFs grandes, utilize a compressão para comprimir PDF e reduzir o tamanho do arquivo antes de disponibilizá-lo aos usuários.
- Metadados : Defina metadados apropriados para o PDF, incluindo título, autor e data de criação, para uma melhor gestão do documento.
- Compatibilidade entre plataformas : Garanta que sua funcionalidade de exportação funcione em diferentes plataformas. O IronPDF suporta
Windows,LinuxemacOS.
Conclusão
O IronPDF oferece opções abrangentes para exportar e converter PDF em aplicativos C#, desde simples salvamentos de arquivos até cenários complexos de servidores web. Utilizar o método de exportação adequado ao seu caso de uso permite gerar e entregar documentos PDF aos seus usuários de forma eficiente, mantendo os padrões de segurança e desempenho.
Perguntas frequentes
Como faço para exportar conteúdo HTML para PDF em C#?
Você pode exportar HTML para PDF em C# usando a classe ChromePdfRenderer do IronPDF. Basta criar uma instância do renderizador, usar o método RenderHtmlAsPdf() para converter seu conteúdo HTML e, em seguida, salvá-lo usando o método SaveAs(). O IronPDF facilita a conversão de strings HTML, arquivos ou URLs diretamente em documentos PDF.
Quais são os diferentes métodos para salvar um PDF usando C#?
O IronPDF oferece vários métodos para salvar PDFs: SaveAs() para salvar em disco, Stream para disponibilizar PDFs em aplicações web sem criar arquivos temporários e BinaryData para obter o PDF como um array de bytes. Cada método do IronPDF atende a diferentes casos de uso, desde o simples armazenamento de arquivos até a distribuição dinâmica via web.
Posso salvar um PDF na memória em vez de no disco?
Sim, o IronPDF permite salvar PDFs na memória usando System.IO.MemoryStream. Isso é útil para aplicações web onde você deseja disponibilizar PDFs diretamente aos usuários sem criar arquivos temporários no servidor. Você pode usar a propriedade Stream ou converter o PDF em dados binários.
Como faço para adicionar proteção por senha ao salvar um PDF?
O IronPDF permite a proteção por senha definindo a propriedade Password no objeto PdfDocument antes de salvar. Basta atribuir uma senha a pdf.Password e usar SaveAs() para criar um arquivo PDF protegido que exige a senha para ser aberto.
Posso disponibilizar um PDF diretamente nos navegadores da web sem salvá-lo no disco?
Sim, o IronPDF permite que você forneça PDFs diretamente para navegadores da web como dados binários. Você pode usar a propriedade BinaryData para obter o PDF como uma matriz de bytes e fornecê-lo através do fluxo de resposta do seu aplicativo web, eliminando a necessidade de armazenamento temporário de arquivos.
Qual a maneira mais simples de converter e salvar HTML como PDF em uma única linha?
O IronPDF oferece uma solução de uma linha: `new IronPDF.ChromePdfRenderer().RenderHtmlAsPdf("Seu HTML").SaveAs("output.pdf").` Isso cria um renderizador, converte o HTML em PDF e o salva em disco em uma única instrução.

