browser.printing

বিবরণ

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

অনুমতি

printing

উপলভ্যতা

Chrome 81+ Chrome 148 থেকে browser.* শুধুমাত্র ChromeOS

সব browser.printing পদ্ধতি ও ইভেন্টের জন্য আপনাকে এক্সটেনশন ম্যানিফেস্টে "printing" অনুমতি ঘোষণা করতে হবে। যেমন:

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

উদাহরণ

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

cancelJob()

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

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() and 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(submit>JobRequest, (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" ভ্যালু সত্য। টিকিটের জন্য এর উচ্চতা ও প্রস্থের মান ব্যবহার করুন।

"media_size": {
  "option": [
  {
    "custom_display_name": "",
    "is_continuous_feed": true,
    "max_height_microns": 2000000,
    "min_height_microns": 25400,
    "width_microns": 50800
  },
  ...
  ]
}

ধরন

GetPrinterInfoResponse

প্রপার্টি

  • কেপেবিলিটি

    অবজেক্ট ঐচ্ছিক

    CDD ফর্ম্যাটে প্রিন্টারের ক্ষমতা। প্রপার্টিটি হয়ত নেই।

  • স্ট্যাটাস

    প্রিন্টারের স্ট্যাটাস।

JobStatus

প্রিন্ট করার কাজের স্ট্যাটাস।

Enum

"বাকি আছে"
Chrome-এর তরফ থেকে প্রিন্ট করার অনুরোধ পাওয়া গেছে কিন্তু এখনও প্রসেস করা হয়নি।

"IN_PROGRESS"
প্রিন্ট করার জন্য প্রিন্ট জব পাঠানো হয়েছে।

"ব্যর্থ হয়েছে"
কোনও সমস্যার কারণে প্রিন্ট জব বাধাগ্রস্ত হয়েছে।

"বাতিল করা হয়েছে"
ব্যবহারকারী বা API-এর মাধ্যমে প্রিন্ট জব বাতিল করা হয়েছে।

"প্রিন্ট করা হয়েছে"
কোনও সমস্যা ছাড়াই প্রিন্টের কাজ সম্পূর্ণ হয়েছে।

Printer

প্রপার্টি

  • বর্ণনা

    স্ট্রিং

    প্রিন্টারের মানুষের-পঠনযোগ্য বিবরণ।

  • id

    স্ট্রিং

    প্রিন্টারের শনাক্তকারী; ডিভাইসে থাকা প্রিন্টারগুলির মধ্যে অনন্য হওয়ার গ্যারান্টিযুক্ত।

  • isDefault

    বুলিয়ান

    প্রিন্টারটি DefaultPrinterSelection নিয়ম মেনে চলে কিনা তা দেখানোর ফ্ল্যাগ। মনে রাখবেন, একাধিক প্রিন্টার ফ্ল্যাগ করা হতে পারে।

  • নাম

    স্ট্রিং

    প্রিন্টারের নাম।

  • recentlyUsedRank

    নম্বর ঐচ্ছিক

    Chrome থেকে প্রিন্ট করার জন্য প্রিন্টারটি কত সম্প্রতি ব্যবহার করা হয়েছে তা দেখানো মান। ভ্যালু যত কম হবে, প্রিন্টারটি তত সাম্প্রতিককালে ব্যবহার করা হয়েছে। ন্যূনতম মান হল ০। ভ্যালু না থাকার অর্থ হল, প্রিন্টারটি সম্প্রতি ব্যবহার করা হয়নি। এই ভ্যালু প্রিন্টারগুলির মধ্যে অনন্য হওয়ার গ্যারান্টিযুক্ত।

  • সোর্স

    প্রিন্টারের সোর্স (ব্যবহারকারী বা নীতি কনফিগার করা)।

  • uri

    স্ট্রিং

    প্রিন্টার URI। ব্যবহারকারীর জন্য প্রিন্টার বেছে নিতে এক্সটেনশন এটি ব্যবহার করতে পারে।

PrinterSource

প্রিন্টারের সোর্স।

Enum

"USER"
ব্যবহারকারী প্রিন্টার যোগ করেছেন।

"নীতি"
নীতির মাধ্যমে প্রিন্টার যোগ করা হয়েছে।

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 ফাঁকা থাকবে।

  • স্ট্যাটাস

    অনুরোধের স্ট্যাটাস।

SubmitJobStatus

submitJob অনুরোধের স্ট্যাটাস।

Enum

"ঠিক আছে"
প্রিন্ট জব অনুরোধ পাঠানো হয়েছে।

"USER_REJECTED"
প্রিন্ট করার অনুরোধ ব্যবহারকারী বাতিল করেছেন।

প্রপার্টি

MAX_GET_PRINTER_INFO_CALLS_PER_MINUTE

প্রতি মিনিটে getPrinterInfo যতবার কল করা যেতে পারে তার সর্বাধিক সংখ্যা।

ভ্যালু

২০

MAX_SUBMIT_JOB_CALLS_PER_MINUTE

প্রতি মিনিটে সর্বাধিক যতবার submitJob কল করা যাবে।

ভ্যালু

৪০

পদ্ধতি

cancelJob()

browser.printing.cancelJob(
  jobId: string,
)
: Promise<void>

আগে জমা দেওয়া কাজ বাতিল করে।

প্যারামিটারগুলি

  • jobId

    স্ট্রিং

    প্রিন্ট জব বাতিল করার আইডি। এটি SubmitJobResponse-এ পাওয়া আইডির সাথে একই হতে হবে।

রিটার্ন

  • <void> প্রমিস

    Chrome 100+ ব্রাউজার।* Chrome 148 থেকে

getJobStatus()

Chrome 135+ Chrome 148 থেকে browser.*
browser.printing.getJobStatus(
  jobId: string,
)
: Promise<JobStatus>

প্রিন্ট জবের স্ট্যাটাস দেখায়। প্রদত্ত jobId সহ প্রিন্ট জব না থাকলে, এই কল রানটাইম সমস্যার কারণে ব্যর্থ হবে। jobId: প্রিন্ট জবের আইডি যার স্ট্যাটাস রিটার্ন করতে হবে। এটি SubmitJobResponse-এ পাওয়া আইডির সাথে একই হতে হবে।

প্যারামিটারগুলি

  • jobId

    স্ট্রিং

রিটার্ন

getPrinterInfo()

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

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

প্যারামিটারগুলি

  • printerId

    স্ট্রিং

রিটার্ন

getPrinters()

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

ডিভাইসে উপলভ্য প্রিন্টারের তালিকা দেখায়। এর মধ্যে ম্যানুয়ালি যোগ করা, এন্টারপ্রাইজ ও খুঁজে পাওয়া প্রিন্টার অন্তর্ভুক্ত।

রিটার্ন

  • <Printer[]>প্রমিস

    Chrome 100+ ব্রাউজার।* Chrome 148 থেকে

submitJob()

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

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

প্যারামিটারগুলি

রিটার্ন

  • Chrome 100+ ব্রাউজার।* Chrome 148 থেকে

ইভেন্ট

onJobStatusChanged

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

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

প্যারামিটারগুলি

  • কলব্যাক

    ফাংশন

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

    (jobId: string, status: JobStatus) =& gt;void

    • jobId

      স্ট্রিং

    • স্ট্যাটাস