Skip to main content

Export

In manchen Situationen gibt es die Anforderung das aktuell im Viewer angezeigte Dokument in einer Drittanwendung weiterzuverarbeiten. Für solche Anforderungen bietet das jadice web toolkit die Möglichkeit ein Dokument serverseitig in die Formate PDF, PDF/A, TIFF und Postscript zu exportieren. Zusätzlich kann das unveränderte Originaldokument ausgegeben oder ein PDF-Export als Anhang einer E-Mail (EML) bereitgestellt werden. Die exportierte Datei kann dann an eine Drittanwendung übergeben werden. Zu beachten dabei ist, dass die Exportfunktion für die Druckdatenaufbereitung entwickelt wurde. Daher liegt der primäre Fokus auf der Gewährleistung eines optisch einwandfreien Exportergebnisses, nicht auf anderen Aspekten, wie beispielsweise der Durchsuchbarkeit der resultierenden Daten.

Unterstützte Exportformate​

Das jadice web toolkit unterstützt direkt die folgenden Formate für die Erstellung von Exports. Alle zugehörigen Exporter-Instanzen werden über die ExporterFactory erzeugt:

FormatFactory-MethodeMIME-TypeEndung
PDFcreatePDFExporter(), createPDFExporter(OpenAction)application/pdf.pdf
PDF, vollständig gerastertcreateRasterizingPDFExporter(OpenAction)application/pdf.pdf
PDF, geschwärzt (Redaction)createRedactionPDFExporter(OpenAction, String...)application/pdf.pdf
PDF/AcreatePDFaExporter(OpenAction, PDFAConformance)application/pdf.pdf
TIFFcreateTIFFExporter()image/tiff.tiff
PostscriptcreatePostscriptExporter()application/postscript.ps
OriginaldokumentcreateOriginalExporter(), createOriginalExporter(String)abhängig vom Quellformatabhängig vom Quellformat
E-Mail mit PDF-AnhangcreateMailExporter(String, String, String, String, String)message/rfc822.eml

Abhängigkeiten​

Um die Export-Funktion nutzen zu können, muss die entsprechende Maven-Dependency eingebunden werden:

<dependency>
<groupId>com.levigo.jadice.webtoolkit</groupId>
<artifactId>webtoolkit-export</artifactId>
</dependency>

Die Exporter-API​

Um Exports zu erzeugen, stellt das jadice web toolkit eine entsprechende API zur Verfügung. Diese ermöglicht es, Dokumente, welche im Web-Client zur Anzeige gebracht werden, über den Server in ein gewünschtes Format zu überführen.

Exporter selbst ist ein allgemeines Interface, das eine grundsätzliche API für die Erstellung von Exportdatenströmen bereitstellt.

Eine konkrete Instanz eines Exporter kann über die ExporterFactory erstellt werden. Diese Klasse stellt eine Reihe von Methoden für die Erzeugung von Exporter für verschiedene Formate bereit.

Das Exporter-Interface​

MethodeBeschreibung
boolean isAvailable()Gibt an, ob die Exporter-Instanz auf dem aktuellen System verwendet werden kann. Nicht jeder Exporter ist auf jeder JVM verfügbar (siehe Postscript).
EventList<Page> getSourcePages()Die veränderbare Liste der zu exportierenden Seiten. Diese Liste ist vor dem Export mit den gewünschten Seiten zu füllen.
void export(OutputStream output)Führt den Export aus und schreibt das Ergebnis in den übergebenen OutputStream.
void export(Provider<OutputStream, IOException> output)Wie oben, allerdings wird der OutputStream erst beim Schreiben über den Provider bezogen.
void addExportStatusListener(ExportStatusListener listener)Registriert einen ExportStatusListener, dessen Methode onExportFailed() bei einem fehlgeschlagenen Export aufgerufen wird.
void setRenderControlsInventory(RenderControlsInventory inventory)Übergibt clientseitig gesetzte Render-Einstellungen (z. B. Rotation, Gradationskurve), die auf die exportierten Seiten angewendet werden. Berücksichtigt wird dies von den auf dem jadice-Generator basierenden Exportern (PDF, PDF/A, gerastertes PDF, Redaction-PDF, TIFF, E-Mail); beim Postscript- und Original-Export ist der Aufruf wirkungslos.
CancelHandler getCancelHandler()Liefert einen CancelHandler, über den ein laufender Export abgebrochen werden kann.
String getExportDescription()Bezeichnung des Exportvorgangs, die beim Logging des zugrundeliegenden Generators verwendet wird.

Zu beachten:

  • Die Liste der registrierten ExportStatusListener wird über ein Feld des Interfaces gehalten und ist damit implizit static. Registrierte Listener gelten also für alle Exporter-Instanzen der JVM und werden nicht automatisch entfernt. Listener sollten daher nur einmalig registriert werden.
  • Eine Exporter-Instanz ist für genau einen Exportvorgang gedacht. Der TIFF-Export ersetzt zudem den Inhalt von getSourcePages() durch Kopien der Seiten (die Annotationen werden dabei in eine eigene, druckbare Ebene übernommen).

JPSExporter​

JPSExporter erweitert Exporter um die Methode getPrintJobConfiguration(). Über die zurückgegebene, veränderbare PrintJobConfiguration der jadice document platform lassen sich typische Druckeinstellungen vorgeben. Verwendet wird dieses Interface vom Postscript-Export, der intern über die Java Print Service (JPS) API arbeitet. Der Aufruf eines Druckdialogs ist dabei fest deaktiviert, der Druckauftrag wird synchron abgearbeitet.

Factory-Methoden der ExporterFactory​

createPostscriptExporter()​

Erstellt einen JPSExporter für die Ausgabe in das Postscript-Format.

Achtung: Um Postscript erzeugen zu können, muss die eingesetzte JVM eine Postscript-Unterstützung in Form einer StreamPrintServiceFactory für den MIME-Type application/postscript bieten. Ist dies nicht der Fall, ist der Rückgabewert der Methode null. Der Rückgabewert muss daher vor der weiteren Verwendung geprüft werden.

createPDFExporter()​

Erstellt einen Exporter für die Ausgabe in das PDF-Format.

Hierbei ist zu beachten, dass der generierte Datenstrom für die Aufbereitung und Erstellung von Dokumenten für den Druck entwickelt wurde. Daher liegt der primäre Fokus auf der Gewährleistung eines optisch einwandfreien Druckergebnisses, nicht auf anderen Aspekten, wie beispielsweise der Durchsuchbarkeit der resultierenden Daten. Soweit möglich wird die Struktur des Quelldokuments übernommen; ist das nicht möglich, wird auf eine seitenweise Rasterisierung zurückgegriffen.

createPDFExporter(OpenAction)​

Erstellt einen Exporter für die Ausgabe in das PDF-Format. Die erzeugte Exporter-Instanz bettet die übergebene "Open Action" in den generierten Datenstrom ein. Wird der Datenstrom mit einem PDF Viewer geöffnet, der Open Actions unterstützt (z.B. Chrome, Firefox, Edge oder Acrobat Reader), blendet dieser z.B. im Falle einer PrintOpenAction direkt ohne weitere Benutzeraktion seinen Druckdialog ein. Wird null übergeben, wird keine Open Action eingebettet; das Ergebnis entspricht dann createPDFExporter().

createPDFaExporter(OpenAction, PDFAConformance)​

Erstellt einen Exporter für die Ausgabe in das PDF/A-Format. Die erzeugte Exporter-Instanz bettet die übergebene "Open Action" in den generierten Datenstrom ein (s.o.). Über den Parameter conformance (PDFAConformance) wird der Conformance-Level festgelegt, nach welchem das PDF/A-Dokument erzeugt wird. Zur Auswahl stehen PDFA2b, PDFA2u und PDFA2a (ISO 19005-2) sowie PDFA3b, PDFA3u und PDFA3a (ISO 19005-3). Wird für einen der beiden Parameter null übergeben, entfällt die Open Action bzw. wird PDFAConformance.PDFA2b verwendet.

caution

Die frühere Variante createPDFaExporter(OpenAction, Conformance) mit dem Typ com.levigo.jadice.generator.pdf.internal.profile.Conformance der jadice document platform ist als deprecated markiert. Sie funktioniert unverändert weiter, sollte aber auf PDFAConformance umgestellt werden.

createRasterizingPDFExporter(OpenAction)​

Erstellt einen Exporter für eine gerasterte Ausgabe im PDF-Format. Der generierte Datenstrom besteht rein aus gerasterten Daten, so dass z.B. die Durchsuchbarkeit der resultierenden Daten nicht mehr gegeben ist. Ein typischer Anwendungsfall für diese Art von Export ist das Schwärzen von Dokumentpassagen, um sicherzustellen, dass etwaige Textinhalte unter einer schwärzenden Maskierung nicht mehr zugänglich sind. Sollen nur die maskierten Bereiche unlesbar gemacht, die übrigen Seiteninhalte aber strukturell erhalten werden, ist createRedactionPDFExporter(OpenAction, String...) die passende Alternative.

Eine Open Action kann wie beim Standard-PDF-Export übergeben werden; wird keine benötigt, ist null zu übergeben.

createRedactionPDFExporter(OpenAction, String...)​

Erstellt einen Exporter für die Ausgabe in das PDF-Format, bei dem die durch Annotationen maskierten Bereiche geschwärzt (redigiert) werden. Bevorzugt wird dabei die Struktur des Dokuments bereinigt; ist das nicht möglich, wird die betroffene Seite als Fallback gerastert.

Über den Parameter redactionAnnoTypes werden die Archetyp-Namen (AnnotationType#getArchetypeName()) derjenigen Annotationen angegeben, die einen zu schwärzenden Bereich markieren. Werden keine passenden Annotationen gefunden, findet keine Schwärzung statt. Die im Standardfall verwendeten Typen werden über ExportHelper.getRedactionTypes() verwaltet (Vorgabe: Mask und TextMask).

Eine Open Action kann wie beim Standard-PDF-Export übergeben werden; wird keine benötigt, ist null zu übergeben.

createTIFFExporter()​

Erstellt einen Exporter für die Ausgabe in das TIFF-Format.

createOriginalExporter() und createOriginalExporter(String)​

Erstellt einen Exporter, der den Originaldatenstrom des Dokuments unverändert ausgibt. Annotationen werden dabei nicht exportiert.

Besteht ein Dokument aus mehreren Quelldatenströmen (zusammengesetzte Dokumente), werden alle beteiligten Datenströme in ein ZIP-Archiv geschrieben. In diesem Fall muss dem Export ein java.util.zip.ZipOutputStream übergeben werden. Für die Zwischenablage der einzelnen Datenströme werden temporäre Dateien mit dem Präfix jadice-export- erzeugt. Der optionale Parameter tempFolderPath legt das Verzeichnis für diese temporären Dateien fest; ohne Angabe (bzw. bei null) wird java.io.tmpdir verwendet.

Da das Ergebnis dem Quellformat entspricht, sind MIME-Type und Dateiendung nicht vorgegeben, sondern müssen aus dem Quelldokument abgeleitet werden.

createMailExporter(String, String, String, String, String)​

Erstellt einen Exporter, der eine E-Mail-Datei (.eml, message/rfc822) erzeugt, die das Dokument als PDF-Anhang enthält. Der Anhang wird über den PDF/A-Export mit dem Conformance-Level PDFA2b erstellt.

Die Parameter lauten in dieser Reihenfolge:

ParameterBedeutung
subjectBetreff der erzeugten E-Mail.
mailBodyTextText der E-Mail. Darf leer sein.
contentTypeMIME-Content-Type des Textes inklusive Zeichensatz, z. B. text/plain; charset=UTF-8 oder text/html; charset=UTF-8. Bei HTML muss der Text gültiges, maskiertes HTML sein.
fileNameErster Teil des Anhangnamens; die Endung .pdf wird ergänzt.
tempFolderPathVerzeichnis für die temporäre Datei des Exports.

Die erzeugte E-Mail ist mit dem Header X-Unsent: 1 als noch nicht gesendet markiert, so dass sie in einem E-Mail-Client geöffnet und vom Benutzer versendet werden kann. Beim Export wird eine temporäre Datei mit dem Präfix jadice-export-mail- im über tempFolderPath angegebenen Verzeichnis (bzw. in java.io.tmpdir, falls null übergeben wird) erzeugt und anschließend wieder gelöscht.

Wird der Export über die im Toolkit enthaltene Serverkomponente ausgeführt, stammen Betreff, Text, Content-Type und Anhangname aus der Konfiguration unter webtoolkit.export.eml (siehe EML-Konfiguration).

caution

Die Variante createMailExporter(String), die nur das Verzeichnis für die temporäre Datei entgegennimmt, ist als deprecated markiert. Sie verwendet den fest vorgegebenen Betreff Dokument ArchiveExport, einen leeren Text und den Anhangnamen ArchiveExport.pdf.

Hinweis: Für das Schreiben der EML-Datei wird die System-Property mail.host auf localhost gesetzt, um einen langsamen Reverse-DNS-Lookup zu vermeiden.

ExportHelper​

Die Klasse ExportHelper stellt statische Hilfsmethoden rund um den Export bereit:

MethodeBeschreibung
getRenderControlsInventory(Document)Liest die im Dokument unter der Property serializedRenderControls hinterlegten Render-Einstellungen und liefert ein RenderControlsInventory, das über Exporter#setRenderControlsInventory(RenderControlsInventory) gesetzt werden kann. Berücksichtigt werden die Eigenschaften rotation und gradationCurve. Sind keine Einstellungen vorhanden, ist der Rückgabewert null.
getRenderControlsInventory(Document, String...)Wie oben, allerdings mit einer eigenen Liste der zu berücksichtigenden Eigenschaften.
getRedactionTypes()Liefert die Annotationstypen, die beim Redaction-Export geschwärzt werden. Vorgabe: Mask und TextMask.
setRedactionTypes(Collection<String>)Ersetzt die Liste der zu schwärzenden Annotationstypen.

Die Redaction-Typen werden statisch gehalten und gelten damit anwendungsweit. Sie sollten daher einmalig beim Start der Anwendung gesetzt werden.

Zuordnung von ExportType zu Exporter​

Wird der Export über die im Toolkit enthaltene Serverkomponente (com.levigo.jadice.web.server.export.ExportOperationMessageListener) ausgeführt, ergibt sich die verwendete Exporter-Instanz aus dem vom Client übermittelten ExportType (com.levigo.jadice.web.shared.model.export.ExportType):

ExportTypeVerwendeter Exporter
PDFcreatePDFExporter()
PDF_SHOW_PRINT_DIALOG_ON_OPENcreatePDFExporter(new PrintOpenAction())
PDF_RASTERIZEDcreateRasterizingPDFExporter(null)
PDF_REDACTcreateRedactionPDFExporter(null, ExportHelper.getRedactionTypes())
PDF_AcreatePDFaExporter(null, PDFAConformance.PDFA2b)
POSTSCRIPTcreatePostscriptExporter()
TIFFcreateTIFFExporter()
ORIGINALcreateOriginalExporter(tempFolderPath)
EMLcreateMailExporter(subject, body, contentType, fileName, tempFolderPath) — die ersten vier Werte stammen aus webtoolkit.export.eml

Das für die temporären Dateien verwendete Verzeichnis stammt aus der Server-Konfiguration (webtoolkit.exportConfiguration.tempFolderPath).

Verwendung der Exporter-API​

Die Verwendung der Exporter- API folgt im Allgemeinen einem einfachen Ablaufschema.

Ablauf einer Export-Datenstrom-Erzeugung mit der Exporter-API:

Document document = // document reference created elsewhere (1)
OutputStream out = new FileOutputStream(new File("outfile.pdf")); // (2)

Exporter exporter = ExporterFactory.createPDFExporter(); // (3)

document.getPages().getReadWriteLock().readLock().lock(); // (4)
try {

exporter.getSourcePages().addAll(document.getPages());

} finally {
document.getPages().getReadWriteLock().readLock().unlock();
}

exporter.export(out); // (5)

out.close(); // (6)
  1. Das zu druckende Document. Diese Document Instanz kann aus verschiedensten Quellen stammen. Die gebräuchlichste Art ist die Verwendung der Document-Referenz innerhalb der serverseitigen Verarbeitung eines Exportauftrags. Details zu dieser Vorgehensweise sind im Kapitel „Export aus der Webanwendung heraus“ zu finden.
  2. Ein java.io.OutputStream , welcher als Ausgabeziel verwendet werden soll. In diesem Beispiel wird der Datenstrom in eine lokale Datei geschrieben. Auf einem ähnlichen Weg könnten Druckdaten über das Netzwerk an einen Printserver verschickt werden.
  3. Erstellen eines Exporter. In diesem Beispiel wird ein PDF Exporter erzeugt. Bei Exportern, die nicht auf jedem System verfügbar sind (z.B. Postscript), ist zusätzlich isAvailable() bzw. der Rückgabewert der Factory-Methode zu prüfen.
  4. Setzen der zu exportierenden Seiten. Hierbei ist es wichtig, die Seitenliste mit einem ReadWriteLock zu sperren, um Modifikationen von anderen Threads an diesem Document vorzubeugen.
  5. Ausführen des eigentlichen Exports. Hierbei werden die Exportdaten in den mit out benannten OutputStream geschrieben.
  6. Wurde der Export durchgeführt, muss der OutputStream noch geschlossen werden. Wird dies nicht gemacht, kann nicht sichergestellt werden, dass die verwendete java.io.OutputStream -Implementation keine Daten mehr im Hauptspeicher zwischenpuffert.

Export aus der Webanwendung heraus​

Der Export aus der Webanwendung heraus wird über den Messaging-Mechanismus des jadice web toolkit abgewickelt. Der Client schickt eine Nachricht mit den Exportparametern an den Server, der Server erzeugt den Export, legt ihn als temporäre Datei ab und meldet dem Client eine ID zurück, über die die Datei heruntergeladen werden kann.

Die serverseitige Gegenstelle ist com.levigo.jadice.web.server.export.ExportOperationMessageListener aus dem Artefakt webtoolkit-export. Sie ist als Spring-@Component mit @MessageName(DefaultMessageNames.EXPORT) annotiert und wird bei Verwendung des Spring-Boot-Integrationsmoduls automatisch registriert.

Hinweis: Die früher an dieser Stelle beschriebenen Basisklassen (AbstractExportServerOperation, AbstractPDFExportServerOperation, AbstractPostscriptExportServerOperation, AbstractTIFFExportServerOperation) und die zugehörige ServerOperation-API stehen nicht mehr zur Verfügung.

Ablauf eines Exportvorgangs​

  1. Der Client sendet die Nachricht EXPORT (DefaultMessageNames.EXPORT) mit den Exportparametern (Client: ExportConfiguration, Server: ExportOperationDTO).
  2. ExportOperationMessageListener#consume erzeugt über createDefaultExporter(ExportType) die passende Exporter-Instanz, liefert dessen CancelHandler zurück und startet den eigentlichen Export asynchron über einen ExecutorService.
  3. Serverseitig wird aus dem übermittelten Snapshot ein Document erzeugt (DocumentSnapshotConverter). Anschließend werden die Seiten für den Export aufbereitet: Auswahl der Seitenbereiche, Filtern deaktivierter Annotationstypen, optionales Stempeln sowie das Übernehmen clientseitiger Render-Einstellungen über Exporter#setRenderControlsInventory(RenderControlsInventory).
  4. Der Export wird in eine temporäre Datei im konfigurierten Temp-Verzeichnis geschrieben (Präfix jadice-export-) und als ExportMeta im ExportRepository registriert.
  5. Die dabei erzeugte ID wird dem Client mit der Nachricht EXPORT_FINISHED (ExportFinishedDTO) übermittelt. Schlägt der Export fehl, wird das Ende der Konversation (EOC) mit einer Fehlermeldung gesendet.
  6. Der Client lädt die Datei über das DownloadExportServlet unter /jwt/export/<id> herunter. Nach Erreichen der konfigurierten Anzahl an Downloads wird die Datei entfernt; zusätzlich räumt der ExportCleanupScheduler verwaiste Dateien regelmäßig auf.

Parameter eines Exportauftrags​

ParameterBeschreibung
documentSnapshot des zu exportierenden Dokuments (DocumentSnapshot bzw. DocumentSnapshotDTO).
typeZielformat als ExportType (siehe Tabelle „Zuordnung von ExportType zu Exporter").
downloadPurposeDownloadPurpose.SAVE setzt beim Download den Header Content-Disposition: attachment, die Datei wird also gespeichert. Bei DownloadPurpose.OPEN wird die Datei direkt vom Browser geöffnet — das ist die Voraussetzung für das clientseitige Drucken mit eingebetteter Print Open Action.
disabledAnnoTypesNamen der Annotationstypen, die nicht exportiert werden sollen. Der Sonderwert ALL blendet alle Annotationen aus; ausgenommen bleiben die Redaction-Typen (siehe ExportHelper) sowie serverseitig gerenderte Annotationen.
selectedPagesZu exportierende Seitenbereiche als Liste von Bereichen, jeweils [erste, letzte] oder [seite], 1-basiert (z. B. [[1,3],[7]]). Ohne Angabe wird das gesamte Dokument exportiert.
stampTextOptionaler Stempeltext. Ist er gesetzt, hat er Vorrang vor dem serverseitig konfigurierten Stempeltext.

Auslösen des Exports im Client (Angular/TypeScript)​

Der Client-seitige Einstiegspunkt ist die Utility Export aus dem webtoolkit-ng-client. Export.requestExport(configuration) liefert die Download-URL des Exports, Export.download(configuration, liveMessage) löst zusätzlich den Download bzw. das Öffnen der Datei aus:

const document = viewer?.getTransferableDocument();
if (!document) {
return;
}

const configuration: ExportConfiguration = {
document: document.toSnapshot().toDTO(),
type: ExportType.PDF,
downloadPurpose: DownloadPurpose.SAVE,
disabledAnnoTypes: [],
};

await Export.download(configuration, TRANSLATE("exportPDFComplete"));

Für die gängigen Fälle enthält der Client bereits vorbereitete Actions (u.a. PRINT, EXPORT_PDF, EXPORT_PDF_A, EXPORT_REDACTED_PDF, EXPORT_TIFF, EXPORT_EML, EXPORT_ORIGINAL), die lediglich in die Oberfläche eingebunden werden müssen.

Zu beachten: Das clientseitige ExportType-Enum enthält den Wert PDF_RASTERIZED nicht, obwohl der Server ihn unterstützt. Wird ein rein gerasterter PDF-Export benötigt, muss der Typ als Zeichenkette übermittelt oder serverseitig auf einen anderen Typ abgebildet werden.

Auslösen des Exports im GWT-Client​

Im GWT-Client wird der Export über ein Command ausgelöst. Als Vorlage kann com.levigo.jadice.web.demo.common.client.export.ExportCommand aus dem Democode dienen, das mit ExportType und DownloadPurpose parametrisiert wird:

// PDF-Export, der lokal gespeichert wird
final ExportCommand exportCommand = new ExportCommand(ExportType.PDF, DownloadPurpose.SAVE);

// Druck über eine eingebettete Print Open Action
final ExportCommand printCommand =
new ExportCommand(ExportType.PDF_SHOW_PRINT_DIALOG_ON_OPEN, DownloadPurpose.OPEN);

Das Command sendet die Nachricht EXPORT und öffnet nach Erhalt der Nachricht EXPORT_FINISHED die Download-URL des Exports.

Serverseitige Anpassung​

Die Zuordnung von ExportType zu Exporter erfolgt in der protected-Methode createDefaultExporter(ExportType) und kann durch eine eigene Ableitung von ExportOperationMessageListener angepasst werden.

Dabei ist zu beachten, dass pro Nachrichtenname nur ein MessageListener registriert werden kann: Eine zweite Registrierung für den Namen EXPORT wird mit einer IllegalArgumentException abgelehnt (die Registrierung schlägt fehl und wird protokolliert).

Wird das jadice web toolkit ohne Spring Boot initialisiert, ist der Listener manuell zu erzeugen, mit ExportRepository, ExecutorService und DocumentSnapshotConverter zu versorgen und über JWTServerContext#setMessageListeners(List) zu registrieren. Ein vollständiges Beispiel findet sich im Kapitel Spring-Integration.

Das DownloadExportServlet wird bei Verwendung des Spring-Boot-Integrationsmoduls durch ExportServletRegistration automatisch unter /jwt/export/* registriert.

Konfiguration​

Die serverseitigen Einstellungen des Exports liegen unter dem Präfix webtoolkit.exportConfiguration (z.B. in der application.yml):

PropertyStandardwertBeschreibung
tempFolderPathjava.io.tmpdirVerzeichnis, in dem temporäre Exportdateien abgelegt werden.
maxDownloadCount1Anzahl der Downloads, nach denen die Exportdatei entfernt wird.
tempFileCleanupInterval30Intervall in Minuten, in dem der ExportCleanupScheduler läuft. Werte kleiner als 1 deaktivieren die Aufräumaktion.
tempFileMaxAge5Alter in Minuten, ab dem temporäre Exportdateien entfernt werden.
stampTextnicht gesetztText, der beim Export als Stempel auf die Seiten aufgebracht wird. Ein im Exportauftrag übermittelter Stempeltext hat Vorrang.
stampResolution200Auflösung (dpi) für die Aufbereitung gestempelter Seiten.
stampFontSize24Schriftgröße des Stempeltexts.
stampFontNamesans-serifSchriftart des Stempeltexts.
stampOriginalPageScale100Skalierung des Originalseiteninhalts in Prozent beim Stempeln.

Da die Exportdateien im Dateisystem des Servers abgelegt werden, sollte das Temp-Verzeichnis so gewählt werden, dass es nur für die Anwendung zugänglich ist. Die Verweildauer der Dateien lässt sich über tempFileMaxAge, tempFileCleanupInterval und maxDownloadCount begrenzen. Die Download-URL /jwt/export/<id> enthält lediglich die generierte ID; sie unterliegt der Zugriffskontrolle der Anwendung.

EML-Konfiguration​

Beim EML-Export wird eine EML-Datei erzeugt, die das zu exportierende Dokument als PDF enthält. Optional kann der Betreff und der Inhalt dieser EML-Datei angepasst werden:

webtoolkit:
#
# Configuration of the EML ("send as mail") export. Without these entries the export behaves as
# before: subject "Dokument ArchiveExport", empty body, attachment "ArchiveExport.pdf".
#
export:
eml:
# Subject of the generated mail
subject: "Dokument ArchiveExport"
# Body of the generated mail. Use a YAML block scalar for multiple lines:
# body: |
# Sehr geehrte Damen und Herren,
#
# im Anhang finden Sie das angeforderte Dokument.
body: ""
# MIME content type of the body, including the charset. Use "text/html; charset=UTF-8" to
# configure an HTML body - in that case the configured text must be valid, escaped HTML.
contentType: "text/plain; charset=UTF-8"
# First part of the attachment name; the extension ".pdf" is appended automatically
fileName: "ArchiveExport"