Beschrijving
Gebruik de chrome.printing
API om afdruktaken te versturen naar printers die op uw Chromebook zijn geïnstalleerd.
Machtigingen
printing
Beschikbaarheid
Manifest
Voor alle methoden en gebeurtenissen chrome.printing
moet u de machtiging "printing"
in het extensiemanifest declareren. Bijvoorbeeld:
{
"name": "My extension",
...
"permissions": [
"printing"
],
...
}
Voorbeelden
De onderstaande voorbeelden demonstreren het gebruik van elk van de methoden in de printing-naamruimte. Deze code is gekopieerd van of gebaseerd op api-samples/printing in de extensions-samples GitHub-repo.
annuleerJob()
In dit voorbeeld wordt de onJobStatusChanged
handler gebruikt om een 'annuleren'-knop te verbergen wanneer de jobStatus
niet PENDING
of IN_PROGRESS
is. Houd er rekening mee dat deze statussen in sommige netwerken of wanneer een Chromebook rechtstreeks op de printer is aangesloten, te snel kunnen worden doorgegeven om de knop 'Annuleren' lang genoeg zichtbaar te houden om te kunnen worden aangeroepen. Dit is een sterk vereenvoudigd afdrukvoorbeeld.
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() en getPrinterInfo()
Er wordt één voorbeeld gebruikt voor deze functies, omdat het ophalen van printerinformatie een printer-ID vereist, die wordt opgehaald door getPrinters()
aan te roepen. Dit voorbeeld registreert de naam en beschrijving van de standaardprinter in de console. Dit is een vereenvoudigde versie van het afdrukvoorbeeld.
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()
De submitJob()
-methode vereist drie dingen.
- Een
ticket
die aangeeft welke mogelijkheden van de printer gebruikt moeten worden. Als de gebruiker een keuze moet maken uit de beschikbare mogelijkheden, kunt u deze voor een specifieke printer ophalen met behulp vangetPrinterInfo()
. - Een
SubmitJobRequest
-structuur, die de te gebruiken printer en het af te drukken bestand of de af te drukken datum specificeert. Deze structuur bevat een verwijzing naar deticket
. - Een blob van het bestand of de gegevens die afgedrukt moeten worden.
Door submitJob()
aan te roepen, wordt een dialoogvenster geopend waarin de gebruiker wordt gevraagd het afdrukken te bevestigen. Gebruik de PrintingAPIExtensionsAllowlist
om bevestiging te omzeilen.
Dit is een vereenvoudigde versie van het afdrukvoorbeeld. Merk op dat het ticket
is gekoppeld aan de SubmitJobRequest
-structuur (regel 8) en dat de af te drukken gegevens worden omgezet naar een blob (regel 10). Het verkrijgen van de ID van de printer (regel 1) is in het voorbeeld ingewikkelder dan hier wordt getoond.
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);
}
});
Rolprinten
Dit voorbeeld laat zien hoe u een printerticket maakt voor continu (of rol) printen, wat vaak wordt gebruikt bij het printen van bonnen. Het submitJobRequest
object voor rolprinten is hetzelfde als dat in het submitJob()
-voorbeeld.
Als u de standaardwaarde voor het snijden van papier wilt wijzigen, gebruikt u de sleutel vendor_ticket_item
. (De standaardwaarde varieert per printer.) Indien opgenomen, moet deze sleutel een array met één lid zijn: een object met id
'finishings'
. De waarde kan 'trim'
zijn voor printers die de rol aan het einde van de afdruktaak afsnijden, of 'none'
voor printers die vereisen dat de afdruktaak wordt afgescheurd.
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}
}
};
Sommige printers ondersteunen de optie "finishings"
niet. Om te bepalen of uw printer dit wel doet, roept u getPrinterInfo()
aan en zoekt u naar een "display_name"
van "finishings/11"
.
"vendor_capability": [
{
"display_name": "finishings/11",
"id": "finishings/11",
"type": "TYPED_VALUE",
"typed_value_cap": {
"value_type": "BOOLEAN"
}
},
...
]
De waarden in de media_size
-sleutel van een ticket zijn specifiek voor elke printer. Om een geschikte grootte te selecteren, roept u getPrinterInfo()
aan. De geretourneerde GetPrinterResponse
bevat een array met ondersteunde mediaformaten bij "media_size"."option"
. Kies een optie waarvan de waarde "is_continuous_feed"
true is. Gebruik de hoogte- en breedtewaarden voor het ticket.
"media_size": {
"option": [
{
"custom_display_name": "",
"is_continuous_feed": true,
"max_height_microns": 2000000,
"min_height_microns": 25400,
"width_microns": 50800
},
...
]
}
Typen
GetPrinterInfoResponse
Eigenschappen
- mogelijkheden
object optioneel
Printermogelijkheden in CDD-formaat . Deze eigenschap ontbreekt mogelijk.
- status
De status van de printer.
JobStatus
Status van de afdruktaak.
Enum
"IN BEHANDELING" "IN_UITVOERING" "MISLUKT" "GEANNULEERD" "GEDRUKT"
De afdruktaak is ontvangen op Chrome, maar nog niet verwerkt.
De afdruktaak is verzonden om te worden afgedrukt.
De afdruktaak is onderbroken vanwege een fout.
De afdruktaak is geannuleerd door de gebruiker of via de API.
De afdruktaak is zonder fouten uitgevoerd.
Printer
Eigenschappen
- beschrijving
snaar
De voor mensen leesbare beschrijving van de printer.
- id
snaar
De identificatie van de printer; gegarandeerd uniek voor alle printers op het apparaat.
- isStandaard
Booleaanse
De vlag die aangeeft of de printer voldoet aan de DefaultPrinterSelection -regels. Houd er rekening mee dat meerdere printers gemarkeerd kunnen zijn.
- naam
snaar
De naam van de printer.
- recentgebruikte rang
nummer optioneel
De waarde die aangeeft hoe recent de printer is gebruikt voor afdrukken vanuit Chrome. Hoe lager de waarde, hoe recenter de printer is gebruikt. De minimumwaarde is 0. Een ontbrekende waarde geeft aan dat de printer niet recent is gebruikt. Deze waarde is gegarandeerd uniek voor alle printers.
- bron
De bron van de printer (geconfigureerd door gebruiker of beleid).
- uri
snaar
De printer-URI. Deze kan door extensies worden gebruikt om de printer voor de gebruiker te kiezen.
PrinterSource
De bron van de printer.
Enum
"GEBRUIKER" "BELEID"
Printer is toegevoegd door gebruiker.
Printer is toegevoegd via beleid.
PrinterStatus
De status van de printer.
Enum
"DEUR_OPEN" "LADE_ONTBREEKT" "GEEN_INK" "GEEN_PAPIER" "UITGANG_VOL" "PAPIERVAST" "GENERIEK_PROBLEEM" "GESTOPT" "ONBEREIKBAAR" "VERLOPEN_CERTIFICAAT" "BESCHIKBAAR"
De printerklep staat open. De printer accepteert nog steeds afdruktaken.
De lade van de printer ontbreekt. De printer accepteert nog wel afdruktaken.
De printer is uit inkt. Printer accepteert nog steeds afdruktaken.
Het papier in de printer is op. De printer accepteert nog wel afdruktaken.
Het uitvoergebied van de printer (bijv. de lade) is vol. De printer accepteert nog steeds afdruktaken.
Er is een papierstoring in de printer. De printer accepteert nog wel afdruktaken.
Er is een algemeen probleem. De printer accepteert nog steeds afdruktaken.
De printer is gestopt en drukt niet af, maar accepteert nog wel afdruktaken.
De printer is onbereikbaar en accepteert geen afdruktaken.
Het SSL-certificaat is verlopen. De printer accepteert taken, maar deze mislukken.
De printer is beschikbaar.
SubmitJobRequest
Eigenschappen
- functie
De afdruktaak die moet worden ingediend. Ondersteunde inhoudstypen zijn "application/pdf" en "image/png". Het Cloud Job Ticket mag de velden
FitToPageTicketItem
,PageRangeTicketItem
enReverseOrderTicketItem
niet bevatten, omdat deze niet relevant zijn voor native printing.VendorTicketItem
is optioneel. Alle andere velden moeten aanwezig zijn.
SubmitJobResponse
Eigenschappen
- taak-ID
string optioneel
De id van de aangemaakte afdruktaak. Dit is een unieke identificatie voor alle afdruktaken op het apparaat. Als de status niet OK is, is de taak-ID nul.
- status
De status van het verzoek.
SubmitJobStatus
De status van submitJob
verzoek.
Enum
"OK" "GEBRUIKER_AFGEWEZEN"
Het verzonden afdrukopdrachtverzoek is geaccepteerd.
Het verzonden afdruktaakverzoek is door de gebruiker afgewezen.
Eigenschappen
MAX_GET_PRINTER_INFO_CALLS_PER_MINUTE
Het maximale aantal keren dat getPrinterInfo
per minuut kan worden aangeroepen.
Waarde
20
MAX_SUBMIT_JOB_CALLS_PER_MINUTE
Het maximale aantal keren dat submitJob
per minuut kan worden aangeroepen.
Waarde
40
Methoden
cancelJob()
chrome.printing.cancelJob(
jobId: string,
callback?: function,
): Promise<void>
Annuleert een eerder ingediende taak.
Parameters
- taak-ID
snaar
De id van de te annuleren afdruktaak. Dit moet dezelfde id zijn als die is ontvangen in een
SubmitJobResponse
. - terugbellen
functie optioneel
De
callback
ziet er als volgt uit:() => void
Retourneren
Belofte<leegte>
Chroom 100+Promises worden alleen ondersteund voor Manifest V3 en hoger. Andere platforms moeten callbacks gebruiken.
getJobStatus()
chrome.printing.getJobStatus(
jobId: string,
callback?: function,
): Promise<JobStatus>
Retourneert de status van de afdruktaak. Deze aanroep mislukt met een runtime-fout als de afdruktaak met de opgegeven jobId
niet bestaat. jobId
: De id van de afdruktaak waarvan de status moet worden geretourneerd. Dit moet dezelfde id zijn die is ontvangen in een SubmitJobResponse
.
Parameters
- taak-ID
snaar
- terugbellen
functie optioneel
De
callback
ziet er als volgt uit:(status: JobStatus) => void
- status
Retourneren
Belofte< JobStatus >
Promises worden alleen ondersteund voor Manifest V3 en hoger. Andere platforms moeten callbacks gebruiken.
getPrinterInfo()
chrome.printing.getPrinterInfo(
printerId: string,
callback?: function,
): Promise<GetPrinterInfoResponse>
Retourneert de status en mogelijkheden van de printer in CDD-formaat . Deze aanroep mislukt met een runtime-fout als er geen printers met de opgegeven id zijn geïnstalleerd.
Parameters
- printer-ID
snaar
- terugbellen
functie optioneel
De
callback
ziet er als volgt uit:(response: GetPrinterInfoResponse) => void
- antwoord
Retourneren
Belofte< GetPrinterInfoResponse >
Chroom 100+Promises worden alleen ondersteund voor Manifest V3 en hoger. Andere platforms moeten callbacks gebruiken.
getPrinters()
chrome.printing.getPrinters(
callback?: function,
): Promise<Printer[]>
Retourneert de lijst met beschikbare printers op het apparaat. Dit omvat handmatig toegevoegde, enterprise- en gedetecteerde printers.
Parameters
Retourneren
Belofte< Printer []>
Chroom 100+Promises worden alleen ondersteund voor Manifest V3 en hoger. Andere platforms moeten callbacks gebruiken.
submitJob()
chrome.printing.submitJob(
request: SubmitJobRequest,
callback?: function,
): Promise<SubmitJobResponse>
Verzendt de taak voor afdrukken. Als de extensie niet voorkomt in het beleid PrintingAPIExtensionsAllowlist
, wordt de gebruiker gevraagd de afdruktaak te accepteren. Vóór Chrome 120 leverde deze functie geen belofte op.
Parameters
- verzoek
- terugbellen
functie optioneel
De
callback
ziet er als volgt uit:(response: SubmitJobResponse) => void
- antwoord
Retourneren
Belofte< SubmitJobResponse >
Chroom 100+Promises worden alleen ondersteund voor Manifest V3 en hoger. Andere platforms moeten callbacks gebruiken.
Evenementen
onJobStatusChanged
chrome.printing.onJobStatusChanged.addListener(
callback: function,
)
Gebeurtenis die wordt geactiveerd wanneer de status van de taak wordt gewijzigd. Dit gebeurt alleen voor taken die door deze extensie zijn aangemaakt.