4 Replies Latest reply: Mar 15, 2013 8:34 AM by TauChiba RSS

    How to get selected images?

    TauChiba Community Member

      Hi all,

      can anyone help with getting a list of selected images?

      E.g., to get selected tables I use

      doc.GetTextForRange(doc.TextSelection, Constants.FTI_TblAnchor)

       

      Thanks in advance!

        • 1. Re: How to get selected images?
          frameexpert Community Member

          If you want the anchored frames in a range of selected text, you would use

           

          var textList = doc.GetTextForRange(doc.TextSelection, Constants.FTI_FrameAnchor);
          

           

          If you want to get graphics that are selected as objects, you can use:

           

          var graphic = doc.FirstSelectedGraphicInDoc;
          while (graphic.ObjectValid()) {
              // Do something here.
              graphic = graphic.NextSelectedGraphicInDoc;
          }
          

           

          Rick

          • 2. Re: How to get selected images?
            TauChiba Community Member

            Thanks for the answer. The main goal is to get to the text in the image description. Can you say, what way is better for this purpose?

            • 3. Re: How to get selected images?
              frameexpert Community Member

              You will have to explain how things are set up, or maybe post a screenshot. I don't know what you mean by "text in the image description." Thanks.

               

              Rick

              • 4. Re: How to get selected images?
                TauChiba Community Member

                Suppose you have a document and have a picture in it. Under the picture there's a hint/title/description "Picure 2.3. A snow falling in the UK."

                As I found out, this text can be obtained trough FrameAnchor from your suggestion.

                 

                var imgHintList =  doc.GetTextForRange(doc.TextSelection, Constants.FTI_FrameAnchor);
                var imgHint = imgHintList[imgIndex].obj.TextLoc;
                

                 

                This works good. The part that I'm working on now is how to limit the search with only this Hint. Th algorythm is:

                1. Search a word in a hint.

                2. Replace it with another.

                3. Start the search again, but starting from the end of our replacement.

                4. Repeat while we have any finds.

                 

                For now, I can search and replace all info, but I can't stop when the search reaches the end of the Hint. Here's what I have:

                 

                 

                findParam = AllocatePropVals (1);
                findParam[0].propIdent.num = Constants.FS_FindText;
                findParam[0].propVal.valType = Constants.FT_String;
                
                //.... some code
                
                
                var imgHintList =  doc.GetTextForRange(doc.TextSelection, Constants.FTI_FrameAnchor);
                for(var imgIndex = 0; imgIndex < imgHintList.length; imgIndex++){
                     var imgHint = imgHintList[imgIndex].obj.TextLoc;
                
                     findParam[0].propVal.sval = strings[i][1];            
                     foundText = doc.Find (imgHint, findParam);
                     testText = doc.GetTextForRange (foundText, Constants.FTI_String);                  
                                 
                     while(testText.length > 0){ // here, probably, should be an extra stop condition ....
                          doc.DeleteText(foundText);
                          doc.AddText(foundText.beg, strings[i][2]);
                             
                          //starting the search from the end of the replaced block
                          imgHint.offset = foundText.end.offset;                     
                          foundText = doc.Find (imgHint, findParam);
                          testText = doc.GetTextForRange (foundText, Constants.FTI_String);
                     }
                }
                

                 

                Any ideas?