How to add text to an image using OpenOffice :: OODoc?

I have the following code that creates an odf document with a title and image:

#!/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 to add text to a picture? When I create a text signature in LibreOffice, the "content.xml" part where the signature is created is as follows.

 <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 subtitle text inside it. I lost at that moment. I could not find something about adding elements to frames in the documentation.

+6
source share
1 answer

It would be interesting to see the xml that perl creates, but you can also use the Xpath module to modify the XML before writing it. But in fact, we need to see the main conclusion in order to understand what is happening. For example, it is possible that the frame nesting is incorrect.

+1
source

Source: https://habr.com/ru/post/890843/


All Articles