Übergabe von E-Mails als PDF mit eingebetteten Anlagen

This commit is contained in:
2026-09-07 22:33:55 +02:00
parent fd87813cbe
commit d032e3b19c
16 changed files with 1363 additions and 28 deletions

View File

@@ -14,7 +14,7 @@ WebExtensions, LibreOffice UNO.
| Ort | Befehl | Wirkung |
|---|---|---|
| Kontextmenü am Anhang | Anhang in Paperless ablegen | ausgewählte Anhänge als Dokument |
| Kontextmenü in der Nachrichtenliste | E-Mail in Paperless ablegen | vollständige Nachricht als `.eml` |
| Kontextmenü in der Nachrichtenliste | E-Mail in Paperless ablegen | als PDF mit eingebettetem Original, wahlweise als `.eml` |
| Schaltfläche im Nachrichtenfenster | dasselbe für die angezeigte Nachricht | |
| Schaltfläche im Verfassenfenster | Aus Paperless einfügen | als Anhang oder als Freigabelink |
@@ -35,9 +35,18 @@ abgewählt — sie gehören zur Darstellung der Nachricht, nicht zum Inhalt.
Wer sie alle mit archiviert, hat nach einem Jahr hunderte Logos im Bestand.
Die Schwelle liegt bei 8 KB und ist einstellbar.
**Die ganze Nachricht als `.eml`.** Anhänge bleiben darin enthalten;
Paperless legt sie nicht als eigene Dokumente an, aber die Datei ist
vollständig und lässt sich jederzeit wieder in einem Mailprogramm öffnen.
**Die ganze Nachricht als PDF.** Betreff als Überschrift, darunter ein
grau hinterlegter Kopfblock mit Konto, Absender, Empfängern, Datum und
Anlagen, dann der Nachrichtentext. Zitierte Abschnitte stehen grau und
eingerückt — bei langen Verläufen sieht man so auf einen Blick, was neu
ist.
Eingebettet werden die vollständige Originalnachricht als `.eml` sowie
alle Anhänge im Original. Es geht also nichts verloren, auch wenn die
Darstellung nicht originalgetreu ist.
Wer lieber die Rohfassung will, stellt das in den Einstellungen um oder
nimmt das Häkchen im Ablegen-Dialog heraus.
**Titel aus dem Betreff.** Präfixe wie `AW:` oder `Fwd:` werden entfernt —
sie tragen im Archiv nichts bei und stören beim Sortieren.
@@ -45,6 +54,52 @@ sie tragen im Archiv nichts bei und stören beim Sortieren.
**Klassifizierung direkt danach.** Sonst trägt ein neues Dokument nur den
Titel, und nachträglich macht man es erfahrungsgemäß nicht mehr.
### Warum kein originalgetreues Abbild
HTML-Nachrichten werden als Text gesetzt. Eine WebExtension hat keine
Darstellungsmaschine, die HTML nach PDF überträgt, und **Thunderbird
bietet Erweiterungen keine Druckfunktion an** — die tabs-Schnittstelle
kennt in Manifest V3 kein `saveAsPDF`, anders als in Firefox. Geprüft an
der API-Dokumentation für Thunderbird 156.
Für die Umwandlung von HTML nach Text übernimmt
`messengerUtilities.convertToPlainText()` die Arbeit. Das ist dieselbe
Funktion, die beim Antworten in Nur-Text greift, und liefert deutlich
bessere Ergebnisse als eine selbstgebaute Entschlackung.
### Der PDF-Erzeuger
Selbst geschrieben, in `lib/pdf.js`. Der Grund ist Vorsatz: Eine
Erweiterung soll nichts nachladen, und eine mitgelieferte Bibliothek wie
`pdf-lib` wäre rund ein Megabyte für einen Bruchteil ihrer Fähigkeiten.
Gebraucht werden hier nur Text und eingebettete Dateien.
Erzeugt wird PDF 1.7 mit den eingebauten Schriften Helvetica und
Helvetica-Bold. Die sind in jedem Betrachter vorhanden und müssen nicht
eingebettet werden.
**Ausdrücklich kein PDF/A.** Dafür wären eingebettete Schriftschnitte, ein
Farbprofil und XMP-Metadaten nötig — und vor allem eine Prüfung mit
veraPDF. Ein Dokument als PDF/A zu bezeichnen, ohne es geprüft zu haben,
wäre eine leere Behauptung.
Einstellbar sind Papierformat (A4, A5, Letter, Legal), die vier Ränder in
Millimetern und die Grundschriftgröße (Vorgabe 11 Punkt).
### Das Konto im Kopfblock
Bei Nachrichten an Blindkopie-Empfänger geht aus An und Kopie nicht
hervor, welches Konto sie empfangen hat. Im Archiv ist das später die
entscheidende Angabe.
Ermittelt wird sie auf zwei Wegen: über die accounts-Schnittstelle, die
allerdings die Berechtigung `accountsRead` braucht, und ersatzweise über
die Zustellkopfzeilen `Delivered-To`, `X-Original-To` und Verwandte.
Letztere setzt der zustellende Server, und sie sind nicht immer vorhanden
— Postfix und Dovecot setzen sie zuverlässig, Microsoft-Umgebungen oft
nicht. Findet sich nichts, fehlt die Zeile im PDF ganz.
---
## Einfügen in Entwürfe
@@ -233,3 +288,6 @@ schließt jede Gewährleistung aus.
Vor dem ersten produktiven Einsatz: eine Testnachricht ablegen und in
Paperless nachsehen, ob Titel, Datum und Anhänge stimmen.
Es wird weder eine Gewähr noch eine Haftung übernommen. Für entstandene
Schäden haftet der jeweilige Anwender. Die Nutzun erfolgt auf eigenes Risiko.