2011-06-19 17 views
6

Mam następujący kod, który tworzy ODF-dokument z nagłówkiem i obrazem:Jak dodać podpis tekstowy do obrazu za pomocą OpenOffice :: OODoc?

#!/usr/bin/perl 

use strict; 
use warnings; 
use OpenOffice::OODoc; 

my $doc = odfDocument(
    file => 'test.odt', 
    create => 'text' 
); 

my $head = $doc->appendHeading(
    text => "This is a Test", 
    style => 'Heading 1' 
); 

my $style = $doc->createImageStyle("Photo"); 
my $image = $doc->createImageElement(
    'some picture', 
    style  => 'Photo', 
    attachment => $head, 
    size  => '4cm, 12cm', 
    link  => '/full/path/to/picture.png' 
); 

$doc->save(); 

Jak mogę dodać podpis tekstu do obrazka? Kiedy utworzymy podpis tekstowy w LibreOffice, część "content.xml", w której napis jest tworzony, wygląda następująco.

<draw:frame draw:style-name="fr1" draw:name="Frame1" text:anchor-type="as-char" svg:y="0cm" svg:width="4.001cm" draw:z-index="0"> 
    <draw:text-box fo:min-height="12cm"> 
    <text:p text:style-name="Caption"> 
     <draw:frame draw:style-name="fr2" draw:name="Eiffel Tower" text:anchor-type="paragraph" svg:x="0.004cm" svg:y="0.002cm" svg:width="4.001cm" style:rel-width="100%" svg:height="12cm" style:rel-height="scale" draw:z-index="1"> 
     <draw:image xlink:href="full/path/to/picture.png" xlink:type="simple" xlink:show="embed" xlink:actuate="onLoad"/> 
     </draw:frame> 
     test caption 
    </text:p> 
    </draw:text-box> 
</draw:frame> 

Myślę, że tworzy ramkę, a następnie umieszcza w niej obraz i tekst podpisu. Jestem zagubiony w tym momencie. Nie mogłem też znaleźć czegoś na temat dodawania elementów do ramek w dokumentacji.

Odpowiedz

1

Byłoby interesujące zobaczyć xml, który tworzy perl, ale poza tym, możesz użyć modułu Xpath, aby poprawić kod XML przed jego zapisaniem. Ale tak naprawdę, musimy zobaczyć podstawowe dane wyjściowe, aby zobaczyć, co się dzieje. Na przykład, być może zagnieżdżenie ramki jest błędne.

Powiązane problemy