العمل مع طباعة PDF
طباعة ملف PDF إلى الطابعة الافتراضية باستخدام إعدادات الطابعة والصفحة
تسمح لك فئة PdfViewer بطباعة ملف PDF إلى الطابعة الافتراضية. لذلك تحتاج إلى إنشاء كائن PdfViewer وفتح ملف PDF باستخدام الطريقة openPdfFile(..).
قم باستدعاء الطريقة printDocument(..) لطباعة ملف PDF إلى الطابعة الافتراضية.
يظهر مقتطف الشيفرة التالي كيفية طباعة ملف PDF إلى الطابعة الافتراضية مع إعدادات الطابعة والصفحة.
public static void PrintingPDFFile() {
// إنشاء كائن PdfViewer
PdfViewer viewer = new PdfViewer();
// فتح ملف PDF المدخل
viewer.bindPdf(_dataDir + "sample.pdf");
// تعيين السمات للطباعة
viewer.setAutoResize(true); // طباعة الملف بحجم معدل
viewer.setAutoRotate(true); // طباعة الملف بتدوير معدل
viewer.setPrintPageDialog(false); // عدم إنتاج حوار رقم الصفحة عند الطباعة
// إنشاء كائنات لإعدادات الطابعة والصفحة وPrintDocument
PdfPrinterSettings printerSettings = new PdfPrinterSettings();
PrintPageSettings pageSettings = new PrintPageSettings();
// تعيين اسم الطابعة
printerSettings.setPrinterName("Microsoft Print to PDF");
// تعيين حجم الصفحة (إذا لزم الأمر)
pageSettings.setPaperSize(new PrintPaperSize("A4", 827, 1169));
// تعيين هوامش الصفحة (إذا لزم الأمر)
pageSettings.setMargins(new PrinterMargins(0, 0, 0, 0));
// طباعة المستند باستخدام إعدادات الطابعة والصفحة
viewer.printDocumentWithSettings(pageSettings, printerSettings);
// إغلاق ملف PDF بعد الطباعة
viewer.close();
}
من أجل عرض مربع حوار الطباعة، حاول استخدام شفرة الكود التالية:
public static void PrintingPDFDisplayPrintDialog() {
// إنشاء كائن PdfViewer
PdfViewer viewer = new PdfViewer();
// فتح ملف PDF المدخل
viewer.bindPdf(_dataDir + "sample.pdf");
// ضبط السمات للطباعة
viewer.setAutoResize(true); // طباعة الملف بالحجم المعدل
viewer.setAutoRotate(true); // طباعة الملف بالدوران المعدل
viewer.setPrintPageDialog(true);
// إنشاء كائنات لإعدادات الطابعة والصفحة وPrintDocument
PdfPrinterSettings printerSettings = new PdfPrinterSettings();
PrintPageSettings pageSettings = new PrintPageSettings();
// ضبط حجم الصفحة (إذا لزم الأمر)
pageSettings.setPaperSize(new PrintPaperSize("A4", 827, 1169));
// ضبط هوامش الصفحة (إذا لزم الأمر)
pageSettings.setMargins(new PrinterMargins(0, 0, 0, 0));
java.awt.print.PrinterJob pj = java.awt.print.PrinterJob.getPrinterJob();
if (pj.printDialog()) {
printerSettings.setPrinterName(pj.getPrintService().getName());
printerSettings.setCopies((short) pj.getCopies());
// طباعة المستند باستخدام إعدادات الطابعة والصفحة
viewer.printDocumentWithSettings(pageSettings, printerSettings);
}
// إغلاق ملف PDF بعد الطباعة
viewer.close();
}
طباعة PDF إلى طابعة افتراضية
هناك طابعات تطبع إلى ملف. نقوم بتعيين اسم الطابعة الافتراضية، وبالتشابه مع المثال السابق، نقوم بإجراء الإعدادات.
public static void PrintingPDFToSoftPrinter() {
// إنشاء كائن PdfViewer
PdfViewer viewer = new PdfViewer();
// فتح ملف PDF المدخل
viewer.bindPdf(_dataDir + "sample.pdf");
// تعيين السمات للطباعة
viewer.setAutoResize(true); // طباعة الملف بالحجم المعدل
viewer.setAutoRotate(true); // طباعة الملف بالتدوير المعدل
viewer.setPrintPageDialog(false); // عدم إنتاج مربع حوار رقم الصفحة عند الطباعة
// إنشاء كائنات للطابعة وإعدادات الصفحة وPrintDocument
PdfPrinterSettings printerSettings = new PdfPrinterSettings();
PrintPageSettings pageSettings = new PrintPageSettings();
// تعيين الطابعة Microsoft Soft Printer
printerSettings.setPrinterName("Microsoft Print to PDF");
// أو Adobe
// printerSettings.setPrinterName("Adobe PDF");
// تعيين حجم الصفحة (إذا لزم الأمر)
pageSettings.setPaperSize(new PrintPaperSize("A4", 827, 1169));
// تعيين هوامش الصفحة (إذا لزم الأمر)
pageSettings.setMargins(new PrinterMargins(0, 0, 0, 0));
// طباعة المستند باستخدام إعدادات الطابعة والصفحة
viewer.printDocumentWithSettings(pageSettings, printerSettings);
// إغلاق ملف PDF بعد الطباعة
viewer.close();
}
إخفاء مربع حوار الطباعة
تتيح لك Aspose.PDF for Java إخفاء مربع حوار الطباعة. لاستخدام هذه الميزة، استخدم طريقة getPrintPageDialog.
يوضح لك مقطع الكود التالي كيفية إخفاء مربع حوار الطباعة.
public static void PrintingPDFHidePrintDialog() {
// إنشاء كائن PdfViewer
PdfViewer viewer = new PdfViewer();
// فتح ملف PDF المدخل
viewer.bindPdf(_dataDir + "sample.pdf");
// تعيين الخصائص للطباعة
viewer.setAutoResize(true); // طباعة الملف بحجم معدل
viewer.setAutoRotate(true); // طباعة الملف بتدوير معدل
viewer.setPrintPageDialog(false); // عدم إنتاج مربع حوار رقم الصفحة عند الطباعة
// إنشاء كائنات لإعدادات الطابعة والصفحة و PrintDocument
PdfPrinterSettings printerSettings = new PdfPrinterSettings();
PrintPageSettings pageSettings = new PrintPageSettings();
// تعيين الطابعة Microsoft Soft Printer
printerSettings.setPrinterName("Microsoft Print to PDF");
// تعيين حجم الصفحة (إذا لزم الأمر)
pageSettings.setPaperSize(new PrintPaperSize("A4", 827, 1169));
// تعيين هوامش الصفحة (إذا لزم الأمر)
pageSettings.setMargins(new PrinterMargins(0, 0, 0, 0));
// طباعة المستند باستخدام إعدادات الطابعة والصفحة
viewer.printDocumentWithSettings(pageSettings, printerSettings);
// إغلاق ملف PDF بعد الطباعة
viewer.close();
}
طباعة ملف PDF ملون إلى ملف XPS كدرجات رمادية
يمكن طباعة مستند PDF ملون إلى طابعة XPS كدرجات رمادية، باستخدام PdfViewer. لتحقيق ذلك، تحتاج إلى استخدام الخاصية PdfViewer.PrintAsGrayscale وتعيينها إلى true.
يوضح مقطع الشيفرة التالي تنفيذ خاصية PdfViewer.PrintAsGrayscale.
public static void PrintingPDFasGrayscale() {
// إنشاء كائن PdfViewer
PdfViewer viewer = new PdfViewer();
// فتح ملف PDF المدخل
viewer.bindPdf(_dataDir + "sample.pdf");
// تعيين السمات للطباعة
viewer.setAutoResize(true); // طباعة الملف بحجم معدل
viewer.setAutoRotate(true); // طباعة الملف بتدوير معدل
viewer.setPrintAsGrayscale(true);
// إنشاء كائنات لإعدادات الطابعة والصفحة و PrintDocument
PdfPrinterSettings printerSettings = new PdfPrinterSettings();
PrintPageSettings pageSettings = new PrintPageSettings();
// تعيين الطابعة إلى Microsoft Soft Printer
printerSettings.setPrinterName("Microsoft Print to PDF");
// تعيين حجم الصفحة (إذا لزم الأمر)
pageSettings.setPaperSize(new PrintPaperSize("A4", 827, 1169));
// تعيين هوامش الصفحة (إذا لزم الأمر)
pageSettings.setMargins(new PrinterMargins(0, 0, 0, 0));
// طباعة المستند باستخدام إعدادات الطابعة والصفحة
viewer.printDocumentWithSettings(pageSettings, printerSettings);
// إغلاق ملف PDF بعد الطباعة
viewer.close();
}
تحويل PDF إلى PostScript
تتيح فئة PdfViewer إمكانية طباعة مستندات PDF ومع مساعدة هذه الفئة، يمكننا أيضًا تحويل ملفات PDF إلى تنسيق PostScript. لتحويل ملف PDF إلى PostScript، قم أولاً بتثبيت أي طابعة PS واطبع الملف بمساعدة PdfViewer.
يوضح لك مقطع الشيفرة التالي كيفية الطباعة والتحويل من PDF إلى تنسيق PostScript.
public static void PrintingPDFToPostScript() {
// إنشاء كائن PdfViewer
PdfViewer viewer = new PdfViewer();
// فتح ملف PDF الإدخال
viewer.bindPdf(_dataDir + "sample.pdf");
// تعيين السمات للطباعة
viewer.setAutoResize(true); // طباعة الملف بحجم معدل
viewer.setAutoRotate(true); // طباعة الملف بتدوير معدل
viewer.setPrintAsGrayscale(true);
// إنشاء كائنات لإعدادات الطابعة والصفحة وPrintDocument
PdfPrinterSettings printerSettings = new PdfPrinterSettings();
PrintPageSettings pageSettings = new PrintPageSettings();
// تعيين طابعة PostSScript
printerSettings.setPrinterName("HP Universal Printing PS (v7.0.0)");
printerSettings.setPrintToFile(true);
printerSettings.setPrintFileName(_dataDir+"result.ps");
// تعيين حجم الصفحة (إذا لزم الأمر)
pageSettings.setPaperSize(new PrintPaperSize("A4", 827, 1169));
// تعيين هوامش الصفحة (إذا لزم الأمر)
pageSettings.setMargins(new PrinterMargins(0, 0, 0, 0));
// طباعة المستند باستخدام إعدادات الطابعة والصفحة
viewer.printDocumentWithSettings(pageSettings, printerSettings);
// إغلاق ملف PDF بعد الطباعة
viewer.close();
}
التحقق من حالة مهمة الطباعة
يمكن طباعة ملف PDF على طابعة فعلية وكذلك على كاتب مستندات Microsoft XPS، دون إظهار مربع حوار الطباعة، باستخدام فئة PdfViewer. عند طباعة ملفات PDF كبيرة، قد تستغرق العملية وقتًا طويلاً لذلك قد لا يكون المستخدم متأكدًا مما إذا كانت عملية الطباعة قد اكتملت أو واجهت مشكلة. لتحديد حالة مهمة الطباعة، استخدم خاصية PrintStatus. يوضح لك مقطع الشيفرة التالي كيفية طباعة ملف PDF إلى ملف XPS والحصول على حالة الطباعة.
public static void CheckingPrintJobStatus() {
// إنشاء كائن PdfViewer
PdfViewer viewer = new PdfViewer();
// فتح ملف PDF المدخل
viewer.bindPdf(_dataDir + "sample.pdf");
// تعيين السمات للطباعة
viewer.setAutoResize(true); // طباعة الملف مع ضبط الحجم
viewer.setAutoRotate(true); // طباعة الملف مع ضبط الدوران
viewer.setPrintAsGrayscale(true);
// إنشاء كائنات لإعدادات الطابعة والصفحة وPrintDocument
PdfPrinterSettings printerSettings = new PdfPrinterSettings();
PrintPageSettings pageSettings = new PrintPageSettings();
// تعيين طابعة Microsoft Soft Printer
printerSettings.setPrinterName("HP Universal Printing PS (v7.0.0)");
// تعيين حجم الصفحة (إذا لزم الأمر)
pageSettings.setPaperSize(new PrintPaperSize("A4", 827, 1169));
// تعيين هوامش الصفحة (إذا لزم الأمر)
pageSettings.setMargins(new PrinterMargins(0, 0, 0, 0));
// طباعة المستند باستخدام إعدادات الطابعة والصفحة
viewer.printDocumentWithSettings(pageSettings, printerSettings);
// // التحقق من حالة الطباعة
if (viewer.getPrintStatus() != null) {
Exception ex = (Exception) viewer.getPrintStatus();
System.out.println(ex.getMessage());
} else {
// لم يتم العثور على أي أخطاء. لقد اكتملت مهمة الطباعة بنجاح
System.out.println("Everything went OK!");
}
// إغلاق ملف PDF بعد الطباعة
viewer.close();
}