TextFrame

This document is about how to set up and use a TextFrame object.

First steps

Set up a TextFrame object and add it to the Content object like that:

<?php 

use IDML\Content\TextFrame\TextFrame;

$textFrame = new TextFrame();

$content->addTextFrame($textFrame);

If you want to set your own unique identifier, set up the TextFrame like that: new TextFrame('UniqueName');

Size and Position

Add a size and a position like that:

<?php

$textFrame
    ->setSize(100, 200)
    ->setPosition(10, 10)
;

Add Unit::MILLIMETERS() as third parameter of each method if you prefer numbers in millimeters.

Adding text

Text is called Story and also stored in the Story object. You need to create one and add it then.

<?php

$textFrame->setParentStory($myStory);

Linking TextFrames

If you want to link multiple TextFrames to enable text content to float from one TextFrame into another, you need to do two things:

  1. Tell every TextFrame about the text content by calling $myTextFrame->setParentStory($myStory).
  2. Tell every TextFrame about the next TextFrame. This is important for letting InDesign know, in which TextFrames the content will float. $myTextFrameA->setNextFrame($myTextFrameB).

Here's a full example:

<?php

use IDML\Content\Story\CharacterStyleRange;
use IDML\Content\Story\LineBreak;
use IDML\Content\Story\ParagraphStyleRange;
use IDML\Content\Story\Story;
use IDML\Content\Story\Text;
use IDML\Content\TextFrame\TextFrame;

$myStory = new Story();
$myStory->setContent(
    new ParagraphStyleRange(
        null,
        new CharacterStyleRange(
            null,
            new Text('Hello World!'),
            new LineBreak()
        ) 
    )
);

$myTextFrameA = new TextFrame();
$myTextFrameA->setParentStory($myStory);

$myTextFrameB = new TextFrame();
$myTextFrameB->setParentStory($myStory);

$myTextFrameA->setNextTextFrame($myTextFrameB);

/** 
 * For sure we need to add the textframes to a page 
 * and the story to our content object 
 */
$myPage
    ->addTextFrame(
        $myTextFrameA,
        $myTextFrameB
    )
;

$content
    ->addStory(
        $myStory
    )
;