Versionen im Vergleich

Schlüssel

  • Diese Zeile wurde hinzugefügt.
  • Diese Zeile wurde entfernt.
  • Formatierung wurde geändert.
Kommentar: Migrated to Confluence 5.3

...

  1. Einsatz eines PageDecorators, wenn ein Dokument mit den Mitteln der jadice document platform als PDF neu gerendert wird.
    Dieses Vorgehen bietet empfiehlt sich dann an, wenn ein Dokument in einem Format vorliegt, dass das von der der jadice document platform nativ unterstützt wird und mittels des JadiceShaperNodes in PDF konvertiert wird.
  2. Über ein bereits bestehendes PDF-Dokument wird eine "Maske" gelegt, die in einem zweiten PDF vorab generiert wurde.
    Dieses Vorgehen bietet sich insbesondere dann an, wenn
    • das PDF-Dokument bereits vorliegt,
    • während eines vorherigen Schrittes im Workflow vorliegt erzeugt wird oder
    • ein Neu-Rendern mit den Mitteln der jadice document platform vermieden werden soll.

...

Codeblock
languagejava
titleClientseitiger Code zur Ansteuerung: Wasserzeichen durch PageDecorator
// Konfiguration des JadiceShaperNodes
StreamInputNode inputNode = new StreamInputNode();
JadiceShaperNode shaperNode = new JadiceShaperNode();
shaperNode.setTargetMimeType("application/pdf");

// Konfiguration des beiliegenden PageDecorators
PageDecorator simpleDecorator = new HeaderFooterPageDecorator();
simpleDecorator.setTemplate("DUPLIKAT");
simpleDecorator.setFont(new Font("Arial", Font.BOLD, 30));
simpleDecorator.setTextOrientation(-45.0f);
simpleDecorator.setHorizontalAlignment(HorizontalAlignment.CENTER);
simpleDecorator.setVerticalAlignment(VerticalAlignment.CENTER);
shaperNode.getSettings(BaseShaperSettings.class).setPageDecorator(simpleDecorator);

// Einbinden in einen Workflow und Aufruf eines Jobs siehe: jadice server Entwicklerhandbuch

...

Im ersten Schritt dieses Szenario wird davon ausgegangen, dass das einzubrennende Wasserzeichen immer gleich bleibt Dieses liegt und als (einseitiges) PDF-Dokument vorvorliegt. Außerdem wird davon ausgegangen, dass das Dokument mit dem Inhalt ebenso bereits als PDF vorliegt.

Hinweis

Achten Sie beim Erstellen des Wasserzeichen-PDFs darauf, dass dieses einen transparenten Hintergrund hat. Andernfalls werden die restlichen Dokumentinhalte verdeckt.

Mit Hilfe der des PDFCompositeNodes können nun das PDF mit dem Inhalt und das PDF mit dem Wasserzeichen zusammengefügt werden:

Codeblock
languagejava
titleClientseitiger Code zur Ansteuerung: PDFs übereinanderlegen
// Konfiguration des Workflows
StreamInputNode inputNode = new StreamInputNode();
PDFCompositeNode compositeNode = new PDFCompositeNode();

// Konfiguration des PDFCompositeNode
compositeNode.setRepeat(true); // Wiederholen des Wasserzeichens
compositeNode.setOrder(Order.BACK_TO_FRONT); // Wasserzeichen über Inhalt

// Einbinden in einen Workflow und Aufruf eines Jobs siehe: jadice server Entwicklerhandbuch
(...)

// Senden der Datenströme an jadice server
InputStream myDocumentStream = ...;
InputStream myWatermarkPDFStream = ...;
inputNode.addStream(myDocumentInputStreammyDocumentStream);
inputNode.addStream(myWatermarkPDFInputStreammyWatermarkPDFStream);
inputNode.complete();

Für den Anwendungsfall, dass das Dokument mit dem Inhalt noch zuvor durch jadice server zu konvertieren ist, muss der Workflow dahingehend angepasst werden, dass dieses Dokument und das Wasserzeichen über unterschiedliche Knoten zum PDFCompositeNode gelangen.

Codeblock
languagejava
titleClientseitiger Code zur Ansteuerung: Dokument und Wasserzeichen unterschiedlich verarbeiten
// Konfiguration des Workflows
StreamInputNode documentInputNode = new StreamInputNode();
Node myConversionNode = ...// entspr. Node zur Dokumentkonvertierung
StreamInputNode watermarkInputNode = new StreamInputNode();
DemultiplexerNode demux = new DemultiplexerNode();
PDFCompositeNode compositeNode = new PDFCompositeNode();

// Konfiguration des PDFCompositeNode
compositeNode.setRepeat(true); // Wiederholen des Wasserzeichens
compositeNode.setOrder(Order.BACK_TO_FRONT); // Wasserzeichen über Inhalt

// Einbinden in einen Workflow und Aufruf eines Jobs siehe: jadice server Entwicklerhandbuch
documentInputNode.appendSuccessor(myConversionNode).appendSuccessor(demux);
watermarkInputNode.appendSuccessor(demux);
demux.appendSuccessor(compositeNode);

// Senden der Datenströme an jadice server
InputStream myDocumentStream = ...;
documentInputNode.addStream(myDocumentInputStreammyDocumentStream);
documentInputNode.complete();

InputStream myWatermarkPDFStream = ...;
watermarkInputNode.addStream(myWatermarkPDFInputStreammyWatermarkPDFStream);
watermarkInputNode.complete();

Besteht darüber hinaus die Anforderung, dass auch das Wasserzeichen dynamisch generiert werden soll, kann dies z.B. mit XSL-FO erzeugt werden. Wie dies funktioniert, erklärt Ihnen der Knowledge Base-Artikel "Von der Textdatei zum PDF".