ব্রাউজার.প্রিন্টিং, ব্রাউজার.প্রিন্টিং

বর্ণনা

ক্রোমবুকে ইনস্টল করা প্রিন্টারগুলিতে প্রিন্ট জব পাঠাতে chrome.printing API ব্যবহার করুন।

অনুমতি

printing

প্রাপ্যতা

শুধুমাত্র Chrome 81+ এবং ChromeOS এর জন্য

সমস্ত browser.printing মেথড এবং ইভেন্টের জন্য আপনাকে এক্সটেনশন ম্যানিফেস্টে "printing" পারমিশনটি ঘোষণা করতে হবে। উদাহরণস্বরূপ:

{
  "name": "My extension",
  ...
  "permissions": [
    "printing"
  ],
  ...
}

উদাহরণ

নিচের উদাহরণগুলোতে printing নেমস্পেসের প্রতিটি মেথডের ব্যবহার দেখানো হয়েছে। এই কোডটি extensions-samples গিটহাব রিপো-তে থাকা api-samples/printing থেকে কপি করা বা তার উপর ভিত্তি করে তৈরি।

cancelJob()

এই উদাহরণে, যখন jobStatus PENDING বা IN_PROGRESS থাকে না, তখন একটি 'cancel' বাটন লুকানোর জন্য onJobStatusChanged হ্যান্ডলারটি ব্যবহার করা হয়েছে। উল্লেখ্য যে, কিছু নেটওয়ার্কে অথবা যখন একটি ক্রোমবুক সরাসরি প্রিন্টারের সাথে সংযুক্ত থাকে, তখন এই স্টেটগুলো এত দ্রুত পরিবর্তিত হতে পারে যে ক্যানসেল বাটনটি কল হওয়ার জন্য যথেষ্ট সময় ধরে দৃশ্যমান থাকে না। এটি প্রিন্টিং-এর একটি অত্যন্ত সরলীকৃত উদাহরণ।

browser.printing.onJobStatusChanged.addListener((jobId, status) => {
  const cancelButton = document.getElementById("cancelButton");
  cancelButton.addEventListener('click', () => {
    browser.printing.cancelJob(jobId).then((response) => {
      if (response !== undefined) {
        console.log(response.status);
      }
      if (browser.runtime.lastError !== undefined) {
        console.log(browser.runtime.lastError.message);
      }
    });
  });
  if (status !== "PENDING" && status !== "IN_PROGRESS") {
    cancelButton.style.visibility = 'hidden';
  } else {
    cancelButton.style.visibility = 'visible';
  }
}

getPrinters() এবং getPrinterInfo()

এই ফাংশনগুলোর জন্য একটিমাত্র উদাহরণ ব্যবহার করা হয়েছে, কারণ প্রিন্টারের তথ্য পেতে একটি প্রিন্টার আইডি প্রয়োজন হয়, যা getPrinters() কল করে সংগ্রহ করা হয়। এই উদাহরণটি ডিফল্ট প্রিন্টারের নাম এবং বিবরণ কনসোলে লগ করে। এটি প্রিন্টিং উদাহরণটির একটি সরলীকৃত সংস্করণ।

​​const printers = await browser.printing.getPrinters();
const defaultPrinter = printers.find((printer) => {
  const printerInfo = await browser.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'
    });
  }
};

browser.printing.submitJob(submitJobRequest, (response) => {
  if (response !== undefined) {
    console.log(response.status);
  }
  if (browser.runtime.lastError !== undefined) {
    console.log(browser.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

বৈশিষ্ট্য

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,
)
: Promise<void>

পূর্বে জমা দেওয়া কাজটি বাতিল করে।

প্যারামিটার

  • কাজের আইডি

    স্ট্রিং

    যে প্রিন্ট জবটি বাতিল করতে হবে তার আইডি। এই আইডিটি SubmitJobResponse এ প্রাপ্ত আইডির মতোই হতে হবে।

ফেরত

  • প্রতিশ্রুতি<শূন্য>

    ক্রোম ১০০+

getJobStatus()

ক্রোম ১৩৫+
chrome.printing.getJobStatus(
  jobId: string,
)
: Promise<JobStatus>

প্রিন্ট জবটির স্ট্যাটাস ফেরত দেয়। প্রদত্ত jobId সহ প্রিন্ট জবটি বিদ্যমান না থাকলে এই কলটি একটি রানটাইম এররের সাথে ব্যর্থ হবে। jobId : যে প্রিন্ট জবটির স্ট্যাটাস ফেরত দিতে হবে তার আইডি। এটি SubmitJobResponse এ প্রাপ্ত আইডির মতোই হওয়া উচিত।

প্যারামিটার

  • কাজের আইডি

    স্ট্রিং

ফেরত

getPrinterInfo()

chrome.printing.getPrinterInfo(
  printerId: string,
)
: Promise<GetPrinterInfoResponse>

প্রিন্টারের অবস্থা এবং সক্ষমতা CDD ফরম্যাটে ফেরত দেয়। প্রদত্ত আইডির কোনো প্রিন্টার ইনস্টল করা না থাকলে এই কলটি রানটাইম ত্রুটির কারণে ব্যর্থ হবে।

প্যারামিটার

  • প্রিন্টার আইডি

    স্ট্রিং

ফেরত

getPrinters()

chrome.printing.getPrinters(): Promise<Printer[]>

ডিভাইসে উপলব্ধ প্রিন্টারগুলির তালিকা ফেরত দেয়। এর মধ্যে ম্যানুয়ালি যোগ করা, এন্টারপ্রাইজ এবং আবিষ্কৃত প্রিন্টার অন্তর্ভুক্ত থাকে।

ফেরত

submitJob()

chrome.printing.submitJob(
  request: SubmitJobRequest,
)
: Promise<SubmitJobResponse>

প্রিন্ট করার জন্য কাজটি জমা দেয়। যদি এক্সটেনশনটি PrintingAPIExtensionsAllowlist পলিসিতে তালিকাভুক্ত না থাকে, তবে ব্যবহারকারীকে প্রিন্ট জবটি গ্রহণ করার জন্য অনুরোধ জানানো হয়। ক্রোম ১২০-এর আগে, এই ফাংশনটি কোনো প্রমিজ রিটার্ন করত না।

প্যারামিটার

ফেরত

ইভেন্টগুলি

onJobStatusChanged

chrome.printing.onJobStatusChanged.addListener(
  callback: function,
)

জবের স্ট্যাটাস পরিবর্তিত হলে এই ইভেন্টটি ফায়ার হয়। এটি শুধুমাত্র এই এক্সটেনশন দ্বারা তৈরি করা জবগুলোর জন্যই ফায়ার হয়।

প্যারামিটার

  • কলব্যাক

    ফাংশন

    callback প্যারামিটারটি দেখতে এইরকম:

    (jobId: string, status: JobStatus) => void

,

বর্ণনা

ক্রোমবুকে ইনস্টল করা প্রিন্টারগুলিতে প্রিন্ট জব পাঠাতে chrome.printing API ব্যবহার করুন।

অনুমতি

printing

প্রাপ্যতা

শুধুমাত্র Chrome 81+ এবং ChromeOS এর জন্য

সমস্ত browser.printing মেথড এবং ইভেন্টের জন্য আপনাকে এক্সটেনশন ম্যানিফেস্টে "printing" পারমিশনটি ঘোষণা করতে হবে। উদাহরণস্বরূপ:

{
  "name": "My extension",
  ...
  "permissions": [
    "printing"
  ],
  ...
}

উদাহরণ

নিচের উদাহরণগুলোতে printing নেমস্পেসের প্রতিটি মেথডের ব্যবহার দেখানো হয়েছে। এই কোডটি extensions-samples গিটহাব রিপো-তে থাকা api-samples/printing থেকে কপি করা বা তার উপর ভিত্তি করে তৈরি।

cancelJob()

এই উদাহরণে, যখন jobStatus PENDING বা IN_PROGRESS থাকে না, তখন একটি 'cancel' বাটন লুকানোর জন্য onJobStatusChanged হ্যান্ডলারটি ব্যবহার করা হয়েছে। উল্লেখ্য যে, কিছু নেটওয়ার্কে অথবা যখন একটি ক্রোমবুক সরাসরি প্রিন্টারের সাথে সংযুক্ত থাকে, তখন এই স্টেটগুলো এত দ্রুত পরিবর্তিত হতে পারে যে ক্যানসেল বাটনটি কল হওয়ার জন্য যথেষ্ট সময় ধরে দৃশ্যমান থাকে না। এটি প্রিন্টিং-এর একটি অত্যন্ত সরলীকৃত উদাহরণ।

browser.printing.onJobStatusChanged.addListener((jobId, status) => {
  const cancelButton = document.getElementById("cancelButton");
  cancelButton.addEventListener('click', () => {
    browser.printing.cancelJob(jobId).then((response) => {
      if (response !== undefined) {
        console.log(response.status);
      }
      if (browser.runtime.lastError !== undefined) {
        console.log(browser.runtime.lastError.message);
      }
    });
  });
  if (status !== "PENDING" && status !== "IN_PROGRESS") {
    cancelButton.style.visibility = 'hidden';
  } else {
    cancelButton.style.visibility = 'visible';
  }
}

getPrinters() এবং getPrinterInfo()

এই ফাংশনগুলোর জন্য একটিমাত্র উদাহরণ ব্যবহার করা হয়েছে, কারণ প্রিন্টারের তথ্য পেতে একটি প্রিন্টার আইডি প্রয়োজন হয়, যা getPrinters() কল করে সংগ্রহ করা হয়। এই উদাহরণটি ডিফল্ট প্রিন্টারের নাম এবং বিবরণ কনসোলে লগ করে। এটি প্রিন্টিং উদাহরণটির একটি সরলীকৃত সংস্করণ।

​​const printers = await browser.printing.getPrinters();
const defaultPrinter = printers.find((printer) => {
  const printerInfo = await browser.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'
    });
  }
};

browser.printing.submitJob(submitJobRequest, (response) => {
  if (response !== undefined) {
    console.log(response.status);
  }
  if (browser.runtime.lastError !== undefined) {
    console.log(browser.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

বৈশিষ্ট্য

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,
)
: Promise<void>

পূর্বে জমা দেওয়া কাজটি বাতিল করে।

প্যারামিটার

  • কাজের আইডি

    স্ট্রিং

    যে প্রিন্ট জবটি বাতিল করতে হবে তার আইডি। এই আইডিটি SubmitJobResponse এ প্রাপ্ত আইডির মতোই হতে হবে।

ফেরত

  • প্রতিশ্রুতি<শূন্য>

    ক্রোম ১০০+

getJobStatus()

ক্রোম ১৩৫+
chrome.printing.getJobStatus(
  jobId: string,
)
: Promise<JobStatus>

প্রিন্ট জবটির স্ট্যাটাস ফেরত দেয়। প্রদত্ত jobId সহ প্রিন্ট জবটি বিদ্যমান না থাকলে এই কলটি একটি রানটাইম এররের সাথে ব্যর্থ হবে। jobId : যে প্রিন্ট জবটির স্ট্যাটাস ফেরত দিতে হবে তার আইডি। এটি SubmitJobResponse এ প্রাপ্ত আইডির মতোই হওয়া উচিত।

প্যারামিটার

  • কাজের আইডি

    স্ট্রিং

ফেরত

getPrinterInfo()

chrome.printing.getPrinterInfo(
  printerId: string,
)
: Promise<GetPrinterInfoResponse>

প্রিন্টারের অবস্থা এবং সক্ষমতা CDD ফরম্যাটে ফেরত দেয়। প্রদত্ত আইডির কোনো প্রিন্টার ইনস্টল করা না থাকলে এই কলটি রানটাইম ত্রুটির কারণে ব্যর্থ হবে।

প্যারামিটার

  • প্রিন্টার আইডি

    স্ট্রিং

ফেরত

getPrinters()

chrome.printing.getPrinters(): Promise<Printer[]>

ডিভাইসে উপলব্ধ প্রিন্টারগুলির তালিকা ফেরত দেয়। এর মধ্যে ম্যানুয়ালি যোগ করা, এন্টারপ্রাইজ এবং আবিষ্কৃত প্রিন্টার অন্তর্ভুক্ত থাকে।

ফেরত

submitJob()

chrome.printing.submitJob(
  request: SubmitJobRequest,
)
: Promise<SubmitJobResponse>

প্রিন্ট করার জন্য কাজটি জমা দেয়। যদি এক্সটেনশনটি PrintingAPIExtensionsAllowlist পলিসিতে তালিকাভুক্ত না থাকে, তবে ব্যবহারকারীকে প্রিন্ট জবটি গ্রহণ করার জন্য অনুরোধ জানানো হয়। ক্রোম ১২০-এর আগে, এই ফাংশনটি কোনো প্রমিজ রিটার্ন করত না।

প্যারামিটার

ফেরত

ইভেন্টগুলি

onJobStatusChanged

chrome.printing.onJobStatusChanged.addListener(
  callback: function,
)

জবের স্ট্যাটাস পরিবর্তিত হলে এই ইভেন্টটি ট্রিগার হয়। এটি শুধুমাত্র এই এক্সটেনশন দ্বারা তৈরি করা জবগুলোর ক্ষেত্রেই ট্রিগার হয়।

প্যারামিটার

  • কলব্যাক

    ফাংশন

    callback প্যারামিটারটি দেখতে এইরকম:

    (jobId: string, status: JobStatus) => void