|
Einleitung |
Top Previous Next |
|
mod_print ist ein einfaches Programm zur Erstellung von Tabellen auf der Basis eines dafür von uns entwickelten XML-Formats. Es soll eine Alternative für die Fälle darstellen, bei denen kein unbedingter Bedarf an einer Layoutsprache wie z.B. xls-fo besteht. Das Programm beinhaltet einen Editor, der es Endanwendern auch ohne Programmierkenntnisse erlaubt, das Layout zu konfigurieren und direkt in der XML-Datei zu speichern. Eine C++-API für MFC (Version 6 bis aktuelle Version) und Qt kapselt die Kommunikation mit mod_print.
Funktionen:
Anwenderoberfläche: Die Sprache der Oberfläche kann mittels Übergabeparameter eingestellt werden. Einfache Einbindung eigener Dialoge mittels Datenaustausch über eine Datei. Editor für die wichtigsten Attribut-Einstellungen und für die Erstellung von Objekten. Sämtliche Programmeinstellungen (z.B. Zoom, Seitenformat, Attribute, Exporteinstellungen, ...) können in der XML-Dokumenten-Datei gesichert werden und stehen dem Endanwender beim nächsten Programmaufruf wieder zur Verfügung. Optional kann das Programm zu Konvertierungszwecken ohne Oberfläche gestartet werden, z.B. um eine PDF-Ausgabedatei aus einer Vorlage zu erzeugen. Die Lokalisierung für die Dateneingabe im Editor als auch für die Druckausgabe kann separat festgelegt werden.
XML-Format: Sehr einfache Syntax 1), Vorlagen könnten im Prinzip mit einem Texteditor geschrieben werden. Hierarchische Verwaltung von Attributen. Jedem Datenfeld-Element können unterschiedliche Attribute zugewiesen werden. Eingabe von Zahlen im Locale-C-Format und von Datums- und Zeitwerten im ISO 8601-Format und Ausgabe je nach der eingestellten Lokalisierung. HTML-Text oder normaler Text können entweder direkt oder als Dateiinhalt eingebunden werden. Einbindung von Grafiken (auch SVG).
Sonstiges: Absolute oder relative Positionierung von Tabellen. Definition eigener Attribute. Unterstützung von konkreten Datentypen. Feldbreiten können fest eingestellt (mm oder %) oder automatisch ermittelt werden (minimale/maximale Breite kann angegeben werden), ein Stretchen oder Stauchen der Breite ist ebenfalls einstellbar. Bilder, HTML-Texte und normaler Text können über mehrere Seiten fortgeführt werden. Festlegung von Variablen aus denen sich der Ausgabedateiname beim Export zusammensetzen soll (z.B. DATUM.MANDANT.pdf). Der Endanwender kann den Ausgabenamen optional selber aus den Variablen zusammenstellen. Festlegung von globalen Variablen für die Ausgabe im Dokument. Festlegung von Variablen mit denen Pfadnamen z.B. bei Bildern ersetzt werden, z.B. {IMAGEPATH}test.png. Summenfunktion mit optionalem Startwert für Datenfeldinhalte. Spaltenbezeichner und Tabellenkopf können auf einer neuen Seite vorgetragen werden. Zwischensummen können im Tabellenfuß vor dem Seitenumbruch ausgegeben werden. Interne Genauigkeit bei Maßangaben: 0,01 mm (Windows, Mac), 0,1mm Linux. Es können beliebig viele Tabellen mit unterschiedlicher Felddefinition eingebunden werden. Es können Tabellenobjekte 2) definiert werden, die z.B. als Logo, Seitenkopf oder Seitenfuß fungieren. Weitergabe von Schriften ist möglich.
Ausgabeformate: Drucker. PDF-Datei. Bilddatei. Open-Office-Datei. Excel-Datei Text-Datei.
Betriebssysteme: Linux, Mac, Windows.
In Planung: Anpassungen für die Erstellung von Briefen und Rechnungen. Includes für Vorlagen. QR-Code und Barcode-Integration. Direkte Anbindung an Datenbanken.
1) Vergleich: Tabelle mit xsl-fo und mit mod_print: xsl-fo: <fo:table> <fo:table-header> <fo:table-row> <fo:table-cell> <fo:block>Car</fo:block> </fo:table-cell> <fo:table-cell> <fo:block>Price $</fo:block> </fo:table-cell> </fo:table-row> </fo:table-header>
<fo:table-body> <fo:table-row> <fo:table-cell> <fo:block>Porsche</fo:block> </fo:table-cell> <fo:table-cell> <fo:block>150000</fo:block> </fo:table-cell> </fo:table-row> <fo:table-row> <fo:table-cell> <fo:block>VW</fo:block> </fo:table-cell> <fo:table-cell> <fo:block>30000</fo:block> </fo:table-cell> </fo:table-row> </fo:table-body> </fo:table>
mod_print: <main-table> <datafields> <columns> <field displayname="Car" name="car" type="S" pos="1"/> <field displayname="Price $" name="price" type="C" pos="2" currency-symbol-type="3"/> </columns> </datafields> <table> <column-header/> <r> <d>Porsche</d> <d>150000</d> </r> <r> <d>VW</d> <d>30000</d> </r> </table> </main-table>
2) Beispiel: Definition einer Seitenfußzeile, die auf der zweiten Seite und nachfolgenden Seiten angezeigt werden soll und das aktuelle Datum und die Seitenzahl ausgibt: <sub-table type="page-footer" visible-on-page="second-next" font-size="6" margins="0,2,0,0" name="Seitenfuß" border-show="0,1,0,0"> <datafields> <columns> <field type="s" displayname="Feld1" name="Feld1"/> <field type="s" displayname="Feld2" name="Feld2"/> </columns> </datafields> <table> <r> <d text-halign="l">Datum: {\var{CURDATE}}</d> <d text-halign="r">Seite {\var{PAGENO}}</d> </r> </table> </sub-table>
|