PDF印刷の操作 - ファサード
プリンターとページ設定を使用してPDFファイルをデフォルトプリンターに印刷する
まず、ドキュメントが画像に変換され、プリンターに印刷されます。PdfViewerクラスのインスタンスを作成し、BindPdfメソッドを使用してドキュメントをそれにバインドし、特定の設定を行います。例では、A4フォーマット、縦方向を使用しています。printerSettingsでは、まず最初に印刷するプリンターの名前を指定します。そうでなければ、デフォルトプリンターに印刷されます。次に、必要なコピー数を設定します。
public static void PrintingPDFFile()
{
// Create PdfViewer object
PdfViewer viewer = new PdfViewer();
// Open input PDF file
viewer.BindPdf(_dataDir + "sample.pdf");
// Set attributes for printing
viewer.AutoResize = true; // Print the file with adjusted size
viewer.AutoRotate = true; // Print the file with adjusted rotation
viewer.PrintPageDialog = false; // Do not produce the page number dialog when printing
// Create objects for printer and page settings and PrintDocument
System.Drawing.Printing.PrinterSettings ps = new System.Drawing.Printing.PrinterSettings();
System.Drawing.Printing.PageSettings pgs = new System.Drawing.Printing.PageSettings();
System.Drawing.Printing.PrintDocument prtdoc = new System.Drawing.Printing.PrintDocument();
// Set printer name
ps.PrinterName = prtdoc.PrinterSettings.PrinterName;
// Set PageSize (if required)
pgs.PaperSize = new System.Drawing.Printing.PaperSize("A4", 827, 1169);
// Set PageMargins (if required)
pgs.Margins = new System.Drawing.Printing.Margins(0, 0, 0, 0);
// Print document using printer and page settings
viewer.PrintDocumentWithSettings(pgs, ps);
// Close the PDF file after printing
viewer.Close();
}
ドキュメントの印刷ダイアログを表示するには、次のコードスニペットを試してください:
public static void PrintingPDFDisplayPrintDialog()
{
// PdfViewer オブジェクトを作成
PdfViewer viewer = new PdfViewer();
// 入力 PDF ファイルを開く
viewer.BindPdf(_dataDir + "sample.pdf");
// 印刷のための属性を設定
viewer.AutoResize = true; // サイズを調整してファイルを印刷
viewer.AutoRotate = true; // 回転を調整してファイルを印刷
// プリンタとページ設定および PrintDocument のオブジェクトを作成
System.Drawing.Printing.PageSettings pgs = new System.Drawing.Printing.PageSettings
{
// PageSize を設定 (必要に応じて)
PaperSize = new System.Drawing.Printing.PaperSize("A4", 827, 1169),
// PageMargins を設定 (必要に応じて)
Margins = new System.Drawing.Printing.Margins(0, 0, 0, 0)
};
System.Windows.Forms.PrintDialog printDialog = new System.Windows.Forms.PrintDialog();
if (printDialog.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
// ドキュメント印刷コードをここに記述
// プリンタとページ設定を使用してドキュメントを印刷
System.Drawing.Printing.PrinterSettings ps = printDialog.PrinterSettings;
viewer.PrintDocumentWithSettings(pgs, ps);
}
// 印刷後に PDF ファイルを閉じる
viewer.Close();
}
PDFをソフトプリンターに印刷
ファイルに印刷するプリンターがあります。仮想プリンターの名前を設定し、前の例と同様に設定を行います。
public static void PrintingPDFToSoftPrinter()
{
// PdfViewerオブジェクトを作成
PdfViewer viewer = new PdfViewer();
// 入力PDFファイルを開く
viewer.BindPdf(_dataDir + "sample.pdf");
// 印刷の属性を設定
viewer.AutoResize = true; // サイズを調整してファイルを印刷
viewer.AutoRotate = true; // 回転を調整してファイルを印刷
viewer.PrintPageDialog = false; // 印刷時にページ番号ダイアログを表示しない
viewer.PrintAsImage = false;
// プリンターとページ設定、およびPrintDocumentのオブジェクトを作成
System.Drawing.Printing.PrinterSettings ps = new System.Drawing.Printing.PrinterSettings();
System.Drawing.Printing.PageSettings pgs = new System.Drawing.Printing.PageSettings();
// プリンター名を設定
ps.PrinterName = "HP Universal Printing PS (v7.0.0)";
// またはPDFプリンターを設定
//ps.PrinterName = "Adobe PDF";
// ページサイズを設定(必要な場合)
pgs.PaperSize = new System.Drawing.Printing.PaperSize("A4", 827, 1169);
// ページの余白を設定(必要な場合)
pgs.Margins = new System.Drawing.Printing.Margins(0, 0, 0, 0);
// プリンターとページ設定を使用してドキュメントを印刷
viewer.PrintDocumentWithSettings(pgs, ps);
// 印刷後にPDFファイルを閉じる
viewer.Close();
}
印刷ダイアログを隠す
Aspose.PDF for .NETを使用すると、印刷ダイアログを隠すことができます。このためには、PrintPageDialogメソッドを使用します。
以下のコードスニペットは、印刷ダイアログを隠す方法を示しています。
public static void PrintingPDFHidePrintDialog()
{
// PdfViewerオブジェクトを作成
PdfViewer viewer = new PdfViewer();
// 入力PDFファイルを開く
viewer.BindPdf(_dataDir + "sample.pdf");
// 印刷の属性を設定
viewer.AutoResize = true; // 調整されたサイズでファイルを印刷
viewer.AutoRotate = true; // 調整された回転でファイルを印刷
viewer.PrintPageDialog = false; // 印刷時にページ番号ダイアログを表示しない
// プリンタとページ設定およびPrintDocumentのオブジェクトを作成
System.Drawing.Printing.PrinterSettings ps = new System.Drawing.Printing.PrinterSettings();
System.Drawing.Printing.PageSettings pgs = new System.Drawing.Printing.PageSettings();
// XPS/PDFプリンタ名を設定
ps.PrinterName = "OneNote for Windows 10";
// ページサイズを設定(必要に応じて)
pgs.PaperSize = new System.Drawing.Printing.PaperSize("A4", 827, 1169);
// ページマージンを設定(必要に応じて)
pgs.Margins = new System.Drawing.Printing.Margins(0, 0, 0, 0);
// プリンタとページ設定を使用してドキュメントを印刷
viewer.PrintDocumentWithSettings(pgs, ps);
// 印刷後にPDFファイルを閉じる
viewer.Close();
}
カラーファイルのPDFをグレースケールでXPSファイルに印刷
カラーファイルのPDFドキュメントは、PdfViewerを使用して、グレースケールでXPSプリンタに印刷することができます。それを実現するためには、PdfViewer.PrintAsGrayscaleプロパティを使用し、それをtrueに設定する必要があります。次のコードスニペットは、PdfViewer.PrintAsGrayscaleプロパティの実装を示しています。
public static void PrintingPDFasGrayscale()
{
// PdfViewerオブジェクトを作成
PdfViewer viewer = new PdfViewer();
// 入力PDFファイルを開く
viewer.BindPdf(_dataDir + "sample.pdf");
// 印刷のための属性を設定
viewer.AutoResize = true; // 調整されたサイズでファイルを印刷
viewer.AutoRotate = true; // 調整された回転でファイルを印刷
viewer.PrintPageDialog = false; // 印刷時にページ番号ダイアログを表示しない
viewer.PrintAsGrayscale = false;
// プリンタとページ設定のオブジェクトとPrintDocumentを作成
System.Drawing.Printing.PrinterSettings ps = new System.Drawing.Printing.PrinterSettings();
System.Drawing.Printing.PageSettings pgs = new System.Drawing.Printing.PageSettings();
// XPS/PDFプリンタ名を設定
ps.PrinterName = "OneNote for Windows 10";
// ページサイズを設定(必要に応じて)
pgs.PaperSize = new System.Drawing.Printing.PaperSize("A4", 827, 1169);
// ページ余白を設定(必要に応じて)
pgs.Margins = new System.Drawing.Printing.Margins(0, 0, 0, 0);
// プリンタとページ設定を使用して文書を印刷
viewer.PrintDocumentWithSettings(pgs, ps);
// 印刷後にPDFファイルを閉じる
viewer.Close();
}
PDFからPostScriptへの変換
PdfViewer クラスはPDF文書を印刷する機能を提供し、このクラスを使用してPDFファイルをPostScript形式に変換することもできます。PDFファイルをPostScriptに変換するには、最初に任意のPSプリンターをインストールし、PdfViewerを使用してファイルに印刷するだけです。
次のコードスニペットは、PDFをPostScript形式に印刷および変換する方法を示しています。
public static void PrintingPDFToPostScript()
{
// PdfViewerオブジェクトを作成
PdfViewer viewer = new PdfViewer();
// 入力PDFファイルを開く
viewer.BindPdf(_dataDir + "sample.pdf");
// 印刷のための属性を設定
viewer.AutoResize = true; // サイズを調整してファイルを印刷
viewer.AutoRotate = true; // 回転を調整してファイルを印刷
viewer.PrintPageDialog = false; // 印刷時にページ番号ダイアログを表示しない
viewer.PrintAsImage = false;
// プリンターとページ設定およびPrintDocumentのオブジェクトを作成
System.Drawing.Printing.PrinterSettings ps = new System.Drawing.Printing.PrinterSettings();
System.Drawing.Printing.PageSettings pgs = new System.Drawing.Printing.PageSettings();
// XPS/PDFプリンター名を設定
ps.PrinterName = "HP Universal Printing PS (v7.0.0)";
// 出力ファイル名とPrintToFile属性を設定
ps.PrintFileName = _dataDir + "PdfToPostScript_out.ps";
ps.PrintToFile = true;
// PageSizeを設定(必要な場合)
pgs.PaperSize = new System.Drawing.Printing.PaperSize("A4", 827, 1169);
// PageMarginsを設定(必要な場合)
pgs.Margins = new System.Drawing.Printing.Margins(0, 0, 0, 0);
// プリンターとページ設定を使用して文書を印刷
viewer.PrintDocumentWithSettings(pgs, ps);
// 印刷後にPDFファイルを閉じる
viewer.Close();
}
印刷ジョブのステータスを確認する
PDFファイルは、印刷ダイアログを表示せずに、物理プリンタおよびMicrosoft XPS Document Writerに印刷することができます。PdfViewer クラスを使用します。大きなPDFファイルを印刷する場合、プロセスに時間がかかることがあり、印刷プロセスが完了したか、問題が発生したかをユーザーが確認できない場合があります。印刷ジョブのステータスを確認するには、PrintStatusプロパティを使用します。以下のコードスニペットは、PDFファイルをXPSファイルに印刷し、印刷ステータスを取得する方法を示しています。
public static void CheckingPrintJobStatus()
{
// PdfViewerオブジェクトを作成
PdfViewer viewer = new PdfViewer();
// 入力PDFファイルを開く
viewer.BindPdf(_dataDir + "sample1.pdf");
// 印刷の属性を設定
viewer.AutoResize = true; // 調整されたサイズでファイルを印刷
viewer.AutoRotate = true; // 調整された回転でファイルを印刷
viewer.PrintPageDialog = false; // 印刷時にページ番号ダイアログを表示しない
viewer.PrintAsImage = false;
// プリンタとページ設定、およびPrintDocumentのオブジェクトを作成
System.Drawing.Printing.PrinterSettings ps = new System.Drawing.Printing.PrinterSettings();
System.Drawing.Printing.PageSettings pgs = new System.Drawing.Printing.PageSettings();
// XPS/PDFプリンタ名を設定
ps.PrinterName = "HP Universal Printing PS (v7.0.0)";
// 出力ファイル名とPrintToFile属性を設定
ps.PrintFileName = _dataDir + "PdfToPostScript_out.ps";
ps.PrintToFile = true;
// PageSizeを設定(必要に応じて)
pgs.PaperSize = new System.Drawing.Printing.PaperSize("A4", 827, 1169);
// PageMarginsを設定(必要に応じて)
pgs.Margins = new System.Drawing.Printing.Margins(0, 0, 0, 0);
// プリンタとページ設定を使用してドキュメントを印刷
viewer.PrintDocumentWithSettings(pgs, ps);
// 印刷ステータスを確認
if (viewer.PrintStatus != null && viewer.PrintStatus is Exception ex)
{
Console.WriteLine(ex.Message);
}
else
{
// エラーが見つかりませんでした。印刷作業は問題なく完了しました
Console.WriteLine("印刷が問題なく完了しました。");
}
// 印刷後にPDFファイルを閉じる
viewer.Close();
}
struct PrintingJobSettings
{
public int ToPage { get; set; }
public int FromPage { get; set; }
public string OutputFile { get; set; }
public System.Drawing.Printing.Duplex Mode { get; set; }
}
SimplexモードとDuplexモードでのページの印刷
特定の印刷ジョブでは、PDFドキュメントのページをDuplexモードまたはSimplexモードで印刷することができますが、1つの印刷ジョブ内で一部のページをsimplexとして、他のページをduplexとして印刷することはできません。しかし、要件を達成するために、異なるページ範囲とPrintingJobSettingsオブジェクトを使用することができます。以下のコードスニペットは、PDFファイルの一部のページをSimplexモードで、一部のページをDuplexモードで印刷する方法を示しています。