Beschrijving
Gebruik de chrome.printing API om printopdrachten te verzenden naar printers die op een Chromebook zijn geïnstalleerd.
Toestemmingen
printingBeschikbaarheid
Manifest
Voor alle chrome.printing methoden en -gebeurtenissen is het vereist dat u de "printing" -toestemming in het extensiemanifest declareert. Bijvoorbeeld:
{
"name": "My extension",
...
"permissions": [
"printing"
],
...
}
Voorbeelden
De onderstaande voorbeelden demonstreren het gebruik van elk van de methoden in de namespace printing. Deze code is gekopieerd van of gebaseerd op de api-samples/printing in de extensions-samples GitHub-repository.
cancelJob()
Dit voorbeeld gebruikt de onJobStatusChanged handler om een 'annuleren'-knop te verbergen wanneer de jobStatus niet PENDING ' of ' IN_PROGRESS heeft. Houd er rekening mee dat op sommige netwerken, of wanneer een Chromebook rechtstreeks op de printer is aangesloten, deze statussen te snel kunnen wisselen om de annuleerknop lang genoeg zichtbaar te houden om te kunnen worden aangeroepen. Dit is een sterk vereenvoudigd printvoorbeeld.
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 slechts één voorbeeld gebruikt voor deze functies, omdat voor het opvragen van printerinformatie een printer-ID nodig is, die wordt verkregen door de functie getPrinters() aan te roepen. Dit voorbeeld logt de naam en beschrijving van de standaardprinter naar 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
ticketdie aangeeft welke mogelijkheden van de printer gebruikt moeten worden. Als de gebruiker uit de beschikbare mogelijkheden moet kiezen, kunt u deze voor een specifieke printer opvragen metgetPrinterInfo(). - Een
SubmitJobRequeststructuur, 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 deel van het bestand of de gegevens die afgedrukt moeten worden.
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 omgezet naar een blob (regel 10). Het verkrijgen van de ID van de printer (regel 1) is in het voorbeeld complexer 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);
}
});
Rollendruk
Dit voorbeeld laat zien hoe je een printerticket aanmaakt voor continu (of rol) printen, wat vaak gebruikt wordt bij het printen van bonnen. Het submitJobRequest object voor rolprinten is hetzelfde als datgene dat in het submitJob() -voorbeeld wordt getoond.
Als u de standaardwaarde voor het afsnijden van papier wilt wijzigen, gebruikt u de sleutel vendor_ticket_item . (De standaardwaarde verschilt per printer.) Indien opgenomen, moet deze sleutel een array zijn met één element: een object met id 'finishings' . De waarde kan 'trim' zijn voor printers die de rol aan het einde van het printproces afsnijden, of 'none' voor printers waarbij de printopdracht 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 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 sleutel ` media_size van een ticket zijn specifiek voor elke printer. Om een geschikte afmeting te selecteren, roept u getPrinterInfo() aan. De geretourneerde GetPrinterResponse bevat een array met ondersteunde mediaformaten onder "media_size"."option" . Kies een optie waarvan de waarde "is_continuous_feed" waar is. Gebruik de hoogte- en breedtewaarden van deze optie 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 . Deze eigenschap ontbreekt mogelijk.
- status
De status van de printer.
JobStatus
Status van de printopdracht.
Enum
"IN BEHANDELING" "IN_PROGRESS" "MISLUKT" "GEANNULEERD" "GEDRUKT"
De printopdracht is aan de Chrome-kant ontvangen, maar nog niet verwerkt.
De printopdracht is verzonden naar de drukkerij.
Het printproces is onderbroken vanwege een fout.
De printopdracht is geannuleerd door de gebruiker of via de API.
De afdrukopdracht is zonder fouten afgedrukt.
Printer
Eigenschappen
- beschrijving
snaar
De voor mensen leesbare beschrijving van de printer.
- id
snaar
De printer-ID; gegarandeerd uniek voor alle printers op het apparaat.
- isDefault
booleaans
De vlag die aangeeft of de printer voldoet aan de regels van DefaultPrinterSelection . Houd er rekening mee dat meerdere printers een vlag kunnen hebben.
- naam
snaar
De naam van de printer.
- recentelijk gebruikte rang
nummer optioneel
Deze waarde geeft aan hoe recent de printer is gebruikt om vanuit Chrome af te drukken. Hoe lager de waarde, hoe recenter de printer is gebruikt. De minimumwaarde is 0. Een ontbrekende waarde betekent dat de printer niet recent is gebruikt. Deze waarde is gegarandeerd uniek voor elke printer.
- bron
De bron van de printer (gebruiker of geconfigureerd beleid).
- uri
snaar
De printer-URI. Deze kan door extensies worden gebruikt om de printer voor de gebruiker te selecteren.
PrinterSource
De bron van de printer.
Enum
"GEBRUIKER" "BELEID"
De printer is door de gebruiker toegevoegd.
De printer is via een beleid toegevoegd.
PrinterStatus
De status van de printer.
Enum
"DEUR_OPEN" "BAKJE VERMIST" "INKT UIT" "UIT HET PAPIER" "OUTPUT_FULL" "PAPIEROPSTOPPING" "GENERIC_ISSUE" "GESTOPT" "ONBEREIKBAAR" "VERLOPEN_CERTIFICAAT" "BESCHIKBAAR"
De klep van de printer staat open. De printer accepteert nog steeds printopdrachten.
De papierlade van de printer ontbreekt. De printer accepteert nog steeds printopdrachten.
De printer heeft geen inkt meer. De printer accepteert nog wel printopdrachten.
De printer heeft geen papier meer. De printer accepteert nog wel printopdrachten.
Het uitvoergebied van de printer (bijvoorbeeld de lade) is vol. De printer accepteert nog steeds printopdrachten.
De printer heeft een papierstoring. De printer accepteert nog wel printopdrachten.
Een algemeen probleem. De printer accepteert nog steeds printopdrachten.
De printer is uitgeschakeld en print niet, maar accepteert nog wel printopdrachten.
De printer is niet bereikbaar en accepteert geen printopdrachten.
Het SSL-certificaat is verlopen. De printer accepteert wel printopdrachten, maar deze mislukken.
De printer is beschikbaar.
SubmitJobRequest
Eigenschappen
- functie
De afdrukopdracht die moet worden ingediend. Ondersteunde inhoudstypen zijn "application/pdf" en "image/png". Het Cloud Job Ticket mag geen velden
FitToPageTicketItem,PageRangeTicketItemenReverseOrderTicketItembevatten, aangezien deze niet relevant zijn voor native afdrukken.VendorTicketItemis optioneel. Alle andere velden moeten aanwezig zijn.
SubmitJobResponse
Eigenschappen
- vacature-ID
string optioneel
De ID van de aangemaakte printopdracht. Dit is een unieke identificatiecode voor alle printopdrachten op het apparaat. Als de status niet OK is, is jobId null.
- status
De status van het verzoek.
SubmitJobStatus
De status van submitJob verzoek.
Enum
"OK" "GEBRUIKER_AFGEWEZEN"
Het printverzoek is geaccepteerd.
Het verzonden printverzoek 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 opdracht.
Parameters
- vacature-ID
snaar
De ID van de printopdracht die geannuleerd moet worden. Dit moet dezelfde ID zijn als die ontvangen is in een
SubmitJobResponse. - terugbelverzoek
functie optioneel
De
callbackparameter ziet er als volgt uit:() => void
Retourneert
Promise<void>
Chrome 100+Promises worden alleen ondersteund voor Manifest V3 en later; voor andere platforms moeten callbacks worden gebruikt.
getJobStatus()
chrome.printing.getJobStatus(
jobId: string,
callback?: function,
): Promise<JobStatus>
Geeft de status van de printopdracht terug. Deze aanroep mislukt met een runtimefout als de printopdracht met de opgegeven jobId niet bestaat. jobId : De id van de printopdracht waarvan de status moet worden geretourneerd. Dit moet dezelfde id zijn als die ontvangen in een SubmitJobResponse .
Parameters
- vacature-ID
snaar
- terugbelverzoek
functie optioneel
De
callbackparameter ziet er als volgt uit:(status: JobStatus) => void
- status
Retourneert
Belofte< JobStatus >
Promises worden alleen ondersteund voor Manifest V3 en later; voor andere platforms moeten callbacks worden gebruikt.
getPrinterInfo()
chrome.printing.getPrinterInfo(
printerId: string,
callback?: function,
): Promise<GetPrinterInfoResponse>
Geeft de status en mogelijkheden van de printer weer in CDD-formaat . Deze aanroep mislukt met een runtimefout als er geen printers met de opgegeven ID zijn geïnstalleerd.
Parameters
- printerId
snaar
- terugbelverzoek
functie optioneel
De
callbackparameter ziet er als volgt uit:(response: GetPrinterInfoResponse) => void
- antwoord
Retourneert
Promise< GetPrinterInfoResponse >
Chrome 100+Promises worden alleen ondersteund voor Manifest V3 en later; voor andere platforms moeten callbacks worden gebruikt.
getPrinters()
chrome.printing.getPrinters(
callback?: function,
): Promise<Printer[]>
Geeft een lijst weer van de beschikbare printers op het apparaat. Dit omvat handmatig toegevoegde printers, printers van het bedrijf en gedetecteerde printers.
Parameters
Retourneert
Promise< Printer []>
Chrome 100+Promises worden alleen ondersteund voor Manifest V3 en later; voor andere platforms moeten callbacks worden gebruikt.
submitJob()
chrome.printing.submitJob(
request: SubmitJobRequest,
callback?: function,
): Promise<SubmitJobResponse>
Verzendt de afdrukopdracht. Als de extensie niet in het PrintingAPIExtensionsAllowlist -beleid staat, wordt de gebruiker gevraagd de afdrukopdracht te accepteren. Vóór Chrome 120 retourneerde deze functie geen promise.
Parameters
- verzoek
- terugbelverzoek
functie optioneel
De
callbackparameter ziet er als volgt uit:(response: SubmitJobResponse) => void
- antwoord
Retourneert
Belofte <SubmitJobResponse>
Chrome 100+Promises worden alleen ondersteund voor Manifest V3 en later; voor andere platforms moeten callbacks worden gebruikt.
Evenementen
onJobStatusChanged
chrome.printing.onJobStatusChanged.addListener(
callback: function,
)
Deze gebeurtenis wordt geactiveerd wanneer de status van de taak verandert. Deze gebeurtenis wordt alleen geactiveerd voor taken die door deze extensie zijn aangemaakt.