PDFファイルを印刷プレビューなしで印刷する

今回は「DioDocs(ディオドック)」でPDFファイルを印刷プレビューなしでプリンターで直接印刷する方法を紹介したいと思います。こちらの機能は、例えば「サーバーに保存されているPDFファイルをバッチ処理で印刷したい」といったケースで利用できる機能です。

2022年2月9日(水)にリリースされた「DioDocs V5J」でDioDocs for PDFに追加されている機能になります。

PDFファイルを印刷するには?

DioDocs for PDFでPDFファイルをプリンターで印刷するには、以下のデモに含まれているGcPDFPrintManagerクラス、PageScaling列挙体を使用します。

デモの「Direct2D を使用して Windows で PDF を印刷する」を見る
製品ヘルプの「印刷」を見る

以下のように GcPDFPrintManagerクラスのPrintメソッドを使用して、GcPdfDocumentオブジェクトに読み込んだPDFファイルを印刷することができます。印刷設定は GcPDFPrintManagerクラスのPrinterSettingsで設定できます。

// PDFファイルを読み込み
var fs = File.OpenRead("diodocs_startguide_excel_template.pdf");
var doc = new GcPdfDocument();
doc.Load(fs);

// PDFファイルを印刷
GcPdfPrintManager pm = new GcPdfPrintManager();
pm.Doc = doc;
pm.PrinterSettings = new PrinterSettings();
pm.PrinterSettings.PrinterName = "Microsoft Print to PDF";
pm.OutputRange = new OutputRange(5, 10);
pm.PageScaling = PageScaling.FitToPrintableArea;
pm.Print();

上記コードを実装しているサンプルはコチラです。

https://github.com/GrapeCityJP/DioDocsPdfDirectPrint-Basic


印刷処理の実装部分をクラスライブラリにしてみる

前述したようなGcPDFPrintManagerクラスとPageScaling列挙体の実装を、印刷処理を利用するアプリケーションごとに記載するのはあまり実用的とは言えません。そこでこの印刷処理の部分をクラスライブラリとして別のプロジェクトとして実装し、参照する方法を試してみます。

以下のように「DioDocsPdfPrintLibrary」というクラスライブラリのプロジェクトを追加して、コンソールアプリケーション「DioDocsPdfDirectPrint」から参照するようにします。

印刷処理の実装部分をクラスライブラリにしてみる
印刷処理の実装部分をクラスライブラリにしてみる

この方法では、コンソールアプリケーション「DioDocsPdfDirectPrint」にGcPDFPrintManagerクラスとPageScaling列挙体の実装を記載しないので中身がスッキリした状態になります。また、他のアプリケーションからもクラスライブラリ「DioDocsPdfPrintLibrary」を利用することができるようになります。

上記コードを実装しているサンプルはコチラです。

https://github.com/GrapeCityJP/DioDocsPdfDirectPrint-ClassLibrary