Açıklama
Chromebook'a yüklü yazıcılara yazdırma işleri göndermek için chrome.printing
API'yi kullanın.
İzinler
printing
Kullanılabilirlik
Tüm chrome.printing
yöntemleri ve etkinlikleri için uzantı manifestinde "printing"
iznini belirtmeniz gerekir. Örneğin:
{
"name": "My extension",
...
"permissions": [
"printing"
],
...
}
Örnekler
Aşağıdaki örneklerde, baskı ad alanındaki yöntemlerin her birinin kullanımı gösterilmektedir. Bu kod, extensions-samples GitHub deposundaki api-samples/printing dosyasından kopyalanmıştır veya bu dosyaya dayanır.
cancelJob()
Bu örnekte, jobStatus
PENDING
veya IN_PROGRESS
olmadığında "iptal" düğmesini gizlemek için onJobStatusChanged
işleyicisi kullanılmaktadır. Bazı ağlarda veya Chromebook doğrudan yazıcıya bağlıyken bu durumların, iptal düğmesinin çağrılacak kadar uzun süre görünmesi için çok hızlı geçebileceğini unutmayın. Bu, çok basitleştirilmiş bir baskı ö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ı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, baskı örneğinin basitleştirilmiş bir versiyonudur.
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 gereklidir.
- Yazıcının hangi özelliklerinin kullanılacağını belirten bir
ticket
yapısı. Kullanıcının mevcut özellikler arasından seçim yapması gerekiyorsagetPrinterInfo()
kullanarak belirli bir yazıcı için bu özellikleri alabilirsiniz. - Kullanılacak yazıcıyı ve yazdırılacak dosyayı ya da tarihi belirten bir
SubmitJobRequest
yapısı. Bu yapı,ticket
yapısına referans içerir. - Yazdırılmaya hazır dosya veya verilerin bir blob'u.
submitJob()
çağrısı, kullanıcıdan baskıyı onaylamasını isteyen bir iletişim kutusu tetikler. Onaylama işlemini atlamak için PrintingAPIExtensionsAllowlist
simgesini kullanın.
Bu, baskı örneğinin basitleştirilmiş bir versiyonudur. ticket
öğesinin SubmitJobRequest
yapısına (8. satır) eklendiğini ve yazdırılacak verilerin bir blob'a dönüştürüldüğünü (10. satır) unutmayın. Yazıcının kimliğini (1. satır) almak ö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 baskısında kullanılan sürekli (veya rulo) baskı için yazıcı biletinin nasıl oluşturulacağı gösterilmektedir. Rulo baskı 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.) Değeri değiştirmek için tek üyeli bir dizi sağlayın: id
değeri 'finishings'
olan bir nesne. Değer, yazdırmanın sonunda ruloyu kesen yazıcılar için 'trim'
veya yazdırma işinin yırtılmasını gerektiren 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 bu özelliği destekleyip desteklemediğini öğrenmek için getPrinterInfo()
numaralı telefonu arayın ve "display_name"
"finishings/11"
arayın.
"vendor_capability": [
{
"display_name": "finishings/11",
"id": "finishings/11",
"type": "TYPED_VALUE",
"typed_value_cap": {
"value_type": "BOOLEAN"
}
},
...
]
Bir biletin media_size
anahtarındaki değerler her yazıcıya özgüdür. Uygun bir boyut seçmek için getPrinterInfo()
düğmesine basın. Döndürülen GetPrinterResponse
, "media_size"."option"
adresinde desteklenen medya boyutlarının bir dizisini 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. Mülk eksik olabilir.
-
durum
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önderilir.
"FAILED"
Baskı 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.
"PRINTED"
Yazdırma işi hatasız bir şekilde basılmıştır.
Printer
Özellikler
-
açıklama
dize
Yazıcının, kullanıcılar tarafından okunabilir açıklaması.
-
id
dize
Yazıcının tanımlayıcısıdır. Cihazdaki yazıcılar arasında benzersiz olması garanti edilir.
-
isDefault
boolean
Yazıcının DefaultPrinterSelection kurallarına uyup uymadığını gösteren işaret. Birkaç yazıcının işaretlenebileceğini unutmayın.
-
ad
dize
Yazıcının adı.
-
recentlyUsedRank
number isteğe bağlı
Yazıcının Chrome'dan baskı yapmak için ne kadar süre önce kullanıldığını gösteren değer. Değer ne kadar düşükse 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 olduğu garanti edilir.
-
source
Yazıcının kaynağı (kullanıcı veya politika yapılandırılmış).
-
uri
dize
Yazıcı URI'si. Bu, kullanıcı için yazıcıyı seçmek üzere uzantılar tarafından kullanılabilir.
PrinterSource
Yazıcının kaynağı.
Enum
"USER"
Yazıcı kullanıcı tarafından eklendi.
"POLICY"
Yazıcı, politika üzerinden eklendi.
PrinterStatus
Yazıcının durumu.
Enum
"DOOR_OPEN"
Yazıcının kapağı açık. Yazıcı, yazdırma işlerini kabul etmeye devam ediyor.
"TRAY_MISSING"
Yazıcının tepsisi eksik. Yazıcı, yazdırma işlerini kabul etmeye devam ediyor.
"OUT_OF_INK"
Yazıcının mürekkebi bitti. Yazıcı, yazdırma işlerini kabul etmeye devam ediyor.
"OUT_OF_PAPER"
Yazıcının kağıdı bitti. Yazıcı, yazdırma işlerini kabul etmeye devam ediyor.
"OUTPUT_FULL"
Yazıcının çıkış alanı (ör. tepsi) dolu. Yazıcı, yazdırma işlerini kabul etmeye devam ediyor.
"PAPER_JAM"
Yazıcıda kağıt sıkışması var. Yazıcı, yazdırma işlerini kabul etmeye devam ediyor.
"GENERIC_ISSUE"
Genel bir sorun. Yazıcı, yazdırma işlerini kabul etmeye devam ediyor.
"DURDURULDU"
Yazıcı durmuş ve yazdırmıyor ancak yazdırma işlerini kabul etmeye devam ediyor.
"UNREACHABLE"
Yazıcıya ulaşılamıyor ve yazdırma işleri kabul edilmiyor.
"EXPIRED_CERTIFICATE"
SSL sertifikasının süresi doldu. Yazıcı işleri kabul ediyor ancak işler başarısız oluyor.
"AVAILABLE"
Yazıcı kullanılabilir.
SubmitJobRequest
Özellikler
-
iş
Gönderilecek baskı işi. Yalnızca "application/pdf" içerik türü desteklenir ve Cloud İş Bileti, yerel baskıyla alakasız oldukları için
FitToPageTicketItem
,PageRangeTicketItem
,ReverseOrderTicketItem
veVendorTicketItem
alanlarını içermemelidir. Diğer tüm alanlar mevcut olmalıdır.
SubmitJobResponse
Özellikler
-
jobId
dize isteğe bağlı
Oluşturulan baskı işinin kimliği. Bu, cihazdaki tüm baskı işleri arasında benzersiz bir tanımlayıcıdır. Durum OK değilse jobId null olur.
-
durum
İ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
getPrinterInfo
işlevinin bir dakikada çağrılabileceği maksimum sayı.
Değer
20
MAX_SUBMIT_JOB_CALLS_PER_MINUTE
submitJob
işlevinin dakikada çağrılabileceği maksimum sayı.
Değer
40
Yöntemler
cancelJob()
chrome.printing.cancelJob(
jobId: string,
callback?: function,
)
Daha önce gönderilen işi iptal eder.
Parametreler
-
jobId
dize
İptal edilecek baskı 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
-
Promise<void>
Chrome 100+Sözler Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.
getJobStatus()
chrome.printing.getJobStatus(
jobId: string,
callback?: function,
)
Yazdırma işinin durumunu döndürür. Verilen jobId
ile yazdırma işi mevcut değilse bu çağrı, çalışma zamanında hata vererek başarısız olur. jobId
: Durumunu döndürmek istediğiniz baskı işinin kimliği. Bu, SubmitJobResponse
içinde alınan kimlikle aynı olmalıdır.
Parametreler
-
jobId
dize
-
geri çağırma
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:(status: JobStatus) => void
-
durum
-
İadeler
-
Promise<JobStatus>
Sözler Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.
getPrinterInfo()
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 yazıcı yüklü değilse bu çağrı, çalışma zamanında hata vererek başarısız olur.
Parametreler
-
printerId
dize
-
geri çağırma
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:(response: GetPrinterInfoResponse) => void
-
gönderin
-
İadeler
-
Promise<GetPrinterInfoResponse>
Chrome 100+Sözler Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.
getPrinters()
chrome.printing.getPrinters(
callback?: function,
)
Cihazda bulunan yazıcıların listesini döndürür. Manuel olarak eklenen, kurumsal ve keşfedilen yazıcılar bu kapsamdadır.
Parametreler
İadeler
-
Promise<Printer[]>
Chrome 100+Sözler Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.
submitJob()
chrome.printing.submitJob(
request: SubmitJobRequest,
callback?: function,
)
İşi yazdırılmak üzere gönderir. Uzantı, PrintingAPIExtensionsAllowlist
politikasında listelenmemişse kullanıcıdan yazdırma işini kabul etmesi istenir.
Chrome 120'den önce bu işlev bir promise döndürmezdi.
Parametreler
-
istek
-
geri çağırma
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:(response: SubmitJobResponse) => void
-
gönderin
-
İadeler
-
Promise<SubmitJobResponse>
Chrome 100+Sözler Manifest V3 ve sonraki sürümlerde desteklenir ancak geriye dönük uyumluluk için geri çağırma işlevleri sağlanır. Aynı işlev çağrısında ikisini birden kullanamazsınız. Sözleşme, geri çağırma işlevine iletilen türle çözülür.
Etkinlikler
onJobStatusChanged
chrome.printing.onJobStatusChanged.addListener(
callback: function,
)
İşin durumu değiştiğinde etkinleştirilir. Bu yalnızca bu uzantı tarafından oluşturulan işler için tetiklenir.