Dokumente aus Paperless direkt in LibreOffice bearbeiten
Nach der Migration meines Dokumentenarchivs von ecoDMS nach Paperless-ngx fehlte mir eine Funktion, die für mich alltäglich geworden ist. In ecoDMS war es möglich, ein Dokument im Archiv zu öffnen und direkt wieder dorthin zu speichern. Das Öffnen musste im Archiv-Client erfolgen. Speichern war dann direkt aus Libreoffice heraus möglich. So kenne ich das auch aus anderen Dokumentenmanagement-Lösungen - beispielsweise der, die ich beruflich verwende. In Paperless-NGX gibt es diese Anbindung nicht. Über die bereitgestellte API ist es jedoch möglich, diese Funktionalität zu ergänzen: Ein Dokument öffnen, ändern, und die neue Fassung als Version zurückschreiben — ohne den Umweg über Herunterladen, Bearbeiten, Hochladen. Ich habe das AddOn mit KI (Anthropic Claude) erstellt und auf meinem System getestet. Sie sollte sowohl auf Windows- als auch auf Linux-Betriebssystemen funktionieren.
Was sie kann
In LibreOffice erscheint eine eigene Symbolleiste mit fünf Befehlen:
Aus Paperless öffnen — Suchmaske, Trefferliste, und darunter die Versionen des gewählten Dokuments mit Datum und Dateiformat. Geladen wird das Original, nicht die von Paperless erzeugte Archivfassung.
Als neue Version ablegen — die bearbeitete Fassung wird an dasselbe Dokument angehängt. Die bisherige bleibt als Version erhalten.
In Paperless ablegen — entweder als neues Dokument mit eigener Versionskette, oder als neue Version eines anderen vorhandenen Dokuments. Der zweite Fall deckt eine Lücke, die Dokumentenverwaltungen gern offenlassen: Die Rechnung kommt als PDF ins Archiv, die bearbeitbare Fassung entsteht später. Beides gehört zusammen, aber das PDF war zuerst da.
Klassifizierung bearbeiten — Titel, Datum, Korrespondent, Dokumenttyp, Tags. Unbekannte Werte werden nach Rückfrage angelegt.
Freigabelink erzeugen — zeitlich begrenzt, ohne Anmeldung abrufbar, auf Wunsch mit einem Tag am Dokument, sodass freigegebene Dokumente später bequem über die Suche zu finden sind.
Natives speichern weiterhin möglich
Die Erweiterung hängt sich nicht in den normalen Speichern-Knopf ein. Wer Strg+S drückt, speichert lokal — im Archiv passiert nichts. Technisch wäre der andere Weg möglich, aber aufwendig: Paperless als echtes Speicherziel in die Datei-Dialoge zu bringen, erfordert einen UCB Content Provider. Das ist C++-Arbeit in einer sehr dünn dokumentierten Ecke von LibreOffice. Inhaltlich halte ich die eigenen Schaltflächen ohnehin für richtiger. Eine neue Version im Archiv ist ein bewusster Vorgang, kein Nebeneffekt eines Tastendrucks.
Versionen mit Format
Ein Detail, das sich im Gebrauch als wichtig herausgestellt hat: Die Versionsliste zeigt neben Nummer und Datum auch das Dateiformat. Der Grund ist praktisch. Ein Dokument kann als PDF ins Archiv gekommen sein, später wurde eine bearbeitbare ODF-Fassung angehängt — oder umgekehrt. Die Kopfversion zu öffnen ist dann womöglich sinnlos. Nicht bearbeitbare Formate sind markiert und werden schreibgeschützt vorgeschlagen. Vorgeschlagen, nicht erzwungen: Die Formaterkennung kann danebenliegen, und dann soll man trotzdem bearbeitbar öffnen dürfen.
Sicherheit
Der heikelste Schritt ist das Öffnen. Ein Dokument aus dem Archiv ist fremder Inhalt — auch aus dem eigenen Bestand, denn dort landen Dateien aus E-Mail-Anhängen, Scannerordnern und Netzfreigaben. Ein ODT oder DOCX kann Makros enthalten.
Die Erweiterung lädt deshalb mit MacroExecutionMode = NEVER_EXECUTE. Makros werden nicht ausgeführt, auch nicht nach Rückfrage — es gibt keine gelbe Leiste, über die sich jemand versehentlich zur Freigabe klickt. Dazu UpdateDocMode = NO_UPDATE, damit beim Öffnen keine externen Inhalte nachgeladen werden.
Weitere Punkte: Dateinamen aus der Server-Antwort werden vollständig bereinigt, das Arbeitsverzeichnis liegt im Benutzerprofil statt in /tmp, und als Basisadresse werden nur http und https angenommen.
Eine ausführliche Betrachtung liegt dem Repository bei.
Was das AddOn nicht kann
- Kein Schutz vor Parser-Lücken in LibreOffice selbst. Ein präpariertes Dokument, das einen Speicherfehler auslöst, wirkt unabhängig von den Ladeeinstellungen. Dagegen hilft nur, LibreOffice aktuell zu halten.
- Keine Konfliktbehandlung. Paperless kennt keine Sperren; wer zeitgleich am selben Dokument arbeitet, erzeugt zwei Versionen statt eines Konflikts.
- Der Token liegt im Klartext in der Einstellungsdatei. Das entspricht dem, was Desktop-Anwendungen üblicherweise tun, ist aber kein Geheimnisspeicher. Ich empfehle einen eigenen Token für die Erweiterung — der lässt sich einzeln widerrufen.
Installieren
Voraussetzung ist Paperless-ngx 3.0 oder neuer — erst dort gibt es die Dokumentversionierung. Die Installation erfolgt ganz normal über die in LibreOffice enthaltene Verwaltung der Erweiterungen. Dort dann die Installation aus einer Datei auswählen und die heruntergeladene Datei öffnen.
Eine weitere Voraussetzung ist ein installiertes Python auf dem Rechner. Downloads sind für Windows im offiziellen Downloadbereich von pyhton.org und für Linux über die im System enthaltenen Paketmanager verfügbar.
LibreOffice muss vollständig beendet werden, auch der Schnellstarter. Danach unter Extras → Paperless → Verbindung einrichten die Basisadresse und ein API-Token eintragen. Der wird im Benutzerprofil von Paperless erzeugt, nicht in der allgemeinen Verwaltung.
Die Oberfläche liegt in Deutsch, Englisch und Französisch vor.
Quelltext
Alles unter MIT-Lizenz:
Git-Repository: AddOn LibreOffice-Connector
Die Erweiterung ist Python mit UNO-Anbindung und kommt ohne Fremdbibliotheken aus — die in LibreOffice mitgelieferte Python-Laufzeit bringt nur die Standardbibliothek mit, also läuft alles über urllib, inklusive selbstgebautem Multipart-Upload.
Sie ist an einer Instanz erprobt, nicht formal getestet. Rückmeldungen sind willkommen.