How to add a text caption to an image with OpenOffice::OODoc?
Asked Answered
B

1

6

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 = $doc->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.

Bragdon answered 19/6, 2011 at 3:11 Comment(0)
H
1

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.

Hochheimer answered 7/9, 2012 at 20:0 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.