need help to insert an image with a caption with the Libo java API

classic Classic list List threaded Threaded
3 messages Options
LORENZO Vincent LORENZO Vincent
Reply | Threaded
Open this post in threaded view
|

need help to insert an image with a caption with the Libo java API

Hello everybody,

                I would like to add a caption, to an inserted image in a text document, but I don’t find how to do that… Please do you have pointer/documentation for me ?

 

 

Regards

--

Vincent LORENZO

01-69-08-17-24

CEA Saclay Nano-INNOV

Institut CARNOT CEA LIST

Point Courrier n° 174

91 191 Gif sur Yvette CEDEX

 


_______________________________________________
LibreOffice mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/libreoffice
SOS SOS
Reply | Threaded
Open this post in threaded view
|

Re: need help to insert an image with a caption with the Libo java API


On 2/13/2019 10:45 AM, Miklos Vajna via LibreOffice wrote:
Hi,

On Tue, Feb 12, 2019 at 09:27:15AM +0000, LORENZO Vincent [hidden email] wrote:
I would like to add a caption, to an inserted image in a text
document, but I don't find how to do that... Please do you have
pointer/documentation for me ?
I think captions are just a UI feature. The doc model just stores a text
frame around the image and the image is followed by the caption itself.

(I.e. later it's not possible to reliably detect if some content around
an image in a frame was created by hand or using the captions UI code.)

So you can do the same "manually" using the UNO API. When in doubt, see
what UNO API the ODT import uses to create the doc model based on the
input markup.

yep, insert a Frame, insert a Image in the frame and add a caption

sub InsertIllustrationReference
  oDoc = ThisComponent
  oText = oDoc.getText()
  oViewCursor = oDoc.getCurrentController().getViewCursor()
  
  oReference = oDoc.createInstance("com.sun.star.text.textfield.GetReference")
  With oReference
    .SourceName = "Illustration"
    .ReferenceFieldPart = com.sun.star.text.ReferenceFieldPart.ONLY_SEQUENCE_NUMBER
    .ReferenceFieldSource = com.sun.star.text.ReferenceFieldSource.SEQUENCE_FIELD
    .SequenceNumber = 0
  End With
  
  oText.insertTextContent(oViewCursor, oReference, False)
end sub

Regards,

Miklos

_______________________________________________
LibreOffice mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/libreoffice

_______________________________________________
LibreOffice mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/libreoffice
LORENZO Vincent LORENZO Vincent
Reply | Threaded
Open this post in threaded view
|

RE: need help to insert an image with a caption with the Libo java API

In reply to this post by LORENZO Vincent
Hello everybody,
        I thank you for your answers. Yes I want to add an image with a caption programmatically and I want a caption like this "Illustration 1 : My caption"
To my mind, it would be better/cleaner if I was able to generate the same thing than I do the UI. Thanks to you, I succeed to build the expected structure for the image and to set a text below it, but I still have some problems, mainly with the GetReference.

The GetReference generates :
<text:reference-ref text:reference-format="text" text:ref-name="refIllustration0">Erreur : source de la référence non trouvée</text:reference-ref>  (sorry my Libo is in French, it is written "Sorry : source of the reference not found").

And I would like to get a text:sequence instead of a text:reference, to get this result:
<text:sequence text:ref-name="refIllustration0" text:name="Illustration" text:formula="ooow:Illustration+1" style:num-format="1">1</text:sequence>

Please, do you know how I can build a text:sequence  ?
 
Please found in attachment the java code I wrote [1], the expect xml structure [2] and the current xml structure [3].
I know I have some difference between [2] and [3] with the width/height properties and inside the draw frame, but it is not the subject of this thread.

[1] insertImage.java
[2] expectedResult.xml
[3] currentResult.xml

In addition, I have more generic question, do you know if it exists a documentation, indicating mapping, between the xml elements and how to get/create them from java ? For example, in xml svg:width is called Height in the java API, and my Textframe becomes <draw:text-box...<

Best regards,
--
Vincent Lorenzo









-----Message d'origine-----
De : Kaganski Mike [mailto:[hidden email]]
Envoyé : mercredi 13 février 2019 11:42
À : Miklos Vajna <[hidden email]>; LORENZO Vincent <[hidden email]>
Cc : [hidden email]
Objet : Re: need help to insert an image with a caption with the Libo java API

On 13.02.2019 12:45, Miklos Vajna via LibreOffice wrote:

> Hi,
>
> On Tue, Feb 12, 2019 at 09:27:15AM +0000, LORENZO Vincent <[hidden email]> wrote:
>> I would like to add a caption, to an inserted image in a text
>> document, but I don't find how to do that... Please do you have
>> pointer/documentation for me ?
>
> I think captions are just a UI feature. The doc model just stores a
> text frame around the image and the image is followed by the caption itself.
>
> (I.e. later it's not possible to reliably detect if some content
> around an image in a frame was created by hand or using the captions
> UI code.)
>
> So you can do the same "manually" using the UNO API. When in doubt,
> see what UNO API the ODT import uses to create the doc model based on
> the input markup.
And actually, if an image is not intended to be floating, but (as seen in majority of cases) is a part of normal text flow, then the frame could be not needed at all - simply add an image anchored as character, then add a paragraph with required style and numbering range field, then continue with other paragraphs. This makes the document structure clearer. Just an advise based on own experience.

--
Best regards,
Mike Kaganski

_______________________________________________
LibreOffice mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/libreoffice

InsertImage.java (7K) Download Attachment
currentResult.xml (1K) Download Attachment
expectedResult.xml (1K) Download Attachment