chroom.afdrukken

Beschrijving

Gebruik de chrome.printing API om afdruktaken te versturen naar printers die op uw Chromebook zijn geïnstalleerd.

Machtigingen

printing

Beschikbaarheid

Chrome 81+ Alleen ChromeOS

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 van getPrinterInfo() .
  • 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 de ticket .
  • 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.

  • De status van de printer.

JobStatus

Status van de afdruktaak.

Enum

"IN BEHANDELING"
De afdruktaak is ontvangen op Chrome, maar nog niet verwerkt.

"IN_UITVOERING"
De afdruktaak is verzonden om te worden afgedrukt.

"MISLUKT"
De afdruktaak is onderbroken vanwege een fout.

"GEANNULEERD"
De afdruktaak is geannuleerd door de gebruiker of via de API.

"GEDRUKT"
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.

  • 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"
Printer is toegevoegd door gebruiker.

"BELEID"
Printer is toegevoegd via beleid.

PrinterStatus

De status van de printer.

Enum

"DEUR_OPEN"
De printerklep staat open. De printer accepteert nog steeds afdruktaken.

"LADE_ONTBREEKT"
De lade van de printer ontbreekt. De printer accepteert nog wel afdruktaken.

"GEEN_INK"
De printer is uit inkt. Printer accepteert nog steeds afdruktaken.

"GEEN_PAPIER"
Het papier in de printer is op. De printer accepteert nog wel afdruktaken.

"UITGANG_VOL"
Het uitvoergebied van de printer (bijv. de lade) is vol. De printer accepteert nog steeds afdruktaken.

"PAPIERVAST"
Er is een papierstoring in de printer. De printer accepteert nog wel afdruktaken.

"GENERIEK_PROBLEEM"
Er is een algemeen probleem. De printer accepteert nog steeds afdruktaken.

"GESTOPT"
De printer is gestopt en drukt niet af, maar accepteert nog wel afdruktaken.

"ONBEREIKBAAR"
De printer is onbereikbaar en accepteert geen afdruktaken.

"VERLOPEN_CERTIFICAAT"
Het SSL-certificaat is verlopen. De printer accepteert taken, maar deze mislukken.

"BESCHIKBAAR"
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 en ReverseOrderTicketItem 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.

  • De status van het verzoek.

SubmitJobStatus

De status van submitJob verzoek.

Enum

"OK"
Het verzonden afdrukopdrachtverzoek is geaccepteerd.

"GEBRUIKER_AFGEWEZEN"
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()

Belofte
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()

BelofteChrome 135+
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

Retourneren

  • Belofte< JobStatus >

    Promises worden alleen ondersteund voor Manifest V3 en hoger. Andere platforms moeten callbacks gebruiken.

getPrinterInfo()

Belofte
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

Retourneren

  • Chroom 100+

    Promises worden alleen ondersteund voor Manifest V3 en hoger. Andere platforms moeten callbacks gebruiken.

getPrinters()

Belofte
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

  • terugbellen

    functie optioneel

    De callback ziet er als volgt uit:

    (printers: Printer[]) => void

Retourneren

  • Belofte< Printer []>

    Chroom 100+

    Promises worden alleen ondersteund voor Manifest V3 en hoger. Andere platforms moeten callbacks gebruiken.

submitJob()

Belofte
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

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.

Parameters

  • terugbellen

    functie

    De callback ziet er als volgt uit:

    (jobId: string, status: JobStatus) => void