Cómo imprimir un archivo PDF en .NET Core

El siguiente fragmento de código también funciona con la biblioteca Aspose.PDF.Drawing.

Imprimir documento Pdf en .NET Core

La biblioteca Aspose.PDF nos permite convertir archivos PDF a XPS. Esta función puede ser útil para organizar la impresión de documentos. Veamos un ejemplo utilizando la impresora predeterminada:

class Program
{
    static void Main()
    {
        // Crear el hilo secundario y pasar el método de impresión para
        // el parámetro delegado ThreadStart del constructor.
        Thread printingThread = new Thread(() => PrintPDF(@"C:\tmp\doc-pdf.pdf"));

        // Establecer el hilo que usará PrintQueue.AddJob a un solo hilo.
        printingThread.SetApartmentState(ApartmentState.STA);

        // Iniciar el hilo de impresión. El método pasado al constructor
        // del hilo se ejecutará.
        printingThread.Start();
    }//end Main

    private static void PrintPDF(string pdfFileName)
    {
        // Crear servidor de impresión y cola de impresión.
        PrintQueue defaultPrintQueue = LocalPrintServer.GetDefaultPrintQueue();

        Aspose.Pdf.Document document = new Document(pdfFileName);
        var xpsFileName = pdfFileName.Replace(".pdf", ".xps");
        document.Save(xpsFileName,SaveFormat.Xps);

        try
        {
            // Imprimir el archivo Xps mientras se proporciona validación de XPS y notificaciones de progreso.
            PrintSystemJobInfo xpsPrintJob = defaultPrintQueue.AddJob(xpsFileName, xpsFileName, false);
            Console.WriteLine(xpsPrintJob.JobIdentifier);
        }
        catch (PrintJobException e)
        {
            Console.WriteLine("\n\t{0} no se pudo agregar a la cola de impresión.", pdfFileName);
            if (e.InnerException != null && e.InnerException.Message == "El archivo contiene datos corruptos.")
            {
                Console.WriteLine("\tNo es un archivo XPS válido. Utiliza la herramienta de conformidad isXPS para depurarlo.");
            }
            Console.WriteLine("\tContinuando con el siguiente archivo XPS.\n");
        }
    }
}//end Program class

En este ejemplo, convertimos un documento PDF en XPS y lo agregamos como un trabajo a la cola de la impresora local.