Tja, schon mal versucht, aus mehreren Bilddateien eine große mehrseitige pdf
-Datei zu machen? Zum Beispiel nach dem Scannen eines handgeschriebenen Schriftstücks? Geht nicht mal mit einem Apple - OK, ich kann's zumindest nicht. Aber mit Java und LaTeX kann ich's:
Der Trick besteht eigentlich nur darin, eine LaTeX-Datei zu erstellen, die die gewünschten Bilder einbindet und daraus eine PDF-Datei erstellt. Eigenschaften des Programms:
Die kompilierte class-Datei: pngtopdf.class
Nun aber der Code:
import java.io.*; import java.util.*; public class PNGtoPDF { public static void main (String [] args) { // Zwischen diese beiden Strings werden später die Bilder eingebunden: String zeilenanfang = "\\noindent\\includegraphics[width=20.4cm]{"; String zeilenende = "} \\clearpage\n"; // Der Anfang der LaTeX-Datei wird gemacht: String texDatei = "\\documentclass[a4paper]{article}\n"+ "\\usepackage[pdftex]{graphics}\n"+ "\\usepackage{graphicx} \n"+ "\\pagestyle{empty}\n\n"+ "\\setlength{\\voffset}{-2.54cm} % Druckerei: Abstand zur Schneidemarke\n"+ "\\setlength{\\topmargin}{0.6cm} % Blattrand - Oberkante Kopfzeile\n"+ "\\setlength{\\headheight}{0cm} % Höhe Kopfzeile\n"+ "\\setlength{\\headsep}{0cm} % Unterkante Kopfzeile - Oberkante Text\n"+ "\\setlength{\\topskip}{0cm} % Oberkante Text - Grundlinie 1. Zeile\n"+ "\\setlength{\\textheight}{29.2cm} % Gesamthöhe Text; ohne letzte Unterlänge\n"+ "\\setlength{\\hoffset}{-2.54cm} % Druckerei: Abstand zur Schneidemarke\n"+ "\\setlength{\\oddsidemargin}{0.2cm} % Linker Rand: allgemein / ungerade Seiten\n"+ "\\setlength{\\evensidemargin}{0.2cm} % Linker Rand: gerade Seiten\n"+ "\\setlength{\\textwidth}{20.6cm} % Textbreite\n\n"+ "\\begin{document}\n\n"; // Der Verzeichnisinhalt wird ausgelesen und alle png-Dateien werden eingebunden: File verzeichnis = new File("."); File [] dateiliste = verzeichnis.listFiles(); Arrays.sort (dateiliste); for (File f: dateiliste) { if (f.getName().endsWith(".png") | f.getName().endsWith(".jpg")) { // Ausgabe aller gefundenen Dateien: // System.out.println (f.getName()); texDatei += zeilenanfang + f.getName() + zeilenende; } } // Jetzt fehlt nur noch das Dateiende: texDatei += "\n\n\\end{document}\n"; // Jetzt gebe ich das Ganze erst mal aus: System.out.print (texDatei); } }
Der Code ist vermutlich nicht optimal, aber immerhin funktioniert er. Für die weitere Verarbeitung benötigt man natürlich pdflatex
. Da das aber zu jeder guten Installation gehört, dürfte das ja kein Problem darstellen…
java pngtopdf > datei.tex pdflatex datei.tex
Danach sollte es im gleichen Ordner schon eine pdf-Datei geben, die alle Bilder enthält…