Automatisierter Labeldruck in Open Office dank Perl-Skript
Gute Etikette
Open Office hilft mit einer Vielzahl vorkonfigurierter Formate beim Ausdrucken von selbstklebenden Etiketten. Perl speist die dazu erforderlichen Adressdaten ins Dokument ein.
© Carlos Caetano, 123RF.com
Open Office hilft mit einer Vielzahl vorkonfigurierter Formate beim Ausdrucken von selbstklebenden Etiketten. Perl speist die dazu erforderlichen Adressdaten ins Dokument ein.
Wer noch altmodisch Glückwunschkarten mit der Hand schreibt und verschickt, hat vielleicht schon mal damit geliebäugelt, sich das Adressieren zu vereinfachen und auf selbstklebende Etiketten umzustellen. Das heute vorgestellte Perl-Skript liest kommaseparierte Texte ein und druckt sie zeilenweise auf solche Labels. Die praktischen Laser-tauglichen Abziehetiketten auf A4-Papier (zum Beispiel Abbildung 1) kosten etwa einen halben Cent pro Stück und helfen nicht nur beim antiquierten Snail-Mail-Versand, sondern eignen sich auch zum Beschriften von Geräten oder Kabeln. Wie wär's zum Beispiel damit, mal den Kabelverhau unterm Schreibtisch zu beschriften, damit der gestresste Home-Admin das Routernetzteil beim nächsten Mal sofort findet?
Open Office Writer kennt bereits von Haus aus die Etikettenformate vieler Hersteller und erzeugt über das Menü »Datei | Neu | Etiketten« (Abbildung 2) entsprechende tabellenartige Dokumente. Der User muss im Dialog in Abbildung 2 dazu nur den Hersteller und den Produktcode der verwendeten Etiketten eingeben, schon stimmen die Maße.
Die so frisch angelegten Dokumente befüllt der User nur noch mit Textdaten und klickt auf »Drucken« – viel einfacher, als selbst ein Programm zur Druckerpositionierung zu schreiben. Und da Open Office seine Dokumente im offenen ODF-Format ablegt, ist es ein Leichtes, die Tabellendaten mittels eines selbst gestrickten Perl-Skripts aus einer CSV-Datei zu lesen und ins Dokument einzustreuen.
Vor dem automatisierten Einspeichern der Adressen erstellt der User manuell mit Open Office einmalig ein Testdokument als Vorlage und tippt einige Teststrings in die ersten vier Felder ein (Abbildung 3). Das dann als »template.odt« abgespeicherte Dokument besteht, wie das »unzip«-Kommando in Abbildung 4 zeigt, aus einem Zip-Archiv mit etlichen XML-Dateien, deren interessanteste »content.xml« ist, weil sie den mit XML-Markup versehenen Textinhalt des Dokuments enthält.
Was nun dort steht und in welchen Markup-Strukturen die vom User vorher in die Tabellenelemente eingegebenen Strings gelandet sind, zeigt der Aufruf des Skripts in Listing 1 mittels »oo-dumper template.odt«. Es nutzt das CPAN-Modul OpenOffice::OODoc und ruft dessen Konstruktor »ooDocument()« mit dem Namen der zu untersuchenden Datei auf. Als »member« legt Zeile 11 »content« fest, zeigt sich also am Dokumentinhalt interessiert und nicht an ausgelagerten Kopf- oder Fußzeilen, wiederverwertbaren Style-Definitionen oder Meta-Informationen.
Listing 1
»oo-dumper«
01 #!/usr/local/bin/perl -w 02 use strict; 03 use OpenOffice::OODoc; 04 05 (my $file) = @ARGV; 06 07 die "usage: $0 file" unless defined $file; 08 09 my $doc = ooDocument( 10 file => $file, 11 member => "content", 12 ); 13 14 (my $element) = $doc->selectElements( 15 '//office:body'); 16 17 print $element->_dump();
Umfang: 5 Heftseiten
Preis € 0,99
(inkl. 19% MwSt.)
Alle Rezensionen aus dem Linux-Magazin
Im Insecurity Bulletin widmet sich Mark Vogelsberger aktuellen Sicherheitslücken sowie Hintergründen und Security-Grundlagen. mehr...