<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0cm;
        margin-right:0cm;
        margin-bottom:0cm;
        margin-left:36.0pt;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0cm;
        mso-margin-bottom-alt:auto;
        margin-left:0cm;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 70.85pt 70.85pt 70.85pt;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:590044977;
        mso-list-type:hybrid;
        mso-list-template-ids:1342070280 1013979864 67895299 67895301 67895297 67895299 67895301 67895297 67895299 67895301;}
@list l0:level1
        {mso-level-start-at:0;
        mso-level-number-format:bullet;
        mso-level-text:-;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:53.25pt;
        text-indent:-18.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-font-family:Calibri;}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:89.25pt;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:125.25pt;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:161.25pt;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:197.25pt;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:233.25pt;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:269.25pt;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:305.25pt;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        margin-left:341.25pt;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l1
        {mso-list-id:1442413514;
        mso-list-type:hybrid;
        mso-list-template-ids:275832952 -1170542658 67895299 67895301 67895297 67895299 67895301 67895297 67895299 67895301;}
@list l1:level1
        {mso-level-start-at:0;
        mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;
        mso-fareast-font-family:Calibri;
        mso-bidi-font-family:"Times New Roman";}
@list l1:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l1:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l1:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l1:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l1:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
@list l1:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Symbol;}
@list l1:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:"Courier New";}
@list l1:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-18.0pt;
        font-family:Wingdings;}
ol
        {margin-bottom:0cm;}
ul
        {margin-bottom:0cm;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="FR" link="#0563C1" vlink="#954F72">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">Hi Andrew,
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">   Thank you for your answer. In fact I want to create a numbered caption (something like « Figure 1 : my nice caption ») under an
 inserted image and I want to create a table of figure with these captions to list all images.
<o:p></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:53.25pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1">
<![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><span style="mso-list:Ignore">-<span style="font:7.0pt "Times New Roman"">         
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">The image is well inserted<o:p></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:53.25pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1">
<![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><span style="mso-list:Ignore">-<span style="font:7.0pt "Times New Roman"">         
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">The Table Of Figure is created and works fine when I add manually an image with a caption in the generated document.
<o:p></o:p></span></p>
<p class="MsoListParagraph" style="margin-left:53.25pt;text-indent:-18.0pt;mso-list:l0 level1 lfo1">
<![if !supportLists]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><span style="mso-list:Ignore">-<span style="font:7.0pt "Times New Roman"">         
</span></span></span><![endif]><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">This table of Figure doesn’t work for the image inserted programmatically, probably, because I don’t know how to create properly
 a numbered caption. <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">I’m a bit confused about the SetExpression, DependentField, field master, … I will continue to investigate about that, but if you have
 some references for me, please don’t hesitate. <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">Regards,
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US">/Vincent Lorenzo<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D;mso-fareast-language:EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">De :</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Andrew Pitonyak <andrew@pitonyak.org>
<br>
<b>Envoyé :</b> jeudi 5 septembre 2019 22:57<br>
<b>À :</b> LORENZO Vincent <vincent.lorenzo@cea.fr><br>
<b>Cc :</b> Kaganski Mike <mikekaganski@hotmail.com>; Miklos Vajna <vmiklos@collabora.com>; sos <sos@pmg.be>; libreoffice@lists.freedesktop.org<br>
<b>Objet :</b> RE: need help to insert an image with a caption with the Libo java API <text:sequence-ref instead of <text:sequence<o:p></o:p></span></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Are you looking to insert the caption, or the reference to the caption? I think you want to insert a reference to a dependent field for a text field master. Does this sound correct? <br>
<br>
The text field master, which is of type: <br>
<br>
com.sun.star.text.fieldmaster.SetExpression.Figure<br>
<br>
But you want to reference a Dependent field. If my guess is correct, this is how I insert a reference to the first Figure using Basic. Note that there is almost no error checking, so, this could go very wrong. <br>
<br>
Sub Main<br>
  Dim oField<br>
  Dim oNewField<br>
  Dim oText<br>
  Dim oCurs<br>
  Dim oReferencedField<br>
  Dim oEnum<br>
  Dim oDispatcher      ' Dispatcher object.<br>
  Dim oFrame<br>
<br>
 ' Setup to perform a dispatch.<br>
  oFrame = ThisComponent.CurrentController.Frame<br>
  oDispatcher = createUnoService("com.sun.star.frame.DispatchHelper")<br>
<br>
  oText = ThisComponent.getText()<br>
  oCurs = ThisComponent.CurrentController.getViewCursor()<br>
<br>
    oEnum = ThisComponent.getTextFields().createEnumeration()<br>
    If Not IsNull(oEnum) Then<br>
    Do While oEnum.hasMoreElements()<br>
<br>
<br>
      oField = oEnum.nextElement()<br>
      'Inspect oField<br>
      If oField.supportsService("com.sun.star.text.TextField.SetExpression") Then<br>
        If oField.VariableName = "Figure" Then<br>
          Print "Found one"<br>
          Exit Do<br>
        End If<br>
      End If<br>
    Loop<br>
  End If<br>
<br>
  ' No error checking, I just assume that I found one. DANGER DANGER DANGER<br>
<br>
<br>
  oNewField = ThisComponent.createInstance("com.sun.star.text.textfield.GetReference")<br>
  oNewField.ReferenceFieldPart = com.sun.star.text.ReferenceFieldPart.CATEGORY_AND_NUMBER<br>
  oNewField.ReferenceFieldSource = com.sun.star.text.ReferenceFieldSource.SEQUENCE_FIELD<br>
  oNewField.SequenceNumber = oField.SequenceValue<br>
  oNewField.SourceName = "Figure"<br>
  oText.insertTextContent(oCurs, oNewField, True)<br>
  <br>
  ' This next part will NOT work until after all of the fields have updated.<br>
  ' So, force an update.<br>
  oDispatcher.executeDispatch(oFrame, ".uno:UpdateFields", "", 0, Array())<br>
End Sub<br>
<br>
<br>
On Thursday, September 05, 2019 10:59 EDT, LORENZO Vincent <<a href="mailto:vincent.lorenzo@cea.fr">vincent.lorenzo@cea.fr</a>> wrote:<br>
 <o:p></o:p></p>
<blockquote style="margin-top:5.0pt;margin-bottom:5.0pt">
<p class="MsoNormal">Hello everybody,<br>
Since my last question, I switched task. Now I come back to my LibreOffice task to resolve my caption problem.<br>
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.<br>
I replace Illustration by Figure, but the problem keeps the same.<br>
<br>
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...<br>
<br>
My result for the numbering of the caption:<br>
<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")<br>
<br>
I would like to get :<br>
<text:sequence text:ref-name="refFigure0" text:name="Figure" text:formula="ooow:Figure+1" style:num-format="1">1</text:sequence><br>
<br>
My java code for that :<br>
<br>
Object oReference = xMultiServiceFactory.createInstance("com.sun.star.text.textfield.GetReference");<br>
XPropertySet oReferencePropertySet = UnoRuntime.queryInterface(XPropertySet.class, oReference);<br>
oReferencePropertySet.setPropertyValue("SourceName", "Figure");// I get <text:sequence-ref<br>
oReferencePropertySet.setPropertyValue("ReferenceFieldPart", ReferenceFieldPart.ONLY_SEQUENCE_NUMBER);<br>
oReferencePropertySet.setPropertyValue("ReferenceFieldSource", ReferenceFieldSource.SEQUENCE_FIELD);<br>
oReferencePropertySet.setPropertyValue("SequenceNumber", 0);// (short) 2);//not requireed ?<br>
XTextContent xRef = UnoRuntime.queryInterface(XTextContent.class, oReference);<br>
localCursor.getText().insertTextContent(localCursor, xRef, false);<br>
<br>
Regards,<br>
--<br>
Vincent Lorenzo<br>
<br>
<br>
-----Message d'origine-----<br>
De : LibreOffice <<a href="mailto:libreoffice-bounces@lists.freedesktop.org">libreoffice-bounces@lists.freedesktop.org</a>> De la part de LORENZO Vincent<br>
Envoyé : vendredi 15 février 2019 14:37<br>
À : Kaganski Mike <<a href="mailto:mikekaganski@hotmail.com">mikekaganski@hotmail.com</a>>; Miklos Vajna <<a href="mailto:vmiklos@collabora.com">vmiklos@collabora.com</a>>; sos <<a href="mailto:sos@pmg.be">sos@pmg.be</a>><br>
Cc : <a href="mailto:libreoffice@lists.freedesktop.org">libreoffice@lists.freedesktop.org</a><br>
Objet : [PROVENANCE INTERNET] RE: need help to insert an image with a caption with the Libo java API<br>
<br>
Hello everybody,<br>
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"<br>
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.<br>
<br>
The GetReference generates :<br>
<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").<br>
<br>
And I would like to get a text:sequence instead of a text:reference, to get this result:<br>
<text:sequence text:ref-name="refIllustration0" text:name="Illustration" text:formula="ooow:Illustration+1" style:num-format="1">1</text:sequence><br>
<br>
Please, do you know how I can build a text:sequence ?<br>
<br>
Please found in attachment the java code I wrote [1], the expect xml structure [2] and the current xml structure [3].<br>
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.<br>
<br>
[1] insertImage.java<br>
[2] expectedResult.xml<br>
[3] currentResult.xml<br>
<br>
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...<<br>
<br>
Best regards,<br>
--<br>
Vincent Lorenzo<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
<br>
-----Message d'origine-----<br>
De : Kaganski Mike [<a href="mailto:mikekaganski@hotmail.com">mailto:mikekaganski@hotmail.com</a>]<br>
Envoyé : mercredi 13 février 2019 11:42<br>
À : Miklos Vajna <<a href="mailto:vmiklos@collabora.com">vmiklos@collabora.com</a>>; LORENZO Vincent <<a href="mailto:vincent.lorenzo@cea.fr">vincent.lorenzo@cea.fr</a>><br>
Cc : <a href="mailto:libreoffice@lists.freedesktop.org">libreoffice@lists.freedesktop.org</a><br>
Objet : Re: need help to insert an image with a caption with the Libo java API<br>
<br>
On 13.02.2019 12:45, Miklos Vajna via LibreOffice wrote:<br>
> Hi,<br>
><br>
> On Tue, Feb 12, 2019 at 09:27:15AM +0000, LORENZO Vincent <<a href="mailto:vincent.lorenzo@cea.fr">vincent.lorenzo@cea.fr</a>> wrote:<br>
>> I would like to add a caption, to an inserted image in a text<br>
>> document, but I don't find how to do that... Please do you have<br>
>> pointer/documentation for me ?<br>
><br>
> I think captions are just a UI feature. The doc model just stores a<br>
> text frame around the image and the image is followed by the caption itself.<br>
><br>
> (I.e. later it's not possible to reliably detect if some content<br>
> around an image in a frame was created by hand or using the captions<br>
> UI code.)<br>
><br>
> So you can do the same "manually" using the UNO API. When in doubt,<br>
> see what UNO API the ODT import uses to create the doc model based on<br>
> the input markup.<br>
<br>
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.<br>
<br>
--<br>
Best regards,<br>
Mike Kaganski<br>
_______________________________________________<br>
LibreOffice mailing list<br>
<a href="mailto:LibreOffice@lists.freedesktop.org">LibreOffice@lists.freedesktop.org</a><br>
<a href="https://lists.freedesktop.org/mailman/listinfo/libreoffice">https://lists.freedesktop.org/mailman/listinfo/libreoffice</a><o:p></o:p></p>
</blockquote>
<p class="MsoNormal"><br>
<br>
<br>
 <o:p></o:p></p>
</div>
</body>
</html>