Thread Perl und DDE (28 answers)
Opened by bianca at 2011-10-16 19:31

payx
 2011-10-18 15:01
#153305 #153305
User since
2006-05-04
564 articles
BenutzerIn

user image
Hallo Bianca,

2011-10-18T11:28:13 bianca
Ja, das ist ziemlich genau das, was ich haben möchte.

Eben, das schien mir auch so.

2011-10-18T11:28:13 bianca
Brauchen diese Module ein installiertes OO? Das soll nämlich vermieden werden, wenn es geht.

Nein, OpenOffice::OODoc macht alles selbst; installiertes OpenOffice ist nicht erforderlich. Der Modulname ist so gesehen etwas irreführend, denn .odt ist ja gerade nicht ein proprietäres OpenOffice-Format sondern ein gänzlich freies Format, das auch von diversen anderen Tools unterstützt wird, wie z.B. AbiWord, MS-Word (ab 2007 SP2) und eben OpenOffice::OODoc.

Ein Office-Programm wird nur zur einmaligen Erstellung des/der Templates und bei den Clients zur Weiterbearbeitung und zum Drucken benötigt.

2011-10-18T11:28:13 bianca
Wir wollen quasi mehr oder weniger die Felder auf Dateiebene ersetzen, ohne dass Office vorhanden sein muss. Geht das auch irgendwie?

Genau dafür ist das Modul da.

Hier ein Minimalbeispiel (ungetestet):
Code (perl): (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
#!usr/bin/perl

use strict;
use warnings;

use OpenOffice::OODoc;

my $file = "mydoc.odt"; # die Template-Datei mit den Platzhaltern
my $firstname = "Bianca"; # ein Wert aus der Adress-DB
my $report = "Dieser Text soll an das Dokument angehängt werden.";

utf8::encode($report); # .odt ist standardmäßig utf-8
utf8::encode($firstname);

my $doc = odfDocument(file => $file) or die $!;

# Hier wird ein Platzhalter $FIRSTNAME$ durch den Wert aus der DB ersetzt:
$doc->selectElementsByContent('\$FIRSTNAME\$', $firstname);

# Hier wird dem Dokument ein Text angehängt:
$doc->appendParagraph (text => $report);

$doc->save('out_' . $file) or die $!;

# Jetzt kann das fertige Dokument an den Benutzer ausgeliefert werden.


HTH
Grüße
payx

PS: Was mir hier gerade unangenehm auffällt, ist dass [mod] und [cpan] das hier behandelte Modul einfach nicht finden.

Editiert von payx: Script korrigiert: Filter muss in single quotes stehen (mir unklar warum).
Last edited: 2011-10-19 10:01:59 +0200 (CEST)

View full thread Perl und DDE