Bei der Druckausgabe von FlowDocument Texten findet eine Umsetzung eines FlowDocuments in eine Druckausgabe statt.
Dazu wird das FlowDocument in "Blöcke" zerlegt, und jeder Block für sich aufbereitet und gedruckt.
Innerhalb eines "Blocks" findet keine Segmenttrennung statt.
Das bedeutet: Blöcke sollten nicht zu groß definiert werden.
Da z. B. FlowDocument Tabellen immer innerhalb eines Blocks definiert sind, können somit Tabellen nicht in unterschiedliche Segmente zerteilt werden, sondern werden immer "am Stück" gedruckt.
Das gleiche gilt für Auflistungen, Numerierungen und Absätze, die eine Umrandung aufweisen.
FlowDocument-Text kann generell eine beliebige Länge haben. Da die Anzahl der zu druckenden Blöcke/Segmente zum Zeitpunkt der Definition des Drucklayouts nicht bekannt ist, wird die SOGForms-Druckausgabe von FlowDocument-Text so definiert, dass ein sich wiederholendes Segment erstellt wird.
In dem sich wiederholenden Segment wird ein Textfeld definiert, das während der Druckaufbereitung jeweils genau einen FlowDocument-Block ausgibt.
Definition des FlowDocument-Drucksegmentes:
Geben Sie unter "Datenindexzähler manuell" den Text "HTMLSEG:" an, gefolgt von der XML-Expression die die Quelldaten festlegt. Unter diese XML-Expression sollten nun beliebig viele Textzeilen zu finden sein.
Legen Sie nun in dem Segment ein Datenfeld an, das wie folgt eingestellt wird:
Definieren Sie ein Datenfeld vom Typ "Datenfeld". Geben Sie unter "Fixtext" den Wert "#HTMLSEG" an.
Beachten Sie, dass die Höhe des Segmentes während der Druckaufbereitung dynamisch an die Höhe des zu druckenden FlowDocument-Blocks angepasst wird.
Besonderheiten bei der FlowDocument-Ausgabe
Tabellen stellen innerhalb eines FlowDocuments eine Besonderheit dar, da diese nicht in Folgezeilen umgebrochen werden können.
Ist der zur Verfügung stehende Druckbereich nicht breit genug, um eine im Dokument enthaltene Tabelle vollständig zu drucken, wird die Tabelle rechts abgeschnitten.
Möchten Sie erreichen, dass Text untereinander dargestellt wird, so sollte an Stelle einer Tabelle besser eine Ausrichtung über Tabulationen erfolgen.
FlowDocument Blöcke können generell nicht aufgebrochen werden. Ein definierter Block wird immer als ein Druck-Segment zusammenhängend ausgedruckt.
Daraus folgt, das Tabellen, Aufzählungen, Bilder sowie Absätze die eine Umrandung aufweisen, immer zusammenhängend gedruckt werden.
Drucken von FlowDocument bei einer Datenbereitstellung über SQL
Werden die Druckdaten eines SOGForms Formulars über SQL bereitgestellt, müssen FlowDocument-Daten auf besondere Art und Weise aufbereitet werden, damit sie von SOGForms erkannt und verarbeitet werden können. Verwenden Sie dazu die TSQL Funktion dbo.vacos_bytetoflowdoc.
Beispiel:
#TabName:Data
select f000.key_1,info,erl_dat, dbo.vacos_bytetoflowdoc(f000blob.txt_blob) txt_blob from f000
left outer join f000blob on f000.key_1 = f000blob.key_1
where len(f000blob.txt_blob)>0
Mit Hilfe der Funktion "vacos_bytetoflowdoc" werden die in der Datenbank enthaltenen FlowDoc Informationen so aufbereitet, dass sie von SOGForms als FlowDocument erkannt und gedruckt werden können.
Ein Beispiel findet sich in "SOGForms.test\AufgabenTest" , Formular Test1.sogform.