Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
La funcionalidad de generación de PDF en C# es fundamental para muchas aplicaciones modernas, desde la creación de informes hasta sistemas de facturación. En este artículo, exploraremos seis formas populares de generarPDFarchivos utilizando C#, destacando tanto las bibliotecas basadas en código, comoIronPDF, y API's y herramientas en línea. Ya sea que necesites generar un archivo PDF dinámicamente en una aplicación web o simplemente crear archivos PDF a partir de documentos existentes, estas herramientas te respaldan.
Imagen rota Añadir desde Pixabay, seleccionar de tus archivos o arrastrar y soltar una imagen aquí.
IronPDFes una biblioteca premium de .NET para PDF diseñada para desarrolladores que necesitan una conversión de archivos HTML a PDF de alta calidad. IronPDF utiliza un motor de renderizado basado en Chromium para asegurar conversiones precisas, lo que lo convierte en una opción perfecta para aplicaciones web que deseen convertir páginas HTML o informes basados en la web a archivos PDF en C#. La herramienta es conocida por su manejo robusto de documentos PDF existentes y ofrece funciones para editar, unir o dividir PDFs.
IronPDF se integra fácilmente en proyectos de C# a través del Administrador de Paquetes NuGet, y con solo unas pocas líneas de código, puedes comenzar a generar documentos PDF. Es una herramienta versátil tanto para el contenido dinámico de HTML como para las salidas de archivos PDF generados por el servidor.
using IronPdf;
class Program
{
static void Main()
{
string html = "<h1>Hello, World!</h1><p>This PDF is generated from HTML.</p>";
ChromePdfRenderer renderer = new ChromePdfRenderer(); // Create an instance of ChromePdfRenderer
PdfDocument pdf = renderer.RenderHtmlAsPdf(html); // Render the HTML as a PDF document
pdf.SaveAs("Generated.pdf"); // Save the PDF to a specified file
}
}
using IronPdf;
class Program
{
static void Main()
{
string html = "<h1>Hello, World!</h1><p>This PDF is generated from HTML.</p>";
ChromePdfRenderer renderer = new ChromePdfRenderer(); // Create an instance of ChromePdfRenderer
PdfDocument pdf = renderer.RenderHtmlAsPdf(html); // Render the HTML as a PDF document
pdf.SaveAs("Generated.pdf"); // Save the PDF to a specified file
}
}
Imports IronPdf
Friend Class Program
Shared Sub Main()
Dim html As String = "<h1>Hello, World!</h1><p>This PDF is generated from HTML.</p>"
Dim renderer As New ChromePdfRenderer() ' Create an instance of ChromePdfRenderer
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf(html) ' Render the HTML as a PDF document
pdf.SaveAs("Generated.pdf") ' Save the PDF to a specified file
End Sub
End Class
Importación de espacio de nombres: using IronPdf; importa la biblioteca IronPDF para acceder a sus clases y métodos.
Cadena HTML: La variable HTML contiene el contenido HTML que deseas convertir a PDF.
Instancia del Renderizador: new ChromePdfRenderer();** crea una instancia de la clase HtmlToPdf, que proporciona métodos para renderizar contenido HTML en formato PDF.
Renderizar PDF: PdfDocument PDF = renderer.RenderHtmlAsPdf(html); convierte la cadena HTML en un documento PDF.
iTextSharp es una biblioteca de PDF para .NET bien establecida que ofrece una amplia funcionalidad para crear y editar archivos PDF. Se utiliza ampliamente en industrias como las de finanzas y legal, donde los documentos deben personalizarse y asegurarse. iTextSharp te permite crear archivos PDF desde cero, rellenar formularios y modificar archivos PDF, proporcionando un control extenso sobre el contenido del documento. Es particularmente útil para aplicaciones empresariales que necesitan generar archivos PDF con diseños precisos y datos dinámicos, como facturas o contratos.
using System;
using System.Collections.Generic;
using System.Data.Entity.Core.Mapping;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.tool.xml;
using Voodoo;
namespace Helpers
{
public class PdfGenerator
{
public static Byte[] GeneratePdfFromFragment(string htmlFragment)
{
var html = string.Format(@"
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
<head>
<style type='text/css'>
table,td {{border: 1px solid black;}}
div {{ white-space: nowrap; padding: 2px;}}
table{{ border-collapse: collapse; width: 100%; empty-cells: show;}}
body table {{font-size: 50%;}}
th {{width:500px; height: 28px;}}
td {{width:300px; height: 28px;}}
</style>
</head><body>{0}</body></html>", htmlFragment);
return generate(html);
}
public static Byte[] GeneratePdfFromPage(string htmlPage)
{
return generate(htmlPage);
}
private static Byte[] generate (string html)
{
using (var memoryStream = new MemoryStream())
{
var pdfDocument = new Document(PageSize.LETTER);
var pdfWriter = PdfWriter.GetInstance(pdfDocument, memoryStream);
pdfDocument.Open();
using (var fw = new StringReader(html))
{
XMLWorkerHelper.GetInstance().ParseXHtml(pdfWriter, pdfDocument, fw);
pdfDocument.Close();
fw.Close();
}
return memoryStream.ToArray();
}
}
}
}
using System;
using System.Collections.Generic;
using System.Data.Entity.Core.Mapping;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using iTextSharp.text;
using iTextSharp.text.pdf;
using iTextSharp.tool.xml;
using Voodoo;
namespace Helpers
{
public class PdfGenerator
{
public static Byte[] GeneratePdfFromFragment(string htmlFragment)
{
var html = string.Format(@"
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
<head>
<style type='text/css'>
table,td {{border: 1px solid black;}}
div {{ white-space: nowrap; padding: 2px;}}
table{{ border-collapse: collapse; width: 100%; empty-cells: show;}}
body table {{font-size: 50%;}}
th {{width:500px; height: 28px;}}
td {{width:300px; height: 28px;}}
</style>
</head><body>{0}</body></html>", htmlFragment);
return generate(html);
}
public static Byte[] GeneratePdfFromPage(string htmlPage)
{
return generate(htmlPage);
}
private static Byte[] generate (string html)
{
using (var memoryStream = new MemoryStream())
{
var pdfDocument = new Document(PageSize.LETTER);
var pdfWriter = PdfWriter.GetInstance(pdfDocument, memoryStream);
pdfDocument.Open();
using (var fw = new StringReader(html))
{
XMLWorkerHelper.GetInstance().ParseXHtml(pdfWriter, pdfDocument, fw);
pdfDocument.Close();
fw.Close();
}
return memoryStream.ToArray();
}
}
}
}
Imports System
Imports System.Collections.Generic
Imports System.Data.Entity.Core.Mapping
Imports System.IO
Imports System.Linq
Imports System.Text
Imports System.Threading.Tasks
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports iTextSharp.tool.xml
Imports Voodoo
Namespace Helpers
Public Class PdfGenerator
Public Shared Function GeneratePdfFromFragment(ByVal htmlFragment As String) As Byte()
Dim html = String.Format("
<html xmlns='http://www.w3.org/1999/xhtml' xml:lang='en'>
<head>
<style type='text/css'>
table,td {{border: 1px solid black;}}
div {{ white-space: nowrap; padding: 2px;}}
table{{ border-collapse: collapse; width: 100%; empty-cells: show;}}
body table {{font-size: 50%;}}
th {{width:500px; height: 28px;}}
td {{width:300px; height: 28px;}}
</style>
</head><body>{0}</body></html>", htmlFragment)
Return generate(html)
End Function
Public Shared Function GeneratePdfFromPage(ByVal htmlPage As String) As Byte()
Return generate(htmlPage)
End Function
Private Shared Function generate(ByVal html As String) As Byte()
Using memoryStream As New MemoryStream()
Dim pdfDocument = New Document(PageSize.LETTER)
Dim pdfWriter = PdfWriter.GetInstance(pdfDocument, memoryStream)
pdfDocument.Open()
Using fw = New StringReader(html)
XMLWorkerHelper.GetInstance().ParseXHtml(pdfWriter, pdfDocument, fw)
pdfDocument.Close()
fw.Close()
End Using
Return memoryStream.ToArray()
End Using
End Function
End Class
End Namespace
GeneratePdfFromFragment: Toma un fragmento HTML(como un documento HTML parcial) y lo convierte en una estructura HTML completa envolviéndolo en una base.
yplantilla. Luego llama al método interno generate.GeneratePdfFromPage: Acepta una página HTML completa y llama directamente al método de generación.
generate: Este método maneja la conversión de HTML a PDF.
Inicializa un MemoryStream para almacenar el PDF generado en la memoria.
4.
PDFSharp es una biblioteca ligera de .NET de código abierto ideal para tareas básicas de creación de PDF. Si su aplicación solo requiere operaciones simples como agregar texto, imágenes o tablas, PdfSharp es una opción fácil de usar para generar documentos PDF en C#. Carece de funciones avanzadas como la conversión de HTML a PDF, pero destaca por su simplicidad para generar archivos PDF de tamaño pequeño a mediano en C#.
using PdfSharp.Pdf;
using PdfSharp.Drawing;
class Program
{
static void Main()
{
// Create a new PDF document
PdfDocument document = new PdfDocument();
document.Info.Title = "Created with PdfSharp";
// Add a page to the document
PdfPage page = document.AddPage();
// Create an XGraphics object to draw on the page
XGraphics gfx = XGraphics.FromPdfPage(page);
// Set a font to use for drawing text
XFont font = new XFont("Verdana", 20, XFontStyle.Bold);
// Draw the text on the PDF page
gfx.DrawString("Hello, World!", font, XBrushes.Black,
new XRect(0, 0, page.Width, page.Height), XStringFormats.Center);
// Save the document to disk
document.Save("Generated.pdf");
}
}
using PdfSharp.Pdf;
using PdfSharp.Drawing;
class Program
{
static void Main()
{
// Create a new PDF document
PdfDocument document = new PdfDocument();
document.Info.Title = "Created with PdfSharp";
// Add a page to the document
PdfPage page = document.AddPage();
// Create an XGraphics object to draw on the page
XGraphics gfx = XGraphics.FromPdfPage(page);
// Set a font to use for drawing text
XFont font = new XFont("Verdana", 20, XFontStyle.Bold);
// Draw the text on the PDF page
gfx.DrawString("Hello, World!", font, XBrushes.Black,
new XRect(0, 0, page.Width, page.Height), XStringFormats.Center);
// Save the document to disk
document.Save("Generated.pdf");
}
}
Imports PdfSharp.Pdf
Imports PdfSharp.Drawing
Friend Class Program
Shared Sub Main()
' Create a new PDF document
Dim document As New PdfDocument()
document.Info.Title = "Created with PdfSharp"
' Add a page to the document
Dim page As PdfPage = document.AddPage()
' Create an XGraphics object to draw on the page
Dim gfx As XGraphics = XGraphics.FromPdfPage(page)
' Set a font to use for drawing text
Dim font As New XFont("Verdana", 20, XFontStyle.Bold)
' Draw the text on the PDF page
gfx.DrawString("Hello, World!", font, XBrushes.Black, New XRect(0, 0, page.Width, page.Height), XStringFormats.Center)
' Save the document to disk
document.Save("Generated.pdf")
End Sub
End Class
Syncfusion PDF Library es una herramienta de alto rendimiento y completa diseñada para empresas que necesitan trabajar con PDFs en una amplia gama de aplicaciones. Forma parte de la suite más amplia de Syncfusion, que ofrece bibliotecas para una variedad de formatos y plataformas. La biblioteca PDF se destaca por su amplio conjunto de funciones que va más allá de la simple creación de documentos y permite una manipulación detallada, incluyendo el llenado de formularios, firmas digitales y seguridad de documentos.
using Syncfusion.Pdf;
using Syncfusion.Pdf.Parsing;
using Syncfusion.Pdf.Graphics;
using Syncfusion.Pdf.Grid;
class Program
{
static void Main()
{
//Create a new PDF document.
PdfDocument document = new PdfDocument();
//Add a page to the document.
PdfPage page = document.Pages.Add();
//Create PDF graphics for the page.
PdfGraphics graphics = page.Graphics;
//Set the standard font.
PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20);
//Draw the text.
graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new PointF(0, 0));
//Save the document.
document.Save("Output.pdf");
//Close the document.
document.Close(true);
}
}
using Syncfusion.Pdf;
using Syncfusion.Pdf.Parsing;
using Syncfusion.Pdf.Graphics;
using Syncfusion.Pdf.Grid;
class Program
{
static void Main()
{
//Create a new PDF document.
PdfDocument document = new PdfDocument();
//Add a page to the document.
PdfPage page = document.Pages.Add();
//Create PDF graphics for the page.
PdfGraphics graphics = page.Graphics;
//Set the standard font.
PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20);
//Draw the text.
graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, new PointF(0, 0));
//Save the document.
document.Save("Output.pdf");
//Close the document.
document.Close(true);
}
}
Imports Syncfusion.Pdf
Imports Syncfusion.Pdf.Parsing
Imports Syncfusion.Pdf.Graphics
Imports Syncfusion.Pdf.Grid
Friend Class Program
Shared Sub Main()
'Create a new PDF document.
Dim document As New PdfDocument()
'Add a page to the document.
Dim page As PdfPage = document.Pages.Add()
'Create PDF graphics for the page.
Dim graphics As PdfGraphics = page.Graphics
'Set the standard font.
Dim font As PdfFont = New PdfStandardFont(PdfFontFamily.Helvetica, 20)
'Draw the text.
graphics.DrawString("Hello World!!!", font, PdfBrushes.Black, New PointF(0, 0))
'Save the document.
document.Save("Output.pdf")
'Close the document.
document.Close(True)
End Sub
End Class
PDFShift es un servicio basado en la nube diseñado para convertir HTML en archivos PDF. Se integra sin problemas con aplicaciones C# a través de su API, permitiendo convertir páginas web HTML generadas dinámicamente en PDF de calidad profesional. PDFShift es particularmente útil para los desarrolladores web que desean generar documentos PDF a demanda a partir de contenido HTML, como facturas o informes. Dado que PDFShift opera completamente a través de su API REST, puedes enviar solo unas pocas líneas de HTML al servicio y recibir un archivo PDF descargable a cambio. Es una solución simple y escalable para la generación de archivos PDF basada en la web.
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
using (HttpClient client = new HttpClient())
{
string htmlContent = "<h1>Hello, World!</h1><p>This is generated using PDFShift API.</p>";
var content = new StringContent(htmlContent, Encoding.UTF8, "application/json");
HttpResponseMessage response = await client.PostAsync("https://api.pdfshift.io/v3/convert", content);
byte[] pdfBytes = await response.Content.ReadAsByteArrayAsync();
System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes);
}
}
}
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
using (HttpClient client = new HttpClient())
{
string htmlContent = "<h1>Hello, World!</h1><p>This is generated using PDFShift API.</p>";
var content = new StringContent(htmlContent, Encoding.UTF8, "application/json");
HttpResponseMessage response = await client.PostAsync("https://api.pdfshift.io/v3/convert", content);
byte[] pdfBytes = await response.Content.ReadAsByteArrayAsync();
System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes);
}
}
}
Imports System.Net.Http
Imports System.Text
Imports System.Threading.Tasks
Friend Class Program
Shared Async Function Main(ByVal args() As String) As Task
Using client As New HttpClient()
Dim htmlContent As String = "<h1>Hello, World!</h1><p>This is generated using PDFShift API.</p>"
Dim content = New StringContent(htmlContent, Encoding.UTF8, "application/json")
Dim response As HttpResponseMessage = Await client.PostAsync("https://api.pdfshift.io/v3/convert", content)
Dim pdfBytes() As Byte = Await response.Content.ReadAsByteArrayAsync()
System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes)
End Using
End Function
End Class
DocRaptor es otro servicio potente de generación de PDFs basado en API que convierte HTML y CSS en PDFs de alta calidad. Se le conoce por su excelente renderizado de documentos HTML, particularmente en el manejo de estilos CSS complejos, consultas de medios y fuentes web. Esto hace que DocRaptor sea una excelente opción para generar documentos de apariencia profesional como informes, facturas y libros electrónicos, directamente desde plantillas HTML.
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
using (HttpClient client = new HttpClient())
{
string apiKey = "YOUR_API_KEY";
string htmlContent = "<h1>Professional Report</h1><p>Generated using DocRaptor API.</p>";
string jsonData = $"{{\"test\": true, \"document_content\": \"{htmlContent}\", \"name\": \"Generated.pdf\", \"document_type\": \"pdf\"}}";
var content = new StringContent(jsonData, Encoding.UTF8, "application/json");
HttpResponseMessage response = await client.PostAsync($"https://docraptor.com/docs?user_key={apiKey}", content);
byte[] pdfBytes = await response.Content.ReadAsByteArrayAsync();
System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes);
}
}
}
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
class Program
{
static async Task Main(string[] args)
{
using (HttpClient client = new HttpClient())
{
string apiKey = "YOUR_API_KEY";
string htmlContent = "<h1>Professional Report</h1><p>Generated using DocRaptor API.</p>";
string jsonData = $"{{\"test\": true, \"document_content\": \"{htmlContent}\", \"name\": \"Generated.pdf\", \"document_type\": \"pdf\"}}";
var content = new StringContent(jsonData, Encoding.UTF8, "application/json");
HttpResponseMessage response = await client.PostAsync($"https://docraptor.com/docs?user_key={apiKey}", content);
byte[] pdfBytes = await response.Content.ReadAsByteArrayAsync();
System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes);
}
}
}
Imports System.Net.Http
Imports System.Text
Imports System.Threading.Tasks
Friend Class Program
Shared Async Function Main(ByVal args() As String) As Task
Using client As New HttpClient()
Dim apiKey As String = "YOUR_API_KEY"
Dim htmlContent As String = "<h1>Professional Report</h1><p>Generated using DocRaptor API.</p>"
Dim jsonData As String = $"{{""test"": true, ""document_content"": ""{htmlContent}"", ""name"": ""Generated.pdf"", ""document_type"": ""pdf""}}"
Dim content = New StringContent(jsonData, Encoding.UTF8, "application/json")
Dim response As HttpResponseMessage = Await client.PostAsync($"https://docraptor.com/docs?user_key={apiKey}", content)
Dim pdfBytes() As Byte = Await response.Content.ReadAsByteArrayAsync()
System.IO.File.WriteAllBytes("Generated.pdf", pdfBytes)
End Using
End Function
End Class
Si no deseas programar o necesitas una solución rápida para generar PDFs, varias herramientas en línea permiten crear PDFs de manera rápida y sencilla. Aquí hay algunas opciones destacadas:
Smallpdf es una plataforma en línea que ofrece una variedad de herramientas relacionadas con PDF, incluyendo la capacidad de crear PDF a partir de una amplia gama de formatos de archivo. Está diseñado para usuarios que desean una interfaz simple de arrastrar y soltar sin necesidad de escribir código. Smallpdf se utiliza ampliamente para conversiones rápidas de archivos, como transformar documentos de Word, hojas de Excel o imágenes en PDFs. También ofrece herramientas para fusionar, comprimir y dividir PDFs, lo que lo convierte en una herramienta versátil para tareas básicas con PDFs.
PDFescape es un editor de PDF basado en la web fácil de usar que permite a los usuarios crear, editar y ver PDFs sin necesidad de instalar ningún software. Es una gran herramienta para aquellos que necesitan hacer ediciones rápidas en PDFs, como completar formularios, añadir anotaciones de texto o insertar imágenes. PDFescape también ofrece herramientas para crear nuevos PDFs desde cero, lo que lo convierte en una opción flexible para la creación básica de documentos.
PDF Candy es una suite de herramientas PDF en línea gratuitas que abarca una amplia gama de tareas relacionadas con PDF, desde la conversión de archivos hasta la edición. Es una excelente opción para usuarios que necesitan realizar operaciones rápidas con PDF sin registrarse para obtener una cuenta o instalar software. PDF Candy admite la conversión de varios tipos de archivos, como documentos de Word, imágenes y archivos de texto, en PDFs. También ofrece herramientas para combinar, dividir y comprimir PDFs.
Elegir la herramienta adecuada para generar archivos PDF en C# depende de tus necesidades. Si necesita generar documentos PDF a partir de contenido HTML, IronPDF y PDFShift son opciones excelentes. iTextSharp y Syncfusion ofrecen amplias opciones de personalización y control sobre la estructura del documento para proyectos más complejos. Para soluciones más sencillas y de código abierto, PDFsharp es una opción confiable para modificar archivos PDF o crear PDFs básicos. Finalmente, para los no desarrolladores, Smallpdf, PDFescape y PDF Candy ofrecen opciones fáciles y sin código para trabajar con archivos PDF.
Para aquellos interesados en probarIronPDF, lo que lo convierte en una excelente opción para que los desarrolladores prueben sus funciones de conversión de HTML a PDF y manipulación de PDF antes de comprometerse con una licencia de pago. La prueba le permite explorar sus características premium, como la generación de archivos PDF de alta calidad, opciones de seguridad y la modificación de documentos PDF existentes, ofreciéndole una experiencia práctica con las capacidades de la herramienta. Si su proyecto requiere conversiones frecuentes de HTML a PDF o edición compleja de PDF, la prueba gratuita de IronPDF es una excelente manera de ver si se adapta a sus necesidades.
Al evaluar las características específicas de cada herramienta y el alcance de su proyecto, puede elegir la mejor solución para generar archivos PDF de manera eficiente en C#.
9 productos API .NET para sus documentos de oficina