WPFアプリケーションでPDFを印刷する
Contents
[
Hide
]
次のコードスニペットも Aspose.PDF.Drawing ライブラリで動作します。
直接印刷
Aspose.PDF ライブラリには、PDFファイルをXPSに変換する機能があります。この機能を使用して、ドキュメントの印刷を整理できます。 直接印刷の例を考えてみましょう:
private void Print_OnClick(object sender, RoutedEventArgs e)
{
var openFileDialog = new OpenFileDialog
{
Filter = "PDF Documents|*.pdf"
};
openFileDialog.ShowDialog();
Aspose.Pdf.Document document = new Document(openFileDialog.FileName);
var memoryStream = new MemoryStream();
document.Save(memoryStream, SaveFormat.Xps);
var package = Package.Open(memoryStream);
//Create URI for Xps Package
//Any Uri will actually be fine here. It acts as a place holder for the
//Uri of the package inside of the PackageStore
var inMemoryPackageName = $"memorystream://{Guid.NewGuid()}.xps";
var packageUri = new Uri(inMemoryPackageName);
//Add package to PackageStore
PackageStore.AddPackage(packageUri, package);
var xpsDoc = new XpsDocument(package, CompressionOption.Maximum, inMemoryPackageName);
var fixedDocumentSequence = xpsDoc.GetFixedDocumentSequence();
var printDialog = new PrintDialog();
if (printDialog.ShowDialog() == true)
{
if (fixedDocumentSequence != null)
printDialog.PrintDocument(fixedDocumentSequence.DocumentPaginator, "A fixed document");
else
throw new NullReferenceException();
}
PackageStore.RemovePackage(packageUri);
xpsDoc.Close();
}
このケースでは、以下のステップに従います:
- OpenFileDialogを使用してPDFファイルを開く
- PDFをXPSに変換し、MemoryStreamオブジェクトに保存する
- MemoryStreamオブジェクトをXpsパッケージに関連付ける
- パッケージをパッケージストアに追加する
- パッケージに基づいてXpsDocumentを作成する
- FixedDocumentSequenceのインスタンスを取得する
- このシーケンスをPrintDialogを使用してプリンターに送信する
文書の表示と印刷
多くの場合、ユーザーは印刷前に文書を見たいと思います。ビューを実装するために、DocViewerクラスを使用できます。 このアプローチを実装するためのステップのほとんどは、前の例と同様です。
private void OpenFile_OnClick(object sender, RoutedEventArgs e)
{
var openFileDialog = new OpenFileDialog
{
Filter = "PDF Documents|*.pdf"
};
if (openFileDialog.ShowDialog() == true)
{
var document = new Document(openFileDialog.FileName);
var memoryStream = new MemoryStream();
document.Save(memoryStream, SaveFormat.Xps);
var package = Package.Open(memoryStream);
var inMemoryPackageName = $"memorystream://{Guid.NewGuid()}.xps";
var packageUri = new Uri(inMemoryPackageName);
//パッケージをパッケージストアに追加
PackageStore.AddPackage(packageUri, package);
var xpsDoc = new XpsDocument(package, CompressionOption.Maximum, inMemoryPackageName);
DocViewer.Document = xpsDoc.GetFixedDocumentSequence();
xpsDoc.Close();
};
}