Zum Hauptinhalt springen

Beispiel FileCover

Mit der Funktion Report.fromFileCoverTemplate kann sehr einfach und schnell ein standardisiertes FileCover Template erstellt werden.

context.enableModules();
const { Report } = require("ou.sp.Report");

const docFile = context.file;
const report = Report.fromFileCoverTemplate(docFile);

context.returnType = "download:report.pdf";
context.returnValue = report.saveAsPdf().filePath;

Einige Punkte sind jedoch zu beachten!

Felder

Wird die fromFileCoverTemplate Funktion ohne Optionen ausgeführt, so werden alle Felder verwendet, die im FileCover sichtbar sind (bitte dazu Sichtbarkeit beachten!)

Mappentyp

Reihenfolge

Die Reihenfolge der Felder bezieht sich immer der aus documents. Die Reihenfolge in der includedFields ist irrelevant!

Sichtbarkeit

Grundsätzlich muss unterschieden werden, ob der optionale Parameter includedFields verwendet wird. Wird der includedFields Parameter angeben, so werden die Felder mit einbezogen, egal ob diese sichtbar sind oder nicht.

Ohne den includedFields Parameter, werden alle Felder aufgenommen, die folgenden Eigenschaften entsprechen:

  • Sichtbar (in der Mappenansicht darstellen / InFileView)
  • KEINEM Feldregister zugewiesen sind und somit im Felder-Register (FileCover) sichtbar sind
  • Natürlich, nicht in der excludedFields

Gleiche Zeile

Das Template verwendet das documents Flag "In gleicher Zeile darstellen". Ist die Option gesetzt, wird das Feld und das vorherige in der gleichen Zeile dargestellt.

hinweis

Achtung diese Option wird auch bei dem includedFields Parameter verwendet. Dies kann zufolge haben, dass Felder unerwünscht nebeneinander angzeigt werden.

Optionen

includedFields

Möchte man nur ausgewählte Felder anzeigen, so kann man unter Angabe der Feldnamen, die Option includedFields verwenden.

includedFields?: Array<string>
context.enableModules();
const { Report } = require("ou.sp.Report");

const docFile = context.file;
const report = Report.fromFileCoverTemplate(docFile, {
includedFields: ["Feld1", "Feld2"]
});

context.returnType = "download:report.pdf";
context.returnValue = report.saveAsPdf().filePath;

excludedFields

Im Gegensatz zu includedFields können auch ausgewählte Felder ausgeblendet werden, wenn diese nicht auf dem PDF erscheinen sollen.

excludedFields?: Array<string>
context.enableModules();
const { Report } = require("ou.sp.Report");

const docFile = context.file;
const report = Report.fromFileCoverTemplate(docFile, {
excludedFields: ["IchNichtFeld1", "IchNichtFeld2"]
});

context.returnType = "download:report.pdf";
context.returnValue = report.saveAsPdf().filePath;

multiTableFields

Auch die MultiTable kann in einem PDF anzeigt werden. Die Implementierung ist dabei (aktuell) sehr einfach gestaltet.

Angenommen das MultiTable Gadget sieht so aus:

multiTableFields?: Array<{
fieldName: string;
columns: Array<string>;
}>;
context.enableModules();
const { TableGadget } = require("ou.sp.gadget.TableGadget");

context.returnValue = new TableGadget({
fieldName: "jsonField",
columns: {
column1: {
label: "de:Spalte1;en:Column1"
},
column2: {
label: "de:Spalte2;en:Column2"
},
column3: {
label: "de:Spalte3;en:Column3"
}
}
}).transfer();
  • Nun muss der Wert aus fieldName übernommen werden.
  • Die label der Spalten müssen als String-Array in columns übergeben werden.
context.enableModules();
const { Report } = require("ou.sp.Report");

const report = Report.fromFileCoverTemplate(context.file, {
multiTableFields: [{
// JSON-Feld in Mappe
fieldName: "jsonField",
columns: [
"de:Spalte1;en:Column1",
"de:Spalte2;en:Column2",
"de:Spalte3;en:Column3",
]
}]
});

showPageFooter

showPageFooter?: boolean = true

Über das optionale Flag showPageFooter kann der Fusszeile pro Seite deaktiviert werden. Diese ist standardmäßig aktiviert.

footer

asPdf - Als Gadget anzeigen

asPdf?: boolean = true

Möchte man das FileCover als Gadget anzeigen lassen, so muss das Flag asPdf auf false gesetzt werden.

context.enableModules();

const { Report } = require("ou.sp.Report");

context.returnValue = Report.fromFileCoverTemplate(context.file, {
asPdf: false,
}).toGadget();

Standardmäßig ist das Flag true um eine valide HTML-Datei zu erstellen.