chroom.afdrukken

Beschrijving

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

Toestemmingen

printing

Beschikbaarheid

Chrome 81+ Alleen voor ChromeOS

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 ticket die 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 met 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 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.

  • De status van de printer.

JobStatus

Status van de printopdracht.

Enum

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

"IN_PROGRESS"
De printopdracht is verzonden naar de drukkerij.

"MISLUKT"
Het printproces is onderbroken vanwege een fout.

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

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

  • 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"
De printer is door de gebruiker toegevoegd.

"BELEID"
De printer is via een beleid toegevoegd.

PrinterStatus

De status van de printer.

Enum

"DEUR_OPEN"
De klep van de printer staat open. De printer accepteert nog steeds printopdrachten.

"BAKJE VERMIST"
De papierlade van de printer ontbreekt. De printer accepteert nog steeds printopdrachten.

"INKT UIT"
De printer heeft geen inkt meer. De printer accepteert nog wel printopdrachten.

"UIT HET PAPIER"
De printer heeft geen papier meer. De printer accepteert nog wel printopdrachten.

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

"PAPIEROPSTOPPING"
De printer heeft een papierstoring. De printer accepteert nog wel printopdrachten.

"GENERIC_ISSUE"
Een algemeen probleem. De printer accepteert nog steeds printopdrachten.

"GESTOPT"
De printer is uitgeschakeld en print niet, maar accepteert nog wel printopdrachten.

"ONBEREIKBAAR"
De printer is niet bereikbaar en accepteert geen printopdrachten.

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

"BESCHIKBAAR"
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 , PageRangeTicketItem en ReverseOrderTicketItem bevatten, aangezien deze niet relevant zijn voor native afdrukken. VendorTicketItem is 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.

  • De status van het verzoek.

SubmitJobStatus

De status van submitJob verzoek.

Enum

"OK"
Het printverzoek is geaccepteerd.

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

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

Promise Chrome 135+
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 callback parameter ziet er als volgt uit:

    (status: JobStatus) => void

Retourneert

  • Belofte< JobStatus >

    Promises worden alleen ondersteund voor Manifest V3 en later; voor andere platforms moeten callbacks worden gebruikt.

getPrinterInfo()

Belofte
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

Retourneert

  • Chrome 100+

    Promises worden alleen ondersteund voor Manifest V3 en later; voor andere platforms moeten callbacks worden gebruikt.

getPrinters()

Belofte
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

  • terugbelverzoek

    functie optioneel

    De callback parameter ziet er als volgt uit:

    (printers: Printer[]) => void

Retourneert

  • Promise< Printer []>

    Chrome 100+

    Promises worden alleen ondersteund voor Manifest V3 en later; voor andere platforms moeten callbacks worden gebruikt.

submitJob()

Belofte
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

Retourneert

  • 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.

Parameters

  • terugbelverzoek

    functie

    De callback parameter ziet er als volgt uit:

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