Cómo imprimir con un diálogo en C
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
- Instale IronPrint a través de NuGet:
Install-Package IronPrint - Agregue
using IronPrint;al archivo - Llame a
Printer.ShowPrintDialog("filepath")para abrir el diálogo de impresión nativo - (Opcional) Pase un objeto
PrintSettingspara preconfigurar los valores predeterminados del diálogo - El usuario selecciona impresora, copias y opciones, luego hace clic en Imprimir
-
Instala IronPrint con el Administrador de Paquetes NuGet
PM > Install-Package IronPrint -
Copie y ejecute este fragmento de código.
using IronPrint; // Display the print dialog and print the document Printer.ShowPrintDialog("document.pdf"); -
Despliegue para probar en su entorno real
Comienza a usar IronPrint en tu proyecto hoy mismo con una prueba gratuita
Flujo de trabajo mínimo (5 pasos)
- Instala la biblioteca de impresión IronPrint de C#
- Llame a `Printer.ShowPrintDialog("filepath")`
- El usuario selecciona impresora, copias y rango de páginas
- Haga clic en Imprimir para enviar el documento a la impresora elegida
- Verifique que el documento se imprima con la configuración seleccionada
¿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")
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.
¿Cómo preconfiguro las configuraciones del diálogo?
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)
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")
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)
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.

