chroom.afdrukken

Beschrijving

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

Machtigingen

printing

Beschikbaarheid

AlleenChrome 81+ ChromeOS

Manifest

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 van getPrinterInfo() .
  • 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 de ticket .
  • 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 bouwen 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.) Indien opgenomen, moet deze sleutel een array zijn 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.

  • De status van de printer.

JobStatus

Status van de afdruktaak.

Enum

"IN BEHANDELING"
De afdruktaak is ontvangen aan de Chrome-kant, maar is nog niet verwerkt.

"IN_PROGRESS"
De afdruktaak wordt verzonden om af te drukken.

"mislukt"
De afdruktaak is onderbroken vanwege een fout.

"GEANNULEERD"
Afdruktaak is geannuleerd door de gebruiker of via API.

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

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

"BELEID"
Printer is toegevoegd via beleid.

PrinterStatus

De status van de printer.

Enum

"DOOR_OPEN"
De deur van de printer staat open. Printer accepteert nog steeds afdruktaken.

"TRAY_MISSING"
De lade van de printer ontbreekt. Printer accepteert nog steeds afdruktaken.

"OUT_OF_INK"
De printer heeft geen inkt meer. Printer accepteert nog steeds afdruktaken.

"OUT_OF_PAPER"
Er is geen papier meer in de printer. Printer accepteert nog steeds afdruktaken.

"OUTPUT_FULL"
Het uitvoergebied van de printer (bijvoorbeeld lade) is vol. Printer accepteert nog steeds afdruktaken.

"PAPER_JAM"
Er is een papierstoring in de printer. Printer accepteert nog steeds afdruktaken.

"GENERIC_ISSUE"
Een algemeen probleem. Printer accepteert nog steeds afdruktaken.

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

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

"EXPIRED_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 verzonden. Het enige ondersteunde inhoudstype is "application/pdf", en het Cloud-taakticket mag geen velden FitToPageTicketItem , PageRangeTicketItem , ReverseOrderTicketItem en VendorTicketItem 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.

  • De status van het verzoek.

SubmitJobStatus

De status van submitJob aanvraag.

Enum

"OK"
Verzonden afdrukopdrachtverzoek wordt geaccepteerd.

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

Belofte
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 alleen ondersteund voor Manifest V3 en hoger, andere platforms moeten callbacks gebruiken.

getPrinterInfo()

Belofte
chrome.printing.getPrinterInfo(
  printerId: string,
  callback?: function,
)

Retourneert de status en mogelijkheden van de printer in CDD-indeling . Deze aanroep mislukt met een runtime-fout als er geen printers met een opgegeven ID zijn geïnstalleerd.

Parameters

Retouren

  • Chroom 100+

    Beloften worden alleen ondersteund voor Manifest V3 en hoger, andere platforms moeten callbacks gebruiken.

getPrinters()

Belofte
chrome.printing.getPrinters(
  callback?: function,
)

Retourneert de lijst met beschikbare printers op het apparaat. Dit omvat handmatig toegevoegde, zakelijke en ontdekte printers.

Parameters

  • terugbellen

    functie optioneel

    De callback parameter ziet er als volgt uit:

    (printers: Printer[]) => void

Retouren

  • Beloof < Printer []>

    Chroom 100+

    Beloften worden alleen ondersteund voor Manifest V3 en hoger, andere platforms moeten callbacks gebruiken.

submitJob()

Belofte
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

Retouren

  • Beloof < SubmitJobResponse >

    Chroom 100+

    Beloften worden alleen ondersteund voor Manifest V3 en hoger, andere platforms moeten callbacks gebruiken.

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