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 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

  1. Instale IronPrint a través de NuGet: Install-Package IronPrint
  2. Agregue using IronPrint; al archivo
  3. Cree un objeto PrintSettings
  4. Establezca PrinterName al nombre exacto de la impresora de destino
  5. Pase 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;
    
    // 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 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)
$vbLabelText   $csharpLabel

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
$vbLabelText   $csharpLabel

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)
$vbLabelText   $csharpLabel

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
$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 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:

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.

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.