Beschrijving
Gebruik de chrome.printing
API om afdruktaken te verzenden naar printers die op Chromebook zijn geïnstalleerd.
Machtigingen
printing
Beschikbaarheid
Voor alle chrome.printing
-methoden en -gebeurtenissen moet u de toestemming voor "printing"
opgeven in het extensiemanifest . Bijvoorbeeld:
{
"name": "My extension",
...
"permissions": [
"printing"
],
...
}
Voorbeelden
De onderstaande voorbeelden demonstreren het gebruik van elk van de methoden in de afdruknaamruimte. Deze code wordt gekopieerd van of gebaseerd op de api-samples/printing in de extensions-samples Github-repository.
annulerenJob()
In dit voorbeeld wordt de handler onJobStatusChanged
gebruikt om een knop 'annuleren' te verbergen wanneer de jobStatus
niet PENDING
of IN_PROGRESS
is. Houd er rekening mee dat deze statussen op sommige netwerken of wanneer een Chromebook rechtstreeks op de printer is aangesloten, te snel kunnen verstrijken, waardoor de knop Annuleren lang genoeg zichtbaar is om te kunnen worden gebeld. 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()
Voor deze functies wordt één voorbeeld gebruikt, omdat voor het verkrijgen van printerinformatie een printer-ID vereist is, die wordt opgehaald door getPrinters()
aan te roepen. In dit voorbeeld worden de naam en beschrijving van de standaardprinter in de console geregistreerd. 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 methode submitJob()
vereist drie dingen.
- Een
ticket
die specificeert welke mogelijkheden van de printer moeten worden gebruikt. 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 specificeert en het bestand of de datum die moet worden afgedrukt. Deze structuur bevat een verwijzing naar deticket
. - Een klodder van het bestand of de gegevens die moeten worden afgedrukt.
Het aanroepen submitJob()
activeert een dialoogvenster waarin de gebruiker wordt gevraagd het afdrukken te bevestigen. Gebruik de PrintingAPIExtensionsAllowlist
om de 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 geconverteerd naar een blob (regel 10). Het verkrijgen van de ID van de printer (regel 1) is in het voorbeeld ingewikkelder dan hier wordt weergegeven.
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);
}
});
Afdrukken op rol
Dit voorbeeld laat zien hoe u een printerticket kunt maken voor continu (of rol) afdrukken, wat vaak wordt gebruikt bij het afdrukken van bonnen. Het submitJobRequest
object voor het afdrukken op rollen is hetzelfde als het object dat wordt weergegeven in het voorbeeld submitJob()
.
Als u de standaardwaarde voor papiersnijden wilt wijzigen, gebruikt u de sleutel vendor_ticket_item
. (De standaard varieert van printer tot printer.) Om de waarde te wijzigen, geeft u een array op met één lid: een object waarvan id
'finishings'
is. De waarde kan 'trim'
zijn voor printers die de rol aan het einde van het afdrukken afsnijden, of 'none'
voor printers waarbij de afdruktaak moet worden 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 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 media_size
sleutel van een ticket zijn specifiek voor elke printer. Om een geschikt formaat te selecteren, roept u getPrinterInfo()
op. De geretourneerde GetPrinterResponse
bevat een reeks ondersteunde mediaformaten op "media_size"."option"
. Kies een optie waarvan de waarde "is_continuous_feed"
waar 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
},
...
]
}
Soorten
GetPrinterInfoResponse
Eigenschappen
- mogelijkheden
object optioneel
Printermogelijkheden in CDD-formaat . Mogelijk ontbreekt het pand.
- status
De status van de printer.
JobStatus
Status van de afdruktaak.
Enum
"IN BEHANDELING" "IN_PROGRESS" "mislukt" "GEANNULEERD" "GEDRUKT"
De afdruktaak is ontvangen aan de Chrome-kant, maar is nog niet verwerkt.
De afdruktaak wordt verzonden om af te drukken.
De afdruktaak is onderbroken vanwege een fout.
Afdruktaak is geannuleerd door de gebruiker of via API.
De afdruktaak is zonder fouten afgedrukt.
Printer
Eigenschappen
- beschrijving
snaar
De voor mensen leesbare beschrijving van de printer.
- Identiteitskaart
snaar
De identificatie van de printer; gegarandeerd uniek onder de printers op het apparaat.
- is standaard
Booleaans
De vlag die aangeeft of de printer voldoet aan de DefaultPrinterSelection- regels. Houd er rekening mee dat er meerdere printers kunnen worden gemarkeerd.
- naam
snaar
De naam van de drukker.
- recentGebruikteRank
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 onlangs niet is gebruikt. Deze waarde is gegarandeerd uniek onder printers.
- bron
De bron van de printer (gebruiker of beleid geconfigureerd).
- uri
snaar
De printer-URI. Dit 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
"DOOR_OPEN" "TRAY_MISSING" "OUT_OF_INK" "OUT_OF_PAPER" "OUTPUT_FULL" "PAPER_JAM" "GENERIC_ISSUE" "GESTOPT" "ONBEREIKBAAR" "EXPIRED_CERTIFICAAT" "BESCHIKBAAR"
De deur van de printer staat open. Printer accepteert nog steeds afdruktaken.
De lade van de printer ontbreekt. Printer accepteert nog steeds afdruktaken.
De printer heeft geen inkt meer. Printer accepteert nog steeds afdruktaken.
Er is geen papier meer in de printer. Printer accepteert nog steeds afdruktaken.
Het uitvoergebied van de printer (bijvoorbeeld lade) is vol. Printer accepteert nog steeds afdruktaken.
Er is een papierstoring in de printer. Printer accepteert nog steeds afdruktaken.
Een algemeen probleem. Printer accepteert nog steeds afdruktaken.
De printer is gestopt en drukt niet af, maar accepteert nog steeds 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 verzonden. Het enige ondersteunde inhoudstype is "application/pdf", en het Cloud Job Ticket mag geen velden
FitToPageTicketItem
,PageRangeTicketItem
,ReverseOrderTicketItem
enVendorTicketItem
bevatten, omdat deze niet relevant zijn voor native afdrukken. Alle andere velden moeten aanwezig zijn.
SubmitJobResponse
Eigenschappen
- baanId
tekenreeks optioneel
De ID van de gemaakte afdruktaak. Dit is een unieke identificatie voor alle afdruktaken op het apparaat. Als de status niet OK is, is jobId null.
- status
De status van het verzoek.
SubmitJobStatus
De status van submitJob
aanvraag.
Enum
"OK" "USER_REJECTED"
Verzonden afdrukopdrachtverzoek wordt geaccepteerd.
Het verzonden afdruktaakverzoek wordt door de gebruiker afgewezen.
Eigenschappen
MAX_GET_PRINTER_INFO_CALLS_PER_MINUTE
Het maximale aantal keren dat getPrinterInfo
per minuut kan worden gebeld.
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,
)
Annuleert een eerder ingediende taak.
Parameters
- baanId
snaar
De ID van de afdruktaak die moet worden geannuleerd. Dit moet dezelfde ID zijn die wordt ontvangen in een
SubmitJobResponse
. - terugbellen
functie optioneel
De
callback
parameter ziet er als volgt uit:() => void
Retouren
Beloof <nietig>
Chroom 100+Beloften worden ondersteund in Manifest V3 en hoger, maar er zijn callbacks beschikbaar voor achterwaartse compatibiliteit. U kunt niet beide gebruiken bij dezelfde functieaanroep. De belofte wordt opgelost met hetzelfde type dat wordt doorgegeven aan de callback.
getPrinterInfo()
chrome.printing.getPrinterInfo(
printerId: string,
callback?: function,
)
Retourneert de status en mogelijkheden van de printer in CDD-indeling . Deze aanroep mislukt met een runtimefout als er geen printers met een opgegeven ID zijn geïnstalleerd.
Parameters
- printerID
snaar
- terugbellen
functie optioneel
De
callback
parameter ziet er als volgt uit:(response: GetPrinterInfoResponse) => void
- antwoord
Retouren
Beloof < GetPrinterInfoResponse >
Chroom 100+Beloften worden ondersteund in Manifest V3 en hoger, maar er zijn callbacks beschikbaar voor achterwaartse compatibiliteit. U kunt niet beide gebruiken bij dezelfde functieaanroep. De belofte wordt opgelost met hetzelfde type dat wordt doorgegeven aan de callback.
getPrinters()
chrome.printing.getPrinters(
callback?: function,
)
Retourneert de lijst met beschikbare printers op het apparaat. Dit omvat handmatig toegevoegde, zakelijke en ontdekte printers.
Parameters
Retouren
Beloof < Printer []>
Chroom 100+Beloften worden ondersteund in Manifest V3 en hoger, maar er zijn callbacks beschikbaar voor achterwaartse compatibiliteit. U kunt niet beide gebruiken bij dezelfde functieaanroep. De belofte wordt opgelost met hetzelfde type dat wordt doorgegeven aan de callback.
submitJob()
chrome.printing.submitJob(
request: SubmitJobRequest,
callback?: function,
)
Verzendt de taak voor afdrukken. Als de extensie niet wordt vermeld in het PrintingAPIExtensionsAllowlist
-beleid, 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
parameter ziet er als volgt uit:(response: SubmitJobResponse) => void
- antwoord
Retouren
Beloof < SubmitJobResponse >
Chroom 100+Beloften worden ondersteund in Manifest V3 en hoger, maar er zijn callbacks beschikbaar voor achterwaartse compatibiliteit. U kunt niet beide gebruiken bij dezelfde functieaanroep. De belofte wordt opgelost met hetzelfde type dat wordt doorgegeven aan de callback.
Evenementen
onJobStatusChanged
chrome.printing.onJobStatusChanged.addListener(
callback: function,
)
Gebeurtenis geactiveerd wanneer de status van de taak wordt gewijzigd. Deze wordt alleen ontslagen voor de banen die door deze uitbreiding worden gecreëerd.
Parameters
- terugbellen
functie
De
callback
parameter ziet er als volgt uit:(jobId: string, status: JobStatus) => void
- baanId
snaar
- status