Hallo,
Ich wollte in meine Rechnungsverwaltung auch eine halb-automatische PDF-Signatur hinzufügen.
Ich habe PDF-over unter Linux zum Laufen gebracht und bin nun recht glücklich damit, möchte aber meinen Weg hier für andere dokumentieren. (Und vielleicht liest jemand, der die Probleme dauerhaft beheben kann, mit):
Die Installation mit "javaws https://webstart.buergerkarte.at/pdf-over/pdf-over.jnlp" lief problemlos und hat alles schön nach /usr/local/PDF-Over/ entpackt. Beim Starten gibt es aber das erste Problem:
log4j:WARN No appenders could be found for logger (at.asit.pdfover.gui.Main).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread "main" java.lang.NoClassDefFoundError: org/eclipse/swt/graphics/Device
at at.asit.pdfover.gui.utils.Messages.getDefaultLocale(Messages.java)
at at.asit.pdfover.gui.utils.Messages.<clinit>(Messages.java)
at at.asit.pdfover.gui.Main.main(Main.java)
Caused by: java.lang.ClassNotFoundException: org.eclipse.swt.graphics.Device
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
... 3 more
Alles anzeigen
Es fehlt die swt library, also habe ich das naheliegenste gemacht und die lib-swt/swt-linux-64.jar nach lib kopiert und erstaunlicherweise funktioniert das.
Nach einem "Fehler beim Laden der SWT-Bibliothek" popup, erscheint die GUI. Doch nach dem Auswählen der Datei passiert nichts:
log4j:WARN No appenders could be found for logger (at.asit.pdfover.gui.Main).
log4j:WARN Please initialize the log4j system properly.
log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for more info.
Exception in thread "main" org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.NoClassDefFoundError: javax/activation/DataSource)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Unknown Source)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Unknown Source)
at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
at at.asit.pdfover.gui.workflow.StateMachineImpl.start(StateMachineImpl.java)
at at.asit.pdfover.gui.Main.main(Main.java)
Caused by: java.lang.NoClassDefFoundError: javax/activation/DataSource
at at.asit.pdfover.signer.pdfas.PdfAs4SignerFactory.createSigner(PdfAs4SignerFactory.java)
at at.asit.pdfover.signator.Signator.getSigner(Signator.java)
at at.asit.pdfover.gui.workflow.PDFSignerImpl.getPDFSigner(PDFSignerImpl.java)
at at.asit.pdfover.gui.workflow.states.PositioningState.getPositioningComposite(PositioningState.java)
at at.asit.pdfover.gui.workflow.states.PositioningState.run(PositioningState.java)
at at.asit.pdfover.gui.workflow.StateMachineImpl.update(StateMachineImpl.java)
at at.asit.pdfover.gui.workflow.StateMachineImpl$1.run(StateMachineImpl.java)
at org.eclipse.swt.widgets.RunnableLock.run(Unknown Source)
... 5 more
Caused by: java.lang.ClassNotFoundException: javax.activation.DataSource
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:582)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:185)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:496)
... 13 more
Alles anzeigen
Anscheinend ist das Programm wohl nicht mit Java 9 kompatibel.
➜ /usr/local/PDF-Over java -version
openjdk version "9.0.4"
OpenJDK Runtime Environment (build 9.0.4+12-Debian-2)
OpenJDK 64-Bit Server VM (build 9.0.4+12-Debian-2, mixed mode)
Zum Glück habe ich noch OpenJDK-8 installiert und damit funktioniert alles perfekt:
/usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java -jar /usr/local/PDF-Over/lib/pdf-over-gui-4.1.16.jar -i ~/tmp/Test.pdf -o ~/tmp/signiert.pdf -b LOCAL -a -s
Ich hoffe, dass das weiterhilft, falls jemand dieselben Probleme haben sollte.
Spannenderweise stürzt das Programm immer noch ab, aber erst nachdem die PDF gespeichert wurde, womit es mich nicht wirklich stört.
Exception in thread "main" org.eclipse.swt.SWTException: Failed to execute runnable (org.eclipse.swt.SWTException: Widget is disposed)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Unknown Source)
at org.eclipse.swt.widgets.Display.runAsyncMessages(Unknown Source)
at org.eclipse.swt.widgets.Display.readAndDispatch(Unknown Source)
at at.asit.pdfover.gui.workflow.StateMachineImpl.start(StateMachineImpl.java)
at at.asit.pdfover.gui.Main.main(Main.java)
Caused by: org.eclipse.swt.SWTException: Widget is disposed
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.SWT.error(Unknown Source)
at org.eclipse.swt.widgets.Widget.error(Unknown Source)
at org.eclipse.swt.widgets.Widget.checkWidget(Unknown Source)
at org.eclipse.swt.widgets.Dialog.checkParent(Unknown Source)
at org.eclipse.swt.widgets.Dialog.<init>(Unknown Source)
at org.eclipse.swt.widgets.MessageBox.<init>(Unknown Source)
at at.asit.pdfover.gui.controls.Dialog.initialize(Dialog.java)
at at.asit.pdfover.gui.controls.Dialog.<init>(Dialog.java)
at at.asit.pdfover.gui.controls.ErrorDialog.<init>(ErrorDialog.java)
at at.asit.pdfover.gui.workflow.StateMachineImpl.update(StateMachineImpl.java)
at at.asit.pdfover.gui.workflow.StateMachineImpl$1.run(StateMachineImpl.java)
at org.eclipse.swt.widgets.RunnableLock.run(Unknown Source)
... 5 more
Alles anzeigen