Как распечатать PDF-файл в .NET Core

Следующий фрагмент кода также работает с библиотекой Aspose.PDF.Drawing.

Печать PDF-документа в .NET Core

Библиотека Aspose.PDF позволяет конвертировать PDF-файлы в XPS. Эта функция может быть полезна для организации печати документов. Давайте рассмотрим пример использования стандартного принтера:

class Program
{
    static void Main()
    {
        // Создайте вторичный поток и передайте метод печати для
        // параметра делегата ThreadStart конструктора.
        Thread printingThread = new Thread(() => PrintPDF(@"C:\tmp\doc-pdf.pdf"));

        // Установите поток, который будет использовать PrintQueue.AddJob для однопоточной работы.
        printingThread.SetApartmentState(ApartmentState.STA);

        // Запустите поток печати. Метод, переданный в конструктор
        // потока, будет выполнен.
        printingThread.Start();
    }//конец Main

    private static void PrintPDF(string pdfFileName)
    {
        // Создайте сервер печати и очередь печати.
        PrintQueue defaultPrintQueue = LocalPrintServer.GetDefaultPrintQueue();

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

        try
        {
            // Распечатайте файл Xps, обеспечивая проверку XPS и уведомления о ходе выполнения.
            PrintSystemJobInfo xpsPrintJob = defaultPrintQueue.AddJob(xpsFileName, xpsFileName, false);
            Console.WriteLine(xpsPrintJob.JobIdentifier);
        }
        catch (PrintJobException e)
        {
            Console.WriteLine("\n\t{0} не может быть добавлен в очередь печати.", pdfFileName);
            if (e.InnerException != null && e.InnerException.Message == "File contains corrupted data.")
            {
                Console.WriteLine("\tЭто не действительный XPS-файл. Используйте инструмент проверки соответствия XPS для его отладки.");
            }
            Console.WriteLine("\tПродолжение с следующим XPS-файлом.\n");
        }
    }
}//конец класса Program

В этом примере мы конвертируем документ PDF в XPS и добавляем его как задачу в очередь локального принтера.