Skriv ut direkt till skrivaren med JavaScript

En fråga som dyker upp i de olika Javascript-forumen frågar hur man skickar sidan direkt till skrivaren utan att först visa skriv ut dialogrutan.

Snarare än att bara berätta det för dig det kan inte göras kanske en förklaring av varför ett sådant alternativ inte är möjligt skulle vara mer användbart.

Vilken utskriftsdialogruta som visas när någon trycker på tryckknapp i deras webbläsare eller Javascript window.print () Metoden körs beror på operativsystemet och vilka skrivare som är installerade på datorn.

Eftersom de flesta använder Windows på sin dator, låt oss först beskriva hur utskriftsinställningarna fungerar på det operativsystemet. Operativsystemen * nix och Mac skiljer sig något i detaljerna men övergripande är konfigurerade liknande.

Print Dialog

Det finns två delar i dialogrutan för utskrift i Windows. Den första av dessa är en del av Windows API (Application Programming Interface). API är en uppsättning vanliga kodstycken som finns i olika DLL (Dynamic Link Library) -filer som ingår i Windows

instagram viewer
operativ system. Alla Windows-program kan (och borde) ringa API: t för att utföra vanliga funktioner som att visa dialogrutan Skriv ut så att det kommer fungera på samma sätt i alla program och inte ha olika alternativ på olika platser som utskriftsalternativet gjorde i DOS-programmet dagar. Print Dialog API ger också ett gemensamt gränssnitt som tillåter alla program åtkomst till samma uppsättning skrivardrivrutiner snarare än skrivartillverkare som måste skapa drivrutinsprogramvara för sin skrivare för varje enskilt program som ville använda den.

Skrivardrivrutinerna är den andra hälften av utskriftsdialogen. Det finns flera olika språk som olika skrivare förstår att de använder för att kontrollera hur sidan skrivs ut (t.ex. PCL5 och Postscript). Skrivardrivrutinen instruerar Print API för hur man översätter standard internt utskriftsformat att operativsystemet förstår i det anpassade markeringsspråket som den specifika skrivaren förstår. Den justerar också alternativen som dialogrutan Skriv ut visar för att återspegla alternativen som erbjuds av den specifika skrivaren.

Använda skrivaren

En enskild dator kanske inte har några skrivare installerade, den kan ha en lokal skrivare, den kan ha åtkomst till flera skrivare över ett nätverk, det kan till och med konfigureras för att skriva ut till PDF eller förformaterat utskrift fil. Där mer än en "skrivare" är definierad, utses en av dem som standardskrivare, vilket betyder att det är den som visar dess detaljer i utskriftsdialogen när den först visas.

Operativsystemet håller reda på standardskrivaren och identifierar skrivaren till de olika programmen på datorn. Detta gör att programmen kan skicka en extra parameter till utskrifts-API: et för att säga att det ska skrivas ut direkt till standardskrivaren utan att först skriva ut dialogrutan. Många program har två olika utskriftsalternativ - en menypost som visar utskriftsdialogrutan och en snabb utskriftsknapp för verktygsfält som skickas direkt till standardskrivaren.

När du har en webbsida på internet som dina besökare kommer att skriva ut har du nästan ingen information om vilka skrivare de har tillgängliga. De flesta skrivare runt om i världen är konfigurerade för att skriva ut på A4-papper men du kan inte garantera att skrivaren är inställd på det standard. Ett nordamerikansk land använder en icke-standardpappersstorlek som är kortare och bredare än A4. De flesta skrivare är inställda för att skriva ut i porträttläge (där den smalare riktningen är bredden men vissa kan vara inställda på landskapet där den längre dimensionen är bredden. Naturligtvis har varje skrivare också olika standardmarginaler på toppen, botten och sidor av sidan innan ägarna går in och ändrar alla inställningar för att få skrivaren så som de gör vilja.

Med tanke på alla dessa faktorer har du inget sätt att säga om standardskrivaren med dess standardkonfiguration kommer att skriva ut din webb sida på A3 med försumbara marginaler eller på A5 med enorma marginaler (lämnar lite mer än en frimärksstorlek i mitten av sida). Du kan antagligen anta att de flesta kommer att ha ett utskriftsområde på sidan på ungefär 16 cm x 25 cm (plus eller minus 80%).

Utskriftsbehov

Eftersom skrivare varierar så mycket mellan dina potentiella besökare (nämnde någon laserskrivare, bläckstråleskrivare, färg eller svartvitt endast fotokvalitet, utkastläge och mycket mer) du har inget sätt att berätta vad de kommer att behöva göra för att skriva ut din sida på ett rimligt sätt formatera. kanske har de en separat skrivare eller en andra drivrutin för samma skrivare som ger helt olika inställningar specifikt för webbsidor.

Därefter kommer frågan om vad de kanske vill skriva ut. Vill de ha hela sidan eller har de bara valt en del av sidan som de vill skriva ut? Om din webbplats använder ramar vill de skriva ut alla ramar som de ser ut på sidan, vill de skriva ut varje ram separat, eller vill de bara skriva ut en specifik ram?

Behovet av att svara på alla dessa frågor gör det nästan väsentligt att utskriftsdialogrutan visas när de kommer vill skriva ut något så att de kan se till att inställningarna är korrekta innan de trycker på utskriften knapp. De flesta webbläsare ger också möjligheten att lägga till en "snabb utskrift" -knapp till en av webbläsarens verktygsfält för att tillåta den sida som ska skrivas ut på standardskrivaren med standardwebbläsarinställningar för vad som ska skrivas ut och hur.

Javascript

Webbläsare gör inte denna mängd webbläsar- och skrivarinställningar tillgängliga för Javascript. Javascript handlar främst om att ändra strömmen webbsida och webbläsare ger så minimal information om själva webbläsaren och nästan ingen information om operativsystemet tillgängligt för Javascript eftersom Javascript inte behöver veta dessa saker för att utföra de saker som Javascript är avsett att göra.

Grundläggande säkerhet säger att om något som Javascript inte behöver veta om operativsystemet och webbläsarkonfiguration för att manipulera webbsidan, då bör den inte förses med det information. Det är inte som Javascript borde kunna ändra skrivarinställningarna till lämpliga värden för skriva ut den aktuella sidan eftersom det inte är det Javascript är för - det är jobbet med utskriften dialog. Webbläsare gör därför bara tillgängliga för Javascript de saker som Javascript behöver veta, till exempel skärmens storlek, tillgängligt utrymme i webbläsarfönstret för att visa sidan och liknande saker som hjälper Javascript att reda ut hur sidan är utformad. Den nuvarande webbsidan är Javascript en enda bekymmer.

intranät

Intranät är naturligtvis en helt annan fråga. Med ett intranät vet du att alla åtkomst till sidan använder en specifik webbläsare (vanligtvis en ny version av Internet Explorer) och har en specifik skärmupplösning och åtkomst till specifika skrivare. Detta innebär att det är vettigt på ett intranät att kunna skriva ut direkt till skrivaren utan visar utskriftsdialogen eftersom personen som skriver webbsidan vet vilken skrivare det kommer att vara tryckt på.

Internet Explorer-ersättaren för Javascript (kallad JScript) har därför lite mer information om webbläsaren och operativsystemet som Javascript själv gör. De enskilda datorerna i nätverket som kör intranätet kan kanske konfigureras för att tillåta JScript window.print () kommando skriva direkt till skrivaren utan att visa utskriftsdialogen. Den här konfigurationen måste konfigureras individuellt på varje klientdator och ligger långt utanför räckvidden för en artikel om Javascript.

När det gäller webbsidor på internet finns det inget sätt att du kan ställa in en Javascript-kommando för att skicka direkt till standardskrivaren. Om dina besökare vill göra det måste de ställa in en egen "snabbutskrift" -knapp i webbläsarens verktygsfält.

instagram story viewer