Mehrseitiges PDF am Schluss des Berichts darstellen

Hallo,

es wir ein Bericht mit unterschiedlich vielen Seiten erstellt, bei dem am Schluss ein mehrseitiges PDF dargestellt werden soll.

  • Lastpage zeigt nur die erste Seite des Pdfs
  • Verketten mit dem vorherigen Objekt führt zu eine endlosen Seitenzahl

Wie ist hier die beste Vorgehensweise.

Vielen Dank.

Sie könnten das Objekt entweder in der gleichen Größe wie den vorhergehenden Berichtscontainer designen und “An Ende” ohne Größenanpassung verketten (vgl. auch Zeitliche Verkettung funktioniert bei Druck über C# API nicht - #6 by Jens_Muller) oder - vielleicht noch einfacher - eine Tabelle mit freiem Inhalt hinter die eigentlichen Daten im Berichtscontainer platzieren und darin das PDF ausgeben.

Hallo Herr Bartlau,

vielen Dank. Ich denke ich habe es nicht ausreichend beschrieben, der Berichtscontainer ist nicht das letzte Objekt und ist auch nicht vollseitig. Das letzte Objekt des Berichts ist ein Textfeld (Fußzeile). Nach der letzten Seite soll dann vollseitig das PDF (8-Seiten) dargestellt werden.

Mir würden hier verschiedene Möglichkeiten einfallen:
• Sie designen das Projekt ein wenig um, so dass es passt (Verkettung für Berichtscontainer, damit der dann mehr Platz hat, Fußzeile als echte Fußzeile übernehmen oder mit Darstellungsbedingung versehen).

• Zwei Projekte erstellen, Hauptprojekt und ein Projekt nur mit der PDF Datei, diese als Vorschau exportieren und per Code Appenden.
(ab Version 26 gibt es noch den Kombidruck siehe
https://blog.combit.net/blog/softwareentwicklung/august-2020/kombinationsdruck/ )

• Die Fußzeile (Text Objekt) Eigenschaft „Seitenumbruch“ auf „JA“, Eigenschaft „Darstellungsbedingung“ auf „LastPage(), einen Absatz im Text Objekt mit einer SetVar Funktion (z.B. SetVar(„Fertig“, true, false) hinzufügen.
PDF Objekt platzieren, Eigenschaft „Darstellungsbedingung“ auf „GetVar(„Fertig“) = true“, Eigenschaft „Umbruch vor“ auf „JA“
Erweiterte Info zum dritten Punkt
Wenn man Fußzeilen in der Tabelle hat welche einen Seitenumbruch auslösen können, könnte man das Fußzeilen Text Objekt noch an den Berichtscontainer (an Ende) verketten, damit es wirklich nach der Tabelle kommt, da ja die angedruckte Fußzeile LastPage() auf True setzt, hier könnte man die Darstellungsbedingung vom Text Objekt dann auch auf True lassen.

Bitte beachten Sie auch die korrekte Druckreihenfolge in der Objektliste.

Punkt 3 Abbildung mit Verkettung an Ende.

Hallo,

vielen Dank für die ausführliche Antwort. So wie ich ihr drittes Beispiel verstehe, würde die Fußzeile dann aber nur auf der letzten Seite erscheinen (Ihr Screenshot Seite 2). Diese muss allerdings auf jeder Seite bis zum Beginn des PDFs erscheinen.

zu 1) erhalte ich dieses Ergebnis, sicherlich denke ich noch irgendwo falsch

Wenn die Fußzeille auf jeder Seite kommen soll, also auch beim PDF, dann darf es nicht als Fußzeile in der Tabelle verwendet werden.
Hier müssten Sie Punkt 3 verwenden und “Seitenumbruch” beim Text Objekt auf “Nein” lassen, dann würde es auch auf jeder Seite kommen.

Ok, die Fußzeile mal außen vor gelassen, das PDF wir nun mit allen Seiten angehängt und auch nach allen anderen Inhalten, soweit so gut. Das PDF erhält aber nur die Höhe des verketteten Berichtscontainers, wie bekomme ich es vollseitig?

Wenn Sie es an den Berichtscontainer verkettet haben, dann können Sie die Größe des Containers und des PDF´s dynamisch halten, die Eigenschaften lassen sich ja auch dynamisch über eine Formel (z.B. für die Eigenschaft:Position>Breite = If(, 200, 100)) setzen.

Ok, aber wie erkenne ich, dass in dem Berichtscontainer kein Inhalt mehr kommt, damit ich das abfragen und aber der nächsten Seite eine andere Größe verwenden kann.

Hier könnte man eine Fußzeile verwenden, darin ein SetVar(“Fertig”, “Ja”, false) (o.ä.) aufrufen, wenn diese noch die Bedingung “LastFooterThisTable()” hat kommt es als letzte Fußzeile und die SetVar Variable wird gefüllt.
Mittels GetVar(“Fertig”) =“Ja” könnte man dann eine Bedingung für die Größe etc. schreiben.

Bei mehreren Fußzeilen müsste man sicherstellen das diese dann auch als letztes in der Liste (Reihenfolge) ist.