Comment imprimer un fichier PDF en .NET Core

Le code suivant fonctionne également avec la bibliothèque Aspose.PDF.Drawing.

Imprimer un document Pdf en .NET Core

La bibliothèque Aspose.PDF nous permet de convertir des fichiers PDF en XPS. Cette fonction peut être utile pour organiser l’impression de documents. Examinons un exemple d’utilisation de l’imprimante par défaut :

class Program
{
    static void Main()
    {
        // Créer le thread secondaire et passer la méthode d'impression pour
        // le paramètre délégué ThreadStart du constructeur.
        Thread printingThread = new Thread(() => PrintPDF(@"C:\tmp\doc-pdf.pdf"));

        // Définir le thread qui utilisera PrintQueue.AddJob en monothreading.
        printingThread.SetApartmentState(ApartmentState.STA);

        // Démarrer le thread d'impression. La méthode passée au constructeur de Thread
        // s'exécutera.
        printingThread.Start();
    }//fin Main

    private static void PrintPDF(string pdfFileName)
    {
        // Créer le serveur d'impression et la file d'attente d'impression.
        PrintQueue defaultPrintQueue = LocalPrintServer.GetDefaultPrintQueue();

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

        try
        {
            // Imprimer le fichier Xps tout en fournissant la validation XPS et les notifications de progression.
            PrintSystemJobInfo xpsPrintJob = defaultPrintQueue.AddJob(xpsFileName, xpsFileName, false);
            Console.WriteLine(xpsPrintJob.JobIdentifier);
        }
        catch (PrintJobException e)
        {
            Console.WriteLine("\n\t{0} n'a pas pu être ajouté à la file d'attente d'impression.", pdfFileName);
            if (e.InnerException != null && e.InnerException.Message == "Le fichier contient des données corrompues.")
            {
                Console.WriteLine("\tCe n'est pas un fichier XPS valide. Utilisez l'outil de conformité isXPS pour le déboguer.");
            }
            Console.WriteLine("\tContinuation avec le prochain fichier XPS.\n");
        }
    }
}//fin classe Program

Dans cet exemple, nous convertissons un document PDF en XPS et l’ajoutons comme tâche à la file d’attente de l’imprimante locale.