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:
| Format | Factory-Methode | MIME-Type | Endung |
|---|---|---|---|
createPDFExporter(), createPDFExporter(OpenAction) | application/pdf | .pdf | |
| PDF, vollständig gerastert | createRasterizingPDFExporter(OpenAction) | application/pdf | .pdf |
| PDF, geschwärzt (Redaction) | createRedactionPDFExporter(OpenAction, String...) | application/pdf | .pdf |
| PDF/A | createPDFaExporter(OpenAction, PDFAConformance) | application/pdf | .pdf |
| TIFF | createTIFFExporter() | image/tiff | .tiff |
| Postscript | createPostscriptExporter() | application/postscript | .ps |
| Originaldokument | createOriginalExporter(), createOriginalExporter(String) | abhängig vom Quellformat | abhängig vom Quellformat |
| E-Mail mit PDF-Anhang | createMailExporter(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
| Methode | Beschreibung |
|---|---|
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
ExportStatusListenerwird über ein Feld des Interfaces gehalten und ist damit implizitstatic. 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.
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:
| Parameter | Bedeutung |
|---|---|
subject | Betreff der erzeugten E-Mail. |
mailBodyText | Text der E-Mail. Darf leer sein. |
contentType | MIME-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. |
fileName | Erster Teil des Anhangnamens; die Endung .pdf wird ergänzt. |
tempFolderPath | Verzeichnis 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).
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:
| Methode | Beschreibung |
|---|---|
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):
| ExportType | Verwendeter Exporter |
|---|---|
PDF | createPDFExporter() |
PDF_SHOW_PRINT_DIALOG_ON_OPEN | createPDFExporter(new PrintOpenAction()) |
PDF_RASTERIZED | createRasterizingPDFExporter(null) |
PDF_REDACT | createRedactionPDFExporter(null, ExportHelper.getRedactionTypes()) |
PDF_A | createPDFaExporter(null, PDFAConformance.PDFA2b) |
POSTSCRIPT | createPostscriptExporter() |
TIFF | createTIFFExporter() |
ORIGINAL | createOriginalExporter(tempFolderPath) |
EML | createMailExporter(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)
- 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.
- 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.
- 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. - 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.
- Ausführen des eigentlichen Exports. Hierbei werden die Exportdaten in den mit out benannten OutputStream geschrieben.
- 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
- Der Client sendet die Nachricht
EXPORT(DefaultMessageNames.EXPORT) mit den Exportparametern (Client:ExportConfiguration, Server:ExportOperationDTO). ExportOperationMessageListener#consumeerzeugt übercreateDefaultExporter(ExportType)die passende Exporter-Instanz, liefert dessenCancelHandlerzurück und startet den eigentlichen Export asynchron über einenExecutorService.- Serverseitig wird aus dem übermittelten Snapshot ein
Documenterzeugt (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 überExporter#setRenderControlsInventory(RenderControlsInventory). - Der Export wird in eine temporäre Datei im konfigurierten
Temp-Verzeichnis geschrieben (Präfix
jadice-export-) und alsExportMetaimExportRepositoryregistriert. - 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. - Der Client lädt die Datei über das
DownloadExportServletunter/jwt/export/<id>herunter. Nach Erreichen der konfigurierten Anzahl an Downloads wird die Datei entfernt; zusätzlich räumt derExportCleanupSchedulerverwaiste Dateien regelmäßig auf.
Parameter eines Exportauftrags
| Parameter | Beschreibung |
|---|---|
document | Snapshot des zu exportierenden Dokuments (DocumentSnapshot bzw. DocumentSnapshotDTO). |
type | Zielformat als ExportType (siehe Tabelle „Zuordnung von ExportType zu Exporter"). |
downloadPurpose | DownloadPurpose.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. |
disabledAnnoTypes | Namen 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. |
selectedPages | Zu 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. |
stampText | Optionaler 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):
| Property | Standardwert | Beschreibung |
|---|---|---|
tempFolderPath | java.io.tmpdir | Verzeichnis, in dem temporäre Exportdateien abgelegt werden. |
maxDownloadCount | 1 | Anzahl der Downloads, nach denen die Exportdatei entfernt wird. |
tempFileCleanupInterval | 30 | Intervall in Minuten, in dem der ExportCleanupScheduler läuft. Werte kleiner als 1 deaktivieren die Aufräumaktion. |
tempFileMaxAge | 5 | Alter in Minuten, ab dem temporäre Exportdateien entfernt werden. |
stampText | nicht gesetzt | Text, der beim Export als Stempel auf die Seiten aufgebracht wird. Ein im Exportauftrag übermittelter Stempeltext hat Vorrang. |
stampResolution | 200 | Auflösung (dpi) für die Aufbereitung gestempelter Seiten. |
stampFontSize | 24 | Schriftgröße des Stempeltexts. |
stampFontName | sans-serif | Schriftart des Stempeltexts. |
stampOriginalPageScale | 100 | Skalierung 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"