Cómo dibujar texto y mapa de bits en PDFs en C#

Cómo Dibujar Texto y Mapa de Bits en PDFs usando C

This article was translated from English: Does it need improvement?
Translated
View the article in English

IronPDF te permite dibujar texto e imágenes en PDFs existentes utilizando los métodos DrawText y DrawBitmap, permitiendo la personalización con marcas de agua, logotipos, anotaciones y una apariencia visual mejorada sin alterar el contenido original.

Dibujar texto e imágenes en un PDF implica añadir contenido a un documento existente. IronPDF habilita esta función sin problemas. Al incorporar texto e imágenes, puedes personalizar PDFs con marcas de agua, logotipos y anotaciones, mejorando la apariencia visual y el branding del documento. Además, el texto y las imágenes facilitan la presentación de la información, la visualización de datos y la creación de formularios interactivos.

En España, la capacidad de dibujar texto e imágenes en PDFs existentes tiene aplicaciones fiscales y legales específicas. El sistema VeriFactu exige que cada factura incluya un código QR con la URL de verificación en el portal de la AEAT, que puede añadirse mediante DrawBitmap. Las facturas Facturae deben incluir el logotipo corporativo y el sello del emisor, que habitualmente se incrustan como imágenes. Los certificados digitales emitidos por la FNMT (Fábrica Nacional de Moneda y Timbre) para firma electrónica incluyen sellos visuales que pueden estamparse mediante DrawBitmap. Adicionalmente, añadir el NIF/CIF de la empresa como sello de texto con DrawText en las páginas de documentos internos es una práctica habitual en los flujos de trabajo de cumplimiento de la AEAT.

Inicio rápido: agregar texto e imágenes a archivos PDF con IronPDF

Empiece a mejorar sus documentos PDF con texto e imágenes de forma rápida y eficaz. Usando los métodos DrawText y DrawBitmap, puedes personalizar fácilmente los PDFs agregando marcas de agua, logotipos o anotaciones. Este ejemplo muestra cómo dibujar texto en coordenadas específicas e insertar una imagen sin problemas en el PDF.

  1. Instala IronPDF con el Administrador de Paquetes NuGet

    PM > Install-Package IronPdf
  2. Copie y ejecute este fragmento de código.

    new ChromePdfRenderer()
        .RenderHtmlAsPdf("<h1>Doc</h1>")
        .DrawText("Hello World", FontTypes.TimesNewRoman.Name, 12, 0, 100, 100, Color.Black, 0)
        .DrawBitmap(AnyBitmap.FromFile("logo.png"), 0, 50, 250, 500, 300)
        .SaveAs("annotated.pdf");
  3. Despliegue para probar en su entorno real

    Comienza a usar IronPDF en tu proyecto hoy mismo con una prueba gratuita

    arrow pointer


¿Cómo puedo dibujar texto en un PDF?

El método DrawText disponible en el objeto PdfDocument te permite agregar texto a un PDF existente sin alterar su contenido original. Este método es especialmente útil para añadir contenido dinámico a los PDF, similar a la función estampar texto e imagen para superposiciones más complejas.

Comprensión del sistema de coordenadas

Antes de dibujar el texto, comprenda el sistema de coordenadas PDF. El origen (0,0) está situado en la esquina inferior izquierda de la página, con valores X que aumentan hacia la derecha y valores Y que aumentan hacia arriba. Esto difiere de muchos sistemas gráficos en los que el origen está en la parte superior izquierda.

:path=/static-assets/pdf/content-code-examples/how-to/draw-text-and-bitmap-draw-text.cs
using IronPdf;
using IronSoftware.Drawing;

ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>testing</h1>");

// Draw text on PDF
pdf.DrawText("Some text", FontTypes.TimesNewRoman.Name, FontSize: 12, PageIndex: 0, X: 100, Y: 100, Color.Black, Rotation: 0);

pdf.SaveAs("drawText.pdf");
Imports IronPdf
Imports IronSoftware.Drawing

Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>testing</h1>")

' Draw text on PDF
pdf.DrawText("Some text", FontTypes.TimesNewRoman.Name, FontSize:=12, PageIndex:=0, X:=100, Y:=100, Color.Black, Rotation:=0)

pdf.SaveAs("drawText.pdf")
$vbLabelText   $csharpLabel

¿Qué fuentes puedo utilizar?

El método DrawText actualmente admite todas las Fuentes Estándar en IronPDF, incluyendo Courier, Arial (o Helvetica), TimesNewRoman, Symbol, y ZapfDingbats. Visita la sección de 'Fuentes Estándar en IronPDF' en el artículo Administrar Fuentes para variantes en cursiva, negrita y oblicua de estos tipos de fuente.

La fuente ZapfDingbats puede mostrar símbolos como ▲. Para obtener una lista completa de los símbolos compatibles, visite Wikipedia on Zapf Dingbats.

Muestra de fuentes de salida en PDF

Muestras de fuentes de las familias Arial, Courier, Helvetica y Times New Roman con variaciones de negrita, cursiva y oblicua

¿Cómo puedo añadir texto con saltos de línea?

La acción de dibujar texto admite caracteres de nueva línea, permitiéndote renderizar texto con nuevas líneas incorporadas para mejorar el formato y la claridad visual. Esto resulta útil a la hora de añadir anotaciones multilínea o crear diseños de texto estructurados.

Para lograr esto, añade newline characters (\n) a la cadena de texto. Utilizando el ejemplo anterior:

// Multi-line text example with proper spacing
string textWithNewlines = "Some text\nSecond line\nThird line with more content";
pdfDoc.DrawText(textWithNewlines, font, position);

// You can also use Environment.NewLine for platform-specific line breaks
string platformText = $"Line 1{Environment.NewLine}Line 2{Environment.NewLine}Line 3";
pdfDoc.DrawText(platformText, font, position);
// Multi-line text example with proper spacing
string textWithNewlines = "Some text\nSecond line\nThird line with more content";
pdfDoc.DrawText(textWithNewlines, font, position);

// You can also use Environment.NewLine for platform-specific line breaks
string platformText = $"Line 1{Environment.NewLine}Line 2{Environment.NewLine}Line 3";
pdfDoc.DrawText(platformText, font, position);
' Multi-line text example with proper spacing
Dim textWithNewlines As String = "Some text" & vbLf & "Second line" & vbLf & "Third line with more content"
pdfDoc.DrawText(textWithNewlines, font, position)

' You can also use Environment.NewLine for platform-specific line breaks
Dim platformText As String = $"Line 1{Environment.NewLine}Line 2{Environment.NewLine}Line 3"
pdfDoc.DrawText(platformText, font, position)
$vbLabelText   $csharpLabel

¿Cómo se utilizan las fuentes personalizadas?

Las fuentes personalizadas son compatibles con el método DrawText, ampliando tus opciones tipográficas más allá de las fuentes estándar. Esta característica es esencial a la hora de mantener la coherencia de la marca o trabajar con fuentes especializadas. Para una gestión avanzada de las fuentes, consulte nuestra guía sobre gestión de fuentes en PDF.

A continuación se muestra un ejemplo con la fuente Pixelify Sans Font añadida para el texto:

:path=/static-assets/pdf/content-code-examples/how-to/draw-text-and-bitmap-draw-custom-font.cs
using IronPdf;
using IronSoftware.Drawing;
using System.IO;

ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>testing</h1>");

// Add custom font to the PDF
byte[] fontByte = File.ReadAllBytes(@".\PixelifySans-VariableFont_wght.ttf");
var addedFont = pdf.Fonts.Add(fontByte);

// Draw text on PDF
pdf.DrawText("Iron Software", addedFont.Name, FontSize: 12, PageIndex: 0, X: 100, Y: 600, Color.Black, Rotation: 0);

pdf.SaveAs("drawCustomFont.pdf");
Imports IronPdf
Imports IronSoftware.Drawing
Imports System.IO

Private renderer As New ChromePdfRenderer()
Private pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>testing</h1>")

' Add custom font to the PDF
Private fontByte() As Byte = File.ReadAllBytes(".\PixelifySans-VariableFont_wght.ttf")
Private addedFont = pdf.Fonts.Add(fontByte)

' Draw text on PDF
pdf.DrawText("Iron Software", addedFont.Name, FontSize:= 12, PageIndex:= 0, X:= 100, Y:= 600, Color.Black, Rotation:= 0)

pdf.SaveAs("drawCustomFont.pdf")
$vbLabelText   $csharpLabel

Posicionamiento avanzado del texto

A la hora de situar el texto con precisión, tenga en cuenta estos consejos:

  • Dimensiones de la página: Usa pdf.Pages[pageIndex].Width y pdf.Pages[pageIndex].Height para obtener las dimensiones de la página
  • Rotación: El parámetro de rotación acepta grados (0-360) para texto en ángulo
  • Opciones de color: Más allá de los colores básicos, usa valores RGB: Color.FromArgb(255, 100, 100)

¿Cómo puedo dibujar imágenes en PDF?

El método DrawBitmap de IronPDF te permite agregar mapas de bits a documentos PDF existentes. Este método funciona de forma similar a la función Image Stamper, que permite estampar imágenes en PDF existentes. Para necesidades complejas de manipulación de imágenes, explore nuestra guía sobre añadir imágenes a PDF.

Por favor notaEl método DrawBitmap funciona mejor con imágenes grandes. Al usar imágenes de menor resolución, puede encontrarse con la siguiente excepción: IronPdf.Exceptions.IronPDFNativeException: 'Error al dibujar la imagen: la longitud de los datos (567000) es menor que la esperada (756000)'. Para solucionar este problema, utilice el Estampador de Imagen, que admite imágenes de todos los tamaños.

Imagen de muestra

Logotipo de Iron Software con un colorido diseño geométrico 3D entrelazado sobre un fondo de marca

¿Cómo es la implementación?

:path=/static-assets/pdf/content-code-examples/how-to/draw-text-and-bitmap-draw-bitmap.cs
using IronPdf;
using IronSoftware.Drawing;

ChromePdfRenderer renderer = new ChromePdfRenderer();
PdfDocument pdf = renderer.RenderHtmlAsPdf("<h1>testing</h1>");

// Open the image from file
AnyBitmap bitmap = AnyBitmap.FromFile("ironSoftware.png");

// Draw the bitmp on PDF
pdf.DrawBitmap(bitmap, 0, 50, 250, 500, 300);

pdf.SaveAs("drawImage.pdf");
Imports IronPdf
Imports IronSoftware.Drawing

Dim renderer As New ChromePdfRenderer()
Dim pdf As PdfDocument = renderer.RenderHtmlAsPdf("<h1>testing</h1>")

' Open the image from file
Dim bitmap As AnyBitmap = AnyBitmap.FromFile("ironSoftware.png")

' Draw the bitmap on PDF
pdf.DrawBitmap(bitmap, 0, 50, 250, 500, 300)

pdf.SaveAs("drawImage.pdf")
$vbLabelText   $csharpLabel

Resultado PDF

¿Qué parámetros adicionales hay disponibles?

  • Formato de píxel: La propiedad PixelFormat especifica el formato de datos de color para el mapa de bits, controlando principalmente el soporte de transparencia. El valor predeterminado es Format32bppArgb. Elige entre los formatos enum de píxel Format32bppRgb y Format32bppArgb pasando el parámetro como una opción. Esto es útil cuando se trabaja con elementos fondo y primer plano en PDF.

  • IgnorarRotaciónDePágina: Esta propiedad bool determina si el método ignora la rotación de página al dibujar el mapa de bits. Por defecto, el valor es falso. Especialmente útil a la hora de aplicar marcas de agua de forma coherente a todas las páginas, independientemente de la rotación.

Casos de uso comunes y mejores prácticas

A la hora de dibujar texto e imágenes en PDF, tenga en cuenta estas aplicaciones prácticas:

  1. Marcas de agua dinámicas: Añade logotipos de empresa o sellos "CONFIDENCIAL" a documentos confidenciales
  2. Numeración de páginas: Dibuje los números de página en posiciones coherentes en todas las páginas
  3. Colocación de firmas: Añade imágenes de firmas en los lugares designados de los formularios
  4. Mejora de encabezados/pies de página: Complemente los encabezados existentes con contenido dinámico

Para depurar y supervisar las operaciones de PDF, implemente registro personalizado para realizar un seguimiento de las operaciones de dibujo y garantizar su correcta ejecución.

Consideraciones sobre el rendimiento

Al trabajar con múltiples páginas o documentos grandes:

  • Operaciones por lotes cuando sea posible para minimizar el uso de memoria
  • Desechar objetos de mapa de bits tras su uso para liberar recursos
  • Considere la posibilidad de cargar previamente las imágenes de uso frecuente para mejorar el rendimiento

Sellos, códigos QR y marcas en documentos fiscales españoles

La capacidad de dibujar texto e imágenes en PDFs existentes con IronPDF permite implementar los elementos visuales requeridos por los sistemas de facturación electrónica y los flujos de firma documental en España.

Código QR VeriFactu y sellos FNMT con DrawBitmap

El reglamento VeriFactu, gestionado por la AEAT para el control de la facturación electrónica, exige que cada factura incluya un código QR que permita al receptor verificar su autenticidad en el portal de la Agencia Tributaria. Este código QR, generado con los datos de la factura (número, NIF del emisor, importe e IVA), debe incrustarse visualmente en el PDF de la factura. Con DrawBitmap, es posible añadir el QR generado en un tamaño y posición adecuados —habitualmente en el pie de la primera página— garantizando que el documento PDF sea coherente con el XML VeriFactu firmado. Del mismo modo, los documentos que requieren el sello de un certificado FNMT (por ejemplo, notificaciones administrativas o comunicaciones con organismos públicos) pueden incluir la imagen del sello digital mediante DrawBitmap.

Estampado de NIF/CIF y sellos de estado con DrawText para cumplimiento AEAT

En los flujos de trabajo de back-office de empresas españolas, es habitual estampar el NIF o CIF de la empresa en documentos PDF internos para garantizar su trazabilidad ante posibles requerimientos de la AEAT. El método DrawText de IronPDF permite añadir el número de identificación fiscal en una posición reproducible dentro del documento. Además, sellos de texto como "PAGADO", "FACTURA" o "DUPLICADO" —que en el contexto fiscal español tienen valor probatorio cuando se aplican sobre facturas archivadas— pueden añadirse programáticamente con la fuente, el color y la rotación adecuados para cumplir con los estándares visuales aceptados por la AEAT en sus procedimientos de verificación documental.

El uso combinado de DrawText y DrawBitmap en IronPDF permite implementar todos los elementos visuales requeridos por VeriFactu, Facturae y los flujos de certificación FNMT, garantizando que los PDFs generados sean verificables y reconocidos por los sistemas de la AEAT.

¿Listo para ver qué más puedes hacer? Consulte nuestra página de tutoriales aquí: Editar PDFs

Preguntas Frecuentes

¿Qué métodos puedo utilizar para añadir texto e imágenes a los PDF existentes?

IronPDF proporciona dos métodos principales para añadir contenido a los PDF existentes: el método DrawText para añadir texto y el método DrawBitmap para añadir imágenes. Estos métodos permiten personalizar los PDF con marcas de agua, logotipos y anotaciones sin alterar el contenido del documento original.

¿Cómo funciona el sistema de coordenadas PDF al dibujar texto?

En IronPDF, el sistema de coordenadas PDF tiene su origen (0,0) en la esquina inferior izquierda de la página. Los valores X aumentan hacia la derecha y los valores Y aumentan hacia arriba. Esto difiere de muchos sistemas gráficos en los que el origen está en la esquina superior izquierda.

¿Qué fuentes son compatibles para dibujar texto en PDF?

El método DrawText de IronPDF admite todas las fuentes estándar, incluidas Courier, Arial (Helvetica), Times New Roman, Symbol y ZapfDingbats. Estas fuentes también están disponibles en cursiva, negrita y oblicua. La fuente ZapfDingbats puede utilizarse para mostrar símbolos especiales.

¿Puedo añadir texto e imágenes a un PDF en una sola operación?

Sí, IronPDF permite encadenar métodos. Puede utilizar ChromePdfRenderer para crear un PDF y, a continuación, aplicar los métodos DrawText y DrawBitmap de forma secuencial en una sola línea de código, lo que hace que sea eficaz añadir varios elementos a su documento PDF.

¿Cuáles son los casos de uso habituales para dibujar texto e imágenes en PDF?

Las funciones de dibujo de IronPDF se utilizan habitualmente para añadir marcas de agua para proteger documentos, insertar logotipos de empresa para la marca, crear anotaciones para la revisión de documentos, mejorar el aspecto visual, facilitar la visualización de datos y crear formularios interactivos.

¿Cómo añadir el código QR VeriFactu exigido por la AEAT a los PDFs de factura usando DrawBitmap?

El reglamento VeriFactu exige que cada factura incluya un código QR con la URL de verificación en el portal de la AEAT. Con IronPDF y DrawBitmap, puede añadir el código QR generado (a partir de los datos de la factura: número, NIF emisor, importe e IVA) en la posición y tamaño adecuados en el pie de la primera página del PDF, garantizando que el documento sea coherente con el XML VeriFactu firmado.

¿Cómo estampar el NIF/CIF de la empresa y sellos de estado como PAGADO en documentos fiscales en España?

Con el método DrawText de IronPDF, puede añadir el NIF o CIF de la empresa en una posición reproducible dentro del documento para trazabilidad ante la AEAT. Sellos de texto como PAGADO o DUPLICADO tienen valor probatorio en el contexto fiscal español y pueden aplicarse con la fuente, color y rotación adecuados para cumplir los estándares visuales aceptados en los procedimientos de verificación documental de la AEAT.

Curtis Chau
Escritor Técnico

Curtis Chau tiene una licenciatura en Ciencias de la Computación (Carleton University) y se especializa en el desarrollo front-end con experiencia en Node.js, TypeScript, JavaScript y React. Apasionado por crear interfaces de usuario intuitivas y estéticamente agradables, disfruta trabajando con frameworks modernos y creando manuales bien ...

Leer más
¿Listo para empezar?
Nuget Descargas 19,014,616 | Versión: 2026.5 just released
Still Scrolling Icon

¿Aún desplazándote?

¿Quieres una prueba rápida? PM > Install-Package IronPdf
ejecutar una muestra Mira cómo tu HTML se convierte en PDF.