Sie sind hier

Von pdftex erzeugtes PDF in Originalgröße drucken

Ein Feature vieler PDF Betrachter bringt mich regelmäßig auf die Palme: der verkleinerte Ausdruck eines von pdftex erzeugten PDF. Mit verkleinert meine ich, dass der gesamte Bereich, in dem das virtuelle Stück Papier auf dem Bildschirm bedruckt erscheint, auf dem wirklichen Papier nur verkleinert abgedruckt wird, zugunsten eines größeren Randes.

Natürlich kann man im PDF Betrachter (Adobe Reader, SumatraPDF etc.) irgendein Kästchen anklicken, wonach das Dokument in Originalgröße abzudrucken ist. Aber schon, wenn man jemandem das PDF zum Ausdrucken per Email sendet, muss man dem Empfänger irgendwelche Instruktionen mitschicken, kurz gesagt: Mist.

Wieso diese Programme überhaupt glauben, eine von pdftex erzeugte DIN A4 Seite für den Ausdruck auf DIN A4 Papier verkleinern zu müssen, weiß ich nicht. Hier hat jemand die Theorie aufgestellt, die Ursache sei ein Rundungsfehler bei der Berechnung in den PDF Betrachtern.

Eigentlich gibt es eine ganz einfache Lösung. Man fügt einfach in den Quelltext folgende Zeilen ein (immer schön dran denken: hyperref als letztes Paket laden, außer...):

\usepackage{hyperref}
\hypersetup{pdfprintscaling=None}

Hyperref ist ein unentbehrliches Paket, dank dessen wir mit pdftex ziemlich viele "special effects" von PDF ausnützen können. Hier sorgt die Anweisung im setup dafür, dass der PDF Betrachter grundsätzlich das Dokument nicht skaliert beim Ausdruck, sprich, nicht verkleinert.

Aber der Preis ist, dass es etwas mehr Zeit kostet, das PDF aus dem Quelltext zu erzeugen, als ohne \usepackage{hyperref} darin. Und wenn man hundert Mal am Tag irgendeine TeX-Datei kompiliert, dann spart man sich gerne die Zeit.

Heute morgen bekam ich wieder einmal ein Dokument mit riesigem Rand dank Verkleinerung des Druckbereichs in die Hände, es sah traurig aus. Also habe ich auf tex.stackexchange.com gefragt, ob man es einen Weg gibt, dem PDF eine entsprechende Anweisung »Nicht verkleinern« mitzugeben, ohne hyperref zu laden.

Ein halbe Stunde später hat der Maintainer von hyperref, Heiko Oberdiek, geantwortet und mitgeteilt, was ich in die Präambel meines Quelltexts einfügen muss:

\pdfcatalog{/ViewerPreferences<</PrintScaling/None>>}

Nach nur einem Tag des Testens ist es vielleicht ein wenig verfrüht, hier Hurra zu rufen, aber so wie es aussieht, bin ich damit etwas los, was mir jahrelang auf die Nerven gegangen ist. Also, in allen meine Dokumentenvorlagen von yasnippet habe ich als erste Zeile, noch vor \documentclass{... diesen Befehl eingefügt.

Danke für den Tip, Heiko!

Kommentare

Bild von Markus Kohm

Wenn tatsächlich ein solcher Rundungsfehler das Problem wäre, dann müsste ein: \pdfpagewidth=\dimexpr \pdfpagewidth-1bp\relax in der Dokumentpräambel auch bereits genügen, um die automatische Verkleinerung zu vermeiden.

Ich war bisher immer davon ausgegangen, dass der Reader vom Druckertreiber die nicht bedruckbaren Ränder erfragt und abhängig davon verkleinert. Das hätte man dann eher mit einer passenden BleedBox oder ArtBox lösen können. Nur ist passend da ein wenig relativ, weil man bei TeX leider nie weiß, welcher Bereich tatsächlich beschrieben ist. Theoretisch müsste man dazu als Zwischenschritt pdfcrop für jede Seite aufrufen, das Maximum als Dokumenteinstellung verwenden und am besten für jede einzelne Seite eine eigene ArtBox setzen.

Übrigens verwendet geometry andere Einstellungen für A4 als typearea oder hat das zumindest mal. Deshalb hat scrlttr2 bis vor einiger Zeit immer eine Papiergrößen-Warnung ausgegeben, wenn a4paper als Option angegeben wurde (was gar nicht notwendig ist, weil geometry ohne Option einfach die Einstellung der Klasse übernimmt). In Version 3.12 habe ich dann eine Toleranz von ± 0.1mm eingebaut. Seither ist Ruhe.

Worauf ich eigentlich noch hinweisen wollte: Das Problem mit den PDF-Features ist, dass der Viewer sie auch unterstützen muss, damit sie funktionieren. OK, in Deinem Umfeld ist das wahrscheinlich kein Problem, weil ohnehin jeder Windows + Adobe Reader verwendet.

Hat jemand dieses Problem auch schon mit Okular oder Evince/Atril gehabt? Mir ist das bis jetzt noch nie aufgefallen, es kann aber auch sein, daß ich aus Gewohnheit/Prinzip beim Drucken das Skalieren immer abgeschaltet habe, wenn ich es nicht gebraucht habe.

Bild von Markus Kohm

Mit dem Adobe Reader gab es das Problem auch unter Linux. Seit Adobe den Reader für Linux eingestellt hat und nicht mehr unterstützt, ist das kaum noch relevant. Aber auch damals konnte man die dämliche Voreinstellung des Readers schon ändern. Es gab aber sogar Versionen des Adobe Readers, bei denen das Ändern der Voreinstellung genau zum gegenteiligen Effekte führte. Und dann gibt es natürlich auch noch Druckertreiber, die dem Vorhaben des korrekten Ausdrucks ebenfalls im Weg stehen können. Die Fälle sind zwar inzwischen seltener geworden, aber es gibt sie noch.

Der Adobe Reader ist aber ohnehin einer der schlechtesten PDF-Viewer, die ich kenne. Klar, er kann eine ganze Menge toller Sachen. Nur beim Anzeigen oder Drucken der PDFs hat er immer wieder Probleme.

Bei Okular unter Linux hatte ich auch schon damit zu kämpfen, zumal Okular darauf besteht, bei jedem Ausdruck die Seitenränder neu aus der zum Drucker gehörenden PPD-Datei zu laden.

Ich habe irgendwann einfach in den PPDs die Ränder auf 0 gesetzt:
 *ImageableArea A4/A4: "0 0 595 842"

Da muss man natürlich ausrechnen, wie genau die Maße jeweils aussehen.

Aber ich drucke viel weniger von dem Linux-Notebook, als von meinem Bürorechner, der unter Windows läuft. Und unter Windows wollen auch andere PDF Betrachter verkleinern, nicht nur der von Adobe.

Comments for "Von pdftex erzeugtes PDF in Originalgröße drucken" abonnieren