OPUS4 / application

OPUS 4 application.
Other
15 stars 21 forks source link

Manipulation von PDF-Dateien mit PHP #451

Closed j3nsch closed 2 years ago

j3nsch commented 2 years ago

Mit welcher Technologie können von PHP Code aus PDF Dateien manipuliert werden. Es muss mindestens möglich sein ein Deckblatt hinzuzufügen. Die Technologie sollte nach Möglichkeit frei sein, damit sie im Standard-OPUS 4 verwendet werden kann. Es gibt bestimmt Konsolen Tools für Linux, die das ermöglichen.

j3nsch commented 2 years ago

Intern gab es für dieses Thema schon mal ein Jira Ticket.

https://tickets.zib.de/jira/browse/OPUSVIER-4017

Dort wurden folgende Werkzeuge erwähnt.

http://fpdf.de/ http://jpdftweak.sourceforge.net/ https://pdfbox.apache.org/ https://tcpdf.org/

extracts commented 2 years ago

libmergepdf – PHP library for merging PDFs (requirements/dependencies)

extracts commented 2 years ago

Beim Merge von PDFs ist mitunter die PDF-Version sowie deren Komprimierung zu beachten. Z.B. unterstützt das momentan in opus4-pdf verwendete libmergepdf Tool (siehe OPUS4/opus4-pdf#4) in der freien Version des verwendeten FPDI PDF-Parser nur den Merge von unkomprimierten PDFs. Anderfalls wird folgende Exception geworfen:

This PDF document probably uses a compression technique which is not supported by the free parser shipped with FPDI.

Es gibt allerdings eine kommerzielle Variante des FPDI PDF-Parser welche wohl den Merge von komprimierten PDFs unterstützt. Kosten ab 100 EUR aufwärts.

Bei der PDF-Generierung mit Pandoc & LaTeX 2021 werden standardmässig PDFs in der PDF Version 1.5 (inkl. Komprimierung) generiert. Werden PDFs mit Pandoc & XeTeX/XeLaTeX generiert, so kann man eine Ausgabe von PDFs in einer älteren PDF-Version (z.B. PDF-Version 1.4) und ohne Komprimierung mit folgenden Optionen erzwingen:

--pdf-engine=xelatex --pdf-engine-opt=-output-driver="xdvipdfmx -V 4 -z 0"

Dateigröße: Ältere/unkomprimierte PDF-Versionen sind allerdings deutlich größer: In meinen Tests wuchs ein einseitiges PDF-Deckblatt von 112 KB (PDF-Version 1.5, komprimiert) auf 1,7 MB (PDF-Version 1.3, unkomprimiert) bzw. 3,2 MB (PDF-Version 1.4, unkomprimiert) an.

j3nsch commented 2 years ago

Die Erzeugung von Deckblättern und das Hinzufügen zu PDFs wurde umgesetzt. Weitere Verbesserungen sind sicherlich möglich. Es wäre gut die gewählte Lösung hier noch einmal kurz zu beschreiben.