Große Bildersammlungen in PDF umwandeln

Wie im letzten Artikel schon festgestellt, haben viele automatischen PDF-Erzeuger bei großen Datenmengen ein Problem. (Es liegt daran das sie versuchen mehr als 4 GB virtuellen Speicher zu nutzen.)

In dem Fall empfiehlt sich ein eine zweistufige Herangehensweise, und der Satz des PDFs per LaTeX (genauer pdflatex). Um LaTex zu installieren kann man für Mac OS X auf den recht bequemen i-Installer zurückgreifen. Bei den meisten Linuxdistributionen dürfte es auch als Paket vorhanden seien.

Zuerst wandelt man die vorsortierten Bilder in PNG-Dateien um, dazu sind Tools wie der GraphicConverter hilfreich, die eine automatische Umwandlung ganzer Ordner erlauben.

Sobald das erledig ist, legt man einen neuen Ordner an, kopiert die PNG-Dateien in einen Unterordner Namens img. Das Namensschema welches das AppleScript vorher angelegt hat ( (10000 + x)a.png für die Vorderseite des x-ten Blattes, und (10000 + x)b.png für die Rückseite des x-ten Blattes) der Dateien muss eingehalten werden (oder das folgende Skript muss geändert werden).
Dann kopiert man das folgende Shell-Skript in den zuvor angelegten Ordner, und führt es aus (mit dem Programm Terminal in den Ordner wechseln, dann chmod +x Name_der_Skripdatei und ./Name_der_Skripdatei).

#!/bin/sh
#
set -e
# PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

seiten=$( ls -1 img/ | wc -l )
seiten=$[ seiten / 2 ]

echo "\documentclass[a4paper]{scrartcl}" > Dokument.tex
echo "\usepackage[paper=a4paper,left=0mm,right=0mm,top=0mm,bottom=0mm]{geometry}" >> Dokument.tex
echo "\usepackage[ngerman]{babel}" >> Dokument.tex
echo "\usepackage[T1]{fontenc}" >> Dokument.tex
echo "\usepackage[pdftex]{graphicx}" >> Dokument.tex
echo "\usepackage{setspace}" >> Dokument.tex
echo "\usepackage{amsfonts}" >> Dokument.tex
echo "\usepackage{picins}" >> Dokument.tex
echo "\setlength{\parindent}{0em}" >> Dokument.tex
echo "\setlength{\parskip}{0em}" >> Dokument.tex
echo "\setlength{\itemsep}{0pt}" >> Dokument.tex
echo "\setlength{\parsep}{0pt}" >> Dokument.tex
echo "\setlength{\topsep}{0pt}" >> Dokument.tex
echo "\setlength{\partopsep}{0pt}" >> Dokument.tex
echo "\begin{document}" >> Dokument.tex
zaehler=1
while [ $zaehler -le $seiten ] ; do
    echo "\begin{figure} [t]">> Dokument.tex
    echo "    \includegraphics[width=\textwidth]{img/"$[10000 + zaehler]"a.png}" >> Dokument.tex
    echo "\end{figure}">> Dokument.tex
    echo "\clearpage">> Dokument.tex
    echo "\begin{figure} [t]">> Dokument.tex
    echo "    \includegraphics[width=\textwidth]{img/"$[10000 + zaehler]"b.png}">> Dokument.tex
    echo "\end{figure}">> Dokument.tex
    echo "\clearpage">> Dokument.tex
    zaehler=$[zaehler + 1]
done
echo "\end{document}" >> Dokument.tex
pdflatex Dokument.tex

Nachdem einige Zeit lang eine große Menge an Meldungen durchgelaufen sind, sollten am Ende zwei Zeilen erscheinen die in etwa so aussehen:

Output written on Dokument.pdf (124 pages, 4567890 bytes).
Transcript written on Dokument.log.

In dem Ordner sollte nun ein PDF vorhanden seien mit dem Namen „Dokument.pdf“.
Wenn einem das zu groß ist kann man den Trick aus dem letzten Artikel natürlich auch auf dieses PDF anwenden.

Dieser Beitrag wurde unter Allgemein, Linux, Mac veröffentlicht. Setze ein Lesezeichen auf den Permalink.