chrome.printing

বর্ণনা

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

অনুমতি

printing

প্রাপ্যতা

শুধুমাত্র Chrome 81+ ChromeOS

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

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

উদাহরণ

নীচের উদাহরণগুলি প্রিন্টিং নামস্থানে প্রতিটি পদ্ধতি ব্যবহার করে দেখায়। এই কোডটি এক্সটেনশন-নমুনা গিথুব রেপোতে এপিআই-নমুনা/মুদ্রণের উপর ভিত্তি করে অনুলিপি করা হয়েছে।

চাকরি বাতিল ()

এই উদাহরণটি একটি 'বাতিল' বোতাম লুকানোর জন্য 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() এবং 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) এবং মুদ্রণের ডেটা একটি ব্লব (লাইন 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() কল করুন এবং "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

বৈশিষ্ট্য

JobStatus

প্রিন্ট কাজের অবস্থা।

এনাম

"মুলতুবি"
প্রিন্ট জব ক্রোমের দিকে গৃহীত হয়েছে কিন্তু এখনও প্রক্রিয়া করা হয়নি।

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

"ব্যর্থ"
কিছু ত্রুটির কারণে প্রিন্ট কাজ ব্যাহত হয়েছে।

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

"মুদ্রিত"
প্রিন্ট কাজ কোনো ত্রুটি ছাড়াই প্রিন্ট করা হয়েছে.

Printer

বৈশিষ্ট্য

  • বর্ণনা

    স্ট্রিং

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

  • আইডি

    স্ট্রিং

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

  • ডিফল্ট

    বুলিয়ান

    পতাকা যা দেখায় যে প্রিন্টারটি ডিফল্টপ্রিন্টার নির্বাচনের নিয়মগুলি ফিট করে কিনা৷ মনে রাখবেন যে বেশ কয়েকটি প্রিন্টার পতাকাঙ্কিত হতে পারে।

  • নাম

    স্ট্রিং

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

  • সম্প্রতি ব্যবহৃত র‌্যাঙ্ক

    সংখ্যা ঐচ্ছিক

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

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

  • ইউরি

    স্ট্রিং

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

PrinterSource

প্রিন্টারের উৎস।

এনাম

"ব্যবহারকারী"
প্রিন্টার ব্যবহারকারী দ্বারা যোগ করা হয়েছে.

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

PrinterStatus

প্রিন্টারের অবস্থা।

এনাম

"DOOR_OPEN"
প্রিন্টারের দরজা খোলা। প্রিন্টার এখনও মুদ্রণ কাজ গ্রহণ করে।

"TRAY_MISSING"
প্রিন্টারের ট্রে অনুপস্থিত. প্রিন্টার এখনও মুদ্রণ কাজ গ্রহণ করে।

"OUT_OF_INK"
প্রিন্টারের কালি শেষ। প্রিন্টার এখনও মুদ্রণ কাজ গ্রহণ করে।

"OUT_OF_PAPER"
প্রিন্টারটি কাগজের বাইরে। প্রিন্টার এখনও মুদ্রণ কাজ গ্রহণ করে।

"OUTPUT_FULL"
প্রিন্টারের আউটপুট এলাকা (যেমন ট্রে) পূর্ণ। প্রিন্টার এখনও মুদ্রণ কাজ গ্রহণ করে।

"PAPER_JAM"
প্রিন্টার একটি কাগজ জ্যাম আছে. প্রিন্টার এখনও মুদ্রণ কাজ গ্রহণ করে।

"GENERIC_ISSUE"
কিছু সাধারণ সমস্যা। প্রিন্টার এখনও মুদ্রণ কাজ গ্রহণ করে।

"থেমে গেছে"
প্রিন্টারটি বন্ধ হয়ে গেছে এবং মুদ্রণ করে না কিন্তু তবুও মুদ্রণ কাজগুলি গ্রহণ করে৷

"অগম্য"
প্রিন্টারটি পৌঁছানো যায় না এবং মুদ্রণের কাজগুলি গ্রহণ করে না৷

"EXPIRED_CERTIFICATE"
SSL শংসাপত্রের মেয়াদ শেষ হয়েছে৷ প্রিন্টার কাজ গ্রহণ করে কিন্তু তারা ব্যর্থ হয়।

"উপলভ্য"
প্রিন্টার পাওয়া যায়।

SubmitJobRequest

বৈশিষ্ট্য

  • প্রিন্ট কাজ জমা দিতে হবে. শুধুমাত্র সমর্থিত বিষয়বস্তুর ধরন হল "অ্যাপ্লিকেশন/পিডিএফ", এবং ক্লাউড জব টিকিটে FitToPageTicketItem , PageRangeTicketItem , ReverseOrderTicketItem এবং VendorTicketItem ক্ষেত্রগুলি অন্তর্ভুক্ত করা উচিত নয় কারণ এগুলি নেটিভ প্রিন্টিংয়ের জন্য অপ্রাসঙ্গিক৷ অন্য সব ক্ষেত্র উপস্থিত হতে হবে.

SubmitJobResponse

বৈশিষ্ট্য

  • চাকরির আইডি

    স্ট্রিং ঐচ্ছিক

    তৈরি করা প্রিন্ট কাজের আইডি। ডিভাইসের সমস্ত মুদ্রণ কাজের মধ্যে এটি একটি অনন্য শনাক্তকারী৷ স্ট্যাটাস ঠিক না থাকলে, jobId নাল হয়ে যাবে।

  • অনুরোধের অবস্থা।

SubmitJobStatus

submitJob অনুরোধ জমা দেওয়ার অবস্থা।

এনাম

"ঠিক আছে"
প্রেরিত প্রিন্ট কাজের অনুরোধ গৃহীত হয়.

"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,
)

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

পরামিতি

  • চাকরির আইডি

    স্ট্রিং

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

  • কলব্যাক

    ফাংশন ঐচ্ছিক

    callback প্যারামিটারটি এর মতো দেখাচ্ছে:

    () => void

রিটার্নস

  • প্রতিশ্রুতি <void>

    Chrome 100+

    প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।

getPrinterInfo()

প্রতিশ্রুতি
chrome.printing.getPrinterInfo(
  printerId: string,
  callback?: function,
)

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

পরামিতি

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

    স্ট্রিং

  • কলব্যাক

    ফাংশন ঐচ্ছিক

    callback প্যারামিটারটি এর মতো দেখাচ্ছে:

    (response: GetPrinterInfoResponse) => void

রিটার্নস

  • প্রতিশ্রুতি< GetPrinterInfoResponse >

    Chrome 100+

    প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।

getPrinters()

প্রতিশ্রুতি
chrome.printing.getPrinters(
  callback?: function,
)

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

পরামিতি

  • কলব্যাক

    ফাংশন ঐচ্ছিক

    callback প্যারামিটারটি এর মতো দেখাচ্ছে:

    (printers: Printer[]) => void

রিটার্নস

  • প্রতিশ্রুতি< প্রিন্টার []>

    Chrome 100+

    প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।

submitJob()

প্রতিশ্রুতি
chrome.printing.submitJob(
  request: SubmitJobRequest,
  callback?: function,
)

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

পরামিতি

রিটার্নস

  • প্রতিশ্রুতি< SubmitJobResponse >

    Chrome 100+

    প্রতিশ্রুতিগুলি ম্যানিফেস্ট V3 এবং পরবর্তীতে সমর্থিত, তবে পশ্চাদগামী সামঞ্জস্যের জন্য কলব্যাক প্রদান করা হয়। আপনি একই ফাংশন কলে উভয় ব্যবহার করতে পারবেন না। প্রতিশ্রুতিটি একই ধরণের সাথে সমাধান করে যা কলব্যাকে পাস করা হয়।

ঘটনা

onJobStatusChanged

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

চাকরির অবস্থা পরিবর্তন হলে ইভেন্ট বরখাস্ত করা হয়। এটি শুধুমাত্র এই এক্সটেনশন দ্বারা তৈরি কাজের জন্য বহিস্কার করা হয়েছে।

পরামিতি

  • কলব্যাক

    ফাংশন

    callback প্যারামিটারটি এর মতো দেখাচ্ছে:

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