Mencetak PDF dalam aplikasi WPF
Contents
[
Hide
]
Potongan kode berikut juga bekerja dengan pustaka Aspose.PDF.Drawing.
Cetak Langsung
Pustaka Aspose.PDF memiliki kemampuan untuk mengonversi file PDF menjadi XPS. Kita dapat menggunakan fungsi ini untuk mengatur pencetakan dokumen. Mari kita pertimbangkan contoh untuk pencetakan langsung:
private void Print_OnClick(object sender, RoutedEventArgs e)
{
var openFileDialog = new OpenFileDialog
{
Filter = "Dokumen PDF|*.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);
//Buat URI untuk Paket Xps
//URI apa pun sebenarnya akan baik-baik saja di sini. Ini berfungsi sebagai tempat penampung untuk
//URI paket di dalam PackageStore
var inMemoryPackageName = $"memorystream://{Guid.NewGuid()}.xps";
var packageUri = new Uri(inMemoryPackageName);
//Tambahkan paket ke 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, "Dokumen tetap");
else
throw new NullReferenceException();
}
PackageStore.RemovePackage(packageUri);
xpsDoc.Close();
}
Dalam kasus ini, kita akan mengikuti langkah-langkah berikut:
- Buka file PDF menggunakan OpenFileDialog
- Konversi PDF ke XPS dan simpan dalam objek MemoryStream
- Hubungkan objek MemoryStream dengan Xps Package
- Tambahkan paket ke Package Store
- Buat XpsDocument berdasarkan paket
- Dapatkan instance dari FixedDocumentSequence
- Kirim sequence ini ke printer menggunakan PrintDialog
Lihat dan cetak dokumen
Dalam banyak kasus, pengguna ingin melihat dokumen sebelum mencetak. Untuk mengimplementasikan tampilan, kita dapat menggunakan kelas DocViewer. Sebagian besar langkah untuk mengimplementasikan pendekatan ini serupa dengan contoh sebelumnya.
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);
//Tambahkan paket ke PackageStore
PackageStore.AddPackage(packageUri, package);
var xpsDoc = new XpsDocument(package, CompressionOption.Maximum, inMemoryPackageName);
DocViewer.Document = xpsDoc.GetFixedDocumentSequence();
xpsDoc.Close();
};
}