Pruebas en un entorno real
Pruebe en producción sin marcas de agua.
Funciona donde lo necesites.
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 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 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.
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.
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.
Utilizando NuGet Package Manager en su proyecto de Visual Studio, puede buscar IronPDF e instalarlo.
Install-Package IronPdf
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.
.NET framework 4.0 o superior en
Azure
.NET Standard 2.0 y Core 2 y 3 en
Azure
Servicios de alojamiento en nube incluidos
AWS
Puede utilizarse con
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.
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.
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.
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.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.
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.
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
La siguiente captura de pantalla es del archivo PDF recién generado por el código IronPDF anterior:
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
La siguiente captura de pantalla es del nuevo archivo PDF generado por el código anterior:
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.
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.
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
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
¿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.
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.
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.
Veamos otro caso de uso: queremos añadir un "encabezado" y un "pie" en el archivo 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");
}
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
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.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
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
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}
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 todas las páginas.
Comparemos cómo lograr cada uno de estos objetivos utilizando los dos componentes de software diferentes.
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)
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 WaterMarkWaterMarkLocation
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 transparenciaRotation
sirve para fijar el ángulo del textoHyperlink
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>"
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
A continuación se muestra una captura de pantalla del documento PDF generado "sample.pdf":
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
Con la siguiente captura de pantalla del documento PDF generado sample.pdf
:
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)
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)
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.
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
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
Para saber más sobre cómo iterar y añadir marca de aguapuede leer más.
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.
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íaExplore 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 API9 productos API .NET para sus documentos de oficina