===== Drucken eines Textes als Bild ===== ==== Anforderung ==== In einem Dokument sollen zu in einer Tabelle aufgelisteten Artikelummern entsprechende Bilder der Artikel plaziert werden. Grundlage für dieses Beispiel ist das Formular 'Angebot einzelne Seite mit Bildern' aus der Beispielinstallation. In der Tabelle wurde unterhalb der Preise bereits genügend Platz für die Artikelbilder reserviert. Der Ausdruck der Tabelle mit den Artikelnummern vor der Änderung sieht wie folgt aus (Ausschnitt): {{print2forms:tips:0004-1.GIF}} ==== Realisierung ==== Zur Realisation dieser Anforderung wird im hier verwendeten Formular ein **Ressourcenfeld** verwendet (existentes Feld 'Artikel'. Die Aufgabe des Ressourcenfeldes ist, die Artikelnummern zu suchen, Bilder für diese Artikel zu finden und diese unterhalb der Preise zu positionieren. Das nachfolgende Ressourcenfeld erledigt diese Arbeit: {{print2forms:tips:0004-5.GIF}} Grundvoraussetzung für das Drucken der Artikelbilder ist, daß sich die Bilder im Zugriff des (p2f)-Systems befinden. Im hier vorliegenden Beispiel sind die Artikelbilder als Ressourcen in einem speziellen Subcontainer mit dem Namen '**Bilder**' hinterlegt. Wie diese Ressourcen in das (p2f)-System importiert werden, ist in einen getrennten Kapitel beschrieben. {{print2forms:tips:0004-3.GIF}} Um die Artikelnummern im Ausdruck zu finden, wird als Feldindex '**00????0000**' und als Vergleichsmuster ' **[# ]# %%([%%@#]{1,8}[^ ]) .***' angesetzt. Mit diesen beiden Angaben wird jede Textpassage, die an der horizontalen Position '**0000**' beginnt, gegen das Muster verglichen. Das Muster prüft zunächst auf fünf Leerzeichen gefolgt von einer Folge aus einer Leerstelle oder einer Ziffer, einer Ziffer und drei weiteren Leerzeichen. Damit wird eine ein oder zweistellige Positionsnummer in der Tabelle gefunden - die erste Ziffer der Positionsnummer muß als '**[# ]**' definiert werden, weil die einstelligen Positionsnummern mit einer Leerstelle beginnen. Alsdann wird die maximal acht Zeichen lange Artikelnummer, die mit einem Buchstaben beginnen muß und mit der ersten Leerstelle endet, in den ersten Textpuffer übernommen. Die Auswahl '**Nein**' bei 'Feld entfernen' läßt die Textpassage so wie sie ist auf dem Blatt. Zum besseren Verständnis der Arbeitsweise des kompliziert aussehenden Vergleichsmusters ist hier die Indexdatei des Beispieldatenstroms abgebildet: [p2f] [Param]1.0;10.1.17.7;07.11.07 15:34:36 [Computer]thinkcentre.spe-gmbh.de [User]Volker [Model]P2F LaserJet 5 [Job]Sample 10 [JobNo] [File]10 [FileNo] [Hold] [Save] [UserData] [DefData] [Process]6PE-ZXW.XML [0101D10000] [0102850000]40 48535 075 019 345627 04 [0102C10000] 00018/4 [0103390000] 1704 [0103750000] Kunde AG [0103B10000] z. Hd. Hr. X. Kunde 346-57897 [0104290000] Kundengasse 19 Hr. G. Muster [0104650000] D-48535 Kundendorf [0104A10000] 01.01.2005 [0105190000] 31.01.2005 [0105CD0000] [0106090000] [0106450000] 1 SK20F1 Scart Kabel, high quality 9.99€ 8.88€ 7.77€ [0106810000] 1 x Scartstecker auf 1 x Scartstecker (21 pin), [0106AE0000] transparentes Kabel mit vergoldeten Kontakten, [0106DB0000] 4 x 0.14 mm² abgeschirmt (Audio), 6 x 75 Ohm [0107080000] RG59 (Video), Länge 2 m, VPE 10 Kabel [0108070000] 2 SK20HQT Scart-Flachkabel 9.99€ 8.88€ 7.77€ [0108430000] Stecker auf Stecker, 21 polig belegt, 1 m [0108700000] VPE 25 Kabel [0109C90000] 3 SV3 Scart Verteiler 99.99€ 88.88€ 77.77€ [010A050000] Vollständig beschaltet für den Anschluß von 3 [010A320000] Geräten, alle Buchsen parallel geschaltet [010A5F0000] VPE 1 Verteiler [010B8B0000] 4 AVS1020 Video-Kabel Scart auf Cinch 9.99€ 8.88€ 7.77€ [010BC70000] 1 x Scartstecker auf 3 x Cinchstecker, 2 x [010BF40000] 0.14 mm² abgeschirmt (Audio), 1 x 75 Ohm [010C210000] RG 59 (Video), Länge 1 m, VPE 100 Kabel [Page] Die Positionierung der Artikelbilder benötigt einige Überlegungen. Zunächst muß berücksichtigt werden, daß die Artikelbilder nicht exakt mit ihrer oberen linken Ecke positioniert sind. Mit einem Testausdruck kann der horizontale und vertikale Versatz ausgemessen werden. Dieser Versatz ist nicht in der Ressource des Artikelbildes kompensiert worden! (Was aber durchaus möglich wäre.) {{print2forms:tips:0004-4.GIF}} Als nächstes wird der Abstand vom linken Rand der Nutzdaten (erster Buchstabe in der Zeile) zur gewünschten Position des Artikelbildes ausgemessen. So ergibt sich dann ein horizontaler Versatz von '**10,90 cm**' und ein vertikaler Versatz von '**-1,80 cm**' bei einer Positionierung '**Relativ zum Feld**', was dafür sorgt, daß die Bilder relativ zur Grundlinie der gefunden Textpassage über das Blatt wandern. Wegen des oberen Randes beim Artikelbild ist der negative vertikale Versatz notwendig, um das Bild in die Nähe der Grundlinie zu ziehen. Jetzt muß nur noch die passende Ressource ausgewählt werden. Wie oben schon erwähnt, stehen die Bilder in einem Subcontainer mit dem Namen '**Bilder**', was dann als Wert für die Einstellung '**Zugriffspfad**' anzugeben ist. Der Name der Ressource ist identisch mit der Artikelbezeichnung, sodaß als Schablone für den Ressourcennamen einfach '**\Artikel:1**' verwendet wird. Die Referenz über einen Namen ist hier möglich, weil wir dem Ressourcenfeld ja den Namen '**Artikel**' gegeben haben. Das Ergebnis, das dieses Ressourcenfeld erzeugt ist nachfolgend zu sehen (Ausschnitt): {{print2forms:tips:0004-2.GIF}} Da das Vergleichsmuster insgesamt vier mal innerhalb des Druckauftrags gefunden wurde, werden vier Artikelbilder mit diesem einen Ressourcenfeld gedruckt. Im ersten Textpuffer standen die vier Texte '**SK20F1**', '**SK20HQT**', '**SV3**' und '**AVS1020**'. Die Wildcard-Zeichen '**????**' für die vertikale Position im **Feldindex** sorgten dafür, daß die gesamte Seite abgesucht wurde. \\ \\ ==== Bemerkungen ==== * Durch die Positionierung '**Relativ zum Feld**' wird gewährleistet, daß sich die Position der Artikelbilder nicht ändert, wenn das Formular verschoben wird. Werden hingegen im verwendeten Prozess die Nutzdaten verschoben, verschieben sich die Artikelbilder mit. * Die oben vorgestellte Methode, Bilder anzudrucken hat ihre Grenzen, wenn sich die Anzahl der gespeicherten Bilder der 10.000 nähert oder sie gar übersteigt. In diesen Fällen ist es sinnvoller, die Bilder auf einen externen Web-Server auszulagern und die Bilder im Bedarfsfall über HTTP zu holen. Dies ist in einem gesonderten Kapitel beschrieben. * Größere Mengen von Bildern mit Hilfe des Administrationsprogramms manuell ins (p2f)-System zu importieren ist sehr mühselig. In solchen Fällen kann das **Import-Gateway** Anwendung finden, das eine automatische Übernahme ins (p2f)-System direkt aus der die Bilder erzeugenden Anwendung heraus ermöglicht. Auch hierzu gibt es ein gesondertes Kapitel. * Der Ausdruck zum Austesten dieses Beispiels wurde mit Hilfe des beim (p2f) mitgelieferten Programms 'Beispielprogramm' erstellt. Dazu wurde das Beispiel '**Angebot mit Bildern und Unterschrift**' ausgewählt.