Cómo estampar texto e imágenes en PDF

por Chaknith Bin

Estampar texto e imágenes en un PDF consiste en superponer contenido adicional a un documento PDF existente. Este contenido, a menudo denominado "sello", puede ser texto, imágenes o una combinación de ambos. Los sellos se suelen utilizar para añadir información, etiquetas, marcas de agua o anotaciones a un PDF.

Hay un total de 5 estampadores que se pueden utilizar en IronPdf. En este artículo hablaremos de TextStamper, ImageStamper y HTMLStamper. HTMLStamper es especialmente potente, ya que puede utilizar todas las características HTML junto con el estilo CSS.


Biblioteca NuGet C# para PDF

Instalar con NuGet

Install-Package IronPdf
o
Java PDF JAR

Descargar DLL

Descargar DLL

Instalar manualmente en su proyecto

Ejemplo de texto de sello

Primero, crea un objeto de la clase TextStamper. Este objeto contendrá todas las configuraciones para especificar cómo queremos que se muestre nuestro estampador de texto. Pasa el objeto TextStamper al método ApplyStamp. La propiedad Text será el texto mostrado. Además, podemos especificar la familia y el estilo de la fuente, así como la ubicación del sello.

:path=/static-assets/pdf/content-code-examples/how-to/stamp-text-image-stamp-text.cs
using IronPdf;
using IronPdf.Editing;

ChromePdfRenderer renderer = new ChromePdfRenderer();

PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");

//  Crear estampador de texto
TextStamper textStamper = new TextStamper()
{
    Text = "Text Stamper!",
    FontFamily = "Bungee Spice",
    UseGoogleFont = true,
    FontSize = 30,
    IsBold = true,
    IsItalic = true,
    VerticalAlignment = VerticalAlignment.Top,
};

//  Estampar el texto
pdf.ApplyStamp(textStamper);

pdf.SaveAs("stampText.pdf");
Imports IronPdf
Imports IronPdf.Editing

Private renderer As New ChromePdfRenderer()

Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>")

'  Crear estampador de texto
Private textStamper As New TextStamper() With {
	.Text = "Text Stamper!",
	.FontFamily = "Bungee Spice",
	.UseGoogleFont = True,
	.FontSize = 30,
	.IsBold = True,
	.IsItalic = True,
	.VerticalAlignment = VerticalAlignment.Top
}

'  Estampar el texto
pdf.ApplyStamp(textStamper)

pdf.SaveAs("stampText.pdf")
VB   C#

Salida PDF

Para obtener texto de varias líneas en TextStamper, utilice la etiqueta <br> como en HTML. Por ejemplo, "línea 1 <br> línea 2" producirá "línea 1" en la primera línea y "línea 2" en la segunda.


Ejemplo de imagen de sello

De forma similar al estampador de texto, primero creamos un objeto de la clase ImageStamper y luego utilizamos el método ApplyStamp para aplicar la imagen al documento. El segundo parámetro de este método también acepta un índice de página, que puede utilizarse para aplicar el sello a una o varias páginas. En el ejemplo siguiente, especificamos que la imagen debe estamparse en la página 1 del PDF.

Consejo
Todos los índices de páginas siguen una indexación basada en cero.

:path=/static-assets/pdf/content-code-examples/how-to/stamp-text-image-stamp-image.cs
using IronPdf;
using IronPdf.Editing;
using System;

ChromePdfRenderer renderer = new ChromePdfRenderer();

PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");

//  Crear estampador de imágenes
ImageStamper imageStamper = new ImageStamper(new Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg"))
{
    VerticalAlignment = VerticalAlignment.Top,
};

//  Estampar la imagen
pdf.ApplyStamp(imageStamper, 0);

pdf.SaveAs("stampImage.pdf");
Imports IronPdf
Imports IronPdf.Editing
Imports System

Private renderer As New ChromePdfRenderer()

Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>")

'  Crear estampador de imágenes
Private imageStamper As New ImageStamper(New Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg")) With {.VerticalAlignment = VerticalAlignment.Top}

'  Estampar la imagen
pdf.ApplyStamp(imageStamper, 0)

pdf.SaveAs("stampImage.pdf")
VB   C#

Salida PDF


Aplicar varios sellos

Utilice el método ApplyMultipleStamps para aplicar múltiples sellos al documento pasándole una matriz de sellos.

:path=/static-assets/pdf/content-code-examples/how-to/stamp-text-image-multiple-stamps.cs
using IronPdf;
using IronPdf.Editing;

ChromePdfRenderer renderer = new ChromePdfRenderer();

PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");

//  Crear dos sellos de texto
TextStamper stamper1 = new TextStamper()
{
    Text = "Text stamp 1",
    VerticalAlignment = VerticalAlignment.Top,
    HorizontalAlignment = HorizontalAlignment.Left,
};

TextStamper stamper2 = new TextStamper()
{
    Text = "Text stamp 2",
    VerticalAlignment = VerticalAlignment.Top,
    HorizontalAlignment = HorizontalAlignment.Right,
};

Stamper[] stampersToApply = { stamper1, stamper2 };

//  Aplicar varios sellos
pdf.ApplyMultipleStamps(stampersToApply);

pdf.SaveAs("multipleStamps.pdf");
Imports IronPdf
Imports IronPdf.Editing

Private renderer As New ChromePdfRenderer()

Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>")

'  Crear dos sellos de texto
Private stamper1 As New TextStamper() With {
	.Text = "Text stamp 1",
	.VerticalAlignment = VerticalAlignment.Top,
	.HorizontalAlignment = HorizontalAlignment.Left
}

Private stamper2 As New TextStamper() With {
	.Text = "Text stamp 2",
	.VerticalAlignment = VerticalAlignment.Top,
	.HorizontalAlignment = HorizontalAlignment.Right
}

Private stampersToApply() As Stamper = { stamper1, stamper2 }

'  Aplicar varios sellos
pdf.ApplyMultipleStamps(stampersToApply)

pdf.SaveAs("multipleStamps.pdf")
VB   C#

Salida PDF


Ubicación del sello

Para definir la colocación del sello, utilizamos una cuadrícula de 3x3 con tres columnas horizontales y tres filas verticales. Tiene opciones de alineación horizontal: izquierda, centro y derecha, así como de alineación vertical: arriba, en medio y abajo. Para mayor precisión, puede ajustar los desplazamientos horizontal y vertical de cada posición. Consulte la imagen siguiente para ver una representación visual de este concepto.

Ubicación del sello
  • AlineaciónHorizontal: La alineación horizontal del sello con respecto a la página.
  • AlineaciónVertical: La alineación vertical del sello con respecto a la página.
  • HorizontalOffset: El desplazamiento horizontal. El valor por defecto es 0, y la unidad por defecto es IronPdf.Editing.MeasurementUnit.Percentage. Los valores positivos indican un desplazamiento hacia la derecha, mientras que los negativos indican un desplazamiento hacia la izquierda.
  • VerticalOffset: El desplazamiento vertical. El valor por defecto es 0, y la unidad por defecto es IronPdf.Editing.MeasurementUnit.Percentage. Los valores positivos indican un desplazamiento hacia abajo, mientras que los negativos indican un desplazamiento hacia arriba.

    Para especificar las propiedades HorizontalOffset y VerticalOffset, instanciamos la clase Length. La unidad de medida por defecto para Longitud es un porcentaje, pero también es capaz de utilizar unidades de medida como pulgadas, milímetros, centímetros, píxeles y puntos.

Código

:path=/static-assets/pdf/content-code-examples/how-to/stamp-text-image-stamp-location.cs
using IronPdf.Editing;
using System;

//  Crear estampador de texto
ImageStamper imageStamper = new ImageStamper(new Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg"))
{
    HorizontalAlignment = HorizontalAlignment.Center,
    VerticalAlignment = VerticalAlignment.Top,

    //  Especifique los desplazamientos
    HorizontalOffset = new Length(10),
    VerticalOffset = new Length(10),
};
Imports IronPdf.Editing
Imports System

'  Crear estampador de texto
Private imageStamper As New ImageStamper(New Uri("https://ironpdf.com/img/svgs/iron-pdf-logo.svg")) With {
	.HorizontalAlignment = HorizontalAlignment.Center,
	.VerticalAlignment = VerticalAlignment.Top,
	.HorizontalOffset = New Length(10),
	.VerticalOffset = New Length(10)
}
VB   C#

Ejemplo de sello HTML

Hay otra clase de estampador que podemos utilizar para estampar tanto texto como imágenes. La clase HtmlStamper se puede utilizar para renderizar diseños HTML con estilos CSS y luego estamparlos en el documento PDF. La propiedad InnerHtmlBaseUrl se utiliza para especificar la URL base para los activos de la cadena HTML, como los archivos CSS y de imagen.

Código

:path=/static-assets/pdf/content-code-examples/how-to/stamp-text-image-stamp-html.cs
using IronPdf;
using IronPdf.Editing;

ChromePdfRenderer renderer = new ChromePdfRenderer();

PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>");

//  Crear estampador HTML
HtmlStamper htmlStamper = new HtmlStamper()
{
    Html = @"<img src='https://ironpdf.com/img/svgs/iron-pdf-logo.svg'>
    <h1>Iron Software</h1>",
    VerticalAlignment = VerticalAlignment.Top,
};

//  Estampar la estampadora HTML
pdf.ApplyStamp(htmlStamper);

pdf.SaveAs("stampHtml.pdf");
Imports IronPdf
Imports IronPdf.Editing

Private renderer As New ChromePdfRenderer()

Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>Example HTML Document!</h1>")

'  Crear estampador HTML
Private htmlStamper As New HtmlStamper() With {
	.Html = "<img src='https://ironpdf.com/img/svgs/iron-pdf-logo.svg'>
    <h1>Iron Software</h1>",
	.VerticalAlignment = VerticalAlignment.Top
}

'  Estampar la estampadora HTML
pdf.ApplyStamp(htmlStamper)

pdf.SaveAs("stampHtml.pdf")
VB   C#
  • Html: El fragmento HTML que se estampará en su PDF. Todas las referencias externas a archivos JavaScript, CSS e imágenes serán relativas a IronPdf.Editing.Stamper.InnerHtmlBaseUrl.
  • InnerHtmlBaseUrl: La URL HTML base para la que serán relativas las referencias a archivos CSS, Javascript e Imagen externos.

Explorar las opciones de Stamper

Además de las opciones mencionadas y explicadas anteriormente, a continuación encontrará más opciones disponibles para las clases de estampador.

  • Opacidad: Permite que el sello sea transparente. 0 es totalmente invisible, 100 es totalmente opaco.
  • Rotación: Rota el sello en el sentido de las agujas del reloj de 0 a 360 grados según se especifique.
  • MaxWidth: La anchura máxima del sello de salida.
  • MaxHeight: La altura máxima del sello de salida.
  • MinWidth: La anchura mínima del sello de salida.
  • MinHeight: La altura mínima del sello de salida.
  • Hipervínculo: Hace que los elementos estampados de este Stamper tengan un hipervínculo al hacer clic. Nota: Los enlaces HTML creados por enlace(a) las etiquetas no se reservan por estampación.
  • Escala: Aplica una escala porcentual a los sellos para hacerlos más grandes o más pequeños. Por defecto es 100 (Porcentaje)que no tiene ningún efecto.
  • IsStampBehindContent: Establecer a true para aplicar el sello detrás del contenido. Si el contenido es opaco, el sello puede ser invisible.
  • Esperar: Una envoltura conveniente para esperar varios eventos o simplemente esperar una cantidad de tiempo.
  • Tiempo de espera: Tiempo de espera de renderizado en segundos. El valor por defecto es 60.

Chaknith Bin

Ingeniero de software

Chaknith es el Sherlock Holmes de los desarrolladores. La primera vez que se le ocurrió que podría tener futuro en la ingeniería de software fue cuando hacía retos de código por diversión. Su trabajo se centra en IronXL e IronBarcode, pero se enorgullece de ayudar a los clientes con todos los productos. Chaknith aprovecha sus conocimientos, adquiridos hablando directamente con los clientes, para ayudar a mejorar los propios productos. Sus comentarios anecdóticos van más allá de los tickets de Jira y apoyan el desarrollo de productos, la documentación y el marketing, para mejorar la experiencia general del cliente.Cuando no está en la oficina, se le puede encontrar aprendiendo sobre aprendizaje automático, codificación y senderismo.