2012-04-05 10 views
1

Wie erhalten Sie Elemente in einer Kopf-/Fußzeile eines odt doc?Perl OpenOffice :: OODoc - Zugriff auf Kopf-/Fußzeilenelemente

zum Beispiel habe ich:

use OpenOffice::OODoc;  
my $doc = odfDocument(file => 'whatever.odt'); 
    my $t=0; 
    while (my $table = $doc->getTable($t)) 
    { 
     print "Table $t exists\n"; 
     $t++; 
    } 

Wenn ich überprüfen Sie die Tabellen sie alle aus dem Körper sind. Ich kann keine Elemente für irgendwas in der Kopf- oder Fußzeile finden?

+0

Ich weiß nicht die vollständige Antwort, aber ich kann Ihnen sagen, dass wenn Sie eine .odt-Datei entpacken, Sie eine Datei namens "content.xml" erhalten. Wenn du dir die XML anschaust (es hilft, xmltidy zu benutzen). Dies zeigt Ihnen die Struktur des Dokuments. Die Datenstrukturen in einem OpenOffice :: OODoc-Objekt spiegeln die Xpath-Struktur der XML-Datei wider. Suchen Sie den Text in Ihrer Kopfzeile, lesen Sie die darin enthaltenen Tags und Sie können herausfinden, wo Sie im OODoc-Objekt danach suchen. –

+0

Ich habe gerade im OpenOffice :: OODoc :: Text perldoc nachgesehen, dass Header und Fußzeilen in "styles.xml" definiert werden können. –

Antwort

1

fand ich Beispielcode here, die mich auf die Antwort führte:

#! /usr/local/bin/perl 

use OpenOffice::OODoc; 

my $file='asdf.odt'; 

# odfContainer is a representation of the zipped odf file 
# and all of its parts. 
my $container = odfContainer("$file"); 

# We're going to look at the 'style' part of the container, 
# because that's where the header is located. 
my $style = odfDocument 
    (
    container => $container, 
    part  => 'styles' 
    ); 

# masterPageHeader takes the style name as its argument. 
# This is not at all clear from the documentation. 
my $masterPageHeader = $style->masterPageHeader('Standard'); 
my $headerText = $style->getText($masterPageHeader); 

print "$headerText\n" 

Die Masterseite Stil definiert das Look and Feel des Dokuments - denken CSS. Anscheinend ist "Standard" der Standardname für den Masterseitenstil eines Dokuments, das von OpenOffice erstellt wurde ... das war die härteste Nuss, die es zu knacken gab ... als ich den Beispielcode fand, fiel mir das in den Schoß.