طباعة مستند PDF في تطبيق WPF

تعمل الشظرة البرمجية التالية أيضًا مع مكتبة 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();

    }

في هذه الحالة، سنتبع الخطوات التالية:

  1. فتح ملف PDF باستخدام OpenFileDialog
  2. تحويل PDF إلى XPS وتخزينه في كائن MemoryStream
  3. ربط كائن MemoryStream بحزمة Xps
  4. إضافة الحزمة إلى متجر الحزم
  5. إنشاء XpsDocument استنادًا إلى الحزمة
  6. الحصول على نسخة من FixedDocumentSequence
  7. إرسال هذه السلسلة إلى الطابعة باستخدام 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();
    };
}