chrome.printing

Açıklama

Yazdırma işlerini Chromebook'ta yüklü yazıcılara göndermek için chrome.printing API'yi kullanın.

İzinler

printing

Kullanılabilirlik

Chrome 81 ve sonraki sürümler Yalnızca ChromeOS

Manifest

Tüm chrome.printing yöntem ve etkinlikleri, uzantı manifestinde "printing" iznini beyan etmenizi gerektirir. Örneğin:

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

Örnekler

Aşağıdaki örneklerde, yazdırma ad alanında yöntemlerin her birinin kullanımı gösterilmektedir. Bu kod, uzantı örnekleri GitHub deposundaki api-samples/printing kaynağından veya buna dayalı olarak kopyalanır.

cancelJob()

Bu örnekte bir 'cancel' öğesini gizlemek için onJobStatusChanged işleyicisi kullanılmaktadır PENDING veya IN_PROGRESS olmadığında jobStatus düğmesini tıklayın. Bazı ağlarda veya Chromebook doğrudan yazıcıya bağlandığında bu durumların, iptal düğmesinin çağrılacak kadar uzun süre görünür hale gelmeyeceği kadar hızlı geçebileceğini unutmayın. Bu, son derece basitleştirilmiş bir yazdırma örneğidir.

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() and getPrinterInfo()

Yazıcı bilgilerini almak için getPrinters() çağrısı yapılarak alınan bir yazıcı kimliği gerektiğinden bu işlevler için tek bir örnek kullanılır. Bu örnekte, varsayılan yazıcının adı ve açıklaması konsola kaydedilir. Bu, yazdırma örneğinin basitleştirilmiş bir sürümüdür.

​​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() yöntemi için üç şey gerekir.

  • Yazıcının hangi özelliklerinin kullanılacağını belirten ticket yapısı. Kullanıcının mevcut özellikler arasından seçim yapması gerekiyorsa bu verileri belirli bir yazıcı için getPrinterInfo() kullanarak alabilirsiniz.
  • Kullanılacak yazıcıyı ve yazdırılacak dosyayı veya tarihi belirten SubmitJobRequest yapısı. Bu yapı, ticket yapısına bir referans içerir.
  • Yazdırılacak dosyanın veya verilerin blob'u.

submitJob() çağrısı yapıldığında, kullanıcıdan yazdırmayı onaylamasının istendiği bir iletişim kutusu tetiklenir. Onayı atlamak için PrintingAPIExtensionsAllowlist öğesini kullanın.

Bu, yazdırma örneğinin basitleştirilmiş bir sürümüdür. ticket öğesinin SubmitJobRequest yapısına (8. satır) ekli olduğuna ve yazdırılacak verilerin bloba (10. satır) dönüştürüldüğüne dikkat edin. Yazıcının kimliğini (1. satır) öğrenmek örnekte burada gösterilenden daha karmaşıktır.

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);
  }
});

Rulo baskı

Bu örnekte, genellikle makbuz yazdırmayla kullanılan sürekli (veya rulo) yazdırma için bir yazıcı biletinin nasıl oluşturulacağı gösterilmektedir. Rulo yazdırma için submitJobRequest nesnesi, submitJob() örneğinde gösterilenle aynıdır.

Kağıt kesme için varsayılan değeri değiştirmeniz gerekiyorsa vendor_ticket_item tuşunu kullanın. (Varsayılan ayar yazıcıdan yazıcıya değişir.) Eklendiğinde bu anahtarın tek üyeli bir dizi olması gerekir: id değeri 'finishings' olan bir nesne. Değer, yazdırma işleminin sonunda ruloyu kesen yazıcılar için 'trim' veya yazdırma işinin yırtılması gereken yazıcılar için 'none' olabilir.

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}
  }
};

Bazı yazıcılar "finishings" seçeneğini desteklemez. Yazıcınızın uyumlu olup olmadığını belirlemek için getPrinterInfo() numaralı telefonu arayın ve "display_name"/"finishings/11" olup olmadığına bakın.

"vendor_capability": [
  {
    "display_name": "finishings/11",
    "id": "finishings/11",
    "type": "TYPED_VALUE",
    "typed_value_cap": {
      "value_type": "BOOLEAN"
    }
  },
  ...
]

Biletin media_size anahtarındaki değerler her yazıcıya özeldir. Uygun boyutta bir çağrı seçmek için getPrinterInfo() çağrısı yapın. Döndürülen GetPrinterResponse, "media_size"."option" konumunda desteklenen medya boyutları dizisi içerir. "is_continuous_feed" değeri doğru olan bir seçenek belirleyin. Bilet için yükseklik ve genişlik değerlerini kullanın.

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

Türler

GetPrinterInfoResponse

Özellikler

  • capabilities

    nesne isteğe bağlı

    CDD biçiminde yazıcı özellikleri. Özellik eksik olabilir.

  • Yazıcının durumu.

JobStatus

Yazdırma işinin durumu.

Enum

"BEKLEMEDE"
Yazdırma işi Chrome tarafında alındı ancak henüz işlenmedi.

"IN_PROGRESS"
Yazdırma işi yazdırılmak üzere gönderildi.

"BAŞARISIZ"
Yazdırma işi bir hata nedeniyle kesintiye uğradı.

"İPTAL EDİLDİ"
Yazdırma işi kullanıcı tarafından veya API aracılığıyla iptal edildi.

"YAZDIRILDI"
Yazdırma işi hata olmadan yazdırıldı.

Printer

Özellikler

  • açıklama

    dize

    Yazıcının kullanıcılar tarafından okunabilen açıklaması.

  • id

    dize

    Yazıcının tanımlayıcısı; cihazdaki yazıcılar arasında benzersiz olacağı garanti edilir.

  • isDefault

    boolean

    Yazıcının DefaultPrinterSelection kurallarına uyup uymadığını gösteren işaret. Birden fazla yazıcının işaretlenebileceğini unutmayın.

  • ad

    dize

    Yazıcının adı.

  • recentlyUsedRank

    sayı isteğe bağlı

    Yazıcının Chrome'dan yazdırma için ne kadar süre önce kullanıldığını gösteren değer. Değer ne kadar düşük olursa yazıcı o kadar yakın zamanda kullanılmıştır. Minimum değer 0'dır. Eksik değer, yazıcının yakın zamanda kullanılmadığını gösterir. Bu değerin yazıcılar arasında benzersiz olacağı garanti edilir.

  • source

    Yazıcının kaynağı (kullanıcı veya politika yapılandırılmış).

  • Uri

    dize

    Yazıcı URI'si. Uzantılar, kullanıcının yazıcısını seçmek için kullanılabilir.

PrinterSource

Yazıcının kaynağı.

Enum

"USER"
Yazıcı, kullanıcı tarafından eklendi.

"POLICY"
Yazıcı, politika aracılığıyla eklendi.

PrinterStatus

Yazıcının durumu.

Enum

"DOOR_OPEN"
Yazıcının kapağı açık. Yazıcı hâlâ yazdırma işlerini kabul ediyor.

"TRAY_MISSING"
Yazıcının tepsisi yok. Yazıcı hâlâ yazdırma işlerini kabul ediyor.

"OUT_OF_INK"
Yazıcının mürekkebi bitti. Yazıcı hâlâ yazdırma işlerini kabul ediyor.

"OUT_OF_PAPER"
Yazıcının kağıdı bitti. Yazıcı hâlâ yazdırma işlerini kabul ediyor.

"OUTPUT_FULL"
Yazıcının çıkış alanı (ör. tepsi) dolu. Yazıcı hâlâ yazdırma işlerini kabul ediyor.

"PAPER_JAM"
Yazıcıda kağıt sıkışması var. Yazıcı hâlâ yazdırma işlerini kabul ediyor.

"GENERIC_ISSUE"
Genel bir sorun. Yazıcı hâlâ yazdırma işlerini kabul ediyor.

"DURDURULDU"
Yazıcı durduruldu ve yazdırma yapmıyor ancak yazdırma işlerini kabul ediyor.

"UNREACHABLE"
Yazıcıya erişilemiyor ve yazdırma işlerini kabul etmiyor.

"EXPIRED_CERTIFICATE"
SSL sertifikasının süresi dolmuş. Yazıcı işleri kabul eder ancak başarısız olur.

"AVAILABLE"
Yazıcı kullanılabilir.

SubmitJobRequest

Özellikler

  • Gönderilecek yazdırma işi. Desteklenen tek içerik türü "application/pdf"dir. Cloud Job Ticket; yerel yazdırmayla alakasız olduğundan FitToPageTicketItem, PageRangeTicketItem, ReverseOrderTicketItem ve VendorTicketItem alanlarını içermemelidir. Diğer tüm alanlar mevcut olmalıdır.

SubmitJobResponse

Özellikler

  • jobId

    dize isteğe bağlı

    Oluşturulan yazdırma işinin kimliği. Bu, cihazdaki tüm yazdırma işleri arasında benzersiz bir tanımlayıcıdır. Durum doğru değilse businessId null olur.

  • İsteğin durumu.

SubmitJobStatus

submitJob isteğinin durumu.

Enum

"Tamam"
Gönderilen yazdırma işi isteği kabul edildi.

"USER_REJECTED"
Gönderilen yazdırma işi isteği kullanıcı tarafından reddedildi.

Özellikler

MAX_GET_PRINTER_INFO_CALLS_PER_MINUTE

Bir dakikada getPrinterInfo için maksimum çağrı sayısı.

Değer

20

MAX_SUBMIT_JOB_CALLS_PER_MINUTE

Bir dakikada submitJob için maksimum çağrı sayısı.

Değer

40

Yöntemler

cancelJob()

Söz 'nı inceleyin.
chrome.printing.cancelJob(
  jobId: string,
  callback?: function,
)

Daha önce gönderilen işi iptal eder.

Parametreler

  • jobId

    dize

    İptal edilecek yazdırma işinin kimliği. Bu, SubmitJobResponse içinde alınan kimlikle aynı olmalıdır.

  • geri çağırma

    işlev isteğe bağlı

    callback parametresi şu şekilde görünür:

    () => void

İadeler

  • Taahhüt<void>

    Chrome 100 ve sonraki sürümler 'nı inceleyin.

    Vaatler yalnızca Manifest V3 ve sonraki sürümler için desteklenir. Diğer platformların geri çağırma yapması gerekir.

getPrinterInfo()

Söz 'nı inceleyin.
chrome.printing.getPrinterInfo(
  printerId: string,
  callback?: function,
)

Yazıcının durumunu ve özelliklerini CDD biçiminde döndürür. Belirtilen kimliğe sahip herhangi bir yazıcı yüklenmezse bu çağrı, çalışma zamanı hatası vererek başarısız olur.

Parametreler

İadeler

  • Promise&lt;GetPrinterInfoResponse&gt;

    Chrome 100 ve sonraki sürümler 'nı inceleyin.

    Vaatler yalnızca Manifest V3 ve sonraki sürümler için desteklenir. Diğer platformların geri çağırma yapması gerekir.

getPrinters()

Söz 'nı inceleyin.
chrome.printing.getPrinters(
  callback?: function,
)

Cihazdaki kullanılabilir yazıcıların listesini döndürür. Buna manuel olarak eklenen, kurumsal ve keşfedilen yazıcılar dahildir.

Parametreler

  • geri çağırma

    işlev isteğe bağlı

    callback parametresi şu şekilde görünür:

    (printers: Printer[]) => void

İadeler

  • Promise<Yazıcı[]>

    Chrome 100 ve sonraki sürümler 'nı inceleyin.

    Vaatler yalnızca Manifest V3 ve sonraki sürümler için desteklenir. Diğer platformların geri çağırma yapması gerekir.

submitJob()

Söz 'nı inceleyin.
chrome.printing.submitJob(
  request: SubmitJobRequest,
  callback?: function,
)

İşi yazdırılması için gönderir. Uzantı, PrintingAPIExtensionsAllowlist politikasında listelenmiyorsa kullanıcıdan yazdırma işini kabul etmesi istenir. Chrome 120 sürümünden önce bu işlev vaat döndürmüyordu.

Parametreler

İadeler

  • Promise&lt;SubmitJobResponse&gt;

    Chrome 100 ve sonraki sürümler 'nı inceleyin.

    Vaatler yalnızca Manifest V3 ve sonraki sürümler için desteklenir. Diğer platformların geri çağırma yapması gerekir.

Etkinlikler

onJobStatusChanged

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

İşin durumu değiştirildiğinde etkinlik tetiklenir. Bu, yalnızca bu uzantı tarafından oluşturulan işler için tetiklenir.

Parametreler

  • geri çağırma

    işlev

    callback parametresi şu şekilde görünür:

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