Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Benutze Poppler fuer PDF-Verarbeitung beim ZUGFeRD-Import #300

Open
wants to merge 3 commits into
base: master
Choose a base branch
from

Conversation

jgrassler
Copy link
Contributor

Gegenwaertig benutzt Kivitendo PDF::API2 um die XML-Attachments aus ZUGFeRD-PDFs zu extrahieren. Das verschluckt sich an vielen PDF-Dateien und man bekommt gar nichts. Poppler, die Bibliothek hinter pdfdetach(1) funktioniert hingegen zuverlaessig.

Dieser Branch stellt Kivitendo auf Poppler um. Man braucht dazu Poppler selbst (Ubuntu-Paket libpoppler-dev) und das Perl-Modul Poppler (cpan install poppler - leider kein Ubuntu-Paket vorhanden), fuer die Perl-Bindings. Das Poppler-Modul braucht noch einige Abhaengigkeiten, ueber die man beim cpan install poppler dann stolpern wird. Wenn an diesem Pull-Request Interesse besteht, installiere ich das alles nochmal auf einem frischen System und dokumentiere das alles nochmal im Detail. Fuers Erste ein Dump aus meiner .bash_history ohne Anspruch auf Vollstaendigkeit:

aptitude install build-essential
aptitude install pkg-config
aptitude install poppler-glib
aptitude install libpoppler-glib-dev
aptitude install gobject-introspection
aptitude install libglib-perl
aptitude install libextutils-depends-perl libextutils-pkgconfig-perl
aptitude install libglib-object-introspection-perl

PDF::API2 steigt bei vielen PDFs mit

  PDF file version 1.x at /usr/share/perl5/PDF/API2/Basic/PDF/File.pm line 245.

aus. Das ist bei Poppler nicht der Fall.
Das Extrahieren der XMP-Metadaten erfolgte ueber PDF::API und
blockiert den kompletten Import, insbesondere auch bei PDFs,
die Poppler problemlos importieren kann. Da die Metadaten
ohnehin nur fuer eine Validitaetswarnung verwendet wurden
brachte dieser Code mehr Schaden als Nutzen.
Lade Buchungsvorlage beim ZUGFeRD-Import nur wenn sie
mindestens ein RecordItem enthaelt. Sonst kann es passieren,
dass eine Buchungsvorlage mit keinen RecordItems geladen wird.
In diesem Fall versucht der Versuch, auf das nichtvorhandene
RecordItem zuzugreifen einen Crash von ap.pl.
@jbueren
Copy link
Contributor

jbueren commented Jun 7, 2024

Hallo jgrassler,
danke für Dein Engagement im Bereich kivitendo Entwicklung.
Leider können wir aktuell aber nur Pull Requests bearbeiten, die auch von kivitendo Partner gemacht werden oder die von Personen im Auftrag eines kivitendo Partners erstellt werden.
Beides trifft leider hier nicht zu. Sollte sich das ändern oder unsere Ressourcen-Lage sich verbessern sieht die Situation entsprechend anders aus.
Gruß

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
2 participants