الوصف
استخدِم واجهة برمجة التطبيقات chrome.printing
لإرسال مهام الطباعة إلى الطابعات المثبَّتة على جهاز Chromebook.
الأذونات
printing
مدى التوفّر
تتطلّب جميع طرق وأحداث chrome.printing
منك الإفصاح عن إذن "printing"
في بيان الإضافة. على سبيل المثال:
{
"name": "My extension",
...
"permissions": [
"printing"
],
...
}
أمثلة
توضِّح الأمثلة أدناه استخدام كل طريقة من الطرق في مساحة الاسم printing. تم نسخ هذه التعليمات البرمجية من api-samples/printing أو استنادًا إليها في مستودع Github الخاص بنماذج الإضافات.
cancelJob()
يستخدم هذا المثال معالِج onJobStatusChanged
لإخفاء زر "إلغاء" عندما لا يكون jobStatus
هو PENDING
أو IN_PROGRESS
. يُرجى العِلم أنّه في بعض الشبكات أو عند توصيل جهاز Chromebook بالطابعة مباشرةً، قد تمر هذه الحالات بسرعة كبيرة لدرجة أنّ زر الإلغاء لا يظهر لفترة كافية للاستفادة منه. هذا مثال مبسّط جدًا للطباعة.
chrome.printing.onJobStatusChanged.addListener((jobId, status) => {
const cancelButton = document.getElementById("cancelButton");
cancelButton.addEventListener('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 (status !== "PENDING" && status !== "IN_PROGRESS") {
cancelButton.style.visibility = 'hidden';
} else {
cancelButton.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) وأنّه تم تحويل البيانات المطلوب طباعتها إلى عنصر blob (السطر 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
رقم اختياري
القيمة التي تعرض وقت استخدام الطابعة مؤخرًا للطباعة من Chrome وكلما انخفضت القيمة، كان استخدام الطابعة مؤخرًا. الحد الأدنى للقيمة هو 0. تشير القيمة غير المتوفّرة إلى أنّه لم يتم استخدام الطابعة مؤخرًا. نضمن أنّ هذه القيمة فريدة بين الطابعات.
-
المصدر
مصدر الطابعة (المستخدم أو السياسة التي تم ضبطها)
-
معرّف موارد منتظم (URI)
سلسلة
معرّف الموارد المنتظم (URI) للطابعة ويمكن أن تستخدم الإضافات هذا الخيار لاختيار الطابعة للمستخدم.
PrinterSource
مصدر الطابعة.
Enum
"USER"
أضاف المستخدم الطابعة.
"السياسة"
تمت إضافة الطابعة من خلال السياسة.
PrinterStatus
حالة الطابعة
Enum
"DOOR_OPEN"
باب الطابعة مفتوح. لا تزال الطابعة تقبل مهام الطباعة.
"TRAY_MISSING"
درج الطابعة غير متوفّر. لا تزال الطابعة تقبل مهام الطباعة.
"OUT_OF_INK"
لم تعُد هناك حبر في الطابعة. لا تزال الطابعة تقبل مهام الطباعة.
"OUT_OF_PAPER"
نفد الورق من الطابعة. لا تزال الطابعة تقبل مهام الطباعة.
"OUTPUT_FULL"
منطقة الإخراج في الطابعة (مثل الدرج) ممتلئة. لا تزال الطابعة تقبل مهام الطباعة.
"PAPER_JAM"
تشير هذه الحالة إلى أنّ هناك ورقة عالقة في الطابعة. لا تزال الطابعة تقبل مهام الطباعة.
"GENERIC_ISSUE"
هناك مشكلة عامة. لا تزال الطابعة تقبل مهام الطباعة.
"متوقفة"
الطابعة متوقفة ولا تطبع، ولكنها لا تزال تقبل مهام الطباعة.
"UNREACHABLE" (لا يمكن الوصول إلى الطابعة)
لا يمكن الوصول إلى الطابعة ولا تقبل مهام الطباعة.
"EXPIRED_CERTIFICATE"
انتهت صلاحية شهادة طبقة المقابس الآمنة (SSL). تقبل الطابعة المهام ولكنّها لا تنجح.
"متاحة"
الطابعة متاحة.
SubmitJobRequest
الخصائص
-
وظيفة
مهمة الطباعة المطلوب إرسالها نوع المحتوى الوحيد المتوافق هو "application/pdf"، ويجب ألا يتضمّن تذكرة مهام السحابة الإلكترونية حقول
FitToPageTicketItem
وPageRangeTicketItem
وReverseOrderTicketItem
وVendorTicketItem
لأنّها غير ذات صلة بالطباعة الأصلية. يجب توفّر جميع الحقول الأخرى.
SubmitJobResponse
الخصائص
-
jobId
سلسلة اختيارية
معرّف مهمة الطباعة التي تم إنشاؤها. هذا معرّف فريد بين جميع مهام الطباعة على الجهاز. إذا لم تكن الحالة "حسنًا"، سيكون 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,
callback?: function,
)
يؤدي هذا الخيار إلى إلغاء المهمة التي تم إرسالها سابقًا.
المعلمات
-
jobId
سلسلة
معرّف مهمة الطباعة المطلوب إلغاؤها. يجب أن يكون هذا هو المعرّف نفسه الذي تم تلقّيه في
SubmitJobResponse
. -
ردّ الاتصال
الدالة اختيارية
تظهر المَعلمة
callback
على النحو التالي:() => void
المرتجعات
-
Promise<void>
الإصدار 100 من Chrome والإصدارات الأحدثتتوفّر الوعود في الإصدار Manifest V3 والإصدارات الأحدث، ولكن يتم توفير طلبات الاستدعاء لأجل التوافق مع الإصدارات القديمة. ولا يمكنك استخدام كليهما في طلب الدالة نفسه. يتم حلّ الوعد بالنوع نفسه الذي يتم تمريره إلى الدالة المُعاد الاتصال بها.
getJobStatus()
chrome.printing.getJobStatus(
jobId: string,
callback?: function,
)
تعرِض هذه السمة حالة مهمة الطباعة. سيتعذّر إجراء هذا الطلب بسبب خطأ في وقت التشغيل في حال عدم توفّر مهمة الطباعة التي تحمل jobId
المحدّد. jobId
: رقم تعريف مهمة الطباعة المطلوب عرض حالتها يجب أن يكون هذا هو المعرّف نفسه الذي تم تلقّيه في SubmitJobResponse
.
المعلمات
-
jobId
سلسلة
-
ردّ الاتصال
الدالة اختيارية
تظهر المَعلمة
callback
على النحو التالي:(status: JobStatus) => void
-
status
-
المرتجعات
-
Promise<JobStatus>
تتوفّر الوعود في الإصدار Manifest V3 والإصدارات الأحدث، ولكن يتم توفير طلبات الاستدعاء لأجل التوافق مع الإصدارات القديمة. ولا يمكنك استخدام كليهما في طلب الدالة نفسه. يتم حلّ الوعد بالنوع نفسه الذي يتم تمريره إلى الدالة المُعاد الاتصال بها.
getPrinterInfo()
chrome.printing.getPrinterInfo(
printerId: string,
callback?: function,
)
تعرِض حالة الطابعة وإمكاناتها بتنسيق CDD. سيتعذّر إجراء هذا الطلب بسبب خطأ في وقت التشغيل في حال عدم تثبيت أي طابعات بالمعرّف المحدّد.
المعلمات
-
printerId
سلسلة
-
ردّ الاتصال
الدالة اختيارية
تظهر المَعلمة
callback
على النحو التالي:(response: GetPrinterInfoResponse) => void
المرتجعات
-
Promise<GetPrinterInfoResponse>
الإصدار 100 من Chrome والإصدارات الأحدثتتوفّر الوعود في الإصدار Manifest V3 والإصدارات الأحدث، ولكن يتم توفير طلبات الاستدعاء لأجل التوافق مع الإصدارات القديمة. ولا يمكنك استخدام كليهما في طلب الدالة نفسه. يتم حلّ الوعد بالنوع نفسه الذي يتم تمريره إلى الدالة المُعاد الاتصال بها.
getPrinters()
chrome.printing.getPrinters(
callback?: function,
)
عرض قائمة الطابعات المتاحة على الجهاز ويشمل ذلك الطابعات المُضافة يدويًا والطابعات المخصّصة للمؤسسات والطابعات التي تم اكتشافها.
المعلمات
المرتجعات
-
Promise<Printer[]>
الإصدار 100 من Chrome والإصدارات الأحدثتتوفّر الوعود في الإصدار Manifest V3 والإصدارات الأحدث، ولكن يتم توفير طلبات الاستدعاء لأجل التوافق مع الإصدارات القديمة. ولا يمكنك استخدام كليهما في طلب الدالة نفسه. يتم حلّ الوعد بالنوع نفسه الذي يتم تمريره إلى الدالة المُعاد الاتصال بها.
submitJob()
chrome.printing.submitJob(
request: SubmitJobRequest,
callback?: function,
)
تُرسِل المهمة للطباعة. إذا لم تكن الإضافة مُدرَجة في سياسة PrintingAPIExtensionsAllowlist
، سيُطلَب من المستخدم قبول مهمة الطباعة.
قبل الإصدار 120 من Chrome، لم تكن هذه الدالة تعرِض وعدًا.
المعلمات
-
طلب
-
ردّ الاتصال
الدالة اختيارية
تظهر المَعلمة
callback
على النحو التالي:(response: SubmitJobResponse) => void
المرتجعات
-
Promise<SubmitJobResponse>
الإصدار 100 من Chrome والإصدارات الأحدثتتوفّر الوعود في الإصدار Manifest V3 والإصدارات الأحدث، ولكن يتم توفير طلبات الاستدعاء لأجل التوافق مع الإصدارات القديمة. ولا يمكنك استخدام كليهما في طلب الدالة نفسه. يتم حلّ الوعد بالنوع نفسه الذي يتم تمريره إلى دالة الاستدعاء.
الفعاليات
onJobStatusChanged
chrome.printing.onJobStatusChanged.addListener(
callback: function,
)
يتمّ تنشيط الحدث عند تغيير حالة المهمة. ولا يتم تشغيل هذا الإجراء إلا للوظائف التي أنشأتها هذه الإضافة.