¿Cómo especificar el nombre de la impresora en C#?

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

La clase de IronPrint PrintSettings expone una propiedad PrinterName que dirige 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 cualquier método de impresión de IronPrint, y el documento va a esa impresora en lugar de la predeterminada del sistema.

Esta guía recorre cómo establecer un nombre de impresora, descubrir impresoras disponibles en tiempo de ejecución y combinar la selección de impresora con otros ajustes de impresión.

Inicio rápido: Especificar el nombre de la impresora

  1. Instala IronPrint con el Administrador de Paquetes NuGet

    PM > Install-Package IronPrint
  2. 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"
    });
  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 especifíco 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.

Entrada

invoice.pdf es una factura B2B de estilo A4 con line items y totales, impresa en una impresora con nombre específico a través de PrintSettings.PrinterName.

: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";

// Print 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"

' Print to the specified printer
Printer.Print("invoice.pdf", settings)
$vbLabelText   $csharpLabel

Primero instanciamos PrintSettings, que se inicializa con PrinterName = null, lo que significa la impresora predeterminada del sistema operativo. Luego sobreescribimos PrinterName con el nombre exacto de la impresora de destino. Cuando llamamos a Printer.Print, IronPrint envía el trabajo directamente a la cola de esa impresora.

Resultado

La factura se envía directamente a la impresora nombrada. El trabajo aparece en la cola de la impresora como se ve en el ejemplo de impresión silenciosa.

Salida de la factura impresa en "Microsoft Print to PDF" usando PrinterName.

Dos detalles a tener en cuenta. Primero, el nombre de la impresora debe coincidir exactamente con lo que informa el sistema operativo; esta comparación distingue entre mayúsculas y minúsculas. Una discrepancia como "hp laserjet" en lugar de "HP LaserJet" fallará silenciosamente o lanzará un error. En segundo lugar, 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 se configuró en el código, dando al usuario el control final.

Si el nombre de la impresora no se conoce de antemano, podemos consultar todas las impresoras instaladas en tiempo de ejecución en lugar de codificar el valor.

¿Cómo descubro las impresoras disponibles?

En lugar de codificar nombres de impresoras, podemos consultar el sistema en tiempo de ejecución usando Printer.GetPrinterNames. Este método devuelve un List<string> que contiene cada impresora instalada en la máquina.

Entrada

report.pdf es un informe de negocios A4 con una sección de resumen y una tabla de datos, impreso en la primera impresora descubierta dinámicamente.

:path=/static-assets/print/content-code-examples/how-to/specify-printer-name/specify-printer-name-discover-printers.cs
using IronPrint;

// List every installed printer
List<string> printers = Printer.GetPrinterNames();

// Print each printer name
foreach (string name in printers)
{
    Console.WriteLine(name);
}

// Print to the first available printer
if (printers.Count > 0)
{
    Printer.Print("report.pdf", new PrintSettings
    {
        PrinterName = printers[0]
    });
}
Imports IronPrint

' List every installed printer
Dim printers As List(Of String) = Printer.GetPrinterNames()

' Print each printer name
For Each name As String In printers
    Console.WriteLine(name)
Next

' Print to the first available printer
If printers.Count > 0 Then
    Printer.Print("report.pdf", New PrintSettings With {
        .PrinterName = printers(0)
    })
End If
$vbLabelText   $csharpLabel

Llamamos a GetPrinterNames para recuperar cada impresora que el sistema operativo conoce, incluyendo impresoras locales, de red y virtuales como "Microsoft Print to PDF". Luego iteramos a través de la lista y seleccionamos una impresora por índice, emparejamiento de nombres, o cualquier lógica personalizada que la aplicación requiera.

Resultado

El informe se envía a la primera impresora disponible. El trabajo aparece en la cola de la impresora como se ve arriba.

Salida del informe impresa en la primera impresora disponible a través de GetPrinterNames.

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 deberían consultar las impresoras disponibles y dejar que el usuario escoja o seleccionarla programáticamente basada en convenciones de nombres.

La selección de impresora también puede emparejarse con el tamaño del papel, DPI, cantidad de copias y márgenes en un único objeto de configuración.

¿Cómo combino el nombre de la impresora con otros ajustes?

La clase PrintSettings expone PrinterName junto con propiedades para el tamaño del papel, orientación, DPI, márgenes, recuento de copias, y más. Configuramos todo en un único objeto.

Entrada

quarterly-report.pdf es un informe financiero trimestral A4 con tarjetas KPI y gráficos, impreso con PrinterName combinado con tamaño de papel, DPI y recuento de copias en un objeto PrintSettings.

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

// Configure full print settings with a named 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 the quarterly report
Printer.Print("quarterly-report.pdf", settings);
Imports IronPrint

' Configure full print settings with a named 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 the quarterly report
Printer.Print("quarterly-report.pdf", settings)
$vbLabelText   $csharpLabel

Usamos la sintaxis del inicializador de objetos para mejorar la legibilidad. PrinterName dirige el trabajo a "Impresora de color de oficina" mientras que las propiedades restantes controlan el formato de salida. Dpi a 300 produce texto y gráficos nítidos. PaperMargins acepta valores en milímetros a través del constructor Margins. Para la lista completa de propiedades disponibles, vea la guía de configuración de impresión.

Resultado

El informe trimestral se imprime con la impresora nombrada, en orientación vertical A4, 300 DPI, 2 copias y márgenes de 15 mm combinados en un solo trabajo. El trabajo aparece en la cola de la impresora como se ve arriba.

Salida del informe trimestral con PrinterName, A4, 300 DPI, 2 copias y márgenes de 15 mm.

IronPrint valida la configuración como una unidad y envía los ajustes combinados al controlador de la impresora en un solo trabajo.

Las aplicaciones que no pueden bloquear el hilo principal durante el descubrimiento de la impresora o la impresión pueden usar los equivalentes asincrónicos de ambas operaciones.

¿Cómo selecciono una impresora e imprimo de forma asíncrona?

Para aplicaciones WPF y WinForms donde bloquear el hilo principal no es una opción, utilizamos 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 available printers asynchronously
        List<string> printers = await Printer.GetPrinterNamesAsync();

        // Exit if no printers are installed
        if (printers.Count == 0)
        {
            Console.WriteLine("No printers found.");
            return;
        }

        // Configure settings for the first available printer
        PrintSettings settings = new PrintSettings
        {
            PrinterName = printers[0],
            Dpi = 300
        };

        // Print asynchronously
        await Printer.PrintAsync(filePath, settings);
    }
}
Imports IronPrint
Imports System.Threading.Tasks

Public Class PrintService
    Public Async Function PrintToFirstAvailableAsync(filePath As String) As Task
        ' Discover available printers asynchronously
        Dim printers As List(Of String) = Await Printer.GetPrinterNamesAsync()

        ' Exit if no printers are installed
        If printers.Count = 0 Then
            Console.WriteLine("No printers found.")
            Return
        End If

        ' Configure settings for the first available printer
        Dim settings As New PrintSettings With {
            .PrinterName = printers(0),
            .Dpi = 300
        }

        ' Print asynchronously
        Await Printer.PrintAsync(filePath, settings)
    End Function
End Class
$vbLabelText   $csharpLabel

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 asincrónicamente.

Resultado

La factura se imprime asincrónicamente en la primera impresora descubierta. El trabajo aparece en la cola de la impresora como se ve arriba.

Salida de la factura impresa asincrónicamente a la primera impresora disponible.

En producción, podríamos reemplazar printers[0] con la lógica que coincide con una convención de nombres, 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 síncronas y asincrónicas.

Con asignación estática, descubrimiento en tiempo de ejecución, configuraciones combinadas y flujos de trabajo asincrónicos, todos cubiertos, una serie de recursos relacionados merece ser marcada.

¿Cuales son mis próximos pasos?

Cubrimos la especificación del nombre de una impresora a través de PrintSettings.PrinterName, 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 cuadros de diálogo de impresión anulan la selección programática.

El ejemplo de nombres de impresora proporciona un fragmento de descubrimiento independiente, mientras que la guía de configuración de impresión cubre cada propiedad configurable en detalle. La referencia API de la clase Printer documenta todos los métodos de impresión estáticos, y la referencia API de PrintSettings lista cada campo y predeterminado. Para un recorrido completo, el tutorial de impresión de documentos reúne todo.

Comience una prueba gratuita de 30 días para probar la selección de impresoras en un proyecto en vivo. Cuando esté listo, vea las opciones de licencia comenzando en $999.

https://ironsoftware.com/csharp/print/object-reference/api/IronPrint.PrintSettings.html https://ironsoftware.com/csharp/print/object-reference/api/IronPrint.PrintSettings.html https://ironsoftware.com/csharp/print/object-reference/api/IronPrint.Printer.html https://ironsoftware.com/csharp/print/how-to/print-settings/ https://ironsoftware.com/csharp/print/object-reference/api/IronPrint.Printer.html

Preguntas Frecuentes

¿Cómo puedo especificar un nombre de impresora en C# usando IronPrint?

Con IronPrint, puedes especificar un nombre de impresora en C# estableciendo la propiedad PrinterName. Esto te permite dirigir una impresora específica para tus tareas de impresión.

¿Qué es IronPrint?

IronPrint es una biblioteca de Iron Software que permite a los desarrolladores gestionar tareas de impresión en aplicaciones C#, proporcionando funcionalidad para especificar nombres de impresoras y otras opciones de impresión.

¿Cómo descubro impresoras disponibles en C#?

Con IronPrint, puedes descubrir fácilmente las impresoras disponibles en tu red accediendo a la lista de impresoras y seleccionando el PrinterName deseado para tu trabajo de impresión.

¿Puedo establecer la propiedad PrinterName dinámicamente?

Sí, con IronPrint puedes establecer dinámicamente la propiedad PrinterName en tu código C# para seleccionar la impresora deseada en tiempo de ejecución.

¿Es posible imprimir en una impresora de red usando IronPrint?

Sí, IronPrint te permite especificar e imprimir en impresoras de red configurando la propiedad PrinterName adecuada en tu aplicación C#.

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 41,154 | Versión: 2026.5 just released
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.