Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
IronPDF yiText 7 (antes conocido como iTextSharp) ambas ofrecen la posibilidad de generar, manipular yimprimir PDF en .NET y .NET Core.
QuéBiblioteca PDF en C# es el más adecuado para su proyecto .NET? El objetivo de este artículo es ayudar a los lectores a tomar una decisión adecuada e informada.
HtmlConverter.ConvertToPDF
método para convertir un archivo HTML en un archivo PDFIronPDF es una destacada biblioteca PDF .NET que permite a los desarrolladores crear, modificar e interactuar fácilmente con documentos PDF. Es compatible con varios entornos .NET, incluidos .NET Core, .NET 8, 7, 6 y Framework, lo que le confiere una gran versatilidad. Entre las principales características de IronPDF se incluyen la conversión de HTML a PDF, la fusión de PDF, el cifrado y las firmas digitales. La documentación es fácil de usar y el soporte técnico es sólido.
iTextSharp es una potente biblioteca PDF para la plataforma .NET, derivada originalmente de iText(que está basado en Java). Esta herramienta ofrece soluciones de nivel empresarial para la creación y manipulación de archivos PDF y está disponible tanto en código abierto como en software libre(AGPL) y licencias comerciales. La biblioteca principal iTextSharp ofrece un alto grado de flexibilidad, lo que permite a los desarrolladores crear archivos PDF desde cero, gestionar formularios, aplicar firmas digitales, añadir funcionalidad PDF y mucho más.
IronPDF es:
Una gran elección para programadores pragmáticos que intentan hacer su trabajo.
iTexto(iTextSharp) es:
Una gran elección para proyectos libres y académicos
IronPDF es compatible con una amplia gama de plataformas y entornos, lo que garantiza una integración e implantación perfectas en diversos sistemas:
iTextSharp iText existe desde hace al menos 6 años, se basa en un código Java de código abierto llamado iText y sigue teniendo cierto sabor a Java. Los desarrolladores que aprendieron Java por primera vez pueden encontrar esta biblioteca familiar.
IronPDF es una biblioteca .NET con una API diseñada para facilitar su uso en Visual Studio. .NET existe desde hace casi 20 años, creciendo y expandiéndose continuamente, y abriendo muchas posibilidades, que IronPDF está diseñado para aprovechar. Nos permite crear y manipular documentos PDF en proyectos .NET Framework. Puede descargar IronPDF comobiblioteca PDF alternativa para usuarios de iTextSharp.
.NET Core(8, 7, 6, 5 y 3.1+.)
IronPDF y iTextSharp ofrecen una serie de funciones y herramientas que pueden utilizarse para trabajar con archivos PDF; el objetivo de la siguiente sección será examinar más de cerca algunas de estas características y comparar las dos bibliotecas a la hora de realizar diferentes tareas relacionadas con PDF.
Estampado PDF: Estampe imágenes y texto en sus documentos PDF con IronPDF.
Para obtener más información sobre el amplio conjunto de funciones que ofrece IronPDF, visite la páginaPágina de características de IronPDF.
Conversión Contenido HTML en PDF es una tarea muy sencilla que se realiza en muchas oficinas y espacios de trabajo diferentes. A continuación se muestran los ejemplos de código que comparan cómo IronPDF e iText abordan este proceso.
IronPDF
using IronPdf;
// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external html assets: images, CSS and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
using IronPdf;
// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from an HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external html assets: images, CSS and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
Imports IronPdf
' Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = True
' Instantiate Renderer
Dim renderer = New ChromePdfRenderer()
' Create a PDF from an HTML string using C#
Dim pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>")
pdf.SaveAs("output.pdf")
' Advanced Example with HTML Assets
' Load external html assets: images, CSS and JavaScript.
' An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
Dim myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", "C:\site\assets\")
myAdvancedPdf.SaveAs("html-with-assets.pdf")
iTextSharp
using iText.Html2pdf;
static void Main(string[] args)
{
using (FileStream htmlSource = File.Open("input.html", FileMode.Open))
using (FileStream pdfDest = File.Open("output.pdf", FileMode.Create))
{
ConverterProperties converterProperties = new ConverterProperties();
HtmlConverter.ConvertToPdf(htmlSource, pdfDest, converterProperties);
}
}
using iText.Html2pdf;
static void Main(string[] args)
{
using (FileStream htmlSource = File.Open("input.html", FileMode.Open))
using (FileStream pdfDest = File.Open("output.pdf", FileMode.Create))
{
ConverterProperties converterProperties = new ConverterProperties();
HtmlConverter.ConvertToPdf(htmlSource, pdfDest, converterProperties);
}
}
Imports iText.Html2pdf
Shared Sub Main(ByVal args() As String)
Using htmlSource As FileStream = File.Open("input.html", FileMode.Open)
Using pdfDest As FileStream = File.Open("output.pdf", FileMode.Create)
Dim converterProperties As New ConverterProperties()
HtmlConverter.ConvertToPdf(htmlSource, pdfDest, converterProperties)
End Using
End Using
End Sub
A la hora de convertir HTML a PDF, IronPDF ofrece una herramienta concisa y cómoda para llevar a cabo esta tarea. Utilizando el ChromePdfRenderer para convertir contenido HTML en PDF, IronPDF destaca por proporcionar a los usuarios documentos PDF perfectos como píxeles. Los usuarios pueden crear PDF directamente a partir de cadenas HTML, como se muestra en el primer ejemplo, o incluir activos externos como imágenes con una ruta base opcional, como se demuestra en el ejemplo avanzado. por otro lado, iTextSharp** utiliza HtmlConverter para convertir archivos HTML, pero el proceso requiere más configuración.
Cifrado y descifrado de documentos PDF son vitales en muchos lugares de trabajo. Para manejar esta tarea con facilidad es necesario contar con una herramienta que pueda hacerlo cómodamente. En el código siguiente, veremos cómo iTextSharp y IronPDF abordan el cifrado de PDF.
IronPDF
using IronPdf;
using System;
// Open an Encrypted File, alternatively create a new PDF from Html
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");
// Edit file metadata
pdf.MetaData.Author = "Satoshi Nakamoto";
pdf.MetaData.Keywords = "SEO, Friendly";
pdf.MetaData.ModifiedDate = DateTime.Now;
// Edit file security settings
// The following code makes a PDF read only and will disallow copy & paste and printing
pdf.SecuritySettings.RemovePasswordsAndEncryption();
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key");
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserFormData = false;
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
// change or set the document encryption password
pdf.Password = "my-password";
pdf.SaveAs("secured.pdf");
using IronPdf;
using System;
// Open an Encrypted File, alternatively create a new PDF from Html
var pdf = PdfDocument.FromFile("encrypted.pdf", "password");
// Edit file metadata
pdf.MetaData.Author = "Satoshi Nakamoto";
pdf.MetaData.Keywords = "SEO, Friendly";
pdf.MetaData.ModifiedDate = DateTime.Now;
// Edit file security settings
// The following code makes a PDF read only and will disallow copy & paste and printing
pdf.SecuritySettings.RemovePasswordsAndEncryption();
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key");
pdf.SecuritySettings.AllowUserAnnotations = false;
pdf.SecuritySettings.AllowUserCopyPasteContent = false;
pdf.SecuritySettings.AllowUserFormData = false;
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights;
// change or set the document encryption password
pdf.Password = "my-password";
pdf.SaveAs("secured.pdf");
Imports IronPdf
Imports System
' Open an Encrypted File, alternatively create a new PDF from Html
Private pdf = PdfDocument.FromFile("encrypted.pdf", "password")
' Edit file metadata
pdf.MetaData.Author = "Satoshi Nakamoto"
pdf.MetaData.Keywords = "SEO, Friendly"
pdf.MetaData.ModifiedDate = DateTime.Now
' Edit file security settings
' The following code makes a PDF read only and will disallow copy & paste and printing
pdf.SecuritySettings.RemovePasswordsAndEncryption()
pdf.SecuritySettings.MakePdfDocumentReadOnly("secret-key")
pdf.SecuritySettings.AllowUserAnnotations = False
pdf.SecuritySettings.AllowUserCopyPasteContent = False
pdf.SecuritySettings.AllowUserFormData = False
pdf.SecuritySettings.AllowUserPrinting = IronPdf.Security.PdfPrintSecurity.FullPrintRights
' change or set the document encryption password
pdf.Password = "my-password"
pdf.SaveAs("secured.pdf")
iTextSharp
using System;
using System.IO;
using System.Text;
using iText.Kernel.Pdf;
public class EncryptPdf
{
public static readonly String DEST = "results/sandbox/security/encrypt_pdf.pdf";
public static readonly String SRC = "../../../resources/pdfs/hello.pdf";
public static readonly String OWNER_PASSWORD = "World";
public static readonly String USER_PASSWORD = "Hello";
public static void Main(String[] args)
{
FileInfo file = new FileInfo(DEST);
file.Directory.Create();
new EncryptPdf().ManipulatePdf(DEST);
}
protected void ManipulatePdf(String dest)
{
PdfDocument document = new PdfDocument(new PdfReader(SRC), new PdfWriter(dest,
new WriterProperties().SetStandardEncryption(
Encoding.UTF8.GetBytes(USER_PASSWORD),
Encoding.UTF8.GetBytes(OWNER_PASSWORD),
EncryptionConstants.ALLOW_PRINTING,
EncryptionConstants.ENCRYPTION_AES_128
EncryptionConstants.DO_NOT_ENCRYPT_METADATA
)));
document.Close();
}
}
using System;
using System.IO;
using System.Text;
using iText.Kernel.Pdf;
public class EncryptPdf
{
public static readonly String DEST = "results/sandbox/security/encrypt_pdf.pdf";
public static readonly String SRC = "../../../resources/pdfs/hello.pdf";
public static readonly String OWNER_PASSWORD = "World";
public static readonly String USER_PASSWORD = "Hello";
public static void Main(String[] args)
{
FileInfo file = new FileInfo(DEST);
file.Directory.Create();
new EncryptPdf().ManipulatePdf(DEST);
}
protected void ManipulatePdf(String dest)
{
PdfDocument document = new PdfDocument(new PdfReader(SRC), new PdfWriter(dest,
new WriterProperties().SetStandardEncryption(
Encoding.UTF8.GetBytes(USER_PASSWORD),
Encoding.UTF8.GetBytes(OWNER_PASSWORD),
EncryptionConstants.ALLOW_PRINTING,
EncryptionConstants.ENCRYPTION_AES_128
EncryptionConstants.DO_NOT_ENCRYPT_METADATA
)));
document.Close();
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
IronPDF ofrece a los usuarios una forma sencilla de cifrar archivos PDF, a la vez que les permite controlar el proceso en gran medida, incluida la edición de metadatos y el ajuste de la configuración de seguridad, como hacer que los documentos sean de sólo lectura o restringir acciones del usuario como copiar y pegar. Por otro lado, iTextSharp proporciona un control más granular, pero requiere una configuración adicional, como especificar las normas de cifrado y los permisos.
Ocasionalmente, al manejar información confidencial o privada, puede ser necesarioredactar partes de un archivo PDF. Los siguientes ejemplos demuestran cómo puede redactar texto utilizando IronPDF en comparación con iTextSharp.
IronPDF
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("novel.pdf");
// Redact 'are' phrase from all pages
pdf.RedactTextOnAllPages("are");
pdf.SaveAs("redacted.pdf");
using IronPdf;
PdfDocument pdf = PdfDocument.FromFile("novel.pdf");
// Redact 'are' phrase from all pages
pdf.RedactTextOnAllPages("are");
pdf.SaveAs("redacted.pdf");
Imports IronPdf
Private pdf As PdfDocument = PdfDocument.FromFile("novel.pdf")
' Redact 'are' phrase from all pages
pdf.RedactTextOnAllPages("are")
pdf.SaveAs("redacted.pdf")
iTextSharp
using System;
using System.IO;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;
using iText.Kernel.Colors;
string src = "input.pdf";
string dest = "output_redacted.pdf";
using (PdfReader reader = new PdfReader(src))
{
using (PdfWriter writer = new PdfWriter(dest))
{
using (PdfDocument pdfDoc = new PdfDocument(reader, writer))
{
// Iterate through each page
for (int pageNum = 1; pageNum <= pdfDoc.GetNumberOfPages(); pageNum++)
{
PdfPage page = pdfDoc.GetPage(pageNum);
PdfCanvas canvas = new PdfCanvas(page);
Rectangle[] rectanglesToRedact = { new Rectangle(100, 100, 200, 50) }; // Example: Define rectangles to redact
// Overlay black rectangles to simulate redaction
foreach (Rectangle rect in rectanglesToRedact)
{
canvas.SetFillColor(ColorConstants.BLACK)
.Rectangle(rect.GetX(), rect.GetY(), rect.GetWidth(), rect.GetHeight())
.Fill();
}
}
}
}
using System;
using System.IO;
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;
using iText.Kernel.Colors;
string src = "input.pdf";
string dest = "output_redacted.pdf";
using (PdfReader reader = new PdfReader(src))
{
using (PdfWriter writer = new PdfWriter(dest))
{
using (PdfDocument pdfDoc = new PdfDocument(reader, writer))
{
// Iterate through each page
for (int pageNum = 1; pageNum <= pdfDoc.GetNumberOfPages(); pageNum++)
{
PdfPage page = pdfDoc.GetPage(pageNum);
PdfCanvas canvas = new PdfCanvas(page);
Rectangle[] rectanglesToRedact = { new Rectangle(100, 100, 200, 50) }; // Example: Define rectangles to redact
// Overlay black rectangles to simulate redaction
foreach (Rectangle rect in rectanglesToRedact)
{
canvas.SetFillColor(ColorConstants.BLACK)
.Rectangle(rect.GetX(), rect.GetY(), rect.GetWidth(), rect.GetHeight())
.Fill();
}
}
}
}
Imports System
Imports System.IO
Imports iText.Kernel.Pdf
Imports iText.Layout
Imports iText.Layout.Element
Imports iText.Layout.Properties
Imports iText.Kernel.Colors
Private src As String = "input.pdf"
Private dest As String = "output_redacted.pdf"
Using reader As New PdfReader(src)
Using writer As New PdfWriter(dest)
Using pdfDoc As New PdfDocument(reader, writer)
' Iterate through each page
Dim pageNum As Integer = 1
Do While pageNum <= pdfDoc.GetNumberOfPages()
Dim page As PdfPage = pdfDoc.GetPage(pageNum)
Dim canvas As New PdfCanvas(page)
Dim rectanglesToRedact() As Rectangle = { New Rectangle(100, 100, 200, 50) } ' Example: Define rectangles to redact
' Overlay black rectangles to simulate redaction
For Each rect As Rectangle In rectanglesToRedact
canvas.SetFillColor(ColorConstants.BLACK).Rectangle(rect.GetX(), rect.GetY(), rect.GetWidth(), rect.GetHeight()).Fill()
Next rect
pageNum += 1
Loop
End Using
End Using
la herramienta de redacción de IronPDF** es concisa y fácil de usar, y sólo necesita unas pocas líneas de código para agilizar el proceso de redacción. Esto ayuda a aumentar la eficacia de las tareas de redacción de PDF y ofrece a los usuarios una forma sencilla de mantener a salvo sus datos confidenciales y privados.
Por otro lado, iTextSharp carece de una función de redacción integrada, por lo que es necesario dibujar manualmente rectángulos negros sobre el contenido que se desea redactar. Sin embargo, este enfoque puede dejar el texto bajo el rectángulo accesible, permitiendo a los usuarios copiar y pegar los datos ocultos, por lo que no proporciona una verdadera redacción.
Ser capaz defirmar documentos digitales como archivos PDF y convertirlo en un proceso automatizado podría ahorrar tiempo. Los siguientes fragmentos de código comparan cómo IronPDF y iTextSharp gestionan las firmas digitales.
IronPDF
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
// Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);
// Create PdfSignature object
var sig = new PdfSignature(cert);
// Sign PDF document
PdfDocument pdf = PdfDocument.FromFile("document.pdf");
pdf.Sign(sig);
pdf.SaveAs("signed.pdf");
using IronPdf;
using IronPdf.Signing;
using System.Security.Cryptography.X509Certificates;
// Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
X509Certificate2 cert = new X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable);
// Create PdfSignature object
var sig = new PdfSignature(cert);
// Sign PDF document
PdfDocument pdf = PdfDocument.FromFile("document.pdf");
pdf.Sign(sig);
pdf.SaveAs("signed.pdf");
Imports IronPdf
Imports IronPdf.Signing
Imports System.Security.Cryptography.X509Certificates
' Create X509Certificate2 object with X509KeyStorageFlags set to Exportable
Private cert As New X509Certificate2("IronSoftware.pfx", "123456", X509KeyStorageFlags.Exportable)
' Create PdfSignature object
Private sig = New PdfSignature(cert)
' Sign PDF document
Private pdf As PdfDocument = PdfDocument.FromFile("document.pdf")
pdf.Sign(sig)
pdf.SaveAs("signed.pdf")
iTextSharp
using System;
using System.IO;
using iText.Kernel.Pdf;
using iText.Signatures;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Pkcs;
using Org.BouncyCastle.X509;
class Program
{
static void Main(string[] args)
{
string src = "input.pdf";
string dest = "output_signed.pdf";
string pfxFile = "your_certificate.pfx";
string pfxPassword = "your_password";
try
{
// Load your certificate
Pkcs12Store ks = new Pkcs12Store(new FileStream(pfxFile, FileMode.Open), pfxPassword.ToCharArray());
string alias = null;
foreach (string al in ks.Aliases)
{
if (ks.IsKeyEntry(al))
{
alias = al;
break;
}
}
ICipherParameters pk = ks.GetKey(alias).Key;
X509CertificateEntry[] chain = ks.GetCertificateChain(alias);
X509Certificate2 cert = new X509Certificate2(chain[0].Certificate.GetEncoded());
// Create output PDF with signed content
using (PdfReader reader = new PdfReader(src))
{
using (PdfWriter writer = new PdfWriter(dest))
{
using (PdfDocument pdfDoc = new PdfDocument(reader, writer))
{
// Create the signer
PdfSigner signer = new PdfSigner(pdfDoc, writer, new StampingProperties().UseAppendMode());
// Configure signature appearance
PdfSignatureAppearance appearance = signer.GetSignatureAppearance();
appearance.SetReason("Digital Signature");
appearance.SetLocation("Your Location");
appearance.SetContact("Your Contact");
// Create signature
IExternalSignature pks = new PrivateKeySignature(pk, "SHA-256");
signer.SignDetached(pks, chain, null, null, null, 0, PdfSigner.CryptoStandard.CMS);
}
}
}
Console.WriteLine($"PDF digitally signed successfully: {dest}");
}
catch (Exception ex)
{
Console.WriteLine($"Error signing PDF: {ex.Message}");
}
}
}
using System;
using System.IO;
using iText.Kernel.Pdf;
using iText.Signatures;
using Org.BouncyCastle.Crypto;
using Org.BouncyCastle.Pkcs;
using Org.BouncyCastle.X509;
class Program
{
static void Main(string[] args)
{
string src = "input.pdf";
string dest = "output_signed.pdf";
string pfxFile = "your_certificate.pfx";
string pfxPassword = "your_password";
try
{
// Load your certificate
Pkcs12Store ks = new Pkcs12Store(new FileStream(pfxFile, FileMode.Open), pfxPassword.ToCharArray());
string alias = null;
foreach (string al in ks.Aliases)
{
if (ks.IsKeyEntry(al))
{
alias = al;
break;
}
}
ICipherParameters pk = ks.GetKey(alias).Key;
X509CertificateEntry[] chain = ks.GetCertificateChain(alias);
X509Certificate2 cert = new X509Certificate2(chain[0].Certificate.GetEncoded());
// Create output PDF with signed content
using (PdfReader reader = new PdfReader(src))
{
using (PdfWriter writer = new PdfWriter(dest))
{
using (PdfDocument pdfDoc = new PdfDocument(reader, writer))
{
// Create the signer
PdfSigner signer = new PdfSigner(pdfDoc, writer, new StampingProperties().UseAppendMode());
// Configure signature appearance
PdfSignatureAppearance appearance = signer.GetSignatureAppearance();
appearance.SetReason("Digital Signature");
appearance.SetLocation("Your Location");
appearance.SetContact("Your Contact");
// Create signature
IExternalSignature pks = new PrivateKeySignature(pk, "SHA-256");
signer.SignDetached(pks, chain, null, null, null, 0, PdfSigner.CryptoStandard.CMS);
}
}
}
Console.WriteLine($"PDF digitally signed successfully: {dest}");
}
catch (Exception ex)
{
Console.WriteLine($"Error signing PDF: {ex.Message}");
}
}
}
Imports System
Imports System.IO
Imports iText.Kernel.Pdf
Imports iText.Signatures
Imports Org.BouncyCastle.Crypto
Imports Org.BouncyCastle.Pkcs
Imports Org.BouncyCastle.X509
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim src As String = "input.pdf"
Dim dest As String = "output_signed.pdf"
Dim pfxFile As String = "your_certificate.pfx"
Dim pfxPassword As String = "your_password"
Try
' Load your certificate
Dim ks As New Pkcs12Store(New FileStream(pfxFile, FileMode.Open), pfxPassword.ToCharArray())
Dim [alias] As String = Nothing
For Each al As String In ks.Aliases
If ks.IsKeyEntry(al) Then
[alias] = al
Exit For
End If
Next al
Dim pk As ICipherParameters = ks.GetKey([alias]).Key
Dim chain() As X509CertificateEntry = ks.GetCertificateChain([alias])
Dim cert As New X509Certificate2(chain(0).Certificate.GetEncoded())
' Create output PDF with signed content
Using reader As New PdfReader(src)
Using writer As New PdfWriter(dest)
Using pdfDoc As New PdfDocument(reader, writer)
' Create the signer
Dim signer As New PdfSigner(pdfDoc, writer, (New StampingProperties()).UseAppendMode())
' Configure signature appearance
Dim appearance As PdfSignatureAppearance = signer.GetSignatureAppearance()
appearance.SetReason("Digital Signature")
appearance.SetLocation("Your Location")
appearance.SetContact("Your Contact")
' Create signature
Dim pks As IExternalSignature = New PrivateKeySignature(pk, "SHA-256")
signer.SignDetached(pks, chain, Nothing, Nothing, Nothing, 0, PdfSigner.CryptoStandard.CMS)
End Using
End Using
End Using
Console.WriteLine($"PDF digitally signed successfully: {dest}")
Catch ex As Exception
Console.WriteLine($"Error signing PDF: {ex.Message}")
End Try
End Sub
End Class
Al aplicar firmas a archivos PDF digitalmente, IronPDF presenta una herramienta compacta pero potente para completar este proceso. Su sencillez permite realizar el proceso con rapidez, ahorrando tiempo a cualquier desarrollador que lo implemente para sus necesidades de firma. Por el contrario, iTextSharp requiere más configuración e implica pasos adicionales para manejar firmas digitales, lo que lo hace más complejo, aunque potencialmente más flexible para usuarios avanzados.
La posibilidad de añadir y personalizarmarcas de agua en PDF mediante software puede ser de gran ayuda para la confidencialidad, la protección de los derechos de autor, la creación de marcas o cualquier otra tarea que implique información sensible. A continuación se compara cómo IronPDF e iTextSharp aplican marcas de agua a los archivos PDF.
IronPDF
using IronPdf;
// Stamps a Watermark onto a new or existing PDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);
pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
using IronPdf;
// Stamps a Watermark onto a new or existing PDF
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf");
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center);
pdf.SaveAs(@"C:\Path\To\Watermarked.pdf");
Imports IronPdf
' Stamps a Watermark onto a new or existing PDF
Private renderer = New ChromePdfRenderer()
Private pdf = renderer.RenderUrlAsPdf("https://www.nuget.org/packages/IronPdf")
pdf.ApplyWatermark("<h2 style='color:red'>SAMPLE</h2>", 30, IronPdf.Editing.VerticalAlignment.Middle, IronPdf.Editing.HorizontalAlignment.Center)
pdf.SaveAs("C:\Path\To\Watermarked.pdf")
iTextSharp
using iText.IO.Font;
using iText.IO.Font.Constants;
using iText.Kernel.Colors;
using iText.Kernel.Font;
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas;
using iText.Kernel.Pdf.Extgstate;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;
public class TransparentWatermark
{
public static readonly String DEST = "results/sandbox/stamper/transparent_watermark.pdf";
public static readonly String SRC = "../../../resources/pdfs/hero.pdf";
public static void Main(String[] args)
{
FileInfo file = new FileInfo(DEST);
file.Directory.Create();
new TransparentWatermark().ManipulatePdf(DEST);
}
protected void ManipulatePdf(String dest)
{
PdfDocument pdfDoc = new PdfDocument(new PdfReader(SRC), new PdfWriter(dest));
PdfCanvas under = new PdfCanvas(pdfDoc.GetFirstPage().NewContentStreamBefore(), new PdfResources(), pdfDoc);
PdfFont font = PdfFontFactory.CreateFont(FontProgramFactory.CreateFont(StandardFonts.HELVETICA));
Paragraph paragraph = new Paragraph("This watermark is added UNDER the existing content")
.SetFont(font)
.SetFontSize(15);
Canvas canvasWatermark1 = new Canvas(under, pdfDoc.GetDefaultPageSize())
.ShowTextAligned(paragraph, 297, 550, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0);
canvasWatermark1.Close();
PdfCanvas over = new PdfCanvas(pdfDoc.GetFirstPage());
over.SetFillColor(ColorConstants.BLACK);
paragraph = new Paragraph("This watermark is added ON TOP OF the existing content")
.SetFont(font)
.SetFontSize(15);
Canvas canvasWatermark2 = new Canvas(over, pdfDoc.GetDefaultPageSize())
.ShowTextAligned(paragraph, 297, 500, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0);
canvasWatermark2.Close();
paragraph = new Paragraph("This TRANSPARENT watermark is added ON TOP OF the existing content")
.SetFont(font)
.SetFontSize(15);
over.SaveState();
// Creating a dictionary that maps resource names to graphics state parameter dictionaries
PdfExtGState gs1 = new PdfExtGState();
gs1.SetFillOpacity(0.5f);
over.SetExtGState(gs1);
Canvas canvasWatermark3 = new Canvas(over, pdfDoc.GetDefaultPageSize())
.ShowTextAligned(paragraph, 297, 450, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0);
canvasWatermark3.Close();
over.RestoreState();
pdfDoc.Close();
}
}
using iText.IO.Font;
using iText.IO.Font.Constants;
using iText.Kernel.Colors;
using iText.Kernel.Font;
using iText.Kernel.Pdf;
using iText.Kernel.Pdf.Canvas;
using iText.Kernel.Pdf.Extgstate;
using iText.Layout;
using iText.Layout.Element;
using iText.Layout.Properties;
public class TransparentWatermark
{
public static readonly String DEST = "results/sandbox/stamper/transparent_watermark.pdf";
public static readonly String SRC = "../../../resources/pdfs/hero.pdf";
public static void Main(String[] args)
{
FileInfo file = new FileInfo(DEST);
file.Directory.Create();
new TransparentWatermark().ManipulatePdf(DEST);
}
protected void ManipulatePdf(String dest)
{
PdfDocument pdfDoc = new PdfDocument(new PdfReader(SRC), new PdfWriter(dest));
PdfCanvas under = new PdfCanvas(pdfDoc.GetFirstPage().NewContentStreamBefore(), new PdfResources(), pdfDoc);
PdfFont font = PdfFontFactory.CreateFont(FontProgramFactory.CreateFont(StandardFonts.HELVETICA));
Paragraph paragraph = new Paragraph("This watermark is added UNDER the existing content")
.SetFont(font)
.SetFontSize(15);
Canvas canvasWatermark1 = new Canvas(under, pdfDoc.GetDefaultPageSize())
.ShowTextAligned(paragraph, 297, 550, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0);
canvasWatermark1.Close();
PdfCanvas over = new PdfCanvas(pdfDoc.GetFirstPage());
over.SetFillColor(ColorConstants.BLACK);
paragraph = new Paragraph("This watermark is added ON TOP OF the existing content")
.SetFont(font)
.SetFontSize(15);
Canvas canvasWatermark2 = new Canvas(over, pdfDoc.GetDefaultPageSize())
.ShowTextAligned(paragraph, 297, 500, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0);
canvasWatermark2.Close();
paragraph = new Paragraph("This TRANSPARENT watermark is added ON TOP OF the existing content")
.SetFont(font)
.SetFontSize(15);
over.SaveState();
// Creating a dictionary that maps resource names to graphics state parameter dictionaries
PdfExtGState gs1 = new PdfExtGState();
gs1.SetFillOpacity(0.5f);
over.SetExtGState(gs1);
Canvas canvasWatermark3 = new Canvas(over, pdfDoc.GetDefaultPageSize())
.ShowTextAligned(paragraph, 297, 450, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0);
canvasWatermark3.Close();
over.RestoreState();
pdfDoc.Close();
}
}
Imports iText.IO.Font
Imports iText.IO.Font.Constants
Imports iText.Kernel.Colors
Imports iText.Kernel.Font
Imports iText.Kernel.Pdf
Imports iText.Kernel.Pdf.Canvas
Imports iText.Kernel.Pdf.Extgstate
Imports iText.Layout
Imports iText.Layout.Element
Imports iText.Layout.Properties
Public Class TransparentWatermark
Public Shared ReadOnly DEST As String = "results/sandbox/stamper/transparent_watermark.pdf"
Public Shared ReadOnly SRC As String = "../../../resources/pdfs/hero.pdf"
Public Shared Sub Main(ByVal args() As String)
Dim file As New FileInfo(DEST)
file.Directory.Create()
Call (New TransparentWatermark()).ManipulatePdf(DEST)
End Sub
Protected Sub ManipulatePdf(ByVal dest As String)
Dim pdfDoc As New PdfDocument(New PdfReader(SRC), New PdfWriter(dest))
Dim under As New PdfCanvas(pdfDoc.GetFirstPage().NewContentStreamBefore(), New PdfResources(), pdfDoc)
Dim font As PdfFont = PdfFontFactory.CreateFont(FontProgramFactory.CreateFont(StandardFonts.HELVETICA))
Dim paragraph As Paragraph = (New Paragraph("This watermark is added UNDER the existing content")).SetFont(font).SetFontSize(15)
Dim canvasWatermark1 As Canvas = (New Canvas(under, pdfDoc.GetDefaultPageSize())).ShowTextAligned(paragraph, 297, 550, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0)
canvasWatermark1.Close()
Dim over As New PdfCanvas(pdfDoc.GetFirstPage())
over.SetFillColor(ColorConstants.BLACK)
paragraph = (New Paragraph("This watermark is added ON TOP OF the existing content")).SetFont(font).SetFontSize(15)
Dim canvasWatermark2 As Canvas = (New Canvas(over, pdfDoc.GetDefaultPageSize())).ShowTextAligned(paragraph, 297, 500, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0)
canvasWatermark2.Close()
paragraph = (New Paragraph("This TRANSPARENT watermark is added ON TOP OF the existing content")).SetFont(font).SetFontSize(15)
over.SaveState()
' Creating a dictionary that maps resource names to graphics state parameter dictionaries
Dim gs1 As New PdfExtGState()
gs1.SetFillOpacity(0.5F)
over.SetExtGState(gs1)
Dim canvasWatermark3 As Canvas = (New Canvas(over, pdfDoc.GetDefaultPageSize())).ShowTextAligned(paragraph, 297, 450, 1, TextAlignment.CENTER, VerticalAlignment.TOP, 0)
canvasWatermark3.Close()
over.RestoreState()
pdfDoc.Close()
End Sub
End Class
la API fácil e intuitiva de IronPDF permite a los usuarios aplicar marcas de agua personalizadas a sus archivos PDF rápidamente, al tiempo que les da un control total sobre el proceso. Su uso de HTML/CSS simplifica aún más el proceso sin perder ningún control sobre la personalización. el enfoque de iTextSharp para añadir marcas de agua a los PDF requiere más trabajo manual para llevar a cabo la tarea, lo que puede ralentizar el proceso.
Hay momentos en los que las páginas PDF necesitanestampado con contenido, de forma similar a como uno podría necesitar aplicar marcas de agua a sus archivos PDF. Veamos cómo se compara IronPDF con iTextSharp:
IronPDF
using IronPdf;
using IronPdf.Editing;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");
// Create text stamper
TextStamper textStamper = new TextStamper()
{
Text = "Text Stamper!",
FontFamily = "Bungee Spice",
UseGoogleFont = true,
FontSize = 30,
IsBold = true,
IsItalic = true,
VerticalAlignment = VerticalAlignment.Top,
};
// Stamp the text stamper
pdf.ApplyStamp(textStamper);
pdf.SaveAs("stampText.pdf");
// Create image stamper
ImageStamper imageStamper = new ImageStamper(new Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg"))
{
VerticalAlignment = VerticalAlignment.Top,
};
// Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0);
pdf.SaveAs("stampImage.pdf");
using IronPdf;
using IronPdf.Editing;
ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");
// Create text stamper
TextStamper textStamper = new TextStamper()
{
Text = "Text Stamper!",
FontFamily = "Bungee Spice",
UseGoogleFont = true,
FontSize = 30,
IsBold = true,
IsItalic = true,
VerticalAlignment = VerticalAlignment.Top,
};
// Stamp the text stamper
pdf.ApplyStamp(textStamper);
pdf.SaveAs("stampText.pdf");
// Create image stamper
ImageStamper imageStamper = new ImageStamper(new Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg"))
{
VerticalAlignment = VerticalAlignment.Top,
};
// Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0);
pdf.SaveAs("stampImage.pdf");
Imports IronPdf
Imports IronPdf.Editing
Private renderer As New ChromePdfRenderer()
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>")
' Create text stamper
Private textStamper As New TextStamper() With {
.Text = "Text Stamper!",
.FontFamily = "Bungee Spice",
.UseGoogleFont = True,
.FontSize = 30,
.IsBold = True,
.IsItalic = True,
.VerticalAlignment = VerticalAlignment.Top
}
' Stamp the text stamper
pdf.ApplyStamp(textStamper)
pdf.SaveAs("stampText.pdf")
' Create image stamper
Dim imageStamper As New ImageStamper(New Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg")) With {.VerticalAlignment = VerticalAlignment.Top}
' Stamp the image stamper
pdf.ApplyStamp(imageStamper, 0)
pdf.SaveAs("stampImage.pdf")
iTextSharp
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
public void StampPDF(string inputPdfPath, string outputPdfPath, string stampText)
{
PdfDocument pdfDoc = new PdfDocument(new PdfReader(inputPdfPath), new PdfWriter(outputPdfPath));
var document = new Document(pdfDoc);
...
}
using iText.Kernel.Pdf;
using iText.Layout;
using iText.Layout.Element;
public void StampPDF(string inputPdfPath, string outputPdfPath, string stampText)
{
PdfDocument pdfDoc = new PdfDocument(new PdfReader(inputPdfPath), new PdfWriter(outputPdfPath));
var document = new Document(pdfDoc);
...
}
Imports iText.Kernel.Pdf
Imports iText.Layout
Imports iText.Layout.Element
Public Sub StampPDF(ByVal inputPdfPath As String, ByVal outputPdfPath As String, ByVal stampText As String)
Dim pdfDoc As New PdfDocument(New PdfReader(inputPdfPath), New PdfWriter(outputPdfPath))
Dim document As New Document(pdfDoc)
'...
End Sub
Al observar rápidamente el código, puedes ver que IronPDF es pragmático y se basa en los requisitos comunes del usuario final.
iText es una biblioteca de nivel inferior que se centra en una API de dibujo donde añadimos objetos, formas y texto a las páginas.
iTextSharp.dll utiliza un modelo principalmente programático para renderizar PDFs. Al utilizar la biblioteca PDF iTextSharp, cada parte de texto, gráfico, tabla o línea en el PDF se "traza" o dibuja en un PDF. La API parece de bajo nivel y está enfocada en el estándar de documentos PDF. Este modelo permite precisión, pero puede requerir que los desarrolladores aprendan un poco sobre cómo funcionan los PDFs. Ajustar de cerca un estilo de diseño existente o activos web puede requerir algunas iteraciones y leer la Documentación de iTextSharp. Siguiendo su herencia, la metodología y la interfaz programática tienen un distintivo sabor a Java.
En contraste, IronPDF utiliza un motor de renderizado de navegador web completo paraconvertir HTML a PDF. Después de(1 y 2 líneas) Ejemplos de código C# para la conversión de HTML a PDF, los desarrolladores pueden generar PDFs a partir de HTML, imágenes y CSS existentes o nuevos. Esto permite a los desarrolladores trabajar en estrecha colaboración con los activos web existentes y también trabajar en paralelo con los diseñadores durante un proyecto. iText sí incluye funcionalidad de HTML a PDF para C# .NET, aunque al parecer no es la característica predominante de la biblioteca.
Siga leyendo para obtener más detalles comparativos sobre las diferentes formas en que IronPDF e iTextSharp pueden ayudar a los desarrolladores a alcanzar los siguientes objetivos:
-Crear un PDF a partir de una URL existente
-Crear un documento PDF a partir de una cadena de entrada HTML
Las opciones de licencia también son un factor importante en los proyectos de desarrollo. iTextSharp es de código abierto bajo el acuerdo de licencia AGPL. Cuando se licencia bajo AGLP, cualquier persona que use cualquier parte de una aplicación que contenga iTextSharp(incluso a través de la red de la empresa o de Internet) puede tener derecho a una copia completa del código fuente de la aplicación. Es excelente para el trabajo académico. Si deseamos utilizar iTextSharp en aplicaciones comerciales, lo mejor es ponerse en contacto con iText ypídales un presupuesto sobre los precios del uso comercial de iText.
IronPDF eslibre para el desarrolloy puede sercon licencia para uso comercial a precios razonables publicados públicamente, a partir de $749.
Así es como se comparan las dos bibliotecas:
Convierte HTML a PDF mediante un completo navegador web integrado | HTML básico a PDF mediante un complemento pdfHTML |
Foco de renderización: Navegador web integrado | Enfoque de renderizado: Modelo de dibujo programático |
IronPDF dispone de licencias explícitas con precios publicados | AGPL Precios de uso comercial no publicados. |
Fácil de codificar con .NET First Design | Basado en una API Java |
No es adecuado para tareas académicas y trabajos de curso | Excelente para trabajos académicos e investigación |
IronPDF permite a los desarrolladores de .NET y .NET Core generar, fusionar, dividir, editar y extraer contenido PDF fácilmente en C#, F# y VB.NET para .NET Core y .NET Framework, así comocrear PDFs a partir de archivos HTML, ASPX, CSS, JS e imagen.
Utiliza un navegador web totalmente integrado para convertir HTML a PDF. Esto permite a los desarrolladores generar PDF a partir de HTML, imágenes y CSS, y trabajar en estrecha colaboración con los activos web existentes y también en paralelo con los diseñadores durante un proyecto.
IronPDF se centra realmente en la productividad de los desarrolladores. La biblioteca simplifica muchas tareas complejas comunes relacionadas con PDF en métodos de C# convenientes para extraer texto e imágenes, firmar PDFs, editar PDFs con nuevo HTML y más, sin que el desarrollador necesite estudiar el estándar de documentos PDF para comprender cómo lograr el mejor resultado.
EniTextSharp.dll utiliza un modelo principalmente programático para renderizar los PDF, y cuenta con API avanzadas de manipulación de PDF que son potentes y siguen al pie de la letra el estándar PDF.
Basado en una biblioteca Java
Comparemos creando un proyecto de ejemplo que utilice ambas bibliotecas:
Siga los siguientes pasos para crear un sitio web ASP.NET:
Abrir Visual Studio
Haga clic en Archivo > Nuevo proyecto
Seleccione Web en Visual C# en el cuadro de lista Tipo de proyecto
Haga clic en OK
Ahora tenemos algo con lo que trabajar. Vamos a instalar IronPDF.
Para poder utilizar IronPDF, primero hay que instalarlo(gratis). Hay dos opciones:
Descargar la biblioteca
Veámoslo más de cerca.
Hay tres formas de instalar el paquete NuGet de IronPDF:
Visual Studio
Símbolo del sistema para desarrolladores
Descargue directamente el paquete NuGet
Hagámoslos uno por uno.
Visual Studio proporciona el gestor de paquetes NuGet para que puedas instalar paquetes NuGet en tus proyectos. Puedes acceder a él a través del menú Proyecto, o haciendo clic derecho en tu proyecto en el Explorador de Soluciones. Ambas opciones se muestran a continuación en las figuras 3 y 4
Después de hacer clic en Manage NuGet Packages desde cualquiera de las opciones, busque el paquete IronPDF e instálelo como se muestra en la Figura 5.
Los siguientes pasos abren el Símbolo del sistema para desarrolladores e instalan el paquete IronPDF NuGet.
Busque su Instrucción de comandos para desarrolladores; normalmente se encuentra en la carpeta Visual Studio.
Escriba el siguiente comando: PM > Install-Package IronPdf
Pulse Intro
El paquete se instalará
Para descargar el paquete NuGet:
Haga clic en Descargar paquete
Una vez descargado el paquete, haga doble clic en él
La segunda forma de instalar IronPDF es mediantedescarga directa.
Haga referencia a la Biblioteca en su proyecto siguiendo los pasos siguientes:
Haga clic con el botón derecho en la solución en el Explorador de soluciones
Seleccionar referencias
Buscar la biblioteca IronPDF.dll
Haga clic en OK
Ahora que está configurado, podemos empezar a jugar con las impresionantes características de la biblioteca IronPDF después de la configuración para iTextSharp.
Hay tres formas deinstala el paquete NuGet iTextSharp, son:
Hagámoslos uno por uno.
Para Visual Studio, busque iText e instale los paquetes correspondientes, como se muestra a continuación.
O, en el símbolo del sistema para desarrolladores(como se ha mostrado anteriormente, introduzca el siguiente comando)
PM > Install-Package itext7
O descargueiText 7 directamente desde su sitio web.
Ahora que ya has creado los proyectos necesarios, vamos a comparar estas dos bibliotecas en código.
El siguiente código descarga una página web y la convierte en un documento PDF.
El siguiente código utiliza IronPDF para crear un documento PDF directamente desde una dirección web. También se incluyen encabezados y pies de página personalizados.
/**
IronPDF URL to PDF
anchor-ironpdf-website-to-pdf
**/
private void ExistingWebURL()
{
// Create a PDF from any existing web page
var Renderer = new IronPdf.ChromePdfRenderer();
// Create a PDF from an existing HTML
Renderer.RenderingOptions.MarginTop = 50; //millimetres
Renderer.RenderingOptions.MarginBottom = 50;
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
};
Renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
};
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
Renderer.RenderingOptions.EnableJavaScript = true;
Renderer.RenderingOptions.RenderDelay = 500; //milliseconds
using var PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format");
PDF.SaveAs("wikipedia.pdf");
}
/**
IronPDF URL to PDF
anchor-ironpdf-website-to-pdf
**/
private void ExistingWebURL()
{
// Create a PDF from any existing web page
var Renderer = new IronPdf.ChromePdfRenderer();
// Create a PDF from an existing HTML
Renderer.RenderingOptions.MarginTop = 50; //millimetres
Renderer.RenderingOptions.MarginBottom = 50;
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
Renderer.RenderingOptions.TextHeader = new TextHeaderFooter()
{
CenterText = "{pdf-title}",
DrawDividerLine = true,
FontSize = 16
};
Renderer.RenderingOptions.TextFooter = new TextHeaderFooter()
{
LeftText = "{date} {time}",
RightText = "Page {page} of {total-pages}",
DrawDividerLine = true,
FontSize = 14
};
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
Renderer.RenderingOptions.EnableJavaScript = true;
Renderer.RenderingOptions.RenderDelay = 500; //milliseconds
using var PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format");
PDF.SaveAs("wikipedia.pdf");
}
'''
'''IronPDF URL to PDF
'''anchor-ironpdf-website-to-pdf
'''*
Private Sub ExistingWebURL()
' Create a PDF from any existing web page
Dim Renderer = New IronPdf.ChromePdfRenderer()
' Create a PDF from an existing HTML
Renderer.RenderingOptions.MarginTop = 50 'millimetres
Renderer.RenderingOptions.MarginBottom = 50
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
Renderer.RenderingOptions.TextHeader = New TextHeaderFooter() With {
.CenterText = "{pdf-title}",
.DrawDividerLine = True,
.FontSize = 16
}
Renderer.RenderingOptions.TextFooter = New TextHeaderFooter() With {
.LeftText = "{date} {time}",
.RightText = "Page {page} of {total-pages}",
.DrawDividerLine = True,
.FontSize = 14
}
Renderer.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
Renderer.RenderingOptions.EnableJavaScript = True
Renderer.RenderingOptions.RenderDelay = 500 'milliseconds
Dim PDF = Renderer.RenderUrlAsPdf("https://en.wikipedia.org/wiki/Portable_Document_Format")
PDF.SaveAs("wikipedia.pdf")
End Sub
IronPDF puede ayudarte a añadir texto o imágenes a los PDF de una forma realmente versátil y personalizable; te permite hacerte cargo por completo. Es fácil entender y trabajar con la API, especialmente para los desarrolladores familiarizados con HTML/CSS. iTextSharp hace uso de sus herramientas de estampado de imágenes y texto para ofrecer a los usuarios un mayor control sobre el contenido que se muestra en sus archivos PDF, aunque el proceso puede acabar siendo más manual.
A veces, puede que tengas que convertir PDF de un formato a otro. En este caso, nos fijamos enConversión de DOCX a PDF y comparando cómo IronPDF e iTextSharp gestionan este proceso de forma diferente.
IronPDF
using IronPdf;
// Instantiate Renderer
DocxToPdfRenderer renderer = new DocxToPdfRenderer();
// Render from DOCX file
PdfDocument pdf = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx");
// Save the PDF
pdf.SaveAs("pdfFromDocx.pdf");
using IronPdf;
// Instantiate Renderer
DocxToPdfRenderer renderer = new DocxToPdfRenderer();
// Render from DOCX file
PdfDocument pdf = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx");
// Save the PDF
pdf.SaveAs("pdfFromDocx.pdf");
Imports IronPdf
' Instantiate Renderer
Private renderer As New DocxToPdfRenderer()
' Render from DOCX file
Private pdf As PdfDocument = renderer.RenderDocxAsPdf("Modern-chronological-resume.docx")
' Save the PDF
pdf.SaveAs("pdfFromDocx.pdf")
iTextSharp
Desgraciadamente, iTextSharp no incorpora la función de conversión de DOCX a PDF, por lo que los desarrolladores deben recurrir a bibliotecas externas como Aspose.Words para esta tarea.
IronPDF proporciona a los desarrolladores una herramienta directa y concisa para gestionar las tareas de conversión de DOCX a PDF, facilitando la conversión de archivos DOCX a formato PDF sin necesidad de bibliotecas externas. por otro lado, iTextSharp** depende de bibliotecas externas para llevar a cabo esta tarea.
Para ver ejemplos más detallados, visiteEjemplos de IronPDF.
IronPDF tiene diferentes niveles y funciones adicionales por la compra de una licencia. Los promotores también pueden comprarIronSuitelo que te da acceso a todos los productos de Iron Software al precio de dos. Si no está preparado para comprar una licencia, IronPDF le ofrece unaprueba gratuita que dura 30 días.
Licencia Lite: Esta licencia cuesta 749 $ y admite un desarrollador, una ubicación y un proyecto.
Con este segmento de código, hemos transformado la Wikipedia de Tigerpágina web a PDF con ambas bibliotecas.
IronSuite: Por 1.498 dólares, tendrá acceso a todos los productos de Iron Software, incluidos IronPDF, IronOCR, IronWord, IronXL, IronBarcode, IronQR, IronZIP, IronPrint e IronWebScraper.
Actualizaciones: Se proporcionan actualizaciones periódicas para mejorar las características y corregir errores.
Para obtener más información sobre la documentación y la asistencia de IronPDF, visiteDocumentación de IronPDF y elIron Software YouTube Channel.
AmbosIronPDFy iTextSharp son opciones sólidas para la manipulación de PDF en proyectos .NET. IronPDF se distingue por su integración intuitiva en la plataforma y funciones como la conversión de HTML a PDF y opciones avanzadas de seguridad. iTextSharp, aunque se basa en la biblioteca de código abierto iText, ofrece un conjunto de herramientas potente y flexible bajo las licencias AGPL y comerciales, lo que lo hace ideal para proyectos que pueden beneficiarse de la flexibilidad del código abierto o requieren cumplimiento estricto de licencias.
Elegir la herramienta adecuada depende de los requisitos de licencia de su proyecto, las necesidades de soporte técnico y las demandas específicas de características. Ya sea que prefieras la simplicidad y el soporte completo de IronPDF o la robustez de código abierto de iTextSharp, ambas bibliotecas ofrecen a los desarrolladores amplios recursos para mejorar los flujos de trabajo de PDF en sus aplicaciones.
Comience a usar IronPDF en su proyecto hoy con una prueba gratuita.
9 productos API .NET para sus documentos de oficina