Cómo imprimir con un diálogo en C

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

El diálogo de impresión es la ventana estándar del sistema operativo que permite a los usuarios elegir una impresora, establecer el número de copias, elegir un rango de páginas y ajustar las opciones de papel antes de imprimir documento. Para las aplicaciones de escritorio donde los usuarios necesitan controlar cómo y dónde se imprimen sus documentos, mostrar este diálogo es el comportamiento esperado.

IronPrint proporciona un método único — Printer.ShowPrintDialog() — que muestra el diálogo de impresión nativo, aplica las selecciones del usuario y envía el documento a la impresora elegida. Instalamos un paquete NuGet y escribimos una línea de código.

Inicio rápido: Imprimir con un diálogo

  1. Instale IronPrint a través de NuGet: Install-Package IronPrint
  2. Agregue using IronPrint; al archivo
  3. Llame a Printer.ShowPrintDialog("filepath") para abrir el diálogo de impresión nativo
  4. (Opcional) Pase un objeto PrintSettings para preconfigurar los valores predeterminados del diálogo
  5. El usuario selecciona impresora, copias y opciones, luego hace clic en Imprimir
  1. Instala IronPrint con el Administrador de Paquetes NuGet

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

    using IronPrint;
    
    // Display the print dialog and print the document
    Printer.ShowPrintDialog("document.pdf");
  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 funciona el diálogo de impresión en C#?

El método Printer.ShowPrintDialog() abre el diálogo de impresión nativo del sistema operativo. El usuario ve el conjunto completo de opciones de impresión — selección de impresora, número de copias, rango de páginas, orientación y tamaño de papel — y hace clic en Imprimir para enviar el trabajo, o Cancelar para cerrar el diálogo sin imprimir.

Internamente, el enfoque nativo de .NET requiere crear una instancia System.Windows.Forms.PrintDialog, conectarla a un PrintDocument, manejar el evento PrintPage para dibujar contenido en la superficie gráfica de impresión, verificar el DialogResult y luego llamar a PrintDocument.Print(). Esa configuración típicamente requiere de 15 a 25 líneas de código. Tampoco incluye renderizado integrado para PDF o imágenes — imprimir un PDF a través del diálogo nativo significa primero analizar el PDF en páginas dibujables, lo cual requiere otra biblioteca.

IronPrint maneja todo el proceso en una sola llamada:

:path=/static-assets/print/content-code-examples/how-to/print-with-dialog/print-with-dialog-show-print-dialog-open-and-print.cs
using IronPrint;

// Open the dialog, let the user configure settings, and print
Printer.ShowPrintDialog("quarterly-report.pdf");
Imports IronPrint

' Open the dialog, let the user configure settings, and print
Printer.ShowPrintDialog("quarterly-report.pdf")
$vbLabelText   $csharpLabel

El método acepta una ruta de archivo como string o datos de archivo en bruto como byte[]. IronPrint detecta el formato del documento, lo renderiza a través del motor adecuado y presenta el diálogo. Cuando el usuario lo confirma, el documento se imprime con la configuración seleccionada. El tutorial de impresión de documentos recorre el ciclo completo de impresión con más detalle.

Podemos establecer valores predeterminados antes de que se abra el diálogo creando un objeto PrintSettings y pasándolo como segundo parámetro. El diálogo se abrirá con estos valores preseleccionados, y el usuario puede aceptarlos tal cual o modificar cualquier configuración.

:path=/static-assets/print/content-code-examples/how-to/print-with-dialog/print-with-dialog-preconfigure-dialog-settings.cs
using IronPrint;

// Pre-configure defaults for the dialog
var settings = new PrintSettings
{
    PrinterName = "HP LaserJet Pro",
    PaperSize = PaperSize.A4,
    PaperOrientation = PaperOrientation.Portrait,
    Dpi = 300,
    NumberOfCopies = 2,
    Grayscale = false
};

// Open dialog with pre-filled settings
Printer.ShowPrintDialog("invoice.pdf", settings);
Imports IronPrint

' Pre-configure defaults for the dialog
Dim settings As New PrintSettings With {
    .PrinterName = "HP LaserJet Pro",
    .PaperSize = PaperSize.A4,
    .PaperOrientation = PaperOrientation.Portrait,
    .Dpi = 300,
    .NumberOfCopies = 2,
    .Grayscale = False
}

' Open dialog with pre-filled settings
Printer.ShowPrintDialog("invoice.pdf", settings)
$vbLabelText   $csharpLabel

Esto es útil cuando la aplicación conoce de antemano la impresora o formato de papel probable. Por ejemplo, un sistema de punto de venta que siempre imprime recibos en una impresora térmica específica puede predeterminar PrinterName a ese dispositivo. El usuario aún tiene la opción de cambiarlo en el diálogo.

Para descubrir qué impresoras están disponibles en el sistema, llamamos a Printer.GetPrinterNames(), que devuelve un List<string> de todas las impresoras instaladas. De manera similar, Printer.GetPrinterTrays() devuelve las bandejas de papel disponibles para una impresora dada.

La lista completa de propiedades configurables incluye PrinterName, PaperSize, PaperOrientation, Dpi, NumberOfCopies, Grayscale, PaperMargins, Flatten (para campos de formulario PDF) y Tray. El cómo hacer configuraciones de impresión cubre cada propiedad con ejemplos de código. Cualquier propiedad no configurada en PrintSettings predetermina la configuración estándar de la impresora seleccionada.

¿Cómo muestro el diálogo de forma asíncrona?

El método Printer.ShowPrintDialogAsync() devuelve un Task, haciéndolo compatible con await. Esto evita que el diálogo bloquee el hilo de la interfaz de usuario — esencial para WPF, MAUI y cualquier aplicación donde una interfaz congelada crea una mala experiencia de usuario.

:path=/static-assets/print/content-code-examples/how-to/print-with-dialog/print-with-dialog-show-print-dialog-async.cs
using IronPrint;

// Non-blocking dialog — the UI remains responsive
await Printer.ShowPrintDialogAsync("report.pdf");
Imports IronPrint

' Non-blocking dialog — the UI remains responsive
Await Printer.ShowPrintDialogAsync("report.pdf")
$vbLabelText   $csharpLabel

ShowPrintDialogAsync() acepta los mismos parámetros que la versión sincrónica: una ruta de archivo o matriz de bytes, más un objeto PrintSettings opcional. El patrón asíncrono sigue el mismo Patrón Asíncrono Basado en Tareas utilizado a lo largo del desarrollo moderno de .NET.

IronPrint funciona en aplicaciones de WinForms, WPF, MAUI y consola. La apariencia del diálogo se adapta a la plataforma anfitriona y versión del sistema operativo, por lo que el usuario siempre ve la ventana de impresión nativa que espera.

¿Cuándo debo usar un diálogo frente a la impresión silenciosa?

La elección depende de si el usuario necesita controlar el trabajo de impresión.

Criterios Imprimir con diálogo Impresión silenciosa
Interacción del usuario El usuario selecciona impresora, copias, rango de páginas Sin interacción — imprime de inmediato
Mejor para Aplicaciones de escritorio, impresiones únicas, funciones orientadas al usuario Trabajos por lotes, servicios en segundo plano, aplicaciones de kiosco
Selección de impresoras El usuario elige del diálogo Configurado programáticamente vía PrintSettings
Método IronPrint Printer.ShowPrintDialog() Printer.Print()
Variante asíncrona ShowPrintDialogAsync() PrintAsync()

Utilice el diálogo cuando los usuarios necesiten verificar o cambiar configuraciones antes de imprimir PDF — exportaciones de informes, impresión de facturas o cualquier escenario donde la impresora incorrecta cause una página desperdiciada. Utilice impresión silenciosa cuando la aplicación controle todo el trabajo y no se requiera decisión humana. El tutorial de impresión de documentos demuestra ambos enfoques uno al lado del otro.

¿Qué formatos de archivo admite el diálogo de impresión?

Printer.ShowPrintDialog() es compatible con los mismos formatos que la impresión silenciosa: PDF, PNG, TIFF, JPEG, GIF, HTML y BMP. Pasamos la ruta del archivo independientemente del formato, y IronPrint maneja el renderizado y la comunicación con el spooler de impresión. Los datos del archivo como un byte[] también son aceptados, lo que es útil cuando el documento se genera en memoria o se recupera de una base de datos.

:path=/static-assets/print/content-code-examples/how-to/print-with-dialog/print-with-dialog-print-dialog-image-and-byte-array.cs
using IronPrint;

// Print an image with the dialog
Printer.ShowPrintDialog("product-photo.png");

// Print from a byte array
byte[] reportData = File.ReadAllBytes("monthly-report.pdf");
Printer.ShowPrintDialog(reportData);
Imports IronPrint

' Print an image with the dialog
Printer.ShowPrintDialog("product-photo.png")

' Print from a byte array
Dim reportData As Byte() = File.ReadAllBytes("monthly-report.pdf")
Printer.ShowPrintDialog(reportData)
$vbLabelText   $csharpLabel

La página de ejemplos de código muestra escenarios específicos de formato adicionales. Para flujos de trabajo específicos de PDF — generar un PDF e imprimirlo de inmediato — IronPDF se combina naturalmente con IronPrint. La comparación entre IronPrint e IronPDF explica cuándo usar cada uno.

Próximos pasos

Imprimir con un diálogo se reduce a dos métodos: Printer.ShowPrintDialog() para llamadas sincrónicas y Printer.ShowPrintDialogAsync() para ejecución no bloqueante. Preconfigure los valores predeterminados con PrintSettings y deje que el usuario los ajuste desde allí. Ambos métodos admiten todos los formatos de documentos de IronPrint y funcionan en proyectos de WinForms, WPF, MAUI y consola.

Explore los tutoriales de IronPrint para recorridos completos, la referencia de API de la clase Printer para cada método disponible, o el cómo hacer configuraciones de impresión para configuración avanzada. El registro de cambios rastrea mejoras recientes y nuevas funciones.

Inicie una prueba gratuita de 30 días para probar la impresión con diálogo en un proyecto en vivo — no se requiere tarjeta de crédito. Cuando esté listo para enviar, vea las opciones de licencia comenzando desde $749.

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.