COMPARACIóN DE PRODUCTOS

Comparación de Syncfusion PDF Viewer para HTML a PDF

Actualizado 3 de octubre, 2021
Compartir:

Los desarrolladores necesitan funciones sencillas y fáciles de leer y líneas de código cortas para trabajar con documentos PDF en proyectos C#. El manejo de archivos PDF, incluida la generación, edición, eliminación, manipulación y personalización de la salida de documentos en .NET, puede realizarse de forma eficaz con la biblioteca adecuada.

Syncfusion

Syncfusion es una empresa de desarrollo de software que proporciona diferentes componentes (Herramientas de terceros) para que los desarrolladores trabajen con archivos PDF, Excel y cualquier otro formato. Hoy examinaremos específicamente su Visor de PDF Syncfusionpara trabajar con archivos PDF, y HTML to PDF Converter para generar documentos PDF a partir de una fuente HTML.

IronPDF C# Biblioteca PDF

IronPDF es un componente de Iron Software para desarrolladores .NET. Proporciona un método sencillo e inteligente para convertir cualquier tipo de página HTML en formato PDF, generando fácilmente cualquier tipo de archivo PDF con sólo unas pocas líneas de código. IronPDF es muy popular entre sus clientes. Su alto rendimiento ayuda a renderizar grandes cantidades de datos con rapidez. Dispone de un amplio conjunto de funciones. Además, ofrece funciones para añadir cualquier tipo de datos a la página PDF mediante programación, incluidos encabezados, pies de página, marcas de agua o marcadores. Puede descargar su última versión en Sitio web de IronPDF. Puede acceder a su sitio web desde cualquier navegador.

Comparación entre IronPDF y Syncfusion

Como desarrolladores, nos esforzamos al máximo por elegir componentes que ofrezcan la mejor manera de alcanzar nuestro objetivo en el menor número posible de líneas de código eficiente y satisfactorio. Para comparar el trabajo con PDF, veremos los dos productos, cómo tratan los archivos PDF y compararemos las funcionalidades para que decidas cuál es el mejor para tu proyecto.

1. IronPDF Free C# Biblioteca HTML a PDF

Vamos a ver algunos métodos diferentes y casos de uso de proyectos para HTML a PDF, que puede seguir a lo largo de la descarga de la Biblioteca HTML a PDF IronPDF C#, siempre libre para el desarrollo.

1.1 Instalación de IronPDF mediante NuGet Packager

Utilizando NuGet Package Manager en su proyecto de Visual Studio, puede buscar IronPDF e instalarlo.

Install-Package IronPdf

1.2 Descargar IronPdf.dll

También puede descargar IronPDF.dll y añada su referencia a su proyecto.

Se puede acceder a las clases IronPDF utilizando el espacio de nombres IronPdf.

1.3. Soporte de la plataforma IronPDF

.NET framework 4.0 o superior en

  • Ventanas
  • Azure

    .NET Standard 2.0 y Core 2 y 3 en

  • Ventanas
  • macOS
  • Linux
  • Azure

    Servicios de alojamiento en nube incluidos

  • Microsoft Azure
  • Docker
  • AWS

    Puede utilizarse con

  • Aplicación ASP.NET MVC
  • Aplicación ASP.NET Web Forms
  • Aplicación de consola
  • Aplicación en la nube
  • Servicios
  • Función
  • Aplicación de escritorio

1.4 Dependencias de IronPDF

1.4.1 Para compatibilidad con .NET Framework 4.0 o superior

1.4.2. Para compatibilidad con .NET Standard 2.0 o superior

2. Syncfusion

Hoy examinaremos los productos PDF Viewer y HTML to PDF Converter.

Si desea hacer su propia comparación, puede descargarlo siguiendo los pasos que se indican a continuación y examinando el código usted mismo. También proporcionamos ejemplos de código y análisis completos para que no tenga que instalar ambos componentes de software.

2.1. Visor de PDF

Las principales características incluyen que no hay necesidad de dependencia de Adobe en su máquina de destino. Puede editar y leer archivos PDF en su aplicación .NET mediante programación. También proporciona controles para ver, revisar y imprimir archivos PDF. Podemos comprimir u optimizar archivos PDF para minimizar su tamaño. Proporciona una manera por la cual usted puede convertir Excel, Word, PowerPoint, HTML o imagen a archivos PDF.

2.2. Conversor de HTML a PDF

HTML to PDF Converter es un componente para convertir cualquier tipo de página HTML en un archivo PDF. También es posible convertir una sección específica de una página HTML en un archivo PDF por id de sección. Además, también podemos convertir imágenes específicas de sitios web concretos a PDF utilizando su URL. Entendamos cómo utilizarlo en nuestros proyectos.

2.3. Instalar el conversor de HTML a PDF

En primer lugar, necesitamos instalar un conversor de HTML a PDF en nuestra máquina. Podemos instalarlo descargar la DLL o añadiendo su referencia mediante el gestor de paquetes NuGet de nuestro proyecto .NET con la siguiente línea de comandos:

`>PM> Install-Package Syncfusion.ChromePdfRendererConverter.QtWebKit.AspNet``

Después de la instalación tenemos que añadir las siguientes referencias al proyecto:

  • Syncfusion.Compression.Base.dll
  • Syncfusion.Pdf.Base.dll
  • Syncfusion.HtmlConverter.Base.dll

    Nota: Tras la instalación del conversor HTML a PDF, se creará una carpeta en la ruta C:Archivos de programa (x86)\Syncfusion\HTMLConverter\18.2.0.44\BlinkBinaries. Debe copiar esta ruta y utilizarla en el proyecto.

3. Comparar: Convertir una cadena HTML a PDF

Es muy importante disponer de la funcionalidad para crear un archivo PDF a partir de una cadena HTML en el desarrollo de aplicaciones empresariales. Lo mejor es utilizar un componente eficaz (Herramienta de terceros) para ahorrar tiempo. Examinemos los resultados y determinemos cuál es el mejor.

3.1. Generar un archivo PDF a partir de una cadena de datos HTML con IronPDF

En primer lugar, veremos cómo funciona IronPDF para generar archivos PDF mediante una cadena HTML en C#.

using IronPdf;
{
    //crear convertidor de renderizado
    var converter = new ChromePdfRenderer();
    //Texto HTML
    string HTML_Str = "<h1>Welcome To IronPDF</h1> <h2>HTML String to PDF</h2> <h3>Hello World!</h3>";
    //convertir cadena HTML a archivo PDF
    using var PDF = converter.RenderHtmlAsPdf(HTML_Str);
    //Guardar el archivo
    PDF.SaveAs("sample.pdf");
}
using IronPdf;
{
    //crear convertidor de renderizado
    var converter = new ChromePdfRenderer();
    //Texto HTML
    string HTML_Str = "<h1>Welcome To IronPDF</h1> <h2>HTML String to PDF</h2> <h3>Hello World!</h3>";
    //convertir cadena HTML a archivo PDF
    using var PDF = converter.RenderHtmlAsPdf(HTML_Str);
    //Guardar el archivo
    PDF.SaveAs("sample.pdf");
}
Private ReadOnly Property IronPdf() As using
	'crear convertidor de renderizado
	Dim converter = New ChromePdfRenderer()
	'Texto HTML
	Dim HTML_Str As String = "<h1>Welcome To IronPDF</h1> <h2>HTML String to PDF</h2> <h3>Hello World!</h3>"
	'convertir cadena HTML a archivo PDF
	Dim PDF = converter.RenderHtmlAsPdf(HTML_Str)
	'Guardar el archivo
	PDF.SaveAs("sample.pdf")
End Property
VB   C#

La siguiente captura de pantalla es del archivo PDF recién generado por el código IronPDF anterior:

3.2 Generar un archivo PDF a partir de una cadena HTML con Syncfusion

using Syncfusion.Pdf;
using Syncfusion.HtmlConverter;
{
      //crear convertidor y especificar motor de renderizado
    ChromePdfRendererConverter Converter = new ChromePdfRendererConverter(HtmlRenderingEngine.Blink);
     //  inicializar los ajustes del convertidor de parpadeo
    BlinkConverterSettings Settings = new BlinkConverterSettings();
     //Texto HTML
    string HTML_Str = "<h1>Welcome To Syncfusion PDF Viewer</h1> <h2>HTML String to PDF</h2> <h3>Hello World!</h3>";
    //Asignar ruta de carpeta a BlinkBinaries
    Settings.BlinkPath = "BlinkBinaries folder Path";
    //Asignar el ajuste al convertidor
    Converter.ConverterSettings = Settings;
    string baseUrl = "images and files folder Path";
    //convertir cadena HTML a archivo PDF
    using PdfDocument PDF = Converter.Convert(HTML_Str, baseUrl);
    //Guardar el archivo
    PDF.Save("sample.pdf");
    //Cerrar el documento abierto
    PDF.Close(true);
}
using Syncfusion.Pdf;
using Syncfusion.HtmlConverter;
{
      //crear convertidor y especificar motor de renderizado
    ChromePdfRendererConverter Converter = new ChromePdfRendererConverter(HtmlRenderingEngine.Blink);
     //  inicializar los ajustes del convertidor de parpadeo
    BlinkConverterSettings Settings = new BlinkConverterSettings();
     //Texto HTML
    string HTML_Str = "<h1>Welcome To Syncfusion PDF Viewer</h1> <h2>HTML String to PDF</h2> <h3>Hello World!</h3>";
    //Asignar ruta de carpeta a BlinkBinaries
    Settings.BlinkPath = "BlinkBinaries folder Path";
    //Asignar el ajuste al convertidor
    Converter.ConverterSettings = Settings;
    string baseUrl = "images and files folder Path";
    //convertir cadena HTML a archivo PDF
    using PdfDocument PDF = Converter.Convert(HTML_Str, baseUrl);
    //Guardar el archivo
    PDF.Save("sample.pdf");
    //Cerrar el documento abierto
    PDF.Close(true);
}
Imports Syncfusion.Pdf
Private ReadOnly Property Syncfusion_HtmlConverter() As using Implements Syncfusion.HtmlConverter
	  'crear convertidor y especificar motor de renderizado
	Dim Converter As New ChromePdfRendererConverter(HtmlRenderingEngine.Blink)
	 '  inicializar los ajustes del convertidor de parpadeo
	Dim Settings As New BlinkConverterSettings()
	 'Texto HTML
	Dim HTML_Str As String = "<h1>Welcome To Syncfusion PDF Viewer</h1> <h2>HTML String to PDF</h2> <h3>Hello World!</h3>"
	'Asignar ruta de carpeta a BlinkBinaries
	Settings.BlinkPath = "BlinkBinaries folder Path"
	'Asignar el ajuste al convertidor
	Converter.ConverterSettings = Settings
	Dim baseUrl As String = "images and files folder Path"
	'convertir cadena HTML a archivo PDF
	Using PDF As PdfDocument = Converter.Convert(HTML_Str, baseUrl)
		'Guardar el archivo
		PDF.Save("sample.pdf")
		'Cerrar el documento abierto
		PDF.Close(True)
	End Using
End Property
VB   C#

La siguiente captura de pantalla es del nuevo archivo PDF generado por el código anterior:

3.3 Comparación Conclusión

Hemos visto tanto las estructuras de programación como las funciones proporcionadas. IronPDF tiene menos líneas de código, con una nomenclatura sencilla. Por otro lado, Syncfusion tiene muchas líneas de código con una estructura de codificación compleja.

El archivo generado por IronPDF tiene un aspecto más legible, porque establece automáticamente el margen superior, izquierdo y derecho.

4. Comparar: Generar PDF a partir de URL

Veamos otro caso de uso básico, la necesidad de crear un archivo PDF contra cualquier URL. Para ello, vemos tanto el código de trabajo como las funcionalidades.

4.1. URL a PDF con IronPDF

using IronPdf;
{
   //crear convertidor de renderizado
   var converter = new IronPdf.ChromePdfRenderer();
   //Especificar URL 
   using var PDF = converter.RenderUrlAsPdf("URL");
   //Guardar el archivo
   PDF.SaveAs("Path + name.pdf");
}
using IronPdf;
{
   //crear convertidor de renderizado
   var converter = new IronPdf.ChromePdfRenderer();
   //Especificar URL 
   using var PDF = converter.RenderUrlAsPdf("URL");
   //Guardar el archivo
   PDF.SaveAs("Path + name.pdf");
}
Private ReadOnly Property IronPdf() As using
   'crear convertidor de renderizado
   Dim converter = New IronPdf.ChromePdfRenderer()
   'Especificar URL 
   Dim PDF = converter.RenderUrlAsPdf("URL")
   'Guardar el archivo
   PDF.SaveAs("Path + name.pdf")
End Property
VB   C#

4.2. URL a PDF con Syncfusion

using Syncfusion.Pdf;
using Syncfusion.HtmlConverter;
{
   //crear convertidor y especificar motor de renderizado
   ChromePdfRendererConverter converter = new ChromePdfRendererConverter(HtmlRenderingEngine.Blink);
   //  inicializar los ajustes del convertidor de parpadeo
   BlinkConverterSettings blinkConverterSettings = new BlinkConverterSettings();
   //Asignar ruta de carpeta a BlinkBinaries
   blinkConverterSettings.BlinkPath ="BlinkBinaries Folder Path";
   //Asignar el ajuste al convertidor
   converter.ConverterSettings = blinkConverterSettings;
   //Especificar URL
   using PdfDocument PDF = converter.Convert("URL");
   //Guardar el archivo
   PDF.Save("Path + name.pdf");
   //Cerrar documento
   PDF.Close(true);
}
using Syncfusion.Pdf;
using Syncfusion.HtmlConverter;
{
   //crear convertidor y especificar motor de renderizado
   ChromePdfRendererConverter converter = new ChromePdfRendererConverter(HtmlRenderingEngine.Blink);
   //  inicializar los ajustes del convertidor de parpadeo
   BlinkConverterSettings blinkConverterSettings = new BlinkConverterSettings();
   //Asignar ruta de carpeta a BlinkBinaries
   blinkConverterSettings.BlinkPath ="BlinkBinaries Folder Path";
   //Asignar el ajuste al convertidor
   converter.ConverterSettings = blinkConverterSettings;
   //Especificar URL
   using PdfDocument PDF = converter.Convert("URL");
   //Guardar el archivo
   PDF.Save("Path + name.pdf");
   //Cerrar documento
   PDF.Close(true);
}
Imports Syncfusion.Pdf
Private ReadOnly Property Syncfusion_HtmlConverter() As using Implements Syncfusion.HtmlConverter
   'crear convertidor y especificar motor de renderizado
   Dim converter As New ChromePdfRendererConverter(HtmlRenderingEngine.Blink)
   '  inicializar los ajustes del convertidor de parpadeo
   Dim blinkConverterSettings As New BlinkConverterSettings()
   'Asignar ruta de carpeta a BlinkBinaries
   blinkConverterSettings.BlinkPath ="BlinkBinaries Folder Path"
   'Asignar el ajuste al convertidor
   converter.ConverterSettings = blinkConverterSettings
   'Especificar URL
   Using PDF As PdfDocument = converter.Convert("URL")
	   'Guardar el archivo
	   PDF.Save("Path + name.pdf")
	   'Cerrar documento
	   PDF.Close(True)
   End Using
End Property
VB   C#

Syncfusion requiere una ruta de carpeta BlinkBinaries

¿Qué es el Ruta de la carpeta BlinkBinaries?

Cuando instalamos, necesitamos utilizar algunos archivos de prerrequisitos básicos y DLLs (Bibliotecas de enlace dinámico)que existen en la carpeta BlinkBinaries. Esta carpeta se generará automáticamente en C:Archivos de programa (x86)\Syncfusion\HTMLConverter después de la instalación (Conversor de HTML a PDF). En tal caso, podemos copiar la carpeta BlinkBinaries y pegarla en otra unidad, y luego indicar su ruta en el programa.

IronPDF no requiere rutas de carpetas específicas

Por otro lado, IronPDF no tiene este tipo de requisitos, ya que no necesitamos añadir una ruta de carpeta específica al proyecto, ni una instalación especial en el servidor. El objetivo de IronPDF es minimizar el trabajo del desarrollador en la medida de lo posible y ofrecerle una forma de trabajar con archivos PDF sin dependencias ni requisitos previos. Por lo tanto, utilizando IronPDF, sólo tiene que añadir un archivo IronPDF.dll en su proyecto y todo está en su mano.

4.3. Comparación Conclusión

La salida real del documento de ambos ejemplos de URL a PDF es la misma, pero podemos ver que hay una gran diferencia de codificación entre los dos componentes.

Una vez más, IronPDF proporciona una estructura sencilla con sólo unas pocas líneas de código. Usar Syncfusion, por otro lado, significa que tenemos que escribir muchas líneas de código y establecer un proceso extra con el requerimiento de la ruta de la carpeta BlinkBinaries.

5. Comparar: Añadir encabezado y pie de página PDF

Veamos otro caso de uso: queremos añadir un "encabezado" y un "pie" en el archivo PDF.

5.1. Añadir encabezado y pie de página con IronPDF

using IronPdf; 
{
   var converter = new IronPdf.ChromePdfRenderer();
   converter.RenderingOptions.MarginTop = 100;
   converter.RenderingOptions.MarginTop = 50;  
   converter.RenderingOptions.MarginBottom = 50;
   converter.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
   //ajuste Cabecera
   converter.RenderingOptions.TextHeader = new TextHeaderFooter()
   {     
      CenterText = "header title",
      DrawDividerLine = true,
      FontSize = 16,
   };
   //Configuración del pie de página
   converter.RenderingOptions.TextFooter = new TextHeaderFooter()
   {
      LeftText = "{date} {time}",
      RightText = "Page {page} of {total-pages}",
      DrawDividerLine = true,
      FontSize = 14      
   };

   var PDF = converter.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");

   PDF.SaveAs("Path + name.pdf");
}
using IronPdf; 
{
   var converter = new IronPdf.ChromePdfRenderer();
   converter.RenderingOptions.MarginTop = 100;
   converter.RenderingOptions.MarginTop = 50;  
   converter.RenderingOptions.MarginBottom = 50;
   converter.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print;
   //ajuste Cabecera
   converter.RenderingOptions.TextHeader = new TextHeaderFooter()
   {     
      CenterText = "header title",
      DrawDividerLine = true,
      FontSize = 16,
   };
   //Configuración del pie de página
   converter.RenderingOptions.TextFooter = new TextHeaderFooter()
   {
      LeftText = "{date} {time}",
      RightText = "Page {page} of {total-pages}",
      DrawDividerLine = true,
      FontSize = 14      
   };

   var PDF = converter.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>");

   PDF.SaveAs("Path + name.pdf");
}
Private ReadOnly Property IronPdf() As using
   Dim converter = New IronPdf.ChromePdfRenderer()
   converter.RenderingOptions.MarginTop = 100
   converter.RenderingOptions.MarginTop = 50
   converter.RenderingOptions.MarginBottom = 50
   converter.RenderingOptions.CssMediaType = IronPdf.Rendering.PdfCssMediaType.Print
   'ajuste Cabecera
   converter.RenderingOptions.TextHeader = New TextHeaderFooter() With {
	   .CenterText = "header title",
	   .DrawDividerLine = True,
	   .FontSize = 16
   }
   'Configuración del pie de página
   converter.RenderingOptions.TextFooter = New TextHeaderFooter() With {
	   .LeftText = "{date} {time}",
	   .RightText = "Page {page} of {total-pages}",
	   .DrawDividerLine = True,
	   .FontSize = 14
   }

   Dim PDF = converter.RenderHtmlAsPdf("<h1>Hello IronPdf</h1>")

   PDF.SaveAs("Path + name.pdf")
End Property
VB   C#

Al trabajar con IronPDF, puede establecer el encabezado y el pie de página por calidades predefinidas utilizando las siguientes propiedades:

  • CenterText para establecer el texto de la cabecera o pie de página en Centro.
  • LeftText para establecer el texto de la cabecera o pie de página en el lado izquierdo.
  • RightText para establecer el texto del encabezado o pie de página en el lado derecho.
  • DrawDividerLine para dibujar una línea que separe la cabecera o el pie del contenido.
  • FontFamily para establecer la familia de fuentes.
  • FontSize para ajustar el tamaño de la fuente.
  • Spacing para establecer el espacio entre la cabecera y el contenido de la página.

    Para minimizar el trabajo para nosotros como desarrolladores y maximizar el rendimiento, IronPDF también proporciona atributos de encabezado y pie de página que podemos necesitar utilizar en nuestro día a día.

  • {página} para imprimir el número de página.
  • {total-páginas} para imprimir el número total de páginas.
  • {url} para imprimir la URL de la página web renderizada.
  • {fecha} para imprimir la fecha actual.
  • {tiempo} para imprimir la hora actual.
  • {html-title} para imprimir el título de la página web.
  • {título pdf} para imprimir el título del documento.

5.2. Añadir encabezado y pie de página con Syncfusion

using Syncfusion.Pdf;
using Syncfusion.HtmlConverter;
using Syncfusion.Pdf.Graphics;
{
   PdfDocument PDF = new PdfDocument();
   PdfPage pdfPage = PDF.Pages.Add();
   RectangleF bounds = new RectangleF(0, 0, PDF.Pages [0].GetClientSize().Width, 50);
   PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 24);
   PdfSolidBrush brush = new PdfSolidBrush(System.Drawing.Color.FromArgb(44, 71, 120));
   //Configuración del encabezado de página
   PdfPageTemplateElement header = new PdfPageTemplateElement(bounds);         
   header.Graphics.DrawString("Hello Title", font, brush, bounds);
   PDF.Template.Top = header;
   //Configuración del pie de página
   PdfPageTemplateElement footer = new PdfPageTemplateElement(bounds);          
   footer.Graphics.DrawString("Footer", font, brush, bounds);
   PDF.Template.Bottom = footer;
   //guardar el archivo
   PDF.Save("Path + name.pdf");
}
using Syncfusion.Pdf;
using Syncfusion.HtmlConverter;
using Syncfusion.Pdf.Graphics;
{
   PdfDocument PDF = new PdfDocument();
   PdfPage pdfPage = PDF.Pages.Add();
   RectangleF bounds = new RectangleF(0, 0, PDF.Pages [0].GetClientSize().Width, 50);
   PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 24);
   PdfSolidBrush brush = new PdfSolidBrush(System.Drawing.Color.FromArgb(44, 71, 120));
   //Configuración del encabezado de página
   PdfPageTemplateElement header = new PdfPageTemplateElement(bounds);         
   header.Graphics.DrawString("Hello Title", font, brush, bounds);
   PDF.Template.Top = header;
   //Configuración del pie de página
   PdfPageTemplateElement footer = new PdfPageTemplateElement(bounds);          
   footer.Graphics.DrawString("Footer", font, brush, bounds);
   PDF.Template.Bottom = footer;
   //guardar el archivo
   PDF.Save("Path + name.pdf");
}
Imports Syncfusion.Pdf
Imports Syncfusion.HtmlConverter
Private ReadOnly Property Pdf_Graphics() As using Implements Syncfusion.Pdf.Graphics
   Dim PDF As New PdfDocument()
   Dim pdfPage As PdfPage = PDF.Pages.Add()
   Dim bounds As New RectangleF(0, 0, PDF.Pages (0).GetClientSize().Width, 50)
   Dim font As PdfFont = New PdfStandardFont(PdfFontFamily.Helvetica, 24)
   Dim brush As New PdfSolidBrush(System.Drawing.Color.FromArgb(44, 71, 120))
   'Configuración del encabezado de página
   Dim header As New PdfPageTemplateElement(bounds)
   header.Graphics.DrawString("Hello Title", font, brush, bounds)
   PDF.Template.Top = header
   'Configuración del pie de página
   Dim footer As New PdfPageTemplateElement(bounds)
   footer.Graphics.DrawString("Footer", font, brush, bounds)
   PDF.Template.Bottom = footer
   'guardar el archivo
   PDF.Save("Path + name.pdf")
End Property
VB   C#

5.3. Conclusión de la comparación

Cuando utilizamos Syncfusion, necesitamos trabajar con gráficos para imprimir el encabezado y el pie de página en las páginas PDF. No utiliza la librería de gráficos .NET, tiene su propia librería y estructura de programación, con la que puede ser difícil trabajar y requiere un paso extra.

Por ejemplo, si queremos imprimir el número de página actual del total de páginas, tendríamos que escribir las siguientes líneas de código:

//la fuente y el pincel se definen en el código de ejemplo anterior
PdfPageNumberField pageNumber = new PdfPageNumberField(font, brush);
PdfPageCountField count = new PdfPageCountField(font, brush);
PdfCompositeField compositeField = new PdfCompositeField(font, brush, "Page {0} of {1}", pageNumber, count);
compositeField.Bounds = footer.Bounds;
compositeField.Draw(footer.Graphics, new PointF(470, 40));
PDF.Template.Bottom = footer;
//la fuente y el pincel se definen en el código de ejemplo anterior
PdfPageNumberField pageNumber = new PdfPageNumberField(font, brush);
PdfPageCountField count = new PdfPageCountField(font, brush);
PdfCompositeField compositeField = new PdfCompositeField(font, brush, "Page {0} of {1}", pageNumber, count);
compositeField.Bounds = footer.Bounds;
compositeField.Draw(footer.Graphics, new PointF(470, 40));
PDF.Template.Bottom = footer;
'la fuente y el pincel se definen en el código de ejemplo anterior
Dim pageNumber As New PdfPageNumberField(font, brush)
Dim count As New PdfPageCountField(font, brush)
Dim compositeField As New PdfCompositeField(font, brush, "Page {0} of {1}", pageNumber, count)
compositeField.Bounds = footer.Bounds
compositeField.Draw(footer.Graphics, New PointF(470, 40))
PDF.Template.Bottom = footer
VB   C#

Por otro lado, utilizando IronPDF, podemos completar la misma tarea con una sola línea:

Page {page} of {total-pages}
Page {page} of {total-pages}
Page
If True Then
	page
End If
[of]
If True Then
'INSTANT VB TODO TASK: The following line uses invalid syntax:
'	total-pages}
VB   C#

6. Comparar: Añadir marca de agua

Otro requisito habitual es añadir una marca de agua al archivo PDF. Supongamos que queremos añadir esta marca de agua por los siguientes aspectos:

  • en una página específica
  • en páginas seleccionadas
  • en todas las páginas.

    Comparemos cómo lograr cada uno de estos objetivos utilizando los dos componentes de software diferentes.

6.1. Añadir marca de agua a 1 página específica con IronPDF

Convirtamos una URL en un documento PDF con varias páginas, pero añadamos una marca de agua sólo a una página concreta, dejando el resto igual.

Para añadir una marca de agua en una página específica, IronPDF proporciona la función WatermarkPage(), y toma diferentes tipos de parámetros para establecer la marca de agua.

Podemos definir esta función:

WatermarkPage(Text, PageIndex, WaterMarkLocation,  Opacity, Rotation, Hyperlink);
WatermarkPage(Text, PageIndex, WaterMarkLocation,  Opacity, Rotation, Hyperlink);
WatermarkPage(Text, PageIndex, WaterMarkLocation, Opacity, Rotation, Hyperlink)
VB   C#
  • Text es una cadena que se escribe como Marca de Agua.
  • PageIndex es el número de página donde se va a añadir WaterMark
  • WaterMarkLocation para fijar la ubicación del texto de la marca de agua, se puede ajustar con lo siguiente: TopLeft, TopCenter, TopRight, MiddleLeft, MiddleCenter, MiddleRight, BottomLeft, BottomCenter, BottomRight.
  • Opacity es para fijar la transparencia
  • Rotation sirve para fijar el ángulo del texto
  • Hyperlink para adjuntar un enlace al WaterMark

    El texto estaría en formato HTML y podemos establecer sus propiedades de estilo usando CSS o javascript como:

string Text = "<h2 style='color:red'>Hello WaterMark</h2>";
string Text = "<h2 style='color:red'>Hello WaterMark</h2>";
Dim Text As String = "<h2 style='color:red'>Hello WaterMark</h2>"
VB   C#

Ahora, veamos el ejemplo completo de cómo agregar WaterMark en la página específica usando IronPDF en C#:

using IronPdf
{
    var converter = new ChromePdfRenderer();
    using var pdf= converter.RenderUrlAsPdf("https://yandex.com/");
    pdf.WatermarkPage("<h2 style='color:red'>Sample Water Mark</h2>", 0, PdfDocument.WaterMarkLocation.MiddleCenter, 50, -45);
    pdf.SaveAs("sample.pdf"); 
}
using IronPdf
{
    var converter = new ChromePdfRenderer();
    using var pdf= converter.RenderUrlAsPdf("https://yandex.com/");
    pdf.WatermarkPage("<h2 style='color:red'>Sample Water Mark</h2>", 0, PdfDocument.WaterMarkLocation.MiddleCenter, 50, -45);
    pdf.SaveAs("sample.pdf"); 
}
Private ReadOnly Property IronPdf() As using
	Dim converter = New ChromePdfRenderer()
	Dim pdf= converter.RenderUrlAsPdf("https://yandex.com/")
	pdf.WatermarkPage("<h2 style='color:red'>Sample Water Mark</h2>", 0, PdfDocument.WaterMarkLocation.MiddleCenter, 50, -45)
	pdf.SaveAs("sample.pdf")
End Property
VB   C#

A continuación se muestra una captura de pantalla del documento PDF generado "sample.pdf":

6.2. Añadir marca de agua a una página específica con Syncfusion

Para añadir una marca de agua en un archivo PDF, primero debe aprender a trabajar con esta biblioteca específica de gráficos PDF. No se puede utilizar la biblioteca gráfica de Microsoft.

Nota: También necesitas añadir la ruta de la carpeta BlinkBinaries en tu proyecto. Esta carpeta se creará después de la instalación en `C:Archivos de programa (x86)\Sincronización.

Ahora, vamos a ver el ejemplo de cómo añadir una WaterMark en la página específica.

using Syncfusion.Pdf;
using Syncfusion.HtmlConverter;
using Syncfusion.Pdf.Graphics;
{
    ChromePdfRendererConverter htmlConverter = new ChromePdfRendererConverter(HtmlRenderingEngine.Blink);
    BlinkConverterSettings blinkConverterSettings = new BlinkConverterSettings();
    blinkConverterSettings.BlinkPath = "BlinkBinaries Folder Path";
    htmlConverter.ConverterSettings = blinkConverterSettings;
    PdfDocument document = htmlConverter.Convert("https://yandex.com/");
    PdfPageBase pdfPage = document.Pages [0];
    PdfGraphics graphics = pdfPage.Graphics;
    PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 15);
    PdfGraphicsState state = graphics.Save();
    graphics.SetTransparency(0.7f);
    graphics.RotateTransform(-40);
    graphics.DrawString("Sample Water Mark", font, PdfPens.Red, PdfBrushes.Red, new PointF(-100, 550));
    document.Save("sample.pdf");
    document.Close(true);
    }
using Syncfusion.Pdf;
using Syncfusion.HtmlConverter;
using Syncfusion.Pdf.Graphics;
{
    ChromePdfRendererConverter htmlConverter = new ChromePdfRendererConverter(HtmlRenderingEngine.Blink);
    BlinkConverterSettings blinkConverterSettings = new BlinkConverterSettings();
    blinkConverterSettings.BlinkPath = "BlinkBinaries Folder Path";
    htmlConverter.ConverterSettings = blinkConverterSettings;
    PdfDocument document = htmlConverter.Convert("https://yandex.com/");
    PdfPageBase pdfPage = document.Pages [0];
    PdfGraphics graphics = pdfPage.Graphics;
    PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 15);
    PdfGraphicsState state = graphics.Save();
    graphics.SetTransparency(0.7f);
    graphics.RotateTransform(-40);
    graphics.DrawString("Sample Water Mark", font, PdfPens.Red, PdfBrushes.Red, new PointF(-100, 550));
    document.Save("sample.pdf");
    document.Close(true);
    }
Imports Syncfusion.Pdf
Imports Syncfusion.HtmlConverter
Private ReadOnly Property Pdf_Graphics() As using Implements Syncfusion.Pdf.Graphics
	Dim htmlConverter As New ChromePdfRendererConverter(HtmlRenderingEngine.Blink)
	Dim blinkConverterSettings As New BlinkConverterSettings()
	blinkConverterSettings.BlinkPath = "BlinkBinaries Folder Path"
	htmlConverter.ConverterSettings = blinkConverterSettings
	Dim document As PdfDocument = htmlConverter.Convert("https://yandex.com/")
	Dim pdfPage As PdfPageBase = document.Pages (0)
'INSTANT VB NOTE: The local variable graphics was renamed since Visual Basic will not allow local variables with the same name as their enclosing function or property:
	Dim graphics_Conflict As PdfGraphics = pdfPage.Graphics
	Dim font As PdfFont = New PdfStandardFont(PdfFontFamily.Helvetica, 15)
	Dim state As PdfGraphicsState = graphics_Conflict.Save()
	graphics_Conflict.SetTransparency(0.7F)
	graphics_Conflict.RotateTransform(-40)
	graphics_Conflict.DrawString("Sample Water Mark", font, PdfPens.Red, PdfBrushes.Red, New PointF(-100, 550))
	document.Save("sample.pdf")
	document.Close(True)
End Property
VB   C#

Con la siguiente captura de pantalla del documento PDF generado sample.pdf:

6.3. Añadir marca de agua a las páginas seleccionadas con IronPDF

IronPDF proporciona una forma sencilla para cuando necesite añadir una Marca de Agua en muchas páginas, pero no en todas. Para ello, podemos utilizar `WatermarkPages()y puede definirse como:

WatermarkPages(Text, Array of page Indexes, WaterMarkLocation, Opacity, Rotation, Hyperlink);
WatermarkPages(Text, Array of page Indexes, WaterMarkLocation, Opacity, Rotation, Hyperlink);
WatermarkPages(Text, Array [of] page Indexes, WaterMarkLocation, Opacity, Rotation, Hyperlink)
VB   C#

En esta función, todos los parámetros funcionan igual que en la función anterior, pero con el nuevo elemento Array of page Indexes:

Una matriz de índices de página es una matriz de números enteros para definir en qué páginas se añadirá la marca de agua.

Supongamos que queremos añadir una marca de agua "Texto" sólo en las páginas "1", "3", "5" del archivo PDF, entonces haríamos lo siguiente. El resto de las páginas permanecen igual.

pdf.WatermarkPages("<h2 style='color:red'>SAMPLE</h2>", new [] {1,3,5 }, PdfDocument.WaterMarkLocation.MiddleCenter, 50, -45);
pdf.WatermarkPages("<h2 style='color:red'>SAMPLE</h2>", new [] {1,3,5 }, PdfDocument.WaterMarkLocation.MiddleCenter, 50, -45);
pdf.WatermarkPages("<h2 style='color:red'>SAMPLE</h2>", {1,3,5 }, PdfDocument.WaterMarkLocation.MiddleCenter, 50, -45)
VB   C#

6.4. Añadir marca de agua a las páginas seleccionadas con Syncfusion

No existe ninguna función predefinida para aplicar una marca de agua a páginas específicas. En cambio, puede ser posible haciendo que su estructura de programación utilizando bucle y condiciones. De este modo, la estructura de programación se vuelve compleja y tenemos que escribir muchas líneas de código.

6.5. Añadir marca de agua en todas las páginas con IronPDF

IronPDF proporciona una función predefinida para este requisito común, para añadir una Marca de Agua en todas las páginas, llamada WatermarkAllPages(). No es necesario iterar para añadir la Marca de Agua en cada página por separado, basta con llamar a la función una vez y la Marca de Agua se añadirá en cada página del archivo PDF. Veamos el siguiente ejemplo:

using IronPdf 
{
  var converter = new ChromePdfRenderer();
  using var pdf= converter.RenderUrlAsPdf("URL");
  pdf.WatermarkAllPages("<h2 style='color:red'>SAMPLE</h2>", PdfDocument.WaterMarkLocation.MiddleCenter, 50, -45);
  pdf.SaveAs("sample.pdf");
}
using IronPdf 
{
  var converter = new ChromePdfRenderer();
  using var pdf= converter.RenderUrlAsPdf("URL");
  pdf.WatermarkAllPages("<h2 style='color:red'>SAMPLE</h2>", PdfDocument.WaterMarkLocation.MiddleCenter, 50, -45);
  pdf.SaveAs("sample.pdf");
}
Private ReadOnly Property IronPdf() As using
  Dim converter = New ChromePdfRenderer()
  Dim pdf= converter.RenderUrlAsPdf("URL")
  pdf.WatermarkAllPages("<h2 style='color:red'>SAMPLE</h2>", PdfDocument.WaterMarkLocation.MiddleCenter, 50, -45)
  pdf.SaveAs("sample.pdf")
End Property
VB   C#

6.6. Añadir marca de agua en todas las páginas con Syncfusion

En este caso tampoco existe una función predefinida para añadir una marca de agua en todas las páginas de un archivo PDF.

Puede hacerse iterando la página PDF. De este modo, las WaterMark se irán añadiendo en una página iterada una a una. La iteración puede realizarse mediante bucles for o while. Veamos el siguiente ejemplo de cómo añadir WaterMark.

using Syncfusion.Pdf;
using Syncfusion.HtmlConverter;
using Syncfusion.Pdf.Graphics;
{
    ChromePdfRendererConverter htmlConverter = new ChromePdfRendererConverter(HtmlRenderingEngine.Blink);
    BlinkConverterSettings blinkConverterSettings = new BlinkConverterSettings();
    blinkConverterSettings.BlinkPath ="BlinkBinaries Folder Path";
    blinkConverterSettings.EnableJavaScript = false;
    htmlConverter.ConverterSettings = blinkConverterSettings;
    PdfDocument document = htmlConverter.Convert("URL");

    for (int i = 0; i < document.Pages.Count; i++)
    {
        PdfPageBase pdfPage = document.Pages [i];
        PdfGraphics graphics = pdfPage.Graphics;
        PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20);
        PdfGraphicsState state = graphics.Save();
        graphics.SetTransparency(0.25f);
        graphics.RotateTransform(-40);
        graphics.DrawString("Sample", font, PdfPens.Red, PdfBrushes.Red, new PointF(-150, 450));

    }
    document.Save("sample.pdf");
    document.Close(true);
}
using Syncfusion.Pdf;
using Syncfusion.HtmlConverter;
using Syncfusion.Pdf.Graphics;
{
    ChromePdfRendererConverter htmlConverter = new ChromePdfRendererConverter(HtmlRenderingEngine.Blink);
    BlinkConverterSettings blinkConverterSettings = new BlinkConverterSettings();
    blinkConverterSettings.BlinkPath ="BlinkBinaries Folder Path";
    blinkConverterSettings.EnableJavaScript = false;
    htmlConverter.ConverterSettings = blinkConverterSettings;
    PdfDocument document = htmlConverter.Convert("URL");

    for (int i = 0; i < document.Pages.Count; i++)
    {
        PdfPageBase pdfPage = document.Pages [i];
        PdfGraphics graphics = pdfPage.Graphics;
        PdfFont font = new PdfStandardFont(PdfFontFamily.Helvetica, 20);
        PdfGraphicsState state = graphics.Save();
        graphics.SetTransparency(0.25f);
        graphics.RotateTransform(-40);
        graphics.DrawString("Sample", font, PdfPens.Red, PdfBrushes.Red, new PointF(-150, 450));

    }
    document.Save("sample.pdf");
    document.Close(true);
}
Imports Syncfusion.Pdf
Imports Syncfusion.HtmlConverter
Private ReadOnly Property Pdf_Graphics() As using Implements Syncfusion.Pdf.Graphics
	Dim htmlConverter As New ChromePdfRendererConverter(HtmlRenderingEngine.Blink)
	Dim blinkConverterSettings As New BlinkConverterSettings()
	blinkConverterSettings.BlinkPath ="BlinkBinaries Folder Path"
	blinkConverterSettings.EnableJavaScript = False
	htmlConverter.ConverterSettings = blinkConverterSettings
	Dim document As PdfDocument = htmlConverter.Convert("URL")

	For i As Integer = 0 To document.Pages.Count - 1
		Dim pdfPage As PdfPageBase = document.Pages (i)
'INSTANT VB NOTE: The local variable graphics was renamed since Visual Basic will not allow local variables with the same name as their enclosing function or property:
		Dim graphics_Conflict As PdfGraphics = pdfPage.Graphics
		Dim font As PdfFont = New PdfStandardFont(PdfFontFamily.Helvetica, 20)
		Dim state As PdfGraphicsState = graphics_Conflict.Save()
		graphics_Conflict.SetTransparency(0.25F)
		graphics_Conflict.RotateTransform(-40)
		graphics_Conflict.DrawString("Sample", font, PdfPens.Red, PdfBrushes.Red, New PointF(-150, 450))

	Next i
	document.Save("sample.pdf")
	document.Close(True)
End Property
VB   C#

Para saber más sobre cómo iterar y añadir marca de aguapuede leer más.

7. Comparar: Licencias

Cuando tenemos que elegir un producto entre dos, el precio desempeña un papel muy importante a la hora de decidir qué producto debemos elegir. No podemos negar la importancia del precio de las licencias de componentes. En las empresas de desarrollo de aplicaciones empresariales, es muy importante cómo podemos completar el proyecto con el mínimo uso de recursos y presupuesto. Para ello, comparamos las ofertas de licencias.

IronPDF ofrece paquetes útiles para clientes basados en varios desarrolladores, así como opciones de redistribución SaaS y OEM. Más información Licencias IronPDF u obtenga una guía personalizada para sus necesidades de licencia en contacto con el equipo.

Alternativamente, Syncfusion no tiene paquetes predefinidos para empresas, sino que fija el precio sólo después de conocer la información de su empresa.


Acceso rápido a tutoriales

Descargar la guía de inicio rápido de C# HTML to PDF

Utilice la guía para facilitar el desarrollo de PDF para .NET, incluidas funciones para manipular, editar, generar y guardar PDFS en C# y VB.NET para su proyecto.

Descargar la Guía

Lea la documentación de IronPDF

Explore la Referencia de la API para la Biblioteca IronPDF, con características, clases, campos de métodos, espacios de nombres y enums.

Ver la referencia de la API
< ANTERIOR
iTextSharp C# HTML to PDF Alternativa para .NET Core
SIGUIENTE >
Wkhtmltopdf C# Comparación con Ejemplos de Código

¿Listo para empezar? Versión: 2024.6 recién publicada

Comenzar prueba gratuita Descargas totales: 9,541,998
Ver licencias >