Udskriv direkte til printer med JavaScript

Én forespørgsel, der vises meget i de forskellige Javascript-fora, spørger, hvordan man sender siden direkte til printeren uden først at vise udskriv dialogboks.

I stedet for bare at fortælle dig det det kan ikke gøres måske ville en forklaring af, hvorfor en sådan mulighed ikke er mulig, være mere nyttig.

Hvilken udskrivningsdialogboks vises, når nogen trykker på udskrivningsknap i deres browser eller Javascript window.print () metodekørsel afhænger af operativsystemet og hvilke printere der er installeret på computeren.

Som de fleste mennesker kører Windows på deres computer, lad os først beskrive, hvordan udskrivningsopsætningen fungerer på dette operativsystem. Operativsystemerne * nix og Mac afviger lidt i detaljerne, men samlet set er de samme opstillet.

Print dialog

Der er to dele til udskrivningsdialogboksen på Windows. Den første af disse er en del af Windows API (Application Programming Interface). API er et sæt fælles kodestykker, der findes i de forskellige DLL (Dynamic Link Library

instagram viewer
) filer, der er en del af Windows operativ system. Ethvert Windows-program kan (og bør) ringe til API'en for at udføre almindelige funktioner, såsom at vise dialogboksen Print, så det gør det arbejde på samme måde i alle programmer og ikke have forskellige muligheder forskellige steder, som udskriftsindstillingen gjorde tilbage i DOS-program dage. Print Dialog API giver også en fælles grænseflade, der giver alle programmer adgang til det samme sæt printerdrivere end printerproducenter, der skulle oprette driver-software til deres printer til hvert enkelt program, der ønskede at bruge det.

Printerdriverne er den anden halvdel af udskrivningsdialogen. Der er flere forskellige sprog, som forskellige printere forstår, at de bruger til at kontrollere, hvordan siden udskrives (f.eks. PCL5 og Postscript). Printerdriveren instruerer Print API til, hvordan man oversætter standard internt udskriftsformat at operativsystemet forstår det tilpassede markeringssprog, som den specifikke printer forstår. Det justerer også de indstillinger, der vises i dialogboksen Udskriv, så de afspejler de muligheder, der tilbydes af den specifikke printer.

Betjening af printeren

En individuel computer har muligvis ingen printere installeret, den kan have en lokal printer, den kan have adgang til flere printere over et netværk, det kan endda indstilles til at udskrive til PDF eller forformateret udskrivning fil. Hvor mere end en "printer" er defineret, udpeges en af ​​dem som standardprinter, hvilket betyder, at det er den, der viser dens detaljer i udskrivningsdialogen, når den først vises.

Operativsystemet holder styr på standardprinteren og identificerer denne printer til de forskellige programmer på computeren. Dette giver programmerne mulighed for at videregive en ekstra parameter til print-API'et, der fortæller det at udskrive direkte til standardprinteren uden først at vise udskrivningsdialogen. Mange programmer har to forskellige udskrivningsmuligheder - en menupost, der viser udskrivningsdialogen og en hurtig udskrivningsknap på værktøjslinjen, der sender direkte til standardprinteren.

Når du har en webside på internettet, som dine besøgende skal udskrive, har du næsten ingen oplysninger om, hvilke printer (er) de har til rådighed. De fleste printere overalt i verden er konfigureret til at udskrive på A4-papir, men du kan ikke garantere, at printeren er indstillet til denne standard. Et nordamerikansk land bruger en ikke-standard papirstørrelse, der er kortere og bredere end A4. De fleste printere er indstillet til at udskrive i stående tilstand (hvor den smallere retning er bredden, men nogle kan være indstillet til det landskab, hvor den længere dimension er bredden. Naturligvis har hver printer også forskellige standardmargener øverst, nederst og på siderne af side allerede før ejerne går ind og ændrer alle indstillinger for at få printeren som de har vil have.

I betragtning af alle disse faktorer har du ingen måde at fortælle, om standardprinteren med dens standardkonfiguration udskriver dit web side på A3 med ubetydelige margener eller på A5 med enorme marginer (efterlader lidt mere end et frimærke stort område midt i side). Du kan sandsynligvis antage, at de fleste har et udskriftsareal på siden på cirka 16 cm x 25 cm (plus eller minus 80%).

Udskrivningsbehov

Da printere varierer så meget mellem dine potentielle besøgende (nævnte nogen laserprintere, inkjetprintere, farve eller sort / hvid kun fotokvalitet, kladde-tilstand og meget mere) du har ingen måde at fortælle, hvad de skal gøre for at udskrive din side på en rimelig måde format. måske har de en separat printer eller en anden driver til den samme printer, der leverer helt forskellige indstillinger specifikt til websider.

Dernæst kommer spørgsmålet om, hvad de måtte ønske at udskrive. Vil de have hele siden, eller har de valgt kun en del af den side, de vil udskrive? Hvis dit websted bruger rammer, ønsker de at udskrive alle rammer, som de ser ud på siden, vil de udskrive hver ramme separat, eller ønsker de bare at udskrive en bestemt ramme?

Behovet for at besvare alle disse spørgsmål gør det næsten vigtigt, at udskrivningsdialogen vises, når de er vil udskrive noget, så de kan sikre sig, at indstillingerne alle er korrekte, før de rammer udskriften knap. De fleste browsere giver også muligheden for at tilføje en "hurtig udskrivning" -knap til en af ​​browserværktøjslinjerne for at tillade den side, der skal udskrives på standardprinteren ved hjælp af standard browserindstillingerne, hvad der skal udskrives og hvordan.

Javascript

Browsere stiller ikke denne mangfoldighed af browser- og printerindstillinger til rådighed for Javascript. Javascript beskæftiger sig primært med at ændre strømmen hjemmeside og derfor giver webbrowsere minimale oplysninger om selve browseren og næsten ingen information om det operativsystem, der er tilgængeligt for Javascript fordi Javascript ikke behøver at vide disse ting for at udføre de ting, som Javascript er beregnet til at gøre.

Grundlæggende sikkerhed siger, at hvis noget som Javascript ikke behøver at vide om operativsystemet og browserkonfiguration for at manipulere websiden, så skulle den ikke leveres med det Information. Det er ikke som Javascript burde være i stand til at ændre printerindstillingerne til passende værdier for udskrivning af den aktuelle side, fordi det ikke er det, Javascript er beregnet til - det er udskrivningen Dialogen. Browsere stiller derfor kun til rådighed for Javascript de ting, som Javascript har brug for at vide, f.eks. Skærmens størrelse, ledig plads i browservinduet for at vise siden og lignende ting, der hjælper Javascript med at finde ud af, hvordan siden er udformet. Den aktuelle webside er Javascript's eneste bekymring.

intranet

Intranet er naturligvis en helt anden sag. Med et intranet ved du, at alle adgang til siden bruger en bestemt browser (normalt en nylig version af Internet Explorer) og har en bestemt skærmopløsning og adgang til specifikke printere. Dette betyder, at det giver mening på et intranet at kunne udskrive direkte til printeren uden viser udskrivningsdialogen, fordi personen, der skriver websiden, ved, hvilken printer det vil være trykt på.

Internet Explorer-erstatning for Javascript (kaldet JScript) har derfor lidt mere information om browseren og operativsystemet, som Javascript selv gør. De enkelte computere på netværket, der kører intranettet, kan muligvis konfigureres til at tillade JScript window.print () kommando skriv direkte til printeren uden at vise udskrivningsdialogen. Denne konfiguration skal indstilles individuelt på hver klientcomputer og er langt uden for omfanget af en artikel om Javascript.

Når det kommer til websider på internettet er der absolut ingen måde, du kan oprette en Javascript-kommando for at sende direkte til standardprinteren. Hvis dine besøgende ønsker at gøre det, bliver de nødt til at indstille deres egen "fast print" -knap på deres browserværktøjslinje.