I had written a short program which splices some text into a
RichTextRun.

 

Here is my exception:

 

Exception in thread "main" java.lang.StringIndexOutOfBoundsException:
String index out of range: 178

            at java.lang.String.substring(String.java:1765)

            at
org.apache.poi.hslf.usermodel.RichTextRun.getText(RichTextRun.java:133)

            at hslf.InsertText.insertText(InsertText.java:39)

            at hslf.InsertText.main(InsertText.java:19)

Process exited with exit code 1.

 

 

Here is my code.   The location of the exception is marked:

 

 

 

public class InsertText {

    public InsertText() {

    }

 

    public static void main(String[] args) throws IOException {

        InsertText insertText = new InsertText();

        insertText.insertText();

    }

    

    public void insertText() throws IOException {

        SlideShow ppt = new SlideShow(new
HSLFSlideShow("c:/test/test2.ppt"));

        Slide slide2 = ppt.getSlides()[1];

        

        String contchan = "9.9";

        String actreflect = "8";

        String indOrg = "0.090";

        

        Shape[] sh = slide2.getShapes();

        for (int j = 0; j < sh.length; j++) {

 

            if (sh[j] instanceof TextBox){

                TextBox shape = (TextBox)sh[j];

                if (shape.getTextRun() != null) {

                    RichTextRun[] rtr =
shape.getTextRun().getRichTextRuns();

                    for (RichTextRun rich: rtr) {

 

                        //EXCEPTION OCCURS HERE (NEXT LINE) AFTER NEXT
BLOCK OF CODE HAS EXECUTED AND LOOPED            

 

                        if
(rich.getText().trim().startsWith("Continuity")) {

                            String master = rich.getText();

                            int pos1 = master.indexOf("=");

                            String b4contchan = master.substring(0, pos1
+ 2);

                            int pos2 = master.indexOf("Action");

                            String aftcontchan = master.substring(pos2 -
1);

                            master = b4contchan + contchan +
aftcontchan;

                            System.err.println("master = " + master);

                            rich.setText(master);

                        }

                    }

                  }

              } 

        }

        

        

        FileOutputStream out = new
FileOutputStream("c:/test/test2.ppt");

        ppt.write(out);

        out.close();

    }

    

}

 

 

If I comment out rich.setText(master) the program runs to completion but
doesn't of course change the RichTextRun in test2.ppt.   It doesn't make
any sense . . . it seems as though setting this text is affecting the
entire array of RichTextRuns.   I mean after rich.setText(master) the
loop ends and goes on to the text position in the array.  This next loop
is affected.  I don't know why.

 

Thanks.

 

Regards,

Eric Hamacher

 

******************************

THIS EMAIL IS INTENDED ONLY FOR THE REVIEW OF THE ADDRESSEE(S), AND MAY
CONTAIN CONFIDENTIAL AND LEGALLY PRIVILEGED INFORMATION. INTERCEPTION,
COPYING, DISSEMINATION, OR OTHER USE BY OTHER THAN THE ADDRESSEE(S) IS
PROHIBITED AND MAY BE PENALIZED UNDER APPLICABLE PRIVACY LAWS. IF YOU
RECEIVED THIS EMAIL IN ERROR, PLEASE DELETE IT AND NOTIFY ME BY RETURN
EMAIL TO [EMAIL PROTECTED] *******************************

 

Reply via email to