Hello everybody,
Since my last question, I switched task. Now I come back to my
LibreOffice task to resolve my caption problem.
I'm still blocked on this problem. I get a different result compared to my last
email, but the reference for the caption is still not found.
I replace Illustration by Figure, but the problem keeps the same.
I obtain a text:sequence-ref instead of a text:sequence. Does someone know why
or which is the API to use to generate a text:sequence...
My result for the numbering of the caption:
<text:sequence-ref text:reference-format="value"
text:ref-name="refFigure0">Erreur : source de la référence non
trouvée</text:sequence-ref> (the french text said "reference not found")
I would like to get :
<text:sequence text:ref-name="refFigure0" text:name="Figure"
text:formula="ooow:Figure+1" style:num-format="1">1</text:sequence>
My java code for that :
Object oReference =
xMultiServiceFactory.createInstance("com.sun.star.text.textfield.GetReference");
XPropertySet oReferencePropertySet =
UnoRuntime.queryInterface(XPropertySet.class, oReference);
oReferencePropertySet.setPropertyValue("SourceName", "Figure");// I get
<text:sequence-ref
oReferencePropertySet.setPropertyValue("ReferenceFieldPart",
ReferenceFieldPart.ONLY_SEQUENCE_NUMBER);
oReferencePropertySet.setPropertyValue("ReferenceFieldSource",
ReferenceFieldSource.SEQUENCE_FIELD);
oReferencePropertySet.setPropertyValue("SequenceNumber", 0);// (short) 2);//not
requireed ?
XTextContent xRef = UnoRuntime.queryInterface(XTextContent.class, oReference);
localCursor.getText().insertTextContent(localCursor, xRef, false);
Regards,
--
Vincent Lorenzo
-----Message d'origine-----
De : LibreOffice <[email protected]> De la part de
LORENZO Vincent
Envoyé : vendredi 15 février 2019 14:37
À : Kaganski Mike <[email protected]>; Miklos Vajna
<[email protected]>; sos <[email protected]>
Cc : [email protected]
Objet : [PROVENANCE INTERNET] RE: need help to insert an image with a caption
with the Libo java API
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:[email protected]]
Envoyé : mercredi 13 février 2019 11:42
À : Miklos Vajna <[email protected]>; LORENZO Vincent
<[email protected]>
Cc : [email protected]
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
> <[email protected]> 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
[email protected]
https://lists.freedesktop.org/mailman/listinfo/libreoffice