الوصف
استخدِم واجهة برمجة التطبيقات chrome.printing
لإرسال مهام الطباعة إلى الطابعات المثبَّتة على جهاز Chromebook.
الأذونات
printing
مدى التوفّر
تتطلّب جميع طرق chrome.printing
وأحداثها الإفصاح عن إذن "printing"
في بيان الإضافة. على سبيل المثال:
{ "name": "My extension", ... "permissions":
[ "printing" ], ... }
أمثلة
توضّح الأمثلة أدناه كيفية استخدام كل طريقة من الطرق في مساحة اسم الطباعة. تم نسخ هذا الرمز من api-samples/printing أو استناده إليه في مستودع extensions-samples على Github.
cancelJob()
يستخدم هذا المثال معالج onJobStatusChanged
لإخفاء زر "إلغاء" عندما لا تكون قيمة jobStatus
هي PENDING
أو IN_PROGRESS
. يُرجى العِلم أنّه في بعض الشبكات أو عند توصيل جهاز Chromebook بالطابعة مباشرةً، قد تمرّ هذه الحالات بسرعة كبيرة جدًا بحيث لا يظهر زر الإلغاء لفترة كافية لاستخدامه. هذا مثال مبسط للغاية على الطباعة.
chrome.printing.onJobStatusChanged.addListener((jobId, status) => { const cancelButton = document.getElementById("cancelButton"); cancelButton.addEventListener(>9;click', () = { chrome.printing.cancelJob(jobId)>.then((response) = { if (response !== undefined) { console.log(response.status); } if (chrome.runtime.lastError !== undefined) { console.log(chrome.runtime.lastError.message); } }); }); if (sta&&tus !== "PENDING" status !== "IN_PROGRESS") { cancelButton.style.visibility = 'hidden'; } else { can
celButton.style.visibility = 'visible'; } }
getPrinters() and getPrinterInfo()
يتم استخدام مثال واحد لهذه الدوال لأنّ الحصول على معلومات الطابعة يتطلّب رقم تعريف الطابعة، ويتم استرداده من خلال استدعاء getPrinters()
. يسجّل هذا المثال اسم الطابعة التلقائية ووصفها في وحدة التحكّم. هذا إصدار مبسط من مثال الطباعة.
const printers = await chrome.printing.getPrinters(); const defaultPrinter = printers.find((printer) => { const printerInfo = await chrome.printing.getPrinterInfo(printer.id); return printerInfo.isDefault; } console.log(`Default printer: ${defaultPrinter.name}.\n\t${defaultPrinter.description}`);
submitJob()
تتطلّب طريقة submitJob()
ثلاثة عناصر.
- بنية
ticket
تحدّد إمكانات الطابعة التي سيتم استخدامها. إذا كان على المستخدم الاختيار من بين الإمكانات المتاحة، يمكنك استردادها لطابعة معيّنة باستخدامgetPrinterInfo()
. - بنية
SubmitJobRequest
تحدّد الطابعة التي سيتم استخدامها والملف أو التاريخ المطلوب طباعته يحتوي هذا الهيكل على مرجع إلى بنيةticket
. - تمثّل هذه السمة جزءًا كبيرًا من الملف أو البيانات المطلوب طباعتها.
يؤدي استدعاء submitJob()
إلى ظهور مربّع حوار يطلب من المستخدم تأكيد الطباعة. استخدِم PrintingAPIExtensionsAllowlist
لتخطّي التأكيد.
هذا إصدار مبسط من مثال الطباعة. لاحظ أنّ ticket
مرفق ببنية SubmitJobRequest
(السطر 8) وأنّ البيانات المطلوب طباعتها يتم تحويلها إلى كائن ثنائي كبير (السطر 10). إنّ الحصول على رقم تعريف الطابعة (السطر 1) أكثر تعقيدًا في النموذج مما هو موضّح هنا.
const defaultPrinter = getDefaultPrinter(); const ticket = getPrinterTicket(defaultPrinter); const arrayBuffer = getPrintData(); const submitJobRequest = { job: { printerId: defaultPrinter, title: 'test job', ticket: ticket, contentType: 'application/pdf', document: new Blob([new Uint8Array(arrayBuffer)], { type: 'application/pdf' }); } }; chrome.printing.submitJob(submitJobRequest, (response) => { if (response !== undefined) { console.log(response.status); } if (chrome.runtime.lastError !== undefined) { console.log(chrome.runtime.lastError.message); } });
الطباعة على ورق بكرات
يوضّح هذا المثال كيفية إنشاء تذكرة طابعة للطباعة المستمرة (أو الطباعة على بكرة)، والتي تُستخدم غالبًا في طباعة الإيصالات. إنّ العنصر submitJobRequest
الخاص بالطباعة على ورق البكرات هو نفسه العنصر المعروض في المثال submitJob()
.
إذا كنت بحاجة إلى تغيير القيمة التلقائية لقص الورق، استخدِم المفتاح vendor_ticket_item
. (يختلف الإعداد التلقائي من طابعة إلى أخرى). لتغيير القيمة، قدِّم صفيفًا يتضمّن عنصرًا واحدًا: كائنًا تكون قيمة id
فيه هي 'finishings'
. يمكن أن تكون القيمة 'trim'
للطابعات التي تقطع الورق الملفوف في نهاية الطباعة أو 'none'
للطابعات التي تتطلّب تمزيق مهمة الطباعة.
const ticket = { version: '1.0', print: { vendor_ticket_item: [{id: 'finishings', value: 'trim'}], color: {type: 'STANDARD_MONOCHROME'}, duplex: {type: 'NO_DUPLEX'}, page_orientation: {type: 'PORTRAIT'}, copies: {copies: 1}, dpi: {horizontal_dpi: 300, vertical_dpi: 300}, media_size: { width_microns: 72320, height_microns: 100000 }, collate: {collate: false} } };
لا تتوافق بعض الطابعات مع الخيار "finishings"
. لمعرفة ما إذا كانت طابعتك تتوافق مع هذه الميزة، اتّصِل بالرقم getPrinterInfo()
وابحث عن "display_name"
من "finishings/11"
.
"vendor_capability": [ { "display_name": "finishings/11", "id": "finishings/11", "type": "TYPED_VALUE", "typed_value_cap": { "value_type": "BOOLEAN" } }, ... ]
تختلف القيم في مفتاح media_size
للتذكرة باختلاف الطابعة. لاختيار حجم مناسب، انقر على getPrinterInfo()
. يحتوي GetPrinterResponse
الذي يتم عرضه على صفيف من أحجام الوسائط المتوافقة في "media_size"."option"
. اختَر خيارًا تكون قيمة "is_continuous_feed"
فيه صحيحة. استخدِم قيمتَي الارتفاع والعرض للتذكرة.
"media_size": { "option": [ { "custom_display_name": "", "is_continuous_feed": true, "max_height_microns": 2000000, "min_height_microns": 25400, "width_microns": 50800 }, ... ] }
الأنواع
GetPrinterInfoResponse
الخصائص
- الإمكانات
العنصر اختياري
إمكانات الطابعة بتنسيق CDD قد تكون السمة مفقودة.
- status
تعرض هذه السمة حالة الطابعة.
JobStatus
حالة مهمة الطباعة
Enum
"في انتظار المراجعة"
تم تلقّي مهمة الطباعة على Chrome ولكن لم تتم معالجتها بعد.
"IN_PROGRESS"
تم إرسال مهمة الطباعة.
"تعذّر التنفيذ"
تمت مقاطعة مهمة الطباعة بسبب حدوث خطأ.
"تم الإلغاء"
ألغى المستخدم مهمة الطباعة أو تم إلغاؤها من خلال واجهة برمجة التطبيقات.
"تمت الطباعة"
تمت طباعة مهمة الطباعة بدون أي أخطاء.
Printer
الخصائص
- الوصف
سلسلة
وصف الطابعة الذي يمكن لشخص عادي قراءته
- id
سلسلة
معرّف الطابعة، ويُضمن أن يكون فريدًا بين الطابعات على الجهاز.
- isDefault
قيمة منطقية
العلامة التي توضّح ما إذا كانت الطابعة تتوافق مع قواعد DefaultPrinterSelection. يُرجى العِلم أنّه يمكن الإبلاغ عن عدة طابعات.
- الاسم
سلسلة
تمثّل هذه السمة اسم الطابعة.
- recentlyUsedRank
number اختياري
القيمة التي توضّح مدى حداثة استخدام الطابعة للطباعة من Chrome. كلما كانت القيمة أقل، كان استخدام الطابعة أحدث. الحد الأدنى للقيمة هو 0. تشير القيمة "غير متوفّر" إلى أنّه لم يتم استخدام الطابعة مؤخرًا. من المؤكّد أنّ هذه القيمة ستكون فريدة بين الطابعات.
- المصدر
مصدر الطابعة (المستخدم أو السياسة التي تم ضبطها)
- uri
سلسلة
معرّف الموارد المنتظم (URI) للطابعة يمكن أن تستخدم الإضافات هذه السمة لاختيار الطابعة للمستخدم.
PrinterSource
تمثّل هذه السمة مصدر الطابعة.
Enum
"المستخدم"
أضاف المستخدم الطابعة.
"السياسة"
تمت إضافة الطابعة من خلال السياسة.
PrinterStatus
تعرض هذه السمة حالة الطابعة.
Enum
"DOOR_OPEN"
باب الطابعة مفتوح. لا تزال الطابعة تقبل مهام الطباعة.
"TRAY_MISSING"
درج الطابعة غير متوفّر. لا تزال الطابعة تقبل مهام الطباعة.
"OUT_OF_INK"
نفد حبر الطابعة. لا تزال الطابعة تقبل مهام الطباعة.
"OUT_OF_PAPER"
نفد الورق من الطابعة. لا تزال الطابعة تقبل مهام الطباعة.
"OUTPUT_FULL"
منطقة الإخراج في الطابعة (مثل الدرج) ممتلئة. لا تزال الطابعة تقبل مهام الطباعة.
"PAPER_JAM"
هناك ورقة عالقة في الطابعة. لا تزال الطابعة تقبل مهام الطباعة.
"GENERIC_ISSUE"
مشكلة عامة. لا تزال الطابعة تقبل مهام الطباعة.
"متوقفة"
تكون الطابعة متوقفة ولا تطبع، ولكنها تظل تقبل مهام الطباعة.
"لا يمكن الوصول إلى الطابعة"
لا يمكن الوصول إلى الطابعة ولا تقبل مهام الطباعة.
"EXPIRED_CERTIFICATE"
انتهت صلاحية شهادة طبقة المقابس الآمنة (SSL). تقبل الطابعة المهام ولكنها تفشل.
"متاحة"
الطابعة متاحة.
SubmitJobRequest
الخصائص
- وظيفة
مهمة الطباعة التي سيتم إرسالها أنواع المحتوى المتوافقة هي "application/pdf" و "image/png". يجب ألا تتضمّن تذكرة مهمة الطباعة السحابية الحقول
FitToPageTicketItem
وPageRangeTicketItem
وReverseOrderTicketItem
لأنّها غير ذات صلة بالطباعة الأصلية.VendorTicketItem
هو حقل اختياري. يجب أن تكون جميع الحقول الأخرى متوفّرة.
SubmitJobResponse
الخصائص
- jobId
سلسلة اختيارية
معرّف مهمة الطباعة التي تم إنشاؤها هذا المعرّف فريد بين جميع مهام الطباعة على الجهاز. إذا لم تكن الحالة OK، ستكون قيمة jobId فارغة.
- status
حالة الطلب
SubmitJobStatus
حالة طلب submitJob
.
Enum
"موافق"
تم قبول طلب مهمة الطباعة المُرسَل.
"USER_REJECTED"
رفض المستخدم طلب مهمة الطباعة المُرسَل.
الخصائص
MAX_GET_PRINTER_INFO_CALLS_PER_MINUTE
الحدّ الأقصى لعدد المرات التي يمكن فيها استدعاء getPrinterInfo
في الدقيقة الواحدة
القيمة
20
MAX_SUBMIT_JOB_CALLS_PER_MINUTE
الحدّ الأقصى لعدد المرات التي يمكن فيها استدعاء submitJob
في الدقيقة الواحدة
القيمة
40
الطُرق
cancelJob()
chrome.printing.cancelJob(
jobId: string,
): Promise<void>
لإلغاء مهمة تم إرسالها سابقًا
المعلمات
- jobId
سلسلة
معرّف مهمة الطباعة المطلوب إلغاؤها. يجب أن يكون هذا المعرّف هو نفسه المعرّف الذي تم تلقّيه في
SubmitJobResponse
.
المرتجعات
-
Promise<void>
الإصدار 100 من Chrome والإصدارات الأحدث
getJobStatus()
chrome.printing.getJobStatus(
jobId: string,
): Promise<JobStatus>
تعرِض هذه السمة حالة مهمة الطباعة. ستتعذّر هذه المكالمة بسبب خطأ وقت التشغيل إذا لم تكن مهمة الطباعة التي تحمل المعرّف jobId
المحدّد متوفّرة. jobId
: معرّف مهمة الطباعة المطلوب عرض حالتها. يجب أن يكون هذا المعرّف هو نفسه المعرّف الذي تم تلقّيه في SubmitJobResponse
.
المعلمات
- jobId
سلسلة
المرتجعات
-
Promise<JobStatus>
getPrinterInfo()
chrome.printing.getPrinterInfo(
printerId: string,
): Promise<GetPrinterInfoResponse>
تعرض هذه السمة حالة الطابعة وإمكاناتها بتنسيق CDD. سيتعذّر تنفيذ هذا الاستدعاء مع ظهور خطأ وقت التشغيل في حال عدم تثبيت أي طابعات تحمل المعرّف المحدّد.
المعلمات
- printerId
سلسلة
المرتجعات
-
Promise<GetPrinterInfoResponse>
الإصدار 100 من Chrome والإصدارات الأحدث
getPrinters()
chrome.printing.getPrinters(): Promise<Printer[]>
تعرض هذه الطريقة قائمة بالطابعات المتاحة على الجهاز. ويشمل ذلك الطابعات التي تمت إضافتها يدويًا وطابعات المؤسسات والطابعات التي تم العثور عليها.
المرتجعات
-
Promise<Printer[]>
الإصدار 100 من Chrome والإصدارات الأحدث
submitJob()
chrome.printing.submitJob(
request: SubmitJobRequest,
): Promise<SubmitJobResponse>
إرسال مهمة الطباعة إذا لم تكن الإضافة مُدرَجة في سياسة PrintingAPIExtensionsAllowlist
، سيُطلب من المستخدم قبول مهمة الطباعة. قبل الإصدار 120 من Chrome، لم تكن هذه الدالة تعرض وعدًا.
المعلمات
- طلب
المرتجعات
-
Promise<SubmitJobResponse>
الإصدار 100 من Chrome والإصدارات الأحدث
الفعاليات
onJobStatusChanged
chrome.printing.onJobStatusChanged.addListener(
callback: function,
)
يتم إطلاق هذا الحدث عند تغيير حالة المهمة. يتم تشغيل هذا الإجراء فقط للوظائف التي تم إنشاؤها بواسطة هذه الإضافة.