How to add a text caption to an image with OpenOffice::OODoc?
I have the following code that creates an odf-document with a heading and a picture:
#!/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 = $开发者_如何学Pythondoc->createImageStyle("Photo");
my $image = $doc->createImageElement(
'some picture',
style => 'Photo',
attachment => $head,
size => '4cm, 12cm',
link => '/full/path/to/picture.png'
);
$doc->save();
How can I add a text caption to the picture? When I create a text caption in LibreOffice the part of the 'content.xml' where a caption is created looks like this.
<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>
I think it creates a frame and then puts the image and the caption text inside of it. I am lost at this point. I couldn't find something about adding elements to frames in the documentation either.
It would be interesting to see the xml that the perl creates, but other than that, you can use the Xpath module to amend the XML before writing it out. But really, we need to see the basic output to see what's going wrong. For example, maybe the frame nesting is wrong.
精彩评论