Skriv ut direkt till skrivaren

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 dialogrutan för utskrift.

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å utskriftsknappen i webbläsaren 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 de olika DLL-filerna (Dynamic Link Library) som ingår i Windows-operativsystemet. Alla Windows-program kan (och borde) ringa API för att utföra vanliga funktioner som att visa dialogrutan Skriv ut så att det fungerar på samma sätt i alla program och inte har olika alternativ på olika platser som utskriftsalternativet gjorde i DOS programdagar. Print Dialog API tillhandahåller också ett gemensamt gränssnitt som tillåter alla program åtkomst till samma uppsättning skrivardrivrutiner snarare än att skrivartillverkare måste skapa drivrutinsprogramvara för sin skrivare för varje enskilt program som ville använda det.

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 kan översätta det interna standardutskriftsformatet som operativsystemet förstår till det anpassade markeringsspråket som den specifika skrivaren förstår. Den justerar också alternativen som dialogrutan Skriv ut visar för att återspegla de alternativ 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 tillgång till flera skrivare över ett nätverk, den kan till och med konfigureras för att skriva ut till PDF eller förformaterad utskriftsfil. Där mer än en "skrivare" är definierad utses en av dem som standardskrivare vilket innebär 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 visa utskriftsdialogen. Många program har två olika utskriftsalternativ - en menypost som visar utskriftsdialogrutan och en snabbutskriftsknapp 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 som finns 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 upptill , botten och sidor på sidan även innan ägarna går in och ändrar alla inställningar för att få skrivaren så som de vill.

Med tanke på alla dessa faktorer har du inget sätt att säga om standardskrivaren med sin standardkonfiguration kommer att skriva ut din webbsida på A3 med försumbara marginaler eller på A5 med enorma marginaler (vilket lämnar lite mer än en frimärksstorlek i mitten på sidan). Du kan antagligen anta att de flesta kommer att ha ett utskriftsområde på sidan på cirka 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, bara färg eller svartvitt, fotokvalitet, utkastläge och mycket mer) har du inget sätt att berätta vad de kommer att behöva göra för att skriva ut ut din sida i ett rimligt format. 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 utskriftsdialogen visas när de vill skriva ut något så att de kan se till att inställningarna är korrekta innan de trycker på tryckknappen. De flesta webbläsare ger också möjlighet att lägga till en "snabb utskrift" -knapp i en av webbläsarens verktygsfält för att låta sidan 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 modifiera den aktuella webbsidan och webbläsare ger så minimal information om själva webbläsaren och bredvid ingen information om operativsystem som finns tillgängligt för Javascript eftersom Javascript inte behöver veta de sakerna 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äsarkonfigurationen för att manipulera webbsidan så borde den inte förses med den informationen. Det är inte som Javascript borde kunna ändra skrivarinställningarna till lämpliga värden för att skriva ut den aktuella sidan eftersom det inte är det Javascript är för - det är jobbet med utskriftsdialogen. Webbläsare gör därför bara tillgängliga för Javascript de saker som Javascript behöver veta, till exempel storleken på skärmen, det tillgängliga utrymmet 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 som kommer åt 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 att visa utskriftsdialogen eftersom personen som skriver webbsidan vet vilken skrivare den kommer att skrivas ut 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 ett 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.