طباعة مستند PDF في تطبيق WPF
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();
}
في هذه الحالة، سنتبع الخطوات التالية:
- فتح ملف PDF باستخدام OpenFileDialog
- تحويل 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();
};
}