Druk rechtstreeks af op de printer met JavaScript

click fraud protection

Een vraag die veel opduikt in de verschillende Javascript-forums, vraagt ​​hoe de pagina rechtstreeks naar de printer kan worden verzonden zonder eerst de dialoogvenster afdrukken.

In plaats van je dat gewoon te vertellen het kan niet worden gedaan misschien zou een verklaring waarom een ​​dergelijke optie niet mogelijk is, nuttiger zijn.

Welk afdrukdialoogvenster wordt weergegeven wanneer iemand op print knop in hun browser of het Javascript window.print () methode wordt uitgevoerd, is afhankelijk van het besturingssysteem en welke printers op de computer zijn geïnstalleerd.

Aangezien de meeste mensen Windows op hun computer gebruiken, laten we eerst beschrijven hoe de afdrukinstellingen op dat besturingssysteem werken. De * nix- en Mac-besturingssystemen verschillen enigszins in de details, maar zijn over het algemeen vergelijkbaar ingesteld.

Dialoogvenster afdrukken

Het afdrukdialoogvenster in Windows bestaat uit twee delen. De eerste is onderdeel van de Windows API (Application Programming Interface). De API is een set veelgebruikte codestukken die in de verschillende DLL's worden bewaard (

instagram viewer
Dynamic Link Library) bestanden die deel uitmaken van Windows besturingssysteem. Elk Windows-programma kan (en moet) de API aanroepen om algemene functies uit te voeren, zoals het weergeven van het dialoogvenster Afdrukken, zodat dit zal gebeuren werken op dezelfde manier in alle programma's en hebben geen verschillende opties op verschillende plaatsen zoals de afdrukoptie deed in het DOS-programma dagen. De Print Dialog API biedt ook een gemeenschappelijke interface waardoor alle programma's toegang hebben tot dezelfde set printerstuurprogramma's dan dat printerfabrikanten voor elk afzonderlijk programma dat ze wilden gebruiken, stuurprogramma's voor hun printer moesten maken het.

De printerstuurprogramma's vormen de andere helft van het afdrukvenster. Er zijn verschillende talen die verschillende printers begrijpen die ze gebruiken om te bepalen hoe de pagina wordt afgedrukt (bijv. PCL5 en Postscript). Het printerstuurprogramma geeft de Print API instructies over het vertalen van het standaard interne afdrukformaat die het besturingssysteem begrijpt in de aangepaste opmaaktaal die de specifieke printer begrijpt. Het past ook de opties aan die in het dialoogvenster Afdrukken worden weergegeven om de opties van de specifieke printer weer te geven.

De printer bedienen

Op een individuele computer zijn mogelijk geen printers geïnstalleerd, mogelijk is er één lokale printer toegang tot meerdere printers via een netwerk, het kan zelfs worden ingesteld om af te drukken naar PDF of voorgeformatteerde afdruk het dossier. Als er meer dan één "printer" is gedefinieerd, wordt er één aangewezen als de standaardprinter, wat betekent dat het de printer is die de details ervan weergeeft in het afdrukvenster wanneer deze voor het eerst verschijnt.

Het besturingssysteem houdt de standaardprinter bij en identificeert die printer voor de verschillende programma's op de computer. Hierdoor kunnen de programma's een extra parameter aan de print-API doorgeven die hem vertelt rechtstreeks naar de standaardprinter af te drukken zonder eerst het afdrukdialoogvenster te tonen. Veel programma's hebben twee verschillende afdrukopties: een menu-item dat het afdrukdialoogvenster weergeeft en een werkbalkknop voor snel afdrukken die rechtstreeks naar de standaardprinter stuurt.

Wanneer u een webpagina op internet heeft die uw bezoekers gaan afdrukken, heeft u vrijwel geen informatie over welke printer (s) ze beschikbaar hebben. De meeste printers over de hele wereld zijn geconfigureerd om af te drukken op A4-papier, maar u kunt niet garanderen dat de printer op die standaard is ingesteld. Een Noord-Amerikaans land gebruikt een niet-standaard papierformaat dat korter en breder is dan A4. De meeste printers zijn ingesteld om in portretmodus af te drukken (waarbij de smallere richting de breedte is, maar sommige kunnen worden ingesteld op het landschap waar de langere dimensie de breedte is. Natuurlijk heeft elke printer ook verschillende standaardmarges aan de boven-, onder- en zijkanten van de pagina nog voordat de eigenaren naar binnen gaan en alle instellingen wijzigen om de printer op de juiste manier te krijgen willen.

Gezien al deze factoren, kunt u niet zeggen of de standaardprinter met de standaardconfiguratie uw web zal afdrukken pagina op A3 met verwaarloosbare marges of op A5 met enorme marges (er blijft weinig meer over dan een postzegelgebied in het midden van de bladzijde). Je kunt er waarschijnlijk vanuit gaan dat de meeste een printgebied op de pagina hebben van ongeveer 16cm x 25cm (plus of min 80%).

Afdrukbehoeften

Omdat printers zo veel verschillen tussen uw potentiële bezoekers (heeft iemand het gehad over laserprinters, inkjetprinters, kleur of zwart-wit alleen, fotokwaliteit, conceptmodus en nog veel meer) u kunt niet zeggen wat ze moeten doen om uw pagina op een redelijke manier af te drukken formaat. misschien hebben ze een aparte printer of een tweede stuurprogramma voor dezelfde printer met totaal verschillende instellingen specifiek voor webpagina's.

Vervolgens komt de kwestie van wat ze misschien willen afdrukken. Willen ze de hele pagina of hebben ze slechts een deel van de pagina geselecteerd dat ze willen afdrukken? Als uw site frames gebruikt, willen ze dan alle frames afdrukken zoals ze op de pagina worden weergegeven, willen ze elk frame afzonderlijk afdrukken of willen ze alleen een specifiek frame afdrukken?

De noodzaak om al deze vragen te beantwoorden, maakt het essentieel dat het afdrukdialoogvenster verschijnt wanneer ze zich voordoen iets willen afdrukken zodat ze zeker weten dat de instellingen correct zijn voordat ze op de afdruk komen knop. De meeste browsers bieden ook de mogelijkheid om een ​​knop voor "snel afdrukken" aan een van de browserwerkbalken toe te voegen de pagina die moet worden afgedrukt naar de standaardprinter met behulp van standaard browserinstellingen over wat er moet worden afgedrukt en hoe.

Javascript

Browsers stellen deze veelheid aan browser- en printerinstellingen niet beschikbaar voor Javascript. Javascript houdt zich voornamelijk bezig met het wijzigen van de stroom webpagina en dus bieden webbrowsers minimale informatie over de browser zelf en bijna geen informatie over het besturingssysteem dat beschikbaar is Javascript omdat Javascript die dingen niet hoeft te weten om die dingen uit te voeren waarvoor Javascript bedoeld is.

Basisbeveiliging zegt dat als zoiets als Javascript niet hoeft te weten over het besturingssysteem en browserconfiguratie om de webpagina te manipuleren, dan zou deze daar niet van moeten worden voorzien informatie. Het is niet zoals Javascript de printerinstellingen zou moeten kunnen wijzigen in de juiste waarden voor de huidige pagina afdrukken omdat dat niet is waar Javascript voor is - dat is de taak van de afdruk dialoogvenster. Browsers stellen Javascript daarom alleen ter beschikking wat Javascript moet weten, zoals de grootte van het scherm, de beschikbare ruimte in het browservenster om de pagina weer te geven, en soortgelijke dingen die Javascript helpen om uit te zoeken hoe de pagina is opgemaakt. De huidige webpagina is de enige zorg van Javascript.

Intranetten

Intranetten zijn natuurlijk een heel andere zaak. Met een intranet weet je dat iedereen toegang tot de pagina gebruikt een specifieke browser (meestal een recente versie van Internet Explorer) en heeft een specifieke schermresolutie en toegang tot specifieke printers. Dit betekent dat het op een intranet zinvol is om rechtstreeks naar de printer te kunnen printen zonder het afdrukdialoogvenster weergeven omdat de persoon die de webpagina schrijft, weet welke printer het zal zijn Afgedrukt op.

De Internet Explorer-vervanging voor Javascript (genaamd JScript) heeft daarom iets meer informatie over de browser en het besturingssysteem dan Javascript zelf. De individuele computers op het netwerk waarop het intranet draait, kunnen mogelijk worden geconfigureerd om de JScript toe te staan window.print () commando direct naar de printer schrijven zonder het afdrukdialoogvenster weer te geven. Deze configuratie moet afzonderlijk op elke clientcomputer worden ingesteld en valt ver buiten het bestek van een artikel over Javascript.

Als het gaat om webpagina's op internet, is er absoluut geen manier om een Javascript-opdracht om rechtstreeks naar de standaardprinter te sturen. Als uw bezoekers dat willen, moeten ze hun eigen "snelle afdruk" -knop instellen op hun browserwerkbalk.

instagram story viewer