Как добавить текстовую подпись к изображению с помощью OpenOffice :: OODoc? - PullRequest
6 голосов
/ 19 июня 2011

У меня есть следующий код, который создает odf-документ с заголовком и изображением:

#!/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();

Как добавить текстовую подпись к изображению?Когда я создаю текстовую подпись в LibreOffice, часть «content.xml», где создается подпись, выглядит следующим образом.

<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> 

Я думаю, что она создает рамку, а затем помещает изображение и текст подписивнутри него.Я потерян в этой точке.Я не смог найти что-то о добавлении элементов в фреймы в документации.

1 Ответ

1 голос
/ 08 сентября 2012

Было бы интересно увидеть xml, который создает perl, но кроме этого, вы можете использовать модуль Xpath для изменения XML перед его записью. Но на самом деле нам нужно увидеть основной результат, чтобы увидеть, что происходит не так. Например, может быть неправильное вложение кадров.

...