বর্ণনা
ক্রোমবুকে ইনস্টল করা প্রিন্টারগুলিতে প্রিন্ট জব পাঠাতে chrome.printing API ব্যবহার করুন।
অনুমতি
printingপ্রাপ্যতা
প্রকাশ
সমস্ত chrome.printing মেথড এবং ইভেন্টের জন্য আপনাকে এক্সটেনশন ম্যানিফেস্টে "printing" পারমিশনটি ঘোষণা করতে হবে। উদাহরণস্বরূপ:
{
"name": "My extension",
...
"permissions": [
"printing"
],
...
}
উদাহরণ
নিচের উদাহরণগুলোতে printing নেমস্পেসের প্রতিটি মেথডের ব্যবহার দেখানো হয়েছে। এই কোডটি extensions-samples গিটহাব রিপো-তে থাকা api-samples/printing থেকে কপি করা বা তার উপর ভিত্তি করে তৈরি।
cancelJob()
এই উদাহরণে, যখন jobStatus PENDING বা IN_PROGRESS থাকে না, তখন একটি 'cancel' বাটন লুকানোর জন্য onJobStatusChanged হ্যান্ডলারটি ব্যবহার করা হয়েছে। উল্লেখ্য যে, কিছু নেটওয়ার্কে অথবা যখন একটি ক্রোমবুক সরাসরি প্রিন্টারের সাথে সংযুক্ত থাকে, তখন এই স্টেটগুলো এত দ্রুত পরিবর্তিত হতে পারে যে ক্যানসেল বাটনটি কল হওয়ার জন্য যথেষ্ট সময় ধরে দৃশ্যমান থাকে না। এটি প্রিন্টিং-এর একটি অত্যন্ত সরলীকৃত উদাহরণ।
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()
submitJob() মেথডটির জন্য তিনটি জিনিস প্রয়োজন।
- একটি
ticketকাঠামো যা নির্দিষ্ট করে দেয় প্রিন্টারের কোন কোন সক্ষমতা ব্যবহার করা হবে। যদি ব্যবহারকারীকে উপলব্ধ সক্ষমতাগুলো থেকে নির্বাচন করতে হয়, তবে আপনিgetPrinterInfo()ব্যবহার করে একটি নির্দিষ্ট প্রিন্টারের জন্য সেগুলো পেতে পারেন। - একটি
SubmitJobRequestস্ট্রাকচার, যা ব্যবহার করার জন্য প্রিন্টার এবং প্রিন্ট করার ফাইল বা তারিখ নির্দিষ্ট করে। এই স্ট্রাকচারটিতেticketস্ট্রাকচারের একটি রেফারেন্স থাকে। - প্রিন্ট করার জন্য ফাইল বা ডেটার একটি অংশ।
submitJob() কল করলে একটি ডায়ালগ বক্স আসে, যেখানে ব্যবহারকারীকে প্রিন্টিং নিশ্চিত করতে বলা হয়। এই নিশ্চিতকরণ প্রক্রিয়াটি এড়িয়ে যেতে PrintingAPIExtensionsAllowlist ব্যবহার করুন।
এটি প্রিন্টিং উদাহরণের একটি সরলীকৃত সংস্করণ। লক্ষ্য করুন যে ticket SubmitJobRequest স্ট্রাকচারের সাথে সংযুক্ত করা হয়েছে (লাইন ৮) এবং প্রিন্ট করার ডেটা একটি ব্লবে রূপান্তরিত হয়েছে (লাইন ১০)। নমুনায় প্রিন্টারের আইডি পাওয়া (লাইন ১) এখানে যা দেখানো হয়েছে তার চেয়ে বেশি জটিল।
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() কল করুন এবং "finishings/11" এর "display_name" খুঁজুন।
"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" মানটি 'true'। টিকেটের জন্য এর উচ্চতা এবং প্রস্থের মানগুলো ব্যবহার করুন।
"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
বৈশিষ্ট্য
- বর্ণনা
স্ট্রিং
প্রিন্টারটির পাঠযোগ্য বিবরণ।
- আইডি
স্ট্রিং
প্রিন্টারের শনাক্তকারী; যা ডিভাইসের প্রিন্টারগুলোর মধ্যে অনন্য হওয়ার নিশ্চয়তা দেওয়া হয়।
- ডিফল্ট
বুলিয়ান
যে ফ্ল্যাগটি দেখায় প্রিন্টারটি DefaultPrinterSelection নিয়ম মেনে চলে কি না। উল্লেখ্য যে, একাধিক প্রিন্টারকে ফ্ল্যাগ করা যেতে পারে।
- নাম
স্ট্রিং
প্রিন্টারের নাম।
- সম্প্রতি ব্যবহৃত র্যাঙ্ক
সংখ্যা ঐচ্ছিক
এই মানটি দেখায় যে প্রিন্টারটি ক্রোম থেকে প্রিন্ট করার জন্য কত সম্প্রতি ব্যবহার করা হয়েছিল। মান যত কম হবে, প্রিন্টারটি তত সম্প্রতি ব্যবহার করা হয়েছে। সর্বনিম্ন মান হলো ০। মান অনুপস্থিত থাকলে বোঝা যায় যে প্রিন্টারটি সম্প্রতি ব্যবহার করা হয়নি। এই মানটি প্রিন্টারগুলোর মধ্যে অনন্য হবে বলে নিশ্চিত করা হয়।
- উৎস
প্রিন্টারের উৎস (ব্যবহারকারী বা নীতি দ্বারা নির্ধারিত)।
- ইউরি
স্ট্রিং
প্রিন্টার ইউআরআই। এক্সটেনশনগুলো ব্যবহারকারীর জন্য প্রিন্টার বেছে নিতে এটি ব্যবহার করতে পারে।
PrinterSource
প্রিন্টারের উৎস।
এনাম
"ব্যবহারকারী" "নীতি"
ব্যবহারকারী প্রিন্টারটি যুক্ত করেছেন।
নীতিমালার মাধ্যমে প্রিন্টারটি যুক্ত করা হয়েছিল।
PrinterStatus
প্রিন্টারটির অবস্থা।
এনাম
"DOEN_OPEN" "ট্রে অনুপস্থিত" "কালি ফুরিয়ে গেছে" "কাগজ ফুরিয়ে গেছে" "আউটপুট_পূর্ণ" "কাগজ_জ্যাম" "সাধারণ সমস্যা" "থামানো হয়েছে" "অপ্রাপ্য" "মেয়াদোত্তীর্ণ_সনদ" "উপলব্ধ"
প্রিন্টারের দরজা খোলা আছে। প্রিন্টারটি এখনও প্রিন্ট জব গ্রহণ করছে।
প্রিন্টারের ট্রে-টি নেই। প্রিন্টারটি এখনও প্রিন্ট জব গ্রহণ করছে।
প্রিন্টারে কালি শেষ হয়ে গেছে। প্রিন্টারটি এখনও প্রিন্ট জব গ্রহণ করছে।
প্রিন্টারে কাগজ নেই। প্রিন্টারটি এখনও প্রিন্ট জব গ্রহণ করছে।
প্রিন্টারের আউটপুট এলাকা (যেমন ট্রে) পূর্ণ। প্রিন্টারটি এখনও প্রিন্ট জব গ্রহণ করছে।
প্রিন্টারে কাগজ আটকে গেছে। প্রিন্টারটি এখনও প্রিন্ট জব গ্রহণ করছে।
এটি একটি সাধারণ সমস্যা। প্রিন্টারটি এখনও প্রিন্ট জব গ্রহণ করছে।
প্রিন্টারটি বন্ধ আছে এবং প্রিন্ট করছে না, কিন্তু প্রিন্ট জব গ্রহণ করছে।
প্রিন্টারটি নাগালের বাইরে এবং প্রিন্ট জব গ্রহণ করছে না।
SSL সার্টিফিকেটটির মেয়াদ শেষ হয়ে গেছে। প্রিন্টার কাজ গ্রহণ করলেও সেগুলো ব্যর্থ হয়।
প্রিন্টারটি উপলব্ধ আছে।
SubmitJobRequest
বৈশিষ্ট্য
- চাকরি
যে প্রিন্ট জবটি জমা দিতে হবে। সমর্থিত কন্টেন্ট টাইপগুলো হলো "application/pdf" এবং "image/png"। ক্লাউড জব টিকেটে
FitToPageTicketItem,PageRangeTicketItemএবংReverseOrderTicketItemফিল্ডগুলো অন্তর্ভুক্ত করা উচিত নয়, কারণ নেটিভ প্রিন্টিংয়ের জন্য এগুলো অপ্রাসঙ্গিক।VendorTicketItemঐচ্ছিক। অন্য সব ফিল্ড অবশ্যই উপস্থিত থাকতে হবে।
SubmitJobResponse
বৈশিষ্ট্য
- কাজের আইডি
স্ট্রিং ঐচ্ছিক
তৈরি করা প্রিন্ট জবের আইডি। এটি ডিভাইসের সমস্ত প্রিন্ট জবের মধ্যে একটি অনন্য শনাক্তকারী। স্ট্যাটাস OK না হলে, jobId-এর মান 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
ফেরত
প্রতিশ্রুতি<শূন্য>
ক্রোম ১০০+প্রমিস শুধুমাত্র ম্যানিফেস্ট ভি৩ এবং এর পরবর্তী সংস্করণগুলোতে সমর্থিত, অন্যান্য প্ল্যাটফর্মে কলব্যাক ব্যবহার করতে হবে।
getJobStatus()
chrome.printing.getJobStatus(
jobId: string,
callback?: function,
): Promise<JobStatus>
প্রিন্ট জবটির স্ট্যাটাস ফেরত দেয়। প্রদত্ত jobId সহ প্রিন্ট জবটি বিদ্যমান না থাকলে এই কলটি একটি রানটাইম এররের সাথে ব্যর্থ হবে। jobId : যে প্রিন্ট জবটির স্ট্যাটাস ফেরত দিতে হবে তার আইডি। এটি SubmitJobResponse এ প্রাপ্ত আইডির মতোই হওয়া উচিত।
প্যারামিটার
- কাজের আইডি
স্ট্রিং
- কলব্যাক
ফাংশন ঐচ্ছিক
callbackপ্যারামিটারটি দেখতে এইরকম:(status: JobStatus) => void
- অবস্থা
ফেরত
প্রতিশ্রুতি< চাকরির অবস্থা >
প্রমিস শুধুমাত্র ম্যানিফেস্ট ভি৩ এবং এর পরবর্তী সংস্করণগুলোতে সমর্থিত, অন্যান্য প্ল্যাটফর্মে কলব্যাক ব্যবহার করতে হবে।
getPrinterInfo()
chrome.printing.getPrinterInfo(
printerId: string,
callback?: function,
): Promise<GetPrinterInfoResponse>
প্রিন্টারের অবস্থা এবং সক্ষমতা CDD ফরম্যাটে ফেরত দেয়। প্রদত্ত আইডির কোনো প্রিন্টার ইনস্টল করা না থাকলে এই কলটি রানটাইম ত্রুটির কারণে ব্যর্থ হবে।
প্যারামিটার
- প্রিন্টার আইডি
স্ট্রিং
- কলব্যাক
ফাংশন ঐচ্ছিক
callbackপ্যারামিটারটি দেখতে এইরকম:(response: GetPrinterInfoResponse) => void
- প্রতিক্রিয়া
ফেরত
প্রতিশ্রুতি< GetPrinterInfoResponse >
ক্রোম ১০০+প্রমিস শুধুমাত্র ম্যানিফেস্ট ভি৩ এবং এর পরবর্তী সংস্করণগুলোতে সমর্থিত, অন্যান্য প্ল্যাটফর্মে কলব্যাক ব্যবহার করতে হবে।
getPrinters()
chrome.printing.getPrinters(
callback?: function,
): Promise<Printer[]>
ডিভাইসে উপলব্ধ প্রিন্টারগুলির তালিকা ফেরত দেয়। এর মধ্যে ম্যানুয়ালি যোগ করা, এন্টারপ্রাইজ এবং আবিষ্কৃত প্রিন্টার অন্তর্ভুক্ত থাকে।
প্যারামিটার
ফেরত
প্রতিশ্রুতি< প্রিন্টার []>
ক্রোম ১০০+প্রমিস শুধুমাত্র ম্যানিফেস্ট ভি৩ এবং এর পরবর্তী সংস্করণগুলোতে সমর্থিত, অন্যান্য প্ল্যাটফর্মে কলব্যাক ব্যবহার করতে হবে।
submitJob()
chrome.printing.submitJob(
request: SubmitJobRequest,
callback?: function,
): Promise<SubmitJobResponse>
প্রিন্ট করার জন্য কাজটি জমা দেয়। যদি এক্সটেনশনটি PrintingAPIExtensionsAllowlist পলিসিতে তালিকাভুক্ত না থাকে, তবে ব্যবহারকারীকে প্রিন্ট জবটি গ্রহণ করার জন্য অনুরোধ জানানো হয়। ক্রোম ১২০-এর আগে, এই ফাংশনটি কোনো প্রমিজ রিটার্ন করত না।
প্যারামিটার
- অনুরোধ
- কলব্যাক
ফাংশন ঐচ্ছিক
callbackপ্যারামিটারটি দেখতে এইরকম:(response: SubmitJobResponse) => void
- প্রতিক্রিয়া
ফেরত
প্রতিশ্রুতি< কাজের প্রতিক্রিয়া জমা দিন >
ক্রোম ১০০+প্রমিস শুধুমাত্র ম্যানিফেস্ট ভি৩ এবং এর পরবর্তী সংস্করণগুলোতে সমর্থিত, অন্যান্য প্ল্যাটফর্মে কলব্যাক ব্যবহার করতে হবে।
ইভেন্টগুলি
onJobStatusChanged
chrome.printing.onJobStatusChanged.addListener(
callback: function,
)
জবের স্ট্যাটাস পরিবর্তিত হলে এই ইভেন্টটি ফায়ার হয়। এটি শুধুমাত্র এই এক্সটেনশন দ্বারা তৈরি করা জবগুলোর জন্যই ফায়ার হয়।
প্যারামিটার
- কলব্যাক
ফাংশন
callbackপ্যারামিটারটি দেখতে এইরকম:(jobId: string, status: JobStatus) => void
- কাজের আইডি
স্ট্রিং
- অবস্থা