طباعة مستند برمجياً أو باستخدام مربعات الحوار

توضح هذه المقالة كيفية طباعة مستند معالجة النصوص من تطبيق خدمة ASP.NET أو Windows باستخدام Aspose.Words وXpsPrint API. ويوضح أيضًا طرق طباعة مستند من خلال مربعات حوار الإعدادات ومعاينة الطباعة وتقدم الطباعة، ويشرح كيفية تقليل وقت الاستدعاء الأول لطباعة مستند.

طباعة مستند على Server عبر XpsPrint API

هذا القسم مخصص للمستخدمين الذين يريدون إرسال مستند XPS إلى XpsPrint API غير المُدار من تطبيق .NET باستخدام Aspose.Words.

قيود طباعة مستند في تطبيقات خدمة ASP.NET أو Windows

عند تطوير تطبيق .NET الذي ينتج بعض المخرجات المطبوعة، يمكنك عادةً استخدام الفئات المتوفرة في مساحة اسم System.Drawing.Printing، أو فئات Windows Presentation Foundation (WPF). ومع ذلك، إذا كان التطبيق عبارة عن تطبيق خدمة ASP.NET أو Windows، فستكون خيارات الطباعة محدودة، لأن Microsoft لا يشجع استخدام هذا الأسلوب. فئات الطباعة .NET Framework غير مدعومة بواسطة تطبيق الخدمات. يتضمن ذلك صفحات ASP، والتي يتم تشغيلها بشكل عام في سياق خدمة الخادم.

الفئات الموجودة في مساحة اسم System.Drawing.Printing غير مدعومة للاستخدام داخل خدمة Windows أو تطبيق أو خدمة ASP.NET، وقد تؤدي محاولة استخدامها إلى انخفاض أداء الخدمة، واستثناءات وقت التشغيل، ومشكلات أخرى. كما أن استخدام WPF لإنشاء خدمات Windows غير مدعوم. نظرًا لأن WPF عبارة عن تقنية عرض تقديمي، فإن خدمة Windows تتطلب أذونات مناسبة لإجراء العمليات المرئية التي تتضمن تفاعل المستخدم. إذا لم يكن لدى خدمة Windows مثل هذه الأذونات، فقد تكون هناك نتائج غير متوقعة.

يوفر كائن Aspose.Words Document مجموعة من أساليب Print لطباعة المستندات. تستخدم هذه الطرق فئات الطباعة .NET المحددة في مساحة اسم System.Drawing.Printing. هناك العديد من عملاء Aspose.Words الذين يستخدمونها بنجاح للطباعة في تطبيقاتهم من جانب الخادم. ومع ذلك، توضح هذه المقالة طريقة بديلة للطباعة متوافقة مع توصيات Microsoft.

طرق طباعة مستند على Server

الطريقة الصحيحة لطباعة المستندات وفقًا لـ Microsoft هي استخدام XpsPrint API غير المُدار. يتوفر API هذا على Windows 7 وWindows Server 2008 R2 وعلى Windows Vista بشرط تثبيت تحديث النظام الأساسي لـ Windows Vista.

نظرًا لأن Aspose.Words يمكنه بسهولة تحويل أي مستند إلى XPS، فأنت تحتاج فقط إلى كتابة الكود الذي يمرر مستند XPS إلى XpsPrint API. المشكلة الوحيدة هي أن XpsPrint API غير مُدار ويتطلب بعض المعرفة بتكنولوجيا استدعاء النظام الأساسي.

لطباعة مستند، يوفر Aspose.Words فئة XpsPrintHelper تحتوي على طريقة طباعة بسيطة، حيث تحتاج فقط إلى تحديد المعلمات التالية (راجع المزيد من التفاصيل في مقالة طباعة المستند عبر XPS API):

  • الوثيقة التي تريد طباعتها.
  • اسم الطابعة.
  • اسم الوظيفة (اختياري).
  • قيمة منطقية، تحدد ما إذا كان يجب على البرنامج الانتظار حتى تكتمل مهمة الطباعة. لذلك، سيقوم النظام إما بالتحقق من طباعة المستند بنجاح أو العودة فورًا بعد إرسال مهمة الطباعة. في الحالة الأخيرة، من المستحيل تحديد ما إذا كانت مهمة الطباعة ناجحة.

عند مواجهة أي مشاكل في إرسال المستند أو طباعته، ستطرح الطريقة استثناءً.

يوضح مثال الكود أدناه كيفية طباعة مستند باستخدام فئة XpsPrintHelper:

عند تشغيل المشروع، يقوم بطباعة مستند نموذجي على الطابعة المحددة ويفتح نافذة وحدة التحكم لعرض نتائج الطباعة. عند اكتمال مهمة الطباعة أو ظهور الأخطاء، سيعرض النظام رسالة نجاح أو نص الاستثناء الذي تم طرحه.

يمكنك أيضًا ضبط بعض إعدادات الطباعة باستخدام فئة PageSetup. على سبيل المثال، في Microsoft Word، يتم تعريف أدراج الطابعة لكل قسم وتكون خاصة بالطابعة. لذلك، يمكنك تغيير هذه القيم لكل قسم برمجيًا عبر خصائص FirstPageTray وOtherPagesTray.

هناك نوعان من عمليات التحميل الزائد للأسلوب XpsPrintHelper.Print. التحميل الزائد الأول يأخذ كائن Document ويحفظه في ملف MemoryStream بتنسيق XPS. التحميل الزائد الثاني يقبل كائن Stream. يجب أن يحتوي الدفق على مستند بتنسيق XPS.

يمكنك تنزيل أمثلة التحميل الزائد للطريقة من Aspose.Words GitHub.

يمكنك تنزيل الملف النموذجي لهذا المثال من Aspose.Words GitHub.

طباعة مستند باستخدام الإعدادات ومربعات حوار معاينة الطباعة

عند العمل مع المستندات، غالبًا ما يُطلب طباعتها على الطابعة المحددة. من المفيد استخدام مربع حوار معاينة الطباعة لفحص كيفية ظهور المستند المطبوع بصريًا واختيار خيارات الطباعة ذات الصلة.

لا يحتوي Aspose.Words على مربعات حوار أو نماذج مضمنة ولكنه يطبق فئة AsposeWordsPrintDocument، بناءً على فئة .NET PrintDocument. يمكن تمرير مثيل لهذه الفئة إلى نموذج PrintPreviewDialog لمعاينة المستند وطباعته. كما تحدد فئة PrintPreviewDialog الإخراج الذي سيتم إرساله إلى الطابعة.

يوضح المثال التالي كيفية استخدام هذه الفئات لطباعة مستند من Aspose.Words عبر معاينة الطباعة ومربعات حوار الإعدادات:

لتحسين مظهر إعدادات مربع حوار معاينة الطباعة، حدد خصائص فئة PrintPreviewDialog.

طباعة صفحات متعددة على ورقة واحدة

من المفيد دائمًا أن تتمتع بمزيد من المرونة عند طباعة المستندات. باستخدام .NET وAspose.Words، يمكنك بسهولة ضبط عملية الطباعة لتنفيذ المنطق المخصص الخاص بك عن طريق تحديد الطريقة التي سيظهر بها المستند على الصفحة المطبوعة.

كما في القسم السابق، يطبق Aspose.Words فئة MultipagePrintDocument، التي تعتمد على فئة .NET PrintDocument. وهذا يعني أنه يمكن استخدام البنية الأساسية الحالية لطباعة .NET بطريقة تمكن مربعات حوار الطباعة ومعاينة الطباعة من رؤية المستند قبل الطباعة. توفر فئة MultipagePrintDocument القدرة على طباعة عدة صفحات على ورقة واحدة.

تظهر نتيجة مثال الكود هذا أدناه:

print-a-document-programmatically-or-using-dialogs-aspose-words-net

إخفاء مربع حوار تقدم الطباعة عند طباعة مستند

لا يظهر مربع حوار تقدم الطباعة عند طباعة مستند عبر طريقة Print. ومع ذلك، يظهر مربع الحوار هذا أثناء الطباعة باستخدام طريقة Print أخرى. في هذه الحالة، لمنع ظهور مربع حوار الطباعة، يجب عليك تحديد إعدادات الطابعة الصالحة ووحدة التحكم القياسية في الطباعة بهذه الطريقة، كما هو موضح في المثال أدناه:

يمكنك تنزيل الملف النموذجي لهذا المثال من Aspose.Words GitHub.

كيفية تقليل وقت الاستدعاء الأول لطباعة مستند

يقوم Aspose.Words بقراءة بعض حقول PrinterSettings وتخزينها مؤقتًا لتقليل وقت الطباعة. يمكنك تحقيق ذلك عن طريق استدعاء أسلوب CachePrinterSettings. يتم استدعاء هذه الطريقة قبل بدء الطباعة إذا لم يتم تنفيذها مسبقًا. لاحظ أن إجمالي وقت الطباعة مع وبدون استدعاء هذه الطريقة هو نفسه تقريبًا. الغرض من استخدام هذه الطريقة هو تقليل وقت الاستدعاء الأول لأسلوب Print. يوضح مثال التعليمات البرمجية التالي كيفية استخدام هذه الطريقة:

أنظر أيضا