Schildwächter – Ideas and Solutions by Carsten Thiel

Die Timbox

Nachdem unser PDF optisch gut aussah, fehlte jetzt nur noch ein kleines technisches Detail. Die Trimbox.

Hatte ich auch vorher noch nichts von gehört. PDFs haben diverse Boxen, die steuern welchen Teil der Seite man am Monitor sieht, bis wohin der Inhalt geht, welcher Teil gedruckt wird, welche Safearea es dafür gibt und noch eine andere, die ich nie verstanden habe.

DTP-Anwendungen wie InDesign und Co, inklusive Scribus können damit auch etwas anfangen. LaTeX ist da etwas spitzfindiger. PdfTeX kann es prinzipiell schon lange. Dafür kann man einfach in der Präambel den Code

\pdfpagesattr{ /TrimBox [9 9 621 801] }

einfügen. Zu beachten ist, dass die Angaben in bp, sogenannten big pt sind. Keine Ahnung wie man das in mm umrechnet und was das hier für Werte sind. Für XeTeX, auf das wir der Schrift wegen angewiesen sind, gibt es die Unterstützung erst in der allerneuesten Version:

\usepackage{atbegshi}
\AtBeginShipout{\special{pdf: put @thispage \<\</TrimBox [9.0 9.0 621.0 801.0]\>\>}}

Letztlich haben wir es mit einem kleinen Python-Skript nachträglich gemacht. Der Vollständigkeit halber hier unser Code:

from reportlab.lib.units import mm
from pyPdf import PdfFileWriter, PdfFileReader
pdf = PdfFileReader(file('eingang.pdf', 'rb'))
output = PdfFileWriter()
for seitenzahl in range(0,pdf.numPages):
    p = pdf.getPage(seitenzahl)
    for box in (p.mediaBox, p.cropBox, p.bleedBox):
        linksuntenx = box.getLowerLeft_x()
        linksunteny = box.getLowerLeft_y()
        box.lowerLeft = (linksuntenx,
                          linksunteny)
        box.upperRight = (linksuntenx + 164.5*mm,
                          linksunteny+226*mm)
    for box in (p.trimBox, p.artBox):
        box.lowerLeft = (linksuntenx + 8*mm,
                          linksunteny + 8*mm)
        box.upperRight = (linksuntenx + 156.5*mm,
                          linksunteny + 218*mm)
    output.addPage(p)
output.write(open('ausgang.pdf', 'wb'))

Dieses Skript ist auf eine A5-Seite mit 8mm umlaufendem Anschnitt angepasst. Man beachte dass die gesamte PDF-Datei geladen, im RAM bearbeitet und erst dann wieder geschrieben wird. Außerdem ist die PyPDF-Bibliothek auch noch recht neu.

Tags: latex python