com.aspose.words

Class TextBox

  • java.lang.Object
    • com.aspose.words.TextBox
public class TextBox 
extends java.lang.Object

Defines attributes that specify how a text is displayed inside a shape.

Use the Shape.TextBox property to access text properties of a shape. You do not create instances of the TextBox class directly.

Example:

Shows how to insert text boxes and arrange their text.
Document doc = new Document();
DocumentBuilder builder = new DocumentBuilder(doc);

// Insert a shape that contains a TextBox
Shape textBoxShape = builder.insertShape(ShapeType.TEXT_BOX, 150.0, 100.0);
TextBox textBox = textBoxShape.getTextBox();

// Move the document builder to inside the TextBox and write text
builder.moveTo(textBoxShape.getLastParagraph());
builder.write("Vertical text");

// Text is displayed vertically, written top to bottom
textBox.setLayoutFlow(LayoutFlow.TOP_TO_BOTTOM_IDEOGRAPHIC);

// Move the builder out of the shape and back into the main document body
builder.moveTo(textBoxShape.getParentParagraph());

// Insert another TextBox
textBoxShape = builder.insertShape(ShapeType.TEXT_BOX, 150.0, 100.0);
textBox = textBoxShape.getTextBox();

// Apply these values to both these members to get the parent shape to defy the dimensions we set to fit tightly around the TextBox's text
textBox.setFitShapeToText(true);
textBox.setTextBoxWrapMode(TextBoxWrapMode.NONE);

builder.moveTo(textBoxShape.getLastParagraph());
builder.write("Text fit tightly inside textbox");

builder.moveTo(textBoxShape.getParentParagraph());

textBoxShape = builder.insertShape(ShapeType.TEXT_BOX, 100.0, 100.0);
textBox = textBoxShape.getTextBox();

// Set margins for the textbox
textBox.setInternalMarginTop(15.0);
textBox.setInternalMarginBottom(15.0);
textBox.setInternalMarginLeft(15.0);
textBox.setInternalMarginRight(15.0);

builder.moveTo(textBoxShape.getLastParagraph());
builder.write("Text placed according to textbox margins");

doc.save(getArtifactsDir() + "Shape.TextBox.docx");
See Also:
Shape.TextBox

Property Getters/Setters Summary
booleangetFitShapeToText()
void
setFitShapeToText(booleanvalue)
           Determines whether Microsoft Word will grow the shape to fit text.
doublegetInternalMarginBottom()
void
           Specifies the inner bottom margin in points for a shape.
doublegetInternalMarginLeft()
void
           Specifies the inner left margin in points for a shape.
doublegetInternalMarginRight()
void
           Specifies the inner right margin in points for a shape.
doublegetInternalMarginTop()
void
           Specifies the inner top margin in points for a shape.
intgetLayoutFlow()
void
setLayoutFlow(intvalue)
           Determines the flow of the text layout in a shape. The value of the property is LayoutFlow integer constant.
TextBoxgetNext()
void
           Returns or sets a TextBox that represents the next TextBox in a sequence of shapes.
ShapegetParent()
Gets a parent shape for the TextBox.
TextBoxgetPrevious()
Returns a TextBox that represents the previous TextBox in a sequence of shapes.
intgetTextBoxWrapMode()
void
           Determines how text wraps inside a shape. The value of the property is TextBoxWrapMode integer constant.
intgetVerticalAnchor()
void
           Specifies the vertical alignment of the text within a shape. The value of the property is TextBoxAnchor integer constant.
 
Method Summary
voidbreakForwardLink()
Breaks the link to the next TextBox.
booleanisValidLinkTarget(TextBox target)
Determines whether this TextBox can be linked to the target Textbox.
 

    • Property Getters/Setters Detail

      • getFitShapeToText/setFitShapeToText

        public boolean getFitShapeToText() / public void setFitShapeToText(boolean value)
        
        Determines whether Microsoft Word will grow the shape to fit text.

        The default value is false.

        Example:

        Shows how to insert text boxes and arrange their text.
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        
        // Insert a shape that contains a TextBox
        Shape textBoxShape = builder.insertShape(ShapeType.TEXT_BOX, 150.0, 100.0);
        TextBox textBox = textBoxShape.getTextBox();
        
        // Move the document builder to inside the TextBox and write text
        builder.moveTo(textBoxShape.getLastParagraph());
        builder.write("Vertical text");
        
        // Text is displayed vertically, written top to bottom
        textBox.setLayoutFlow(LayoutFlow.TOP_TO_BOTTOM_IDEOGRAPHIC);
        
        // Move the builder out of the shape and back into the main document body
        builder.moveTo(textBoxShape.getParentParagraph());
        
        // Insert another TextBox
        textBoxShape = builder.insertShape(ShapeType.TEXT_BOX, 150.0, 100.0);
        textBox = textBoxShape.getTextBox();
        
        // Apply these values to both these members to get the parent shape to defy the dimensions we set to fit tightly around the TextBox's text
        textBox.setFitShapeToText(true);
        textBox.setTextBoxWrapMode(TextBoxWrapMode.NONE);
        
        builder.moveTo(textBoxShape.getLastParagraph());
        builder.write("Text fit tightly inside textbox");
        
        builder.moveTo(textBoxShape.getParentParagraph());
        
        textBoxShape = builder.insertShape(ShapeType.TEXT_BOX, 100.0, 100.0);
        textBox = textBoxShape.getTextBox();
        
        // Set margins for the textbox
        textBox.setInternalMarginTop(15.0);
        textBox.setInternalMarginBottom(15.0);
        textBox.setInternalMarginLeft(15.0);
        textBox.setInternalMarginRight(15.0);
        
        builder.moveTo(textBoxShape.getLastParagraph());
        builder.write("Text placed according to textbox margins");
        
        doc.save(getArtifactsDir() + "Shape.TextBox.docx");
      • getInternalMarginBottom/setInternalMarginBottom

        public double getInternalMarginBottom() / public void setInternalMarginBottom(double value)
        
        Specifies the inner bottom margin in points for a shape.

        The default value is 1/20 inch.

        Example:

        Shows how to insert text boxes and arrange their text.
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        
        // Insert a shape that contains a TextBox
        Shape textBoxShape = builder.insertShape(ShapeType.TEXT_BOX, 150.0, 100.0);
        TextBox textBox = textBoxShape.getTextBox();
        
        // Move the document builder to inside the TextBox and write text
        builder.moveTo(textBoxShape.getLastParagraph());
        builder.write("Vertical text");
        
        // Text is displayed vertically, written top to bottom
        textBox.setLayoutFlow(LayoutFlow.TOP_TO_BOTTOM_IDEOGRAPHIC);
        
        // Move the builder out of the shape and back into the main document body
        builder.moveTo(textBoxShape.getParentParagraph());
        
        // Insert another TextBox
        textBoxShape = builder.insertShape(ShapeType.TEXT_BOX, 150.0, 100.0);
        textBox = textBoxShape.getTextBox();
        
        // Apply these values to both these members to get the parent shape to defy the dimensions we set to fit tightly around the TextBox's text
        textBox.setFitShapeToText(true);
        textBox.setTextBoxWrapMode(TextBoxWrapMode.NONE);
        
        builder.moveTo(textBoxShape.getLastParagraph());
        builder.write("Text fit tightly inside textbox");
        
        builder.moveTo(textBoxShape.getParentParagraph());
        
        textBoxShape = builder.insertShape(ShapeType.TEXT_BOX, 100.0, 100.0);
        textBox = textBoxShape.getTextBox();
        
        // Set margins for the textbox
        textBox.setInternalMarginTop(15.0);
        textBox.setInternalMarginBottom(15.0);
        textBox.setInternalMarginLeft(15.0);
        textBox.setInternalMarginRight(15.0);
        
        builder.moveTo(textBoxShape.getLastParagraph());
        builder.write("Text placed according to textbox margins");
        
        doc.save(getArtifactsDir() + "Shape.TextBox.docx");
      • getInternalMarginLeft/setInternalMarginLeft

        public double getInternalMarginLeft() / public void setInternalMarginLeft(double value)
        
        Specifies the inner left margin in points for a shape.

        The default value is 1/10 inch.

        Example:

        Shows how to insert text boxes and arrange their text.
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        
        // Insert a shape that contains a TextBox
        Shape textBoxShape = builder.insertShape(ShapeType.TEXT_BOX, 150.0, 100.0);
        TextBox textBox = textBoxShape.getTextBox();
        
        // Move the document builder to inside the TextBox and write text
        builder.moveTo(textBoxShape.getLastParagraph());
        builder.write("Vertical text");
        
        // Text is displayed vertically, written top to bottom
        textBox.setLayoutFlow(LayoutFlow.TOP_TO_BOTTOM_IDEOGRAPHIC);
        
        // Move the builder out of the shape and back into the main document body
        builder.moveTo(textBoxShape.getParentParagraph());
        
        // Insert another TextBox
        textBoxShape = builder.insertShape(ShapeType.TEXT_BOX, 150.0, 100.0);
        textBox = textBoxShape.getTextBox();
        
        // Apply these values to both these members to get the parent shape to defy the dimensions we set to fit tightly around the TextBox's text
        textBox.setFitShapeToText(true);
        textBox.setTextBoxWrapMode(TextBoxWrapMode.NONE);
        
        builder.moveTo(textBoxShape.getLastParagraph());
        builder.write("Text fit tightly inside textbox");
        
        builder.moveTo(textBoxShape.getParentParagraph());
        
        textBoxShape = builder.insertShape(ShapeType.TEXT_BOX, 100.0, 100.0);
        textBox = textBoxShape.getTextBox();
        
        // Set margins for the textbox
        textBox.setInternalMarginTop(15.0);
        textBox.setInternalMarginBottom(15.0);
        textBox.setInternalMarginLeft(15.0);
        textBox.setInternalMarginRight(15.0);
        
        builder.moveTo(textBoxShape.getLastParagraph());
        builder.write("Text placed according to textbox margins");
        
        doc.save(getArtifactsDir() + "Shape.TextBox.docx");
      • getInternalMarginRight/setInternalMarginRight

        public double getInternalMarginRight() / public void setInternalMarginRight(double value)
        
        Specifies the inner right margin in points for a shape.

        The default value is 1/10 inch.

        Example:

        Shows how to insert text boxes and arrange their text.
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        
        // Insert a shape that contains a TextBox
        Shape textBoxShape = builder.insertShape(ShapeType.TEXT_BOX, 150.0, 100.0);
        TextBox textBox = textBoxShape.getTextBox();
        
        // Move the document builder to inside the TextBox and write text
        builder.moveTo(textBoxShape.getLastParagraph());
        builder.write("Vertical text");
        
        // Text is displayed vertically, written top to bottom
        textBox.setLayoutFlow(LayoutFlow.TOP_TO_BOTTOM_IDEOGRAPHIC);
        
        // Move the builder out of the shape and back into the main document body
        builder.moveTo(textBoxShape.getParentParagraph());
        
        // Insert another TextBox
        textBoxShape = builder.insertShape(ShapeType.TEXT_BOX, 150.0, 100.0);
        textBox = textBoxShape.getTextBox();
        
        // Apply these values to both these members to get the parent shape to defy the dimensions we set to fit tightly around the TextBox's text
        textBox.setFitShapeToText(true);
        textBox.setTextBoxWrapMode(TextBoxWrapMode.NONE);
        
        builder.moveTo(textBoxShape.getLastParagraph());
        builder.write("Text fit tightly inside textbox");
        
        builder.moveTo(textBoxShape.getParentParagraph());
        
        textBoxShape = builder.insertShape(ShapeType.TEXT_BOX, 100.0, 100.0);
        textBox = textBoxShape.getTextBox();
        
        // Set margins for the textbox
        textBox.setInternalMarginTop(15.0);
        textBox.setInternalMarginBottom(15.0);
        textBox.setInternalMarginLeft(15.0);
        textBox.setInternalMarginRight(15.0);
        
        builder.moveTo(textBoxShape.getLastParagraph());
        builder.write("Text placed according to textbox margins");
        
        doc.save(getArtifactsDir() + "Shape.TextBox.docx");
      • getInternalMarginTop/setInternalMarginTop

        public double getInternalMarginTop() / public void setInternalMarginTop(double value)
        
        Specifies the inner top margin in points for a shape.

        The default value is 1/20 inch.

        Example:

        Shows how to insert text boxes and arrange their text.
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        
        // Insert a shape that contains a TextBox
        Shape textBoxShape = builder.insertShape(ShapeType.TEXT_BOX, 150.0, 100.0);
        TextBox textBox = textBoxShape.getTextBox();
        
        // Move the document builder to inside the TextBox and write text
        builder.moveTo(textBoxShape.getLastParagraph());
        builder.write("Vertical text");
        
        // Text is displayed vertically, written top to bottom
        textBox.setLayoutFlow(LayoutFlow.TOP_TO_BOTTOM_IDEOGRAPHIC);
        
        // Move the builder out of the shape and back into the main document body
        builder.moveTo(textBoxShape.getParentParagraph());
        
        // Insert another TextBox
        textBoxShape = builder.insertShape(ShapeType.TEXT_BOX, 150.0, 100.0);
        textBox = textBoxShape.getTextBox();
        
        // Apply these values to both these members to get the parent shape to defy the dimensions we set to fit tightly around the TextBox's text
        textBox.setFitShapeToText(true);
        textBox.setTextBoxWrapMode(TextBoxWrapMode.NONE);
        
        builder.moveTo(textBoxShape.getLastParagraph());
        builder.write("Text fit tightly inside textbox");
        
        builder.moveTo(textBoxShape.getParentParagraph());
        
        textBoxShape = builder.insertShape(ShapeType.TEXT_BOX, 100.0, 100.0);
        textBox = textBoxShape.getTextBox();
        
        // Set margins for the textbox
        textBox.setInternalMarginTop(15.0);
        textBox.setInternalMarginBottom(15.0);
        textBox.setInternalMarginLeft(15.0);
        textBox.setInternalMarginRight(15.0);
        
        builder.moveTo(textBoxShape.getLastParagraph());
        builder.write("Text placed according to textbox margins");
        
        doc.save(getArtifactsDir() + "Shape.TextBox.docx");
      • getLayoutFlow/setLayoutFlow

        public int getLayoutFlow() / public void setLayoutFlow(int value)
        
        Determines the flow of the text layout in a shape. The value of the property is LayoutFlow integer constant.

        The default value is LayoutFlow.HORIZONTAL.

        Example:

        Shows how to insert text boxes and arrange their text.
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        
        // Insert a shape that contains a TextBox
        Shape textBoxShape = builder.insertShape(ShapeType.TEXT_BOX, 150.0, 100.0);
        TextBox textBox = textBoxShape.getTextBox();
        
        // Move the document builder to inside the TextBox and write text
        builder.moveTo(textBoxShape.getLastParagraph());
        builder.write("Vertical text");
        
        // Text is displayed vertically, written top to bottom
        textBox.setLayoutFlow(LayoutFlow.TOP_TO_BOTTOM_IDEOGRAPHIC);
        
        // Move the builder out of the shape and back into the main document body
        builder.moveTo(textBoxShape.getParentParagraph());
        
        // Insert another TextBox
        textBoxShape = builder.insertShape(ShapeType.TEXT_BOX, 150.0, 100.0);
        textBox = textBoxShape.getTextBox();
        
        // Apply these values to both these members to get the parent shape to defy the dimensions we set to fit tightly around the TextBox's text
        textBox.setFitShapeToText(true);
        textBox.setTextBoxWrapMode(TextBoxWrapMode.NONE);
        
        builder.moveTo(textBoxShape.getLastParagraph());
        builder.write("Text fit tightly inside textbox");
        
        builder.moveTo(textBoxShape.getParentParagraph());
        
        textBoxShape = builder.insertShape(ShapeType.TEXT_BOX, 100.0, 100.0);
        textBox = textBoxShape.getTextBox();
        
        // Set margins for the textbox
        textBox.setInternalMarginTop(15.0);
        textBox.setInternalMarginBottom(15.0);
        textBox.setInternalMarginLeft(15.0);
        textBox.setInternalMarginRight(15.0);
        
        builder.moveTo(textBoxShape.getLastParagraph());
        builder.write("Text placed according to textbox margins");
        
        doc.save(getArtifactsDir() + "Shape.TextBox.docx");
      • getNext/setNext

        public TextBox getNext() / public void setNext(TextBox value)
        
        Returns or sets a TextBox that represents the next TextBox in a sequence of shapes.

        Example:

        Shows how to work with textbox forward link
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        
        // Create a few textboxes for example
        Shape textBoxShape1 = builder.insertShape(ShapeType.TEXT_BOX, 100.0, 100.0);
        TextBox textBox1 = textBoxShape1.getTextBox();
        builder.writeln();
        
        Shape textBoxShape2 = builder.insertShape(ShapeType.TEXT_BOX, 100.0, 100.0);
        TextBox textBox2 = textBoxShape2.getTextBox();
        builder.writeln();
        
        Shape textBoxShape3 = builder.insertShape(ShapeType.TEXT_BOX, 100.0, 100.0);
        TextBox textBox3 = textBoxShape3.getTextBox();
        builder.writeln();
        
        Shape textBoxShape4 = builder.insertShape(ShapeType.TEXT_BOX, 100.0, 100.0);
        TextBox textBox4 = textBoxShape4.getTextBox();
        
        // Create link between textboxes if possible
        if (textBox1.isValidLinkTarget(textBox2))
            textBox1.setNext(textBox2);
        
        if (textBox2.isValidLinkTarget(textBox3))
            textBox2.setNext(textBox3);
        
        // You can only create link on empty textbox
        builder.moveTo(textBoxShape4.getLastParagraph());
        builder.write("Vertical text");
        // Thus it's not valid link target
        Assert.assertFalse(textBox3.isValidLinkTarget(textBox4));
        
        if (textBox1.getNext() != null && textBox1.getPrevious() == null)
            System.out.println("This TextBox is the head of the sequence");
        
        if (textBox2.getNext() != null && textBox2.getPrevious() != null)
            System.out.println("This TextBox is the Middle of the sequence");
        
        if (textBox3.getNext() == null && textBox3.getPrevious() != null) {
            System.out.println("This TextBox is the Tail of the sequence");
        
            // Break the forward link between textBox2 and textBox3
            textBox3.getPrevious().breakForwardLink();
            // Check that link was break successfully
            Assert.assertTrue(textBox2.getNext() == null);
            Assert.assertTrue(textBox3.getPrevious() == null);
        }
        
        doc.save(getArtifactsDir() + "Shape.CreateLinkBetweenTextBoxes.docx");
      • getParent

        public Shape getParent()
        
        Gets a parent shape for the TextBox.
      • getPrevious

        public TextBox getPrevious()
        
        Returns a TextBox that represents the previous TextBox in a sequence of shapes.

        Example:

        Shows how to work with textbox forward link
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        
        // Create a few textboxes for example
        Shape textBoxShape1 = builder.insertShape(ShapeType.TEXT_BOX, 100.0, 100.0);
        TextBox textBox1 = textBoxShape1.getTextBox();
        builder.writeln();
        
        Shape textBoxShape2 = builder.insertShape(ShapeType.TEXT_BOX, 100.0, 100.0);
        TextBox textBox2 = textBoxShape2.getTextBox();
        builder.writeln();
        
        Shape textBoxShape3 = builder.insertShape(ShapeType.TEXT_BOX, 100.0, 100.0);
        TextBox textBox3 = textBoxShape3.getTextBox();
        builder.writeln();
        
        Shape textBoxShape4 = builder.insertShape(ShapeType.TEXT_BOX, 100.0, 100.0);
        TextBox textBox4 = textBoxShape4.getTextBox();
        
        // Create link between textboxes if possible
        if (textBox1.isValidLinkTarget(textBox2))
            textBox1.setNext(textBox2);
        
        if (textBox2.isValidLinkTarget(textBox3))
            textBox2.setNext(textBox3);
        
        // You can only create link on empty textbox
        builder.moveTo(textBoxShape4.getLastParagraph());
        builder.write("Vertical text");
        // Thus it's not valid link target
        Assert.assertFalse(textBox3.isValidLinkTarget(textBox4));
        
        if (textBox1.getNext() != null && textBox1.getPrevious() == null)
            System.out.println("This TextBox is the head of the sequence");
        
        if (textBox2.getNext() != null && textBox2.getPrevious() != null)
            System.out.println("This TextBox is the Middle of the sequence");
        
        if (textBox3.getNext() == null && textBox3.getPrevious() != null) {
            System.out.println("This TextBox is the Tail of the sequence");
        
            // Break the forward link between textBox2 and textBox3
            textBox3.getPrevious().breakForwardLink();
            // Check that link was break successfully
            Assert.assertTrue(textBox2.getNext() == null);
            Assert.assertTrue(textBox3.getPrevious() == null);
        }
        
        doc.save(getArtifactsDir() + "Shape.CreateLinkBetweenTextBoxes.docx");
      • getTextBoxWrapMode/setTextBoxWrapMode

        public int getTextBoxWrapMode() / public void setTextBoxWrapMode(int value)
        
        Determines how text wraps inside a shape. The value of the property is TextBoxWrapMode integer constant.

        The default value is TextBoxWrapMode.SQUARE.

        Example:

        Shows how to insert text boxes and arrange their text.
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        
        // Insert a shape that contains a TextBox
        Shape textBoxShape = builder.insertShape(ShapeType.TEXT_BOX, 150.0, 100.0);
        TextBox textBox = textBoxShape.getTextBox();
        
        // Move the document builder to inside the TextBox and write text
        builder.moveTo(textBoxShape.getLastParagraph());
        builder.write("Vertical text");
        
        // Text is displayed vertically, written top to bottom
        textBox.setLayoutFlow(LayoutFlow.TOP_TO_BOTTOM_IDEOGRAPHIC);
        
        // Move the builder out of the shape and back into the main document body
        builder.moveTo(textBoxShape.getParentParagraph());
        
        // Insert another TextBox
        textBoxShape = builder.insertShape(ShapeType.TEXT_BOX, 150.0, 100.0);
        textBox = textBoxShape.getTextBox();
        
        // Apply these values to both these members to get the parent shape to defy the dimensions we set to fit tightly around the TextBox's text
        textBox.setFitShapeToText(true);
        textBox.setTextBoxWrapMode(TextBoxWrapMode.NONE);
        
        builder.moveTo(textBoxShape.getLastParagraph());
        builder.write("Text fit tightly inside textbox");
        
        builder.moveTo(textBoxShape.getParentParagraph());
        
        textBoxShape = builder.insertShape(ShapeType.TEXT_BOX, 100.0, 100.0);
        textBox = textBoxShape.getTextBox();
        
        // Set margins for the textbox
        textBox.setInternalMarginTop(15.0);
        textBox.setInternalMarginBottom(15.0);
        textBox.setInternalMarginLeft(15.0);
        textBox.setInternalMarginRight(15.0);
        
        builder.moveTo(textBoxShape.getLastParagraph());
        builder.write("Text placed according to textbox margins");
        
        doc.save(getArtifactsDir() + "Shape.TextBox.docx");
      • getVerticalAnchor/setVerticalAnchor

        public int getVerticalAnchor() / public void setVerticalAnchor(int value)
        
        Specifies the vertical alignment of the text within a shape. The value of the property is TextBoxAnchor integer constant.

        The default value is TextBoxAnchor.TOP.

        Example:

        Shows how to change text position inside textbox shape.
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        
        Shape textBox = builder.insertShape(ShapeType.TEXT_BOX, 200.0, 200.0);
        textBox.getTextBox().setVerticalAnchor(TextBoxAnchor.BOTTOM);
        
        builder.moveTo(textBox.getFirstParagraph());
        builder.write("Textbox contents");
        
        doc.save(getArtifactsDir() + "Shape.GetTextBoxAndChangeAnchor.docx");
    • Method Detail

      • breakForwardLink

        public void breakForwardLink()
        Breaks the link to the next TextBox. BreakForwardLink() doesn't break all other links in the current sequence of shapes. For example: 1-2-3-4 sequence and BreakForwardLink at the 2-nd textbox will create two sequences 1-2, 3-4.

        Example:

        Shows how to work with textbox forward link
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        
        // Create a few textboxes for example
        Shape textBoxShape1 = builder.insertShape(ShapeType.TEXT_BOX, 100.0, 100.0);
        TextBox textBox1 = textBoxShape1.getTextBox();
        builder.writeln();
        
        Shape textBoxShape2 = builder.insertShape(ShapeType.TEXT_BOX, 100.0, 100.0);
        TextBox textBox2 = textBoxShape2.getTextBox();
        builder.writeln();
        
        Shape textBoxShape3 = builder.insertShape(ShapeType.TEXT_BOX, 100.0, 100.0);
        TextBox textBox3 = textBoxShape3.getTextBox();
        builder.writeln();
        
        Shape textBoxShape4 = builder.insertShape(ShapeType.TEXT_BOX, 100.0, 100.0);
        TextBox textBox4 = textBoxShape4.getTextBox();
        
        // Create link between textboxes if possible
        if (textBox1.isValidLinkTarget(textBox2))
            textBox1.setNext(textBox2);
        
        if (textBox2.isValidLinkTarget(textBox3))
            textBox2.setNext(textBox3);
        
        // You can only create link on empty textbox
        builder.moveTo(textBoxShape4.getLastParagraph());
        builder.write("Vertical text");
        // Thus it's not valid link target
        Assert.assertFalse(textBox3.isValidLinkTarget(textBox4));
        
        if (textBox1.getNext() != null && textBox1.getPrevious() == null)
            System.out.println("This TextBox is the head of the sequence");
        
        if (textBox2.getNext() != null && textBox2.getPrevious() != null)
            System.out.println("This TextBox is the Middle of the sequence");
        
        if (textBox3.getNext() == null && textBox3.getPrevious() != null) {
            System.out.println("This TextBox is the Tail of the sequence");
        
            // Break the forward link between textBox2 and textBox3
            textBox3.getPrevious().breakForwardLink();
            // Check that link was break successfully
            Assert.assertTrue(textBox2.getNext() == null);
            Assert.assertTrue(textBox3.getPrevious() == null);
        }
        
        doc.save(getArtifactsDir() + "Shape.CreateLinkBetweenTextBoxes.docx");
      • isValidLinkTarget

        public boolean isValidLinkTarget(TextBox target)
        Determines whether this TextBox can be linked to the target Textbox.

        Example:

        Shows how to work with textbox forward link
        Document doc = new Document();
        DocumentBuilder builder = new DocumentBuilder(doc);
        
        // Create a few textboxes for example
        Shape textBoxShape1 = builder.insertShape(ShapeType.TEXT_BOX, 100.0, 100.0);
        TextBox textBox1 = textBoxShape1.getTextBox();
        builder.writeln();
        
        Shape textBoxShape2 = builder.insertShape(ShapeType.TEXT_BOX, 100.0, 100.0);
        TextBox textBox2 = textBoxShape2.getTextBox();
        builder.writeln();
        
        Shape textBoxShape3 = builder.insertShape(ShapeType.TEXT_BOX, 100.0, 100.0);
        TextBox textBox3 = textBoxShape3.getTextBox();
        builder.writeln();
        
        Shape textBoxShape4 = builder.insertShape(ShapeType.TEXT_BOX, 100.0, 100.0);
        TextBox textBox4 = textBoxShape4.getTextBox();
        
        // Create link between textboxes if possible
        if (textBox1.isValidLinkTarget(textBox2))
            textBox1.setNext(textBox2);
        
        if (textBox2.isValidLinkTarget(textBox3))
            textBox2.setNext(textBox3);
        
        // You can only create link on empty textbox
        builder.moveTo(textBoxShape4.getLastParagraph());
        builder.write("Vertical text");
        // Thus it's not valid link target
        Assert.assertFalse(textBox3.isValidLinkTarget(textBox4));
        
        if (textBox1.getNext() != null && textBox1.getPrevious() == null)
            System.out.println("This TextBox is the head of the sequence");
        
        if (textBox2.getNext() != null && textBox2.getPrevious() != null)
            System.out.println("This TextBox is the Middle of the sequence");
        
        if (textBox3.getNext() == null && textBox3.getPrevious() != null) {
            System.out.println("This TextBox is the Tail of the sequence");
        
            // Break the forward link between textBox2 and textBox3
            textBox3.getPrevious().breakForwardLink();
            // Check that link was break successfully
            Assert.assertTrue(textBox2.getNext() == null);
            Assert.assertTrue(textBox3.getPrevious() == null);
        }
        
        doc.save(getArtifactsDir() + "Shape.CreateLinkBetweenTextBoxes.docx");