Drucken über website
bearbeitet von
Hallo 202,
> zudem will ich nicht das sich ein druck fenster öffnet da ich später automatisch etwas ausdrucken will.
Willkommen im Club. Bei mir geht's - dienstlich - um den Anwendungsfall eines Batch-Drucks: eine Liste von 100 PDFs, 25 davon ankreuzen, PRINT Klicken und derweil Essen gehen. Nope. Jedes PDF will seinen eigenen Druckdialog bekommen (ich könnte die PDFs natürlich am Server zu einem zusammenmixen, aber dann kriegt mein Serverbetreiber das Herzflattern - das braucht riieeesige Speichermengen, neiiin, geht gaaaar nicht!)
Leider ist automatisches Drucken etwas, das die Browser aktiv verhindern. Grund: Stell Dir vor, du besuchst die Seite example.org und bekommst zur Begrüßung erstmal 20 Seiten Werbung auf den Drucker. Schön mit knallbunten Hintergrundfarben, seitenfüllend. Gelle, das will keiner.
Die Idee, es wie mit den Benachrichtigungen zu halten und den User zu fragen, ob das OK ist (so wie bei Benachrichtigungen etc), und dabei "für diese Seite nicht mehr fragen" anzubieten, scheint man für irrelevant zu halten. Oder es gibt immer noch zu viele Missbrauchsmöglichkeiten. Anwendungsfälle wie deinen und meinen interessieren offenbar keinen Browserhersteller.
Was man bei diesem "ich will ohne Rückfrage drucken" aber auch gerne übersieht: es muss auswählbar sein, wohin man drucken möchte, d.h. ein fehlender Druckdialog kann störender sein als einer, den man bestätigen muss.
Wie Du den zu druckenden Bereich auswählst, hat Gunnar Dir ja beschrieben. Für ein PDF ist es das nicht, aber du kannst das PDF klein in einen iframe laden. Wenn der iframe vom gleichen Origin (Protokoll, Hostname und Port) wie deine HTML Seite kommt, dann kannst Du über die contentWindow-Eigenschaft des iframe-Objekts an dessen Inhalt heran und dort print auslösen. Wichtig nur: das geht nur als Folge einer Benutzerinteraktion. Beim Seitenaufruf automagisch loszudrucken ist nicht möglich. Aber immerhin kann man drölf oder mehr iframes mit je einem PDF drin ins DOM schieben und dann über einen PRINT Button in einer Schleife jedem iframe das print-Kommando schicken. Leider kommen dann auch drölf oder mehr Druckdialoge hoch, das geht im Browser nicht anders. Aber damit konnte ich meinen Batch-Druck halbwegs erträglich bereitstellen.
_Rolf_
--
sumpsi - posui - obstruxi