Açıklama
Chromebook'a yüklenen yazıcılara yazdırma işleri göndermek için chrome.printing
API'sini kullanın.
İzinler
printing
Kullanılabilirlik
Manifest
Tüm chrome.printing
yöntemleri ve etkinlikleri için "printing"
iznini uzantı manifestinde belirtmeniz gerekir. Örneğin:
{
"name": "My extension",
...
"permissions": [
"printing"
],
...
}
Örnekler
Aşağıdaki örneklerde, yazdırma ad alanındaki yöntemlerin her birinin kullanımı gösterilmektedir. Bu kod, extensions-samples GitHub deposundaki api-samples/printing'den kopyalanmıştır veya bu koda dayanmaktadı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ğlandığında bu durumların, iptal düğmesinin çağrılacak kadar uzun süre görünür kalmasını engelleyecek şekilde çok hızlı geçebileceğini unutmayın. Bu, büyük ölçüde 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ı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 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 gerekir.
- 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ı veya tarihi belirten bir
SubmitJobRequest
yapısı. Bu yapı,ticket
yapısına referans içerir. - Yazdırılacak dosya veya verilerin blob'u.
submitJob()
işlevi çağrıldığında, kullanıcıdan yazdırmayı onaylamasını isteyen bir iletişim kutusu açılır. Onayı atlamak için PrintingAPIExtensionsAllowlist
simgesini kullanın.
Bu, yazdırma örneğinin basitleştirilmiş bir versiyonudur. ticket
öğesinin SubmitJobRequest
yapısına (8. satır) eklendiğini ve yazdırılacak verilerin blob'a dönüştürüldüğünü (10. satır) unutmayın. Yazıcının kimliğini alma (1. satır) ö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ırma işleminde kullanılan sürekli (veya rulo) yazdırma için yazıcı bileti oluşturma işlemi 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 değer yazıcıdan yazıcıya değişir.) Bu anahtar dahil edildiğinde tek bir üyeye sahip bir dizi olmalıdır: id
değeri 'finishings'
olan bir nesne. Değer, yazdırma sonunda rulo kağıdı kesen yazıcılar için 'trim'
, yazdırma işinin yırtılmasını gerektiren yazıcılar için ise '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 "finishings/11"
"display_name"
simgesini bulun.
"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 özeldir. Uygun bir boyut seçmek için getPrinterInfo()
işlevini çağırın. Döndürülen GetPrinterResponse
, "media_size"."option"
konumunda 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üksekliğini ve genişliğini 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
object isteğe bağlı
CDD biçiminde yazıcı özellikleri. Özellik eksik olabilir.
-
durum
Yazıcının durumu.
JobStatus
Yazdırma işinin durumu.
Enum
"BEKLEMEDE"
Yazdırma işi Chrome tarafında alınmış ancak henüz işlenmemiştir.
"IN_PROGRESS"
Yazdırma işi, yazdırma için gönderilir.
"BAŞARISIZ"
Yazdırma işi bir hata nedeniyle kesildi.
"İPTAL EDİLDİ"
Yazdırma işi kullanıcı tarafından veya API aracılığıyla iptal edildi.
"YAZDIRILDI"
Yazdırma işi hatasız olarak yazdırıldı.
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ı. Cihazdaki yazıcılar arasında benzersiz olduğu garanti edilir.
-
isDefault
boolean
Yazıcının DefaultPrinterSelection kurallarına uygun olup olmadığını gösteren işaret. Birden fazla 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 yazdırma 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. Değerin eksik olması, 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.
-
kaynak
Yazıcının kaynağı (kullanıcı veya politika yapılandırılmış).
-
uri
dize
Yazıcı URI'si. Bu, uzantılar tarafından kullanıcı için yazıcıyı seçmek üzere 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ı, yazdırma işlerini kabul etmeye devam eder.
"TRAY_MISSING"
Yazıcının tepsisi eksik. Yazıcı, yazdırma işlerini kabul etmeye devam eder.
"OUT_OF_INK"
Yazıcının mürekkebi bitmiştir. Yazıcı, yazdırma işlerini kabul etmeye devam eder.
"OUT_OF_PAPER"
Yazıcıda kağıt bitti. Yazıcı, yazdırma işlerini kabul etmeye devam eder.
"OUTPUT_FULL"
Yazıcının çıkış alanı (ör. tepsi) dolu. Yazıcı, yazdırma işlerini kabul etmeye devam eder.
"PAPER_JAM"
Yazıcıda kağıt sıkışması var. Yazıcı, yazdırma işlerini kabul etmeye devam eder.
"GENERIC_ISSUE"
Bazı genel sorunlar. Yazıcı, yazdırma işlerini kabul etmeye devam eder.
"DURDURULDU"
Yazıcı durduruldu ve yazdırmıyor ancak yazdırma işlerini kabul etmeye devam ediyor.
"ULAŞILAMIYOR"
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.
"KULLANILABİLİR"
Yazıcı kullanılabilir.
SubmitJobRequest
Özellikler
-
iş
Gönderilecek yazdırma işi. Desteklenen içerik türleri "application/pdf" ve "image/png"dir. Cloud Job Ticket, yerel yazdırma için alakasız olduklarından
FitToPageTicketItem
,PageRangeTicketItem
veReverseOrderTicketItem
alanlarını içermemelidir.VendorTicketItem
isteğe bağlıdır. 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 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 bir dakikada çağrılabileceği maksimum sayı.
Değer
40
Yöntemler
cancelJob()
chrome.printing.cancelJob(
jobId: string,
callback?: function,
): Promise<void>
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. -
callback
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:() => void
İadeler
-
Promise<void>
Chrome 100 veya daha yeni bir sürümPromises yalnızca Manifest V3 ve sonraki sürümlerde desteklenir. Diğer platformlarda geri çağırmalar kullanılmalıdır.
getJobStatus()
chrome.printing.getJobStatus(
jobId: string,
callback?: function,
): Promise<JobStatus>
Yazdırma işinin durumunu döndürür. Belirtilen jobId
ile yazdırma işi yoksa bu çağrı, çalışma zamanı hatasıyla başarısız olur. jobId
: Durumunu döndürmek için yazdırma işinin kimliği. Bu, SubmitJobResponse
içinde alınan kimlikle aynı olmalıdır.
Parametreler
-
jobId
dize
-
callback
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:(status: JobStatus) => void
-
durum
-
İadeler
-
Promise<JobStatus>
Promises yalnızca Manifest V3 ve sonraki sürümlerde desteklenir. Diğer platformlarda geri çağırmalar kullanılmalıdır.
getPrinterInfo()
chrome.printing.getPrinterInfo(
printerId: string,
callback?: function,
): Promise<GetPrinterInfoResponse>
Yazıcının durumunu ve özelliklerini CDD biçiminde döndürür. Belirtilen kimliğe sahip yazıcılar yüklü değilse bu çağrı, çalışma zamanı hatasıyla başarısız olur.
Parametreler
-
printerId
dize
-
callback
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:(response: GetPrinterInfoResponse) => void
-
gönderin
-
İadeler
-
Promise<GetPrinterInfoResponse>
Chrome 100 veya daha yeni bir sürümPromises yalnızca Manifest V3 ve sonraki sürümlerde desteklenir. Diğer platformlarda geri çağırmalar kullanılmalıdır.
getPrinters()
chrome.printing.getPrinters(
callback?: function,
): Promise<Printer[]>
Cihazdaki kullanılabilir yazıcıların listesini döndürür. Manuel olarak eklenen, kurumsal ve keşfedilen yazıcılar buna dahildir.
Parametreler
İadeler
-
Promise<Printer[]>
Chrome 100 veya daha yeni bir sürümPromises yalnızca Manifest V3 ve sonraki sürümlerde desteklenir. Diğer platformlarda geri çağırmalar kullanılmalıdır.
submitJob()
chrome.printing.submitJob(
request: SubmitJobRequest,
callback?: function,
): Promise<SubmitJobResponse>
İşi yazdırmak için gönderir. Uzantı PrintingAPIExtensionsAllowlist
politikasında listelenmiyorsa kullanıcıdan yazdırma işini kabul etmesi istenir.
Chrome 120'den önce bu işlev bir söz döndürmüyordu.
Parametreler
-
istek
-
callback
işlev isteğe bağlı
callback
parametresi şu şekilde görünür:(response: SubmitJobResponse) => void
-
gönderin
-
İadeler
-
Promise<SubmitJobResponse>
Chrome 100 veya daha yeni bir sürümPromises yalnızca Manifest V3 ve sonraki sürümlerde desteklenir. Diğer platformlarda geri çağırmalar kullanılmalıdır.
Etkinlikler
onJobStatusChanged
chrome.printing.onJobStatusChanged.addListener(
callback: function,
)
İşin durumu değiştirildiğinde tetiklenen etkinlik. Bu yalnızca bu uzantı tarafından oluşturulan işler için tetiklenir.