Cómo especificar el nombre de la impresora en C
La clase PrintSettings de IronPrint expone una propiedad PrinterName que dirige los trabajos de impresión a una impresora específica. Asignamos el nombre exacto de la impresora de destino como una cadena, pasamos el objeto configurado PrintSettings a cualquiera de los métodos de impresión de IronPrint, y el documento va a esa impresora en lugar de la predeterminada del sistema.
Esta guía explica cómo configurar un nombre de impresora, descubrir impresoras disponibles en tiempo de ejecución y combinar la selección de impresora con otras configuraciones al imprimir documento.
Inicio rápido: Especificar el nombre de la impresora
- Instale IronPrint a través de NuGet:
Install-Package IronPrint - Agregue
using IronPrint;al archivo - Cree un objeto
PrintSettings - Establezca
PrinterNameal nombre exacto de la impresora de destino - Pase configuraciones a
Printer.Print()oPrinter.PrintAsync()
-
Instala IronPrint con el Administrador de Paquetes NuGet
PM > Install-Package IronPrint -
Copie y ejecute este fragmento de código.
using IronPrint; // Print a document to a specific printer Printer.Print("report.pdf", new PrintSettings { PrinterName = "HP LaserJet Pro M404" }); -
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#
- Crear un objeto `PrintSettings`
- Establezca `PrinterName` al nombre de la impresora de destino
- Pasar configuraciones a `Printer.Print()`
- Ejecute el proyecto para imprimir en la impresora especificada
¿Cómo especifico un nombre de impresora en C#?
Especificamos la impresora de destino asignando su nombre a la propiedad PrinterName en un objeto PrintSettings. Luego pasamos ese objeto a Printer.Print.
:path=/static-assets/print/content-code-examples/how-to/specify-printer-name/specify-printer-name-set-printer-name.cs
using IronPrint;
// Configure print settings with a target printer
PrintSettings settings = new PrintSettings();
settings.PrinterName = "Microsoft Print to PDF";
// Send the document to the specified printer
Printer.Print("invoice.pdf", settings);
Imports IronPrint
' Configure print settings with a target printer
Dim settings As New PrintSettings()
settings.PrinterName = "Microsoft Print to PDF"
' Send the document to the specified printer
Printer.Print("invoice.pdf", settings)
Primero, instanciamos PrintSettings, que se inicializa con PrinterName = null, lo que significa la impresora predeterminada del sistema operativo. Luego, sobrescribimos PrinterName con el nombre exacto de la impresora de destino en forma de cadena. Cuando llamamos a Printer.Print, IronPrint envía el trabajo directamente a la cola de esa impresora.
Dos detalles críticos a tener en cuenta. Primero, el nombre de la impresora debe coincidir exactamente con lo que informa el sistema operativo; esta comparación diferencia entre mayúsculas y minúsculas. Una discrepancia como "hp laserjet" en lugar de "HP LaserJet" fallará silenciosamente o generará un error. Segundo, si el usuario abre un cuadro de diálogo de impresión a través de ShowPrintDialog, la selección del cuadro de diálogo anula lo que PrinterName se configuró en el código. Esto es intencional: el diálogo da control final a los usuarios.
¿Cómo descubro impresoras disponibles?
En lugar de codificar nombres de impresoras, podemos consultar el sistema en tiempo de ejecución utilizando Printer.GetPrinterNames(). Este método devuelve un List<string> que contiene cada impresora instalada en la máquina.
:path=/static-assets/print/content-code-examples/how-to/specify-printer-name/specify-printer-name-discover-printers.cs
using IronPrint;
// Discover all installed printers
List<string> printers = Printer.GetPrinterNames();
foreach (string name in printers)
{
Console.WriteLine(name);
}
// Use the first available printer
if (printers.Count > 0)
{
Printer.Print("report.pdf", new PrintSettings
{
PrinterName = printers[0]
});
}
Imports IronPrint
' Discover all installed printers
Dim printers As List(Of String) = Printer.GetPrinterNames()
For Each name As String In printers
Console.WriteLine(name)
Next
' Use the first available printer
If printers.Count > 0 Then
Printer.Print("report.pdf", New PrintSettings With {
.PrinterName = printers(0)
})
End If
Llamamos a GetPrinterNames() para recuperar cada impresora que el sistema operativo conoce, incluidas las impresoras locales, de red y virtuales como "Microsoft Print to PDF". Luego recorremos la lista y seleccionamos una impresora por índice, coincidencia de nombre o cualquier lógica personalizada que la aplicación requiera.
Este patrón de descubrir y luego imprimir es esencial para aplicaciones desplegadas en diferentes máquinas. Codificar un nombre de impresora funciona para escenarios de una sola máquina, pero las aplicaciones de producción deben consultar las impresoras disponibles y permitir que el usuario elija o seleccionar una programáticamente según las convenciones de nomenclatura. Para un ejemplo de código dedicado, vea el ejemplo de obtener nombres de impresoras.
¿Cómo combino el nombre de la impresora con otras configuraciones?
La clase PrintSettings expone PrinterName junto con propiedades para tamaño de papel, orientación, DPI, márgenes, cantidad de copias y aplanado. Configuramos todo en un solo objeto.
:path=/static-assets/print/content-code-examples/how-to/specify-printer-name/specify-printer-name-combined-settings.cs
using IronPrint;
// Build a fully configured print job targeting a specific printer
PrintSettings settings = new PrintSettings
{
PrinterName = "Office Color Printer",
PaperSize = PaperSize.A4,
PaperOrientation = PaperOrientation.Portrait,
Dpi = 300,
NumberOfCopies = 2,
PaperMargins = new Margins(15, 15, 15, 15),
Grayscale = false
};
// Print a branded report to the color printer
Printer.Print("quarterly-report.pdf", settings);
Imports IronPrint
' Build a fully configured print job targeting a specific printer
Dim settings As New PrintSettings With {
.PrinterName = "Office Color Printer",
.PaperSize = PaperSize.A4,
.PaperOrientation = PaperOrientation.Portrait,
.Dpi = 300,
.NumberOfCopies = 2,
.PaperMargins = New Margins(15, 15, 15, 15),
.Grayscale = False
}
' Print a branded report to the color printer
Printer.Print("quarterly-report.pdf", settings)
Usamos la sintaxis del inicializador de objetos para facilitar la lectura. PrinterName dirige el trabajo a "Office Color Printer" mientras las propiedades restantes controlan el formato de salida. Dpi a 300 produce texto y gráficos nítidos. PaperMargins acepta cuatro valores en milímetros a través del constructor Margins — superior, derecho, inferior, izquierdo.
IronPrint valida la configuración como una unidad y envía las configuraciones combinadas al controlador de la impresora en un solo trabajo. Para opciones adicionales como selección de bandeja y modo en escala de grises, consulte la guía completa de configuraciones de impresión.
¿Cómo selecciono una impresora e imprimo de forma asincrónica?
Para aplicaciones donde bloquear el hilo principal no es una opción, como las aplicaciones WPF o WinForms, usamos Printer.GetPrinterNamesAsync() y Printer.PrintAsync(). Ambos devuelven un Task, manteniendo la interfaz de usuario receptiva.
:path=/static-assets/print/content-code-examples/how-to/specify-printer-name/specify-printer-name-async-printer-select.cs
using IronPrint;
using System.Threading.Tasks;
public class PrintService
{
public async Task PrintToFirstAvailableAsync(string filePath)
{
// Discover printers without blocking the UI
List<string> printers = await Printer.GetPrinterNamesAsync();
if (printers.Count == 0)
{
Console.WriteLine("No printers found.");
return;
}
// Configure and print to the first available printer
PrintSettings settings = new PrintSettings
{
PrinterName = printers[0],
Dpi = 300
};
await Printer.PrintAsync(filePath, settings);
}
}
Imports IronPrint
Imports System.Threading.Tasks
Public Class PrintService
Public Async Function PrintToFirstAvailableAsync(filePath As String) As Task
' Discover printers without blocking the UI
Dim printers As List(Of String) = Await Printer.GetPrinterNamesAsync()
If printers.Count = 0 Then
Console.WriteLine("No printers found.")
Return
End If
' Configure and print to the first available printer
Dim settings As New PrintSettings With {
.PrinterName = printers(0),
.Dpi = 300
}
Await Printer.PrintAsync(filePath, settings)
End Function
End Class
Este ejemplo basado en clases envuelve la lógica de descubrir e imprimir en un servicio reutilizable. Llamamos a GetPrinterNamesAsync() para recuperar la lista de impresoras sin congelar la interfaz de usuario, luego asignamos la primera impresora disponible a PrinterName. La llamada await Printer.PrintAsync envía el trabajo de forma asincrónica.
En producción, podríamos reemplazar printers[0] con una lógica que coincida con una convención de nomenclatura, como buscar impresoras que contengan "Etiqueta" para etiquetas de envío o "Color" para documentos de marca. Los métodos asincrónicos de IronPrint aceptan todos el mismo objeto PrintSettings, por lo que el comportamiento de PrinterName es idéntico entre rutas sincrónicas y asincrónicas.
¿Cuales son mis próximos pasos?
Cubrimos cómo especificar un nombre de impresora en C# usando la propiedad PrintSettings.PrinterName de IronPrint, desde la asignación estática hasta el descubrimiento dinámico en tiempo de ejecución con Printer.GetPrinterNames(). Los puntos clave: los nombres de las impresoras deben coincidir exactamente (distingue entre mayúsculas y minúsculas), null predetermina a la impresora predeterminada del sistema operativo, y los diálogos de impresión anulan la selección programática.
Para continuar explorando las capacidades de IronPrint:
- Vea el ejemplo de código para obtener nombres de impresoras para un fragmento independiente de descubrimiento
- Explora la guía completa de configuración de impresión para todas las propiedades disponibles
- Revise la referencia de la API de la clase Printer para métodos como
PrintToPrinter,ShowPrintDialogy gestión de bandejas - Explore la referencia completa de la API para
PrintSettings,PaperSizeyMargins
Comience una prueba gratuita de 30 días para probar la selección de impresoras en sus propios proyectos, o vea las opciones de licencia para el despliegue en producción.

