طباعة PDF في تطبيق WPF
تعمل عينة الكود التالية أيضًا مع مكتبة Aspose.PDF.Drawing .
الطباعة المباشرة
تمتلك مكتبة Aspose.PDF القدرة على تحويل ملفات PDF إلى XPS. يمكننا استخدام هذه الوظيفة لتنظيم طباعة المستندات.
دعونا نعتبر المثال الخاص بالطباعة المباشرة:
.NET Core 3.1
Copy
private static void DirectPrintWpf ( )
{
var openFileDialog = new OpenFileDialog
{
Filter = "PDF Documents|*.pdf"
};
if ( openFileDialog . ShowDialog () == true )
{
using ( var document = new Aspose . Pdf . Document ( openFileDialog . FileName ))
{
using ( var memoryStream = new MemoryStream ())
{
document . Save ( memoryStream , SaveFormat . Xps );
using ( var package = Package . Open ( memoryStream ))
{
var inMemoryPackageName = $"memorystream://{Guid.NewGuid()} .xps" ;
var packageUri = new Uri ( inMemoryPackageName );
PackageStore . AddPackage ( packageUri , package );
using ( 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" );
}
}
PackageStore . RemovePackage ( packageUri );
}
}
}
}
}
}
.NET 8
Copy
private static void DirectPrintWpf ( )
{
var openFileDialog = new OpenFileDialog
{
Filter = "PDF Documents|*.pdf"
};
if ( openFileDialog . ShowDialog ())
{
using var document = new Aspose . Pdf . Document ( openFileDialog . FileName );
using var memoryStream = new MemoryStream ();
document . Save ( memoryStream , SaveFormat . Xps );
using var package = Package . Open ( memoryStream );
var inMemoryPackageName = $"memorystream://{Guid.NewGuid()} .xps" ;
var packageUri = new Uri ( inMemoryPackageName );
PackageStore . AddPackage ( packageUri , package );
using 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" );
}
}
PackageStore . RemovePackage ( packageUri );
}
}
في هذه الحالة، سنتبع الخطوات التالية:
فتح ملف PDF باستخدام OpenFileDialog.
تحويل PDF إلى XPS وتخزينه في كائن MemoryStream.
ربط كائن MemoryStream مع حزمة Xps.
إضافة الحزمة إلى متجر الحزم.
إنشاء XpsDocument بناءً على الحزمة.
الحصول على نسخة من FixedDocumentSequence.
إرسال هذه السلسلة إلى الطابعة باستخدام PrintDialog.
عرض وطباعة المستند
في العديد من الحالات، يرغب المستخدمون في رؤية المستند قبل الطباعة. لتنفيذ العرض، يمكننا استخدام عنصر التحكم DocumentViewer
.
معظم الخطوات لتنفيذ هذا النهج مشابهة للمثال السابق.