Cómo aplanar PDFs antes de imprimir en C

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

La clase PrintSettings de IronPrint incluye una propiedad Flatten que fusiona todos los campos de formulario interactivos, anotaciones y capas de imagen en contenido estático en el momento de la impresión. Establecemos Flatten = true en nuestro objeto PrintSettings, y IronPrint se encarga del resto: no se requiere una biblioteca de manipulación de PDF separada ni guardar en un archivo intermedio.

Esta guía cubre cuándo y cómo aplanar PDFs antes de imprimir documento, con código C# funcional para flujos sincronizados, con configuraciones combinadas y asíncronas.

Inicio rápido: Aplanar PDFs antes de imprimir

  1. Instalar IronPrint a través de NuGet: Install-Package IronPrint
  2. Agregar using IronPrint; al archivo
  3. Crear un objeto PrintSettings
  4. Establecer Flatten a true
  5. Pasar configuraciones a Printer.Print() o Printer.PrintAsync()
  1. Instala IronPrint con el Administrador de Paquetes NuGet

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

    using IronPrint;
    
    // Flatten and print a PDF with form fields
    Printer.Print("form-document.pdf", new PrintSettings
    {
        Flatten = true
    });
  3. Despliegue para probar en su entorno real

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

    arrow pointer

¿Cómo aplanar un PDF antes de imprimir en C#?

Aplanamos un PDF en el momento de la impresión configurando la propiedad Flatten a true en un objeto PrintSettings. Luego pasamos ese objeto a cualquiera de los métodos de impresión de IronPrint.

:path=/static-assets/print/content-code-examples/how-to/flatten-pdfs/flatten-pdfs-flatten-basic.cs
using IronPrint;

// Configure print settings with flattening enabled
PrintSettings settings = new PrintSettings();
settings.Flatten = true;

// Send the flattened document to the default printer
Printer.Print("application-form.pdf", settings);
Imports IronPrint

' Configure print settings with flattening enabled
Dim settings As New PrintSettings()
settings.Flatten = True

' Send the flattened document to the default printer
Printer.Print("application-form.pdf", settings)
$vbLabelText   $csharpLabel

Primero instanciamos PrintSettings, que se inicializa con valores predeterminados, incluidos Flatten = false. Luego establecemos Flatten a true, lo que indica a IronPrint que fusione todos los elementos interactivos en el contenido de la página antes de enviar el trabajo de impresión. Cuando llamamos a Printer.Print, la impresora recibe una versión completamente estática del documento.

El aplanado ocurre en la memoria durante la tubería de impresión. El archivo PDF original permanece interactivo en el disco, por lo que los usuarios finales aún pueden completar y reenviar el formulario. Esta es una distinción esencial: estamos aplanando para la impresora, no alterando permanentemente el archivo fuente.

La propiedad Flatten fue introducida en IronPrint v2024.7.2 y está disponible en todas las versiones posteriores.

¿Cuándo debería aplanar un PDF antes de imprimir?

El aplanado es más valioso cuando el PDF contiene elementos interactivos que podrían no renderizarse correctamente en papel. Los escenarios más comunes incluyen:

PDFs con campos de formulario rellenables. Las entradas de texto, casillas de verificación, botones de radio y menús desplegables son renderizados por el visor de PDF, no incrustados en el contenido de la página. Algunos controladores de impresora omiten completamente estas capas, resultando en campos en blanco en la página impresa. El aplanado fuerza los valores de campo en la capa estática de la página.

PDFs con anotaciones o superposiciones. Los comentarios, notas adhesivas, sellos y anotaciones de marcado existen en una capa separada. El aplanado los fusiona en el contenido visible para que aparezcan en la salida impresa.

PDFs con imágenes incrustadas en diferentes capas. Los documentos ensamblados de múltiples fuentes pueden tener imágenes en diferentes capas z. El aplanado compone todo en una sola capa, evitando imágenes faltantes o desalineadas.

Cuando el PDF contiene solo texto e imágenes estáticas, como un informe generado a partir de HTML o un documento escaneado, el aplanado no tiene efecto. En esos casos, podemos dejar Flatten en su valor predeterminado de false para evitar una sobrecarga de procesamiento innecesaria al imprimir PDF.

¿Cómo combinar el aplanado con otras configuraciones de impresión?

La clase PrintSettings expone varias propiedades junto con Flatten. Podemos configurar el tamaño de papel, orientación, DPI, márgenes y recuento de copias junto al aplanado, todo en un solo trabajo de impresión.

:path=/static-assets/print/content-code-examples/how-to/flatten-pdfs/flatten-pdfs-combined-settings.cs
using IronPrint;

// Flatten and print with full configuration
PrintSettings settings = new PrintSettings
{
    Flatten = true,
    PaperSize = PaperSize.A4,
    PaperOrientation = PaperOrientation.Portrait,
    Dpi = 300,
    NumberOfCopies = 2,
    PaperMargins = new Margins(10, 10, 10, 10),
    Grayscale = false
};

// Print a filled-out insurance claim form
Printer.Print("insurance-claim.pdf", settings);
Imports IronPrint

' Flatten and print with full configuration
Dim settings As New PrintSettings With {
    .Flatten = True,
    .PaperSize = PaperSize.A4,
    .PaperOrientation = PaperOrientation.Portrait,
    .Dpi = 300,
    .NumberOfCopies = 2,
    .PaperMargins = New Margins(10, 10, 10, 10),
    .Grayscale = False
}

' Print a filled-out insurance claim form
Printer.Print("insurance-claim.pdf", settings)
$vbLabelText   $csharpLabel

Usamos la sintaxis de inicializador de objetos por claridad. Flatten = true asegura que todos los datos del formulario aparezcan en la página impresa. PaperSize.A4 y PaperOrientation.Portrait coinciden con el formato estándar para formularios empresariales. Dpi a 300 produce texto nítido en campos rellenados que originalmente se renderizaron a resolución de pantalla. PaperMargins acepta cuatro valores en milímetros a través del constructor de Margins.

Estas propiedades no entran en conflicto entre sí. IronPrint aplica primero la operación de aplanado, luego formatea el documento estático resultante según las configuraciones restantes antes de enviar el trabajo a la impresora. Para más opciones de configuración de impresión, incluida la selección de impresora y la configuración de bandeja, consulte la guía de configuración completa.

¿Cómo aplanar e imprimir de forma asíncrona?

Para aplicaciones donde bloquear el hilo principal no es aceptable, como aplicaciones WPF o WinForms, utilizamos Printer.PrintAsync. El método acepta el mismo objeto PrintSettings y devuelve un Task.

:path=/static-assets/print/content-code-examples/how-to/flatten-pdfs/flatten-pdfs-async-flatten.cs
using IronPrint;
using System.Threading.Tasks;

public class FormPrinter
{
    public async Task PrintFlattenedFormAsync(string pdfPath)
    {
        // Flatten form fields and print asynchronously
        PrintSettings settings = new PrintSettings
        {
            Flatten = true,
            PaperSize = PaperSize.Letter,
            Dpi = 300
        };

        // Non-blocking print — UI thread stays responsive
        await Printer.PrintAsync(pdfPath, settings);
    }
}
Imports IronPrint
Imports System.Threading.Tasks

Public Class FormPrinter
    Public Async Function PrintFlattenedFormAsync(pdfPath As String) As Task
        ' Flatten form fields and print asynchronously
        Dim settings As New PrintSettings With {
            .Flatten = True,
            .PaperSize = PaperSize.Letter,
            .Dpi = 300
        }

        ' Non-blocking print — UI thread stays responsive
        Await Printer.PrintAsync(pdfPath, settings)
    End Function
End Class
$vbLabelText   $csharpLabel

Este patrón basado en clases es útil cuando la lógica de impresión vive en una capa de servicio. Configuramos Flatten = true junto con PaperSize.Letter para formularios en formato estadounidense. La palabra clave await libera el hilo de llamada mientras IronPrint procesa la operación de aplanado y envía el trabajo de impresión.

Los métodos asíncronos de IronPrint, incluidos PrintAsync y ShowPrintDialogAsync, todos respetan la configuración Flatten de manera idéntica a sus contrapartes sincrónicas. Ya sea que imprimamos en silencio o a través de un diálogo de impresión, el comportamiento de aplanado permanece consistente.

¿Cuales son mis próximos pasos?

Cubrimos cómo aplanar PDFs antes de imprimir en C# usando la propiedad PrintSettings.Flatten de IronPrint. El punto clave: establecer Flatten = true para fusionar campos de formulario interactivos, anotaciones y capas de imagen en contenido estático en el momento de la impresión, sin modificar el archivo fuente.

Para seguir construyendo sobre esto:

Comienza una prueba gratuita de 30 días para probar el aplanado de PDF en tus propios flujos de trabajo de impresión, o ve las opciones de licenciamiento para uso en producción.

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 38,930 | Versión: 2026.4 recién lanzado
Still Scrolling Icon

¿Aún desplazándote?

¿Quieres una prueba rápida? PM > Install-Package IronPrint
ejecuta una muestra observa cómo tu documento llega a la impresora.