.NET CoreでPDFファイルを印刷する方法

以下のコードスニペットは Aspose.PDF.Drawing ライブラリでも動作します。

.NET CoreでPdfドキュメントを印刷する

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

        // 印刷スレッドを開始します。Threadコンストラクタに渡されたメソッドが実行されます。
        printingThread.Start();
    }//end 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ファイルではありません。isXPS Conformance Toolでデバッグしてください。");
            }
            Console.WriteLine("\t次のXPSファイルの処理を続けます。\n");
        }
    }
}//end Program class

この例では、PDFドキュメントをXPSに変換し、ローカルプリンターのキューにジョブとして追加します。