Output Management
Zweck und Einsatz
Über diese Dokumentfunktion kann die generierte Datei an einen konfigurierbaren Endpunkt bzw. Endpunkte übermittelt werden.
Serienbriefe bzw. Serien-Erstellung von mehreren Dokumenten basierend z.B. auf eine Liste von Empfängern ist ebenfalls über diese Funktion konfigurierbar.
Die Definition der einzelnen Aktionen basiert auf den primedocs Connect Commands.
Grundaufbau
<OutputConfiguration DisableDefaultSeriesOutput
="true">
<DesktopOutput Name="Test Output 1">
<Fields>
<Text Name="Guid">
<Code>
function main() { return $.util.generateGuid(); }
</Code>
</Text>
<Text Name="GeneratedFileName">
<Code>
function main() {
var RecipientName = $("RecipientName");
return "X:\\documents\\Document_" + $("Guid") + "_" + RecipientName + ".docx"; }
</Code>
</Text>
</Fields>
<Commands>
<SaveFile field-FileName="GeneratedFileName" Overwrite="false" CreateFolder="false">
<Document />
</SaveFile>
</Commands>
</DesktopOutput>
<DesktopOutput Name="Test Output 2">
<Commands>
<SaveFile field-FileName="Forms.FullPath" Overwrite="false" CreateFolder="false">
<Document />
</SaveFile>
</Commands>
</DesktopOutput>
<DesktopSeriesOutput Name="Series Output">
<ForEach>
<SeriesTextReplacer Name="Default">
<Current Text="$current" />
<Total Text="$total" />
</SeriesTextReplacer>
<Commands>
<SaveFile FileName="C:\temp\sample_$current_of_$total.docx" Overwrite="true" replacer-FileName="Default">
<Document />
</SaveFile>
</Commands>
</ForEach>
<ForSeries>
<MergeAsPdf>
<Commands>
<SaveFile FileName="C:\temp\sample.pdf" Overwrite="true">
<Document />
</SaveFile>
<OpenFile FileName="C:\temp\sample.pdf" />
</Commands>
</MergeAsPdf>
</ForSeries>
</DesktopSeriesOutput>
</OutputConfiguration>Wird in innerhalb der Forms-Konfiguration in einer ObjectCollection das Attribut SelectecObjectId konfiguriert, wird implizit eine DesktopSeriesOuput-Konfiguration generiert und ein entsprechender Button im Forms-Dialog angezeigt.
Das optionale Attribut DisableDefaultSeriesOutput kann genutzt werden, um dieses Verhalten zu unterdrücken.
DesktopOutput
Über die DesktopOutput-Elemente kann das resultierende Dokument gezielt an einen bestimmten Endpunkt übermittelt werden.
Benötigte Attribute:
Name: Der Name wird in der Forms-Oberfläche beim Generieren als zusätzlicher Button angezeigt.
Elemente:
Fields: Um dynamische Daten für einen “Output” zu definieren, können ähnlich wie mit der normalen Fields-Funktion, Felder definiert werden.Commands: DieCommandsbestimmen, welche Aktionen ausgeführt werden. Es stehen alle Commands aus der primedocs Connect-Welt zur Verfügung.
Felder in Outputs
Fields im Output werden berechnet, sobald der entsprechende Output aktiviert wird.
Die Output-Fields erlauben eine Untermenge der normalen Feldfunktion in Kombination mit bestimmten API Aufrufen.
<Fields>
<Text Name="Guid">
<Code>
function main() { return $.util.generateGuid(); }
</Code>
</Text>
<Text Name="StaticValue" Value="Test" />
<Text Name="StaticTranslatedValue" translate-Value="Fields.Key.StaticValue" />
<Text Name="GeneratedFileName">
<Code>
function main() {
var RecipientName = $("RecipientName");
return "X:\\documents\\Document_" + $("Guid") + "_" + RecipientName + ".docx";
}
</Code>
</Text>
</Fields>Erlaubte Kindelemente:
Text: Erlaubt es ein Text-Element zu erzeugen. Als Identifier muss ein Name gesetzt werden.
Der Wert kann über diese Wege gesetzt werden:
Statisch über
ValueStatisch, aber mit Übersetzung über
translate-ValueDynamisch über
Code
Das Code-Element nutzt dieselbe Logik wie bei den Fields, allerdings mit einer vereinfachten JavaScript API:
Es können nur Text-Typen in dieser API geholt und zurückgegeben werden. Zugriffe auf Felder mit anderen Typen sind nicht gestattet.
Funktion | Rückgabetyp |
|---|---|
$.(…) | Gibt ein Textfeld zurück |
$.get(…) | Gibt ein Textfeld zurück |
$.getText(…) | Gibt ein Textfeld zurück |
$.util.generateGuid() | Generiert eine eindeutige GUID. |
Die generierten Felder können dann über den field-FileName (etc.) Syntax für die Commands benutzt werden.
DesktopSeriesOutput
Über die DesktopSeriesOutput-Elemente kann eine Seriengenerierung gestartet werden.
Diese Option ist nur in Kombination mit einer konfigurierte ObjectCollection samt SelectedObjectId ausführbar, da über eine definierte Liste iteriert werden muss.
Benötigte Attribute:
Name: Der Name wird in der Forms-Oberfläche beim Generieren als zusätzlicher Button angezeigt.
Elemente:
ForEach: Über dieses Element lassen sich pro Seriendokument Aktionen definieren.Beispiel: Für jeden Empfänger soll ein Dokument gespeichert werden.
ForSeries: Über dieses Element lässt sich ein zusammengefügtes PDF über die gesamte Serie erstellen.Beispiel: Es wird ein zusammengefügtes PDF für alle Empfänger benötigt.
ForEach
Über dieses Element lassen sich Aktionen definieren, welche pro Dokument ausgeführt werden sollen.
Elemente:
SeriesTextReplacer: Über dieses Element lassen sich Platzhalter für das aktuelle Element und die Gesamtanzahl der zu generierenden Dokumente abbilden. Damit ist es möglichDokument_26_von_87.docxzu erstellen. Nur dieses Element hat Zugriff auf den aktuellen “Iterator” und die “Gesamtanzahl”.<Current Text="$current" />heisst, dass die aktuelle Anzahl durch den Platzhalter$currentausgedrückt wird.<Total Text="$total" />heisst, dass die totale Anzahl durch den Platzhalter$totalausgedrückt wird.Es können mehrere
SeriesTextReplacerdefiniert werden - diese müssen einen eindeutigenNametragen.
Commands: Ähnlich wie beimDesktopOutputwerden darüber dieCommands(Siehe: https://primesoft-group.atlassian.net/wiki/spaces/PDT/pages/310804540) definiert.Zusätzlich gibt es hier Zugriff auf den
replacer-FileName="Default"
Ähnlich wie beim dynamischen Zugriff über field-FileName, kann man diese Attribute im ForEach Element nochmals durch den replacer-[ATTRIBUTE] durchlaufen lassen.
ForSeries
Über dieses Element ist es möglich, alle Dokumente als ein einzelnes PDF über das Element MergeAsPdf abzubilden.
Innerhalb von MergeAsPdf können wieder Commands definiert werden und das Resultat wird als “PDF”-Dokument weiterverarbeitet.
PrimeSoft AG, Bahnhofstrasse 4, 8360 Eschlikon, Switzerland