توضیحات
از API chrome.printing برای ارسال کارهای چاپ به چاپگرهای نصب شده روی Chromebook استفاده کنید.
مجوزها
printingدر دسترس بودن
مانیفست
تمام متدها و رویدادهای chrome.printing از شما میخواهند که مجوز "printing" را در فایل manifest افزونه اعلام کنید. برای مثال:
{
"name": "My extension",
...
"permissions": [
"printing"
],
...
}
مثالها
مثالهای زیر نحوهی استفاده از هر یک از متدهای موجود در فضای نام printing را نشان میدهند. این کد از api-samples/printing در مخزن GitHub مربوط به extensions-samples کپی شده یا بر اساس آن است.
لغو کار ()
این مثال از هندلر onJobStatusChanged برای پنهان کردن دکمه 'cancel' استفاده میکند، زمانی که jobStatus نه در PENDING است و نه IN_PROGRESS . توجه داشته باشید که در برخی شبکهها یا وقتی یک Chromebook مستقیماً به چاپگر متصل است، این حالتها ممکن است خیلی سریع عبور کنند تا دکمه cancel به اندازه کافی قابل مشاهده باشد که فراخوانی شود. این یک مثال چاپ بسیار ساده شده است.
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() و 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() به سه چیز نیاز دارد.
- یک ساختار
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 . ممکن است این ویژگی وجود نداشته باشد.
- وضعیت
وضعیت چاپگر.
JobStatus
وضعیت کار چاپ.
شمارشی
«در انتظار» "در حال پیشرفت" «شکست خورد» «لغو شد» «چاپشده»
دستور چاپ در سمت کروم دریافت شده اما هنوز پردازش نشده است.
کار چاپ برای چاپ ارسال میشود.
به دلیل برخی خطاها، کار چاپ متوقف شد.
کار چاپ توسط کاربر یا از طریق API لغو شد.
کار چاپ بدون هیچ خطایی چاپ شد.
Printer
خواص
- توضیحات
رشته
توضیحات قابل خواندن توسط انسان در مورد چاپگر.
- شناسه
رشته
شناسه چاپگر؛ تضمین میشود که در بین چاپگرهای موجود در دستگاه منحصر به فرد باشد.
- isDefault
بولی
پرچمی که نشان میدهد آیا چاپگر با قوانین DefaultPrinterSelection مطابقت دارد یا خیر. توجه داشته باشید که ممکن است چندین چاپگر پرچمگذاری شده باشند.
- نام
رشته
نام چاپخانه.
- اخیراً استفاده شده رتبه
شماره اختیاری
مقداری که نشان میدهد چاپگر اخیراً برای چاپ از کروم استفاده شده است. هرچه مقدار کمتر باشد، چاپگر اخیراً استفاده شده است. حداقل مقدار ۰ است. مقدار ناموجود نشان میدهد که چاپگر اخیراً استفاده نشده است. این مقدار تضمین میشود که در بین چاپگرها منحصر به فرد باشد.
- منبع
منبع چاپگر (توسط کاربر یا سیاست پیکربندی شده است).
- یوری
رشته
آدرس اینترنتی چاپگر. افزونهها میتوانند از این آدرس برای انتخاب چاپگر برای کاربر استفاده کنند.
PrinterSource
منبع چاپگر.
شمارشی
"کاربر" «سیاست»
چاپگر توسط کاربر اضافه شده است.
چاپگر از طریق خطمشی اضافه شد.
PrinterStatus
وضعیت چاپگر.
شمارشی
«در_باز» «سینی_گمشده» «خالی از جوهر» «خارج از کاغذ» "خروجی_کامل" «کاغذ_گیر کرده» "موضوع_عمومی" «متوقف شد» «دستنیافتنی» «گواهینامه منقضی شده» «موجود»
درب چاپگر باز است. چاپگر هنوز کارهای چاپی را میپذیرد.
سینی چاپگر گم شده است. چاپگر هنوز کارهای چاپی را میپذیرد.
جوهر چاپگر تمام شده است. چاپگر هنوز کارهای چاپی را میپذیرد.
کاغذ چاپگر تمام شده است. چاپگر هنوز کارهای چاپی را میپذیرد.
قسمت خروجی چاپگر (مثلاً سینی) پر است. چاپگر هنوز کارهای چاپی را میپذیرد.
چاپگر کاغذ گیر کرده است. چاپگر هنوز کارهای چاپی را میپذیرد.
یک مشکل عمومی. چاپگر هنوز کارهای چاپی را میپذیرد.
چاپگر متوقف شده و چاپ نمیکند اما همچنان کارهای چاپی را میپذیرد.
چاپگر در دسترس نیست و کارهای چاپی را قبول نمیکند.
گواهی SSL منقضی شده است. چاپگر کارها را میپذیرد اما با خطا مواجه میشوند.
چاپگر موجود است.
SubmitJobRequest
خواص
- شغل
کار چاپی که باید ارسال شود. انواع محتوای پشتیبانی شده عبارتند از "application/pdf" و "image/png". تیکت کار ابری نباید شامل فیلدهای
FitToPageTicketItem،PageRangeTicketItemوReverseOrderTicketItemباشد زیرا برای چاپ بومی بیربط هستند.VendorTicketItemاختیاری است. همه فیلدهای دیگر باید وجود داشته باشند.
SubmitJobResponse
خواص
- شناسه شغل
رشته اختیاری
شناسهی کار چاپ ایجاد شده. این یک شناسهی منحصر به فرد در بین تمام کارهای چاپ روی دستگاه است. اگر وضعیت OK نباشد، شناسهی کار null خواهد بود.
- وضعیت
وضعیت درخواست.
SubmitJobStatus
وضعیت درخواست submitJob .
شمارشی
«باشه» «کاربر رد شد»
درخواست کار چاپ ارسالی پذیرفته میشود.
درخواست کار چاپ ارسال شده توسط کاربر رد میشود.
خواص
MAX_GET_PRINTER_INFO_CALLS_PER_MINUTE
حداکثر تعداد دفعاتی که getPrinterInfo میتواند در هر دقیقه فراخوانی شود.
ارزش
۲۰
MAX_SUBMIT_JOB_CALLS_PER_MINUTE
حداکثر تعداد دفعاتی که submitJob میتواند در هر دقیقه فراخوانی شود.
ارزش
۴۰
روشها
cancelJob()
chrome.printing.cancelJob(
jobId: string,
callback?: function,
): Promise<void>
شغل ارسال شده قبلی را لغو میکند.
پارامترها
- شناسه شغل
رشته
شناسهی کار چاپی که باید لغو شود. این باید همان شناسهای باشد که در
SubmitJobResponseدریافت شده است. - تماس برگشتی
تابع اختیاری
پارامتر
callbackبه شکل زیر است:() => void
بازگشتها
قول<void>
کروم ۱۰۰+Promiseها فقط برای Manifest V3 و نسخههای بعدی پشتیبانی میشوند، سایر پلتفرمها باید از callbackها استفاده کنند.
getJobStatus()
chrome.printing.getJobStatus(
jobId: string,
callback?: function,
): Promise<JobStatus>
وضعیت کار چاپ را برمیگرداند. اگر کار چاپ با jobId داده شده وجود نداشته باشد، این فراخوانی با خطای زمان اجرا شکست میخورد. jobId : شناسه کار چاپ برای بازگرداندن وضعیت. این باید همان شناسهای باشد که در SubmitJobResponse دریافت شده است.
پارامترها
- شناسه شغل
رشته
- تماس برگشتی
تابع اختیاری
پارامتر
callbackبه شکل زیر است:(status: JobStatus) => void
- وضعیت
بازگشتها
قول< وضعیت شغلی >
Promiseها فقط برای Manifest V3 و نسخههای بعدی پشتیبانی میشوند، سایر پلتفرمها باید از callbackها استفاده کنند.
getPrinterInfo()
chrome.printing.getPrinterInfo(
printerId: string,
callback?: function,
): Promise<GetPrinterInfoResponse>
وضعیت و قابلیتهای چاپگر را با فرمت CDD برمیگرداند. اگر هیچ چاپگری با شناسه داده شده نصب نشده باشد، این فراخوانی با خطای زمان اجرا مواجه خواهد شد.
پارامترها
- شناسه چاپگر
رشته
- تماس برگشتی
تابع اختیاری
پارامتر
callbackبه شکل زیر است:(response: GetPrinterInfoResponse) => void
بازگشتها
قول < GetPrinterInfoResponse >
کروم ۱۰۰+Promiseها فقط برای Manifest V3 و نسخههای بعدی پشتیبانی میشوند، سایر پلتفرمها باید از callbackها استفاده کنند.
getPrinters()
chrome.printing.getPrinters(
callback?: function,
): Promise<Printer[]>
لیست چاپگرهای موجود در دستگاه را برمیگرداند. این شامل چاپگرهای اضافه شده دستی، سازمانی و کشف شده میشود.
پارامترها
بازگشتها
قول< چاپگر []>
کروم ۱۰۰+Promiseها فقط برای Manifest V3 و نسخههای بعدی پشتیبانی میشوند، سایر پلتفرمها باید از callbackها استفاده کنند.
submitJob()
chrome.printing.submitJob(
request: SubmitJobRequest,
callback?: function,
): Promise<SubmitJobResponse>
کار چاپ را ارسال میکند. اگر افزونه در خطمشی PrintingAPIExtensionsAllowlist فهرست نشده باشد، از کاربر خواسته میشود که کار چاپ را بپذیرد. قبل از کروم ۱۲۰، این تابع هیچ promiseای را برنمیگرداند.
پارامترها
- درخواست
- تماس برگشتی
تابع اختیاری
پارامتر
callbackبه شکل زیر است:(response: SubmitJobResponse) => void
- پاسخ
بازگشتها
قول< ارسال پاسخ شغلی >
کروم ۱۰۰+Promiseها فقط برای Manifest V3 و نسخههای بعدی پشتیبانی میشوند، سایر پلتفرمها باید از callbackها استفاده کنند.
رویدادها
onJobStatusChanged
chrome.printing.onJobStatusChanged.addListener(
callback: function,
)
این رویداد زمانی فعال میشود که وضعیت کار تغییر کند. این رویداد فقط برای کارهایی که توسط این افزونه ایجاد شدهاند، فعال میشود.
پارامترها
- تماس برگشتی
تابع
پارامتر
callbackبه شکل زیر است:(jobId: string, status: JobStatus) => void
- شناسه شغل
رشته
- وضعیت