chrome.printing

توضیحات

از chrome.printing API برای ارسال کارهای چاپی به چاپگرهای نصب شده در Chromebook استفاده کنید.

مجوزها

printing

در دسترس بودن

فقط Chrome 81+ ChromeOS

آشکار

همه روش‌ها و رویدادهای chrome.printing از شما می‌خواهند مجوز "printing" را در مانیفست افزونه اعلام کنید. به عنوان مثال:

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

نمونه ها

مثال‌های زیر استفاده از هر یک از روش‌ها را در فضای نام چاپ نشان می‌دهند. این کد از یا بر اساس api-samples/printing در Extensions-Samps مخزن GitHub کپی شده است.

cancelJob()

این مثال از کنترل کننده 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()

متد 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() را فراخوانی کنید و به دنبال "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

وضعیت کار چاپ

Enum

"در انتظار"
کار چاپ در سمت کروم دریافت شد اما هنوز پردازش نشده است.

"IN_PROGRESS"
کار چاپ برای چاپ ارسال می شود.

"شکست خورده"
کار چاپ به دلیل برخی خطا قطع شد.

"لغو"
کار چاپ توسط کاربر یا از طریق API لغو شد.

"چاپ شده"
کار چاپ بدون هیچ خطایی چاپ شد.

Printer

خواص

  • توضیحات

    رشته

    توصیف انسان قابل خواندن چاپگر.

  • شناسه

    رشته

    شناسه چاپگر؛ تضمین شده است که در بین چاپگرهای دستگاه منحصر به فرد است.

  • پیش فرض است

    بولی

    پرچمی که نشان می دهد آیا چاپگر با قوانین DefaultPrinterSelection مطابقت دارد یا خیر. توجه داشته باشید که چندین چاپگر ممکن است علامت گذاری شوند.

  • نام

    رشته

    نام چاپگر.

  • اخیراًUsedRank

    شماره اختیاری

    مقداری که نشان می دهد چاپگر چقدر اخیر برای چاپ از Chrome استفاده شده است. هرچه این مقدار کمتر باشد چاپگر جدیدتر استفاده شده است. حداقل مقدار 0 است. مقدار از دست رفته نشان می دهد که چاپگر اخیراً استفاده نشده است. این مقدار تضمین شده است که در بین چاپگرها منحصر به فرد است.

  • منبع چاپگر (کاربر یا خط مشی پیکربندی شده است).

  • اوری

    رشته

    URI چاپگر. این می تواند توسط برنامه های افزودنی برای انتخاب چاپگر برای کاربر استفاده شود.

PrinterSource

منبع چاپگر

Enum

"کاربر"
چاپگر توسط کاربر اضافه شد.

"سیاست"
چاپگر از طریق خط مشی اضافه شد.

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". Cloud Job Ticket نباید شامل فیلدهای FitToPageTicketItem ، PageRangeTicketItem و ReverseOrderTicketItem باشد زیرا برای چاپ بومی نامربوط هستند. VendorTicketItem اختیاری است. تمام فیلدهای دیگر باید وجود داشته باشد.

SubmitJobResponse

خواص

  • job ID

    رشته اختیاری

    شناسه کار چاپ ایجاد شده این یک شناسه منحصر به فرد در بین تمام کارهای چاپی روی دستگاه است. اگر وضعیت خوب نباشد jobId null خواهد بود.

  • وضعیت درخواست

SubmitJobStatus

وضعیت submitJob درخواست شغل.

Enum

"باشه"
درخواست کار چاپ ارسالی پذیرفته می شود.

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

کار ارسال شده قبلی را لغو می کند.

پارامترها

  • job ID

    رشته

    شناسه کار چاپ برای لغو. این باید همان شناسه دریافت شده در SubmitJobResponse باشد.

  • پاسخ به تماس

    عملکرد اختیاری

    پارامتر callback به نظر می رسد:

    () => void

برمی گرداند

  • قول<باطل>

    Chrome 100+

    Promises فقط برای Manifest V3 و نسخه‌های جدیدتر پشتیبانی می‌شود، پلتفرم‌های دیگر باید از callback استفاده کنند.

getJobStatus()

Promise Chrome 135+
chrome.printing.getJobStatus(
  jobId: string,
  callback?: function,
)

وضعیت کار چاپ را برمی‌گرداند. اگر کار چاپ با jobId داده شده وجود نداشته باشد، این تماس با خطای زمان اجرا ناموفق خواهد بود. jobId : شناسه کار چاپ برای برگرداندن وضعیت. این باید همان شناسه دریافت شده در SubmitJobResponse باشد.

پارامترها

  • job ID

    رشته

  • پاسخ به تماس

    عملکرد اختیاری

    پارامتر callback به نظر می رسد:

    (status: JobStatus) => void

برمی گرداند

  • Promises فقط برای Manifest V3 و نسخه‌های جدیدتر پشتیبانی می‌شود، پلتفرم‌های دیگر باید از callback استفاده کنند.

getPrinterInfo()

قول بده
chrome.printing.getPrinterInfo(
  printerId: string,
  callback?: function,
)

وضعیت و قابلیت های چاپگر را در قالب CDD برمی گرداند. اگر چاپگری با شناسه داده شده نصب نشود، این تماس با خطای زمان اجرا ناموفق خواهد بود.

پارامترها

برمی گرداند

  • Chrome 100+

    Promises فقط برای Manifest V3 و نسخه‌های جدیدتر پشتیبانی می‌شود، پلتفرم‌های دیگر باید از callback استفاده کنند.

getPrinters()

قول بده
chrome.printing.getPrinters(
  callback?: function,
)

لیست چاپگرهای موجود در دستگاه را برمی گرداند. این شامل چاپگرهای دستی، سازمانی و کشف شده می‌شود.

پارامترها

  • پاسخ به تماس

    عملکرد اختیاری

    پارامتر callback به نظر می رسد:

    (printers: Printer[]) => void

برمی گرداند

  • Promise< چاپگر []>

    Chrome 100+

    Promises فقط برای Manifest V3 و نسخه‌های جدیدتر پشتیبانی می‌شود، پلتفرم‌های دیگر باید از callback استفاده کنند.

submitJob()

قول بده
chrome.printing.submitJob(
  request: SubmitJobRequest,
  callback?: function,
)

کار را برای چاپ ارسال می کند. اگر برنامه افزودنی در خط‌مشی PrintingAPIExtensionsAllowlist فهرست نشده باشد، از کاربر خواسته می‌شود کار چاپ را بپذیرد. قبل از کروم 120، این عملکرد قولی را برنمی‌گرداند.

پارامترها

برمی گرداند

  • Promise< SubmitJobResponse >

    Chrome 100+

    Promises فقط برای Manifest V3 و نسخه‌های جدیدتر پشتیبانی می‌شود، پلتفرم‌های دیگر باید از callback استفاده کنند.

رویدادها

onJobStatusChanged

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

زمانی که وضعیت کار تغییر می‌کند، رویداد اخراج می‌شود. این فقط برای مشاغل ایجاد شده توسط این افزونه اخراج می شود.

پارامترها

  • پاسخ به تماس

    تابع

    پارامتر callback به نظر می رسد:

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

،

توضیحات

از chrome.printing API برای ارسال کارهای چاپی به چاپگرهای نصب شده در Chromebook استفاده کنید.

مجوزها

printing

در دسترس بودن

فقط Chrome 81+ ChromeOS

آشکار

همه روش‌ها و رویدادهای chrome.printing از شما می‌خواهند مجوز "printing" را در مانیفست افزونه اعلام کنید. به عنوان مثال:

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

نمونه ها

مثال‌های زیر استفاده از هر یک از روش‌ها را در فضای نام چاپ نشان می‌دهند. این کد از یا بر اساس api-samples/printing در Extensions-Samps مخزن GitHub کپی شده است.

cancelJob()

این مثال از کنترل کننده 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()

متد 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() را فراخوانی کنید و به دنبال "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

وضعیت کار چاپ

Enum

"در انتظار"
کار چاپ در سمت کروم دریافت شد اما هنوز پردازش نشده است.

"IN_PROGRESS"
کار چاپ برای چاپ ارسال می شود.

"شکست خورده"
کار چاپ به دلیل برخی خطا قطع شد.

"لغو"
کار چاپ توسط کاربر یا از طریق API لغو شد.

"چاپ شده"
کار چاپ بدون هیچ خطایی چاپ شد.

Printer

خواص

  • توضیحات

    رشته

    توصیف انسان قابل خواندن چاپگر.

  • شناسه

    رشته

    شناسه چاپگر؛ تضمین شده است که در بین چاپگرهای دستگاه منحصر به فرد است.

  • پیش فرض است

    بولی

    پرچمی که نشان می دهد آیا چاپگر با قوانین DefaultPrinterSelection مطابقت دارد یا خیر. توجه داشته باشید که چندین چاپگر ممکن است علامت گذاری شوند.

  • نام

    رشته

    نام چاپگر.

  • اخیراًUsedRank

    شماره اختیاری

    مقداری که نشان می دهد چاپگر چقدر اخیر برای چاپ از Chrome استفاده شده است. هرچه این مقدار کمتر باشد چاپگر جدیدتر استفاده شده است. حداقل مقدار 0 است. مقدار از دست رفته نشان می دهد که چاپگر اخیراً استفاده نشده است. این مقدار تضمین شده است که در بین چاپگرها منحصر به فرد است.

  • منبع چاپگر (کاربر یا خط مشی پیکربندی شده است).

  • اوری

    رشته

    URI چاپگر. این می تواند توسط برنامه های افزودنی برای انتخاب چاپگر برای کاربر استفاده شود.

PrinterSource

منبع چاپگر

Enum

"کاربر"
چاپگر توسط کاربر اضافه شد.

"سیاست"
چاپگر از طریق خط مشی اضافه شد.

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". Cloud Job Ticket نباید شامل فیلدهای FitToPageTicketItem ، PageRangeTicketItem و ReverseOrderTicketItem باشد زیرا برای چاپ بومی نامربوط هستند. VendorTicketItem اختیاری است. تمام فیلدهای دیگر باید وجود داشته باشد.

SubmitJobResponse

خواص

  • job ID

    رشته اختیاری

    شناسه کار چاپ ایجاد شده این یک شناسه منحصر به فرد در بین تمام کارهای چاپی روی دستگاه است. اگر وضعیت خوب نباشد jobId null خواهد بود.

  • وضعیت درخواست

SubmitJobStatus

وضعیت submitJob درخواست شغل.

Enum

"باشه"
درخواست کار چاپ ارسالی پذیرفته می شود.

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

کار ارسال شده قبلی را لغو می کند.

پارامترها

  • job ID

    رشته

    شناسه کار چاپ برای لغو. این باید همان شناسه دریافت شده در SubmitJobResponse باشد.

  • پاسخ به تماس

    عملکرد اختیاری

    پارامتر callback به نظر می رسد:

    () => void

برمی گرداند

  • قول<باطل>

    Chrome 100+

    Promises فقط برای Manifest V3 و نسخه‌های جدیدتر پشتیبانی می‌شود، پلتفرم‌های دیگر باید از callback استفاده کنند.

getJobStatus()

Promise Chrome 135+
chrome.printing.getJobStatus(
  jobId: string,
  callback?: function,
)

وضعیت کار چاپ را برمی‌گرداند. اگر کار چاپ با jobId داده شده وجود نداشته باشد، این تماس با خطای زمان اجرا ناموفق خواهد بود. jobId : شناسه کار چاپ برای برگرداندن وضعیت. این باید همان شناسه دریافت شده در SubmitJobResponse باشد.

پارامترها

  • job ID

    رشته

  • پاسخ به تماس

    عملکرد اختیاری

    پارامتر callback به نظر می رسد:

    (status: JobStatus) => void

برمی گرداند

  • Promises فقط برای Manifest V3 و نسخه‌های جدیدتر پشتیبانی می‌شود، پلتفرم‌های دیگر باید از callback استفاده کنند.

getPrinterInfo()

قول بده
chrome.printing.getPrinterInfo(
  printerId: string,
  callback?: function,
)

وضعیت و قابلیت های چاپگر را در قالب CDD برمی گرداند. اگر چاپگری با شناسه داده شده نصب نشود، این تماس با خطای زمان اجرا ناموفق خواهد بود.

پارامترها

برمی گرداند

  • Chrome 100+

    Promises فقط برای Manifest V3 و نسخه‌های جدیدتر پشتیبانی می‌شود، پلتفرم‌های دیگر باید از callback استفاده کنند.

getPrinters()

قول بده
chrome.printing.getPrinters(
  callback?: function,
)

لیست چاپگرهای موجود در دستگاه را برمی گرداند. این شامل چاپگرهای دستی، سازمانی و کشف شده می‌شود.

پارامترها

  • پاسخ به تماس

    عملکرد اختیاری

    پارامتر callback به نظر می رسد:

    (printers: Printer[]) => void

برمی گرداند

  • Promise< چاپگر []>

    Chrome 100+

    Promises فقط برای Manifest V3 و نسخه‌های جدیدتر پشتیبانی می‌شود، پلتفرم‌های دیگر باید از callback استفاده کنند.

submitJob()

قول بده
chrome.printing.submitJob(
  request: SubmitJobRequest,
  callback?: function,
)

کار را برای چاپ ارسال می کند. اگر برنامه افزودنی در خط‌مشی PrintingAPIExtensionsAllowlist فهرست نشده باشد، از کاربر خواسته می‌شود کار چاپ را بپذیرد. قبل از کروم 120، این عملکرد قولی را برنمی‌گرداند.

پارامترها

برمی گرداند

  • Promise< SubmitJobResponse >

    Chrome 100+

    Promises فقط برای Manifest V3 و نسخه‌های جدیدتر پشتیبانی می‌شود، پلتفرم‌های دیگر باید از callback استفاده کنند.

رویدادها

onJobStatusChanged

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

زمانی که وضعیت کار تغییر می‌کند، رویداد اخراج می‌شود. این فقط برای مشاغل ایجاد شده توسط این افزونه اخراج می شود.

پارامترها

  • پاسخ به تماس

    تابع

    پارامتر callback به نظر می رسد:

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

،

توضیحات

از chrome.printing API برای ارسال کارهای چاپی به چاپگرهای نصب شده در Chromebook استفاده کنید.

مجوزها

printing

در دسترس بودن

فقط Chrome 81+ ChromeOS

آشکار

همه روش‌ها و رویدادهای chrome.printing از شما می‌خواهند مجوز "printing" را در مانیفست افزونه اعلام کنید. به عنوان مثال:

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

نمونه ها

مثال‌های زیر استفاده از هر یک از روش‌ها را در فضای نام چاپ نشان می‌دهند. این کد از یا بر اساس api-samples/printing در Extensions-Samps مخزن GitHub کپی شده است.

cancelJob()

این مثال از کنترل کننده 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()

submitJob() subjectJob به سه چیز نیاز دارد.

  • یک ساختار 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() را فراخوانی کنید و به دنبال "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

وضعیت کار چاپ

Enum

"در انتظار"
کار چاپ در سمت کروم دریافت شد اما هنوز پردازش نشده است.

"IN_PROGRESS"
کار چاپ برای چاپ ارسال می شود.

"شکست خورده"
کار چاپ به دلیل برخی خطا قطع شد.

"لغو"
کار چاپ توسط کاربر یا از طریق API لغو شد.

"چاپ شده"
کار چاپ بدون هیچ خطایی چاپ شد.

Printer

خواص

  • توضیحات

    رشته

    توصیف انسان قابل خواندن چاپگر.

  • شناسه

    رشته

    شناسه چاپگر؛ تضمین شده است که در بین چاپگرهای دستگاه منحصر به فرد است.

  • پیش فرض است

    بولی

    پرچمی که نشان می دهد آیا چاپگر با قوانین DefaultPrinterSelection مطابقت دارد یا خیر. توجه داشته باشید که چندین چاپگر ممکن است علامت گذاری شوند.

  • نام

    رشته

    نام چاپگر.

  • اخیراًUsedRank

    شماره اختیاری

    مقداری که نشان می دهد چاپگر چقدر اخیر برای چاپ از Chrome استفاده شده است. هرچه این مقدار کمتر باشد چاپگر جدیدتر استفاده شده است. حداقل مقدار 0 است. مقدار از دست رفته نشان می دهد که چاپگر اخیراً استفاده نشده است. این مقدار تضمین شده است که در بین چاپگرها منحصر به فرد است.

  • منبع چاپگر (کاربر یا خط مشی پیکربندی شده است).

  • اوری

    رشته

    URI چاپگر. این می تواند توسط برنامه های افزودنی برای انتخاب چاپگر برای کاربر استفاده شود.

PrinterSource

منبع چاپگر

Enum

"کاربر"
چاپگر توسط کاربر اضافه شد.

"سیاست"
چاپگر از طریق خط مشی اضافه شد.

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". Cloud Job Ticket نباید شامل فیلدهای FitToPageTicketItem ، PageRangeTicketItem و ReverseOrderTicketItem باشد زیرا برای چاپ بومی نامربوط هستند. VendorTicketItem اختیاری است. تمام فیلدهای دیگر باید وجود داشته باشد.

SubmitJobResponse

خواص

  • job ID

    رشته اختیاری

    شناسه کار چاپ ایجاد شده این یک شناسه منحصر به فرد در بین تمام کارهای چاپی روی دستگاه است. اگر وضعیت خوب نباشد jobId null خواهد بود.

  • وضعیت درخواست

SubmitJobStatus

وضعیت submitJob درخواست شغل.

Enum

"باشه"
درخواست کار چاپ ارسالی پذیرفته می شود.

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

کار ارسال شده قبلی را لغو می کند.

پارامترها

  • job ID

    رشته

    شناسه کار چاپ برای لغو. این باید همان شناسه دریافت شده در SubmitJobResponse باشد.

  • پاسخ به تماس

    عملکرد اختیاری

    پارامتر callback به نظر می رسد:

    () => void

برمی گرداند

  • قول<باطل>

    Chrome 100+

    Promises فقط برای Manifest V3 و نسخه‌های جدیدتر پشتیبانی می‌شود، پلتفرم‌های دیگر باید از callback استفاده کنند.

getJobStatus()

Promise Chrome 135+
chrome.printing.getJobStatus(
  jobId: string,
  callback?: function,
)

وضعیت کار چاپ را برمی‌گرداند. اگر کار چاپ با jobId داده شده وجود نداشته باشد، این تماس با خطای زمان اجرا ناموفق خواهد بود. jobId : شناسه کار چاپ برای برگرداندن وضعیت. این باید همان شناسه دریافت شده در SubmitJobResponse باشد.

پارامترها

  • job ID

    رشته

  • پاسخ به تماس

    عملکرد اختیاری

    پارامتر callback به نظر می رسد:

    (status: JobStatus) => void

برمی گرداند

  • Promises فقط برای Manifest V3 و نسخه‌های جدیدتر پشتیبانی می‌شود، پلتفرم‌های دیگر باید از callback استفاده کنند.

getPrinterInfo()

قول بده
chrome.printing.getPrinterInfo(
  printerId: string,
  callback?: function,
)

وضعیت و قابلیت های چاپگر را در قالب CDD برمی گرداند. اگر چاپگری با شناسه داده شده نصب نشود، این تماس با خطای زمان اجرا ناموفق خواهد بود.

پارامترها

برمی گرداند

  • Chrome 100+

    Promises فقط برای Manifest V3 و نسخه‌های جدیدتر پشتیبانی می‌شود، پلتفرم‌های دیگر باید از callback استفاده کنند.

getPrinters()

قول بده
chrome.printing.getPrinters(
  callback?: function,
)

لیست چاپگرهای موجود در دستگاه را برمی گرداند. این شامل چاپگرهای دستی، سازمانی و کشف شده می‌شود.

پارامترها

  • پاسخ به تماس

    عملکرد اختیاری

    پارامتر callback به نظر می رسد:

    (printers: Printer[]) => void

برمی گرداند

  • Promise< چاپگر []>

    Chrome 100+

    Promises فقط برای Manifest V3 و نسخه‌های جدیدتر پشتیبانی می‌شود، پلتفرم‌های دیگر باید از callback استفاده کنند.

submitJob()

قول بده
chrome.printing.submitJob(
  request: SubmitJobRequest,
  callback?: function,
)

کار را برای چاپ ارسال می کند. اگر برنامه افزودنی در خط‌مشی PrintingAPIExtensionsAllowlist فهرست نشده باشد، از کاربر خواسته می‌شود کار چاپ را بپذیرد. قبل از کروم 120، این عملکرد قولی را برنمی‌گرداند.

پارامترها

برمی گرداند

  • Promise< SubmitJobResponse >

    Chrome 100+

    Promises فقط برای Manifest V3 و نسخه‌های جدیدتر پشتیبانی می‌شود، پلتفرم‌های دیگر باید از callback استفاده کنند.

رویدادها

onJobStatusChanged

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

زمانی که وضعیت کار تغییر می‌کند، رویداد اخراج می‌شود. این فقط برای مشاغل ایجاد شده توسط این افزونه اخراج می شود.

پارامترها

  • پاسخ به تماس

    تابع

    پارامتر callback به نظر می رسد:

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

،

توضیحات

از chrome.printing API برای ارسال کارهای چاپی به چاپگرهای نصب شده در Chromebook استفاده کنید.

مجوزها

printing

در دسترس بودن

فقط Chrome 81+ ChromeOS

آشکار

همه روش‌ها و رویدادهای chrome.printing از شما می‌خواهند مجوز "printing" را در مانیفست افزونه اعلام کنید. به عنوان مثال:

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

نمونه ها

مثال‌های زیر استفاده از هر یک از روش‌ها را در فضای نام چاپ نشان می‌دهند. این کد از یا بر اساس api-samples/printing در Extensions-Samps مخزن GitHub کپی شده است.

cancelJob()

این مثال از کنترل کننده 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()

submitJob() subjectJob به سه چیز نیاز دارد.

  • یک ساختار 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() تماس بگیرید و به دنبال "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

وضعیت کار چاپ.

Enum

"در انتظار"
کار چاپی از طرف Chrome دریافت می شود اما هنوز پردازش نشده است.

"in_progress"
کار چاپ برای چاپ ارسال می شود.

"شکست خورد"
کار چاپ به دلیل برخی خطا قطع شد.

"لغو شده"
کار چاپ توسط کاربر یا از طریق API لغو شد.

"چاپ شده"
کار چاپی بدون هیچ گونه خطایی چاپ شد.

Printer

خواص

  • توضیحات

    رشته

    توضیحات قابل خواندن انسانی از چاپگر.

  • شناسه

    رشته

    شناسه چاپگر ؛ تضمین شده در بین چاپگرهای موجود در دستگاه بی نظیر است.

  • isDefault

    بولی

    پرچمی که نشان می دهد چاپگر متناسب با قوانین پیش فرض چاپگر است یا خیر. توجه داشته باشید که چندین چاپگر را می توان پرچم گذاری کرد.

  • نام

    رشته

    نام چاپگر.

  • اخیراً استفاده شده است

    شماره اختیاری

    مقدار نشان می دهد که چگونه از چاپگر برای چاپ از Chrome استفاده شده است. هرچه مقدار پایین تر باشد ، از چاپگر جدیدتر استفاده شده است. حداقل مقدار 0 است. مقدار گمشده نشان می دهد که اخیراً از چاپگر استفاده نشده است. این مقدار تضمین می شود که در بین چاپگرها بی نظیر باشد.

  • منبع

    منبع چاپگر (کاربر یا خط مشی پیکربندی شده).

  • اوری

    رشته

    چاپگر URI. این می تواند توسط برنامه های افزودنی برای انتخاب چاپگر برای کاربر استفاده شود.

PrinterSource

منبع چاپگر.

Enum

"کاربر"
چاپگر توسط کاربر اضافه شد.

"سیاست"
چاپگر از طریق خط مشی اضافه شد.

PrinterStatus

وضعیت چاپگر.

Enum

"درب_پن"
درب چاپگر باز است. چاپگر هنوز مشاغل چاپی را می پذیرد.

"Tray_missing"
سینی چاپگر از دست رفته است. چاپگر هنوز مشاغل چاپی را می پذیرد.

"out_of_ink"
چاپگر از جوهر خارج است. چاپگر هنوز مشاغل چاپی را می پذیرد.

"out_of_paper"
چاپگر خارج از کاغذ است. چاپگر هنوز مشاغل چاپی را می پذیرد.

"output_full"
منطقه خروجی چاپگر (به عنوان مثال سینی) پر است. چاپگر هنوز مشاغل چاپی را می پذیرد.

"paper_jam"
چاپگر دارای مربا کاغذی است. چاپگر هنوز مشاغل چاپی را می پذیرد.

"generic_issue"
برخی از مسئله عمومی. چاپگر هنوز مشاغل چاپی را می پذیرد.

"متوقف شد"
چاپگر متوقف شده و چاپ نمی شود اما هنوز مشاغل چاپی را می پذیرد.

"غیرقابل دستیابی"
چاپگر غیرقابل دسترسی است و مشاغل چاپی را نمی پذیرد.

"منقضی شده_ certificate"
گواهی SSL منقضی شده است. چاپگر مشاغل را می پذیرد اما آنها شکست می خورند.

"موجود"
چاپگر در دسترس است.

SubmitJobRequest

خواص

  • شغل

    کار چاپی ارسال می شود. انواع محتوای پشتیبانی شده "برنامه/PDF" و "Image/PNG" هستند. بلیط کار ابر نباید شامل FitToPageTicketItem ، PageRangeTicketItem و ReverseOrderTicketItem باشد زیرا برای چاپ بومی بی ربط هستند. VendorTicketItem اختیاری است. تمام زمینه های دیگر باید حضور داشته باشند.

SubmitJobResponse

خواص

  • job ID

    رشته اختیاری

    شناسه کار چاپی ایجاد شده. این یک شناسه منحصر به فرد در بین کلیه کارهای چاپی موجود در دستگاه است. اگر وضعیت خوب نباشد ، JobID تهی خواهد بود.

  • وضعیت

    وضعیت درخواست

SubmitJobStatus

وضعیت درخواست submitJob .

Enum

"باشه"
درخواست شغلی چاپی ارسال شده است.

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

کار قبلاً ارسال شده را لغو می کند.

پارامترها

  • job ID

    رشته

    شناسه کار چاپ برای لغو. این باید همان شناسه ای باشد که در یک SubmitJobResponse دریافت شده است.

  • پاسخ به تماس

    عملکرد اختیاری

    پارامتر callback به نظر می رسد:

    () => void

برمی گرداند

  • قول <void>

    Chrome 100+

    وعده ها فقط برای مانیفست V3 و بعد از آن پشتیبانی می شوند ، سایر سیستم عامل ها نیاز به استفاده از تماس تلفنی دارند.

getJobStatus()

قول Chrome 135+
chrome.printing.getJobStatus(
  jobId: string,
  callback?: function,
)

وضعیت کار چاپ را برمی گرداند. در صورت وجود کار چاپی با jobId داده شده ، این تماس با خطای زمان اجرا شکست می خورد. jobId : شناسه کار چاپ برای بازگشت وضعیت. این باید همان شناسه ای باشد که در یک SubmitJobResponse دریافت شده است.

پارامترها

  • job ID

    رشته

  • پاسخ به تماس

    عملکرد اختیاری

    پارامتر callback به نظر می رسد:

    (status: JobStatus) => void

برمی گرداند

  • قول <jobstatus>

    وعده ها فقط برای مانیفست V3 و بعد از آن پشتیبانی می شوند ، سایر سیستم عامل ها نیاز به استفاده از تماس تلفنی دارند.

getPrinterInfo()

قول بده
chrome.printing.getPrinterInfo(
  printerId: string,
  callback?: function,
)

وضعیت و قابلیت های چاپگر را با فرمت CDD برمی گرداند. در صورت نصب چاپگر با شناسه داده شده ، این تماس با خطای زمان اجرا شکست می خورد.

پارامترها

  • چاپی

    رشته

  • پاسخ به تماس

    عملکرد اختیاری

    پارامتر callback به نظر می رسد:

    (response: GetPrinterInfoResponse) => void

برمی گرداند

  • 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 ، این عملکرد وعده ای برنمی گرداند.

پارامترها

  • درخواست کنید
  • پاسخ به تماس

    عملکرد اختیاری

    پارامتر callback به نظر می رسد:

    (response: SubmitJobResponse) => void

برمی گرداند

  • Chrome 100+

    وعده ها فقط برای مانیفست V3 و بعد از آن پشتیبانی می شوند ، سایر سیستم عامل ها نیاز به استفاده از تماس تلفنی دارند.

رویدادها

onJobStatusChanged

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

هنگام تغییر وضعیت کار ، رویداد اخراج شد. این فقط برای مشاغل ایجاد شده توسط این پسوند اخراج می شود.

پارامترها

  • پاسخ به تماس

    تابع

    پارامتر callback به نظر می رسد:

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