IDML-Creator is a PHP Framework for creating IDML files.

Creating IDML files instead of PDFs is a better workflow

PDF is a closed-file format. It's not made for getting edited and should be the last thing in your publication workflow. Using IDML files allows to edit and change files by other scripts or by Adobe InDesign itself.

You don't need to care about a lot of things like page numbers, indexes, living titles and a lot more.

IDML is an XML based container file and can be used to transfer informations between APIs and other scripts.


use Color\Value\CMYK;
use IDML\Content;
use IDML\Content\BackingStory;
use IDML\Content\Color\Color;
use IDML\Content\Container;
use IDML\Content\DesignMap;
use IDML\Content\Enum\Color\Model as ModelEnum;
use IDML\Content\Enum\Content\Language as LanguageEnum;
use IDML\Content\Enum\Spread\PagePosition as PagePositionEnum;
use IDML\Content\Font\FontFamily;
use IDML\Content\Font\FontStyle;
use IDML\Content\Language\Language;
use IDML\Content\Page;
use IDML\Content\Preference;
use IDML\Content\Spread\Spread;
use IDML\Content\Story\CharacterStyleRange;
use IDML\Content\Story\ParagraphStyleRange;
use IDML\Content\Story\Story;
use IDML\Content\Story\Text;
use IDML\Content\Style\CharacterStyle;
use IDML\Content\Style\ParagraphStyle;
use IDML\Content\Tag;
use IDML\Content\Enum\Unit;
use IDML\Content\TextFrame\TextFrame;
use IDML\File\Tree;
use IDML\Writer;

/** Requires composers autoload */
require 'vendor/autoload.php';

/** These is the language we want to use */
$language = new Language(

/** Creates the DesignMap */
$designMap = new DesignMap();

/** Sets up a new document */
$content = new Content();
    ->setBackingStory(new BackingStory())
    ->setContainer(new Container())
    ->setTag(new Tag())

/** Defines some basics */
$preference = new Preference();
    ->setDocumentFormat(210, 297, Unit::MILLIMETERS())
    ->setDocumentBleed(3, Unit::MILLIMETERS())

/** Creates a black Color */
$black = new Color('Black');
        new CMYK(0, 0, 0, 100)

/** Creates a red Color */
$red = new Color('Red');
        new CMYK(0, 100, 100, 0)

/** Creates some Font Styles */
$myriadPro = new FontFamily('Myriad Pro');
$myriadProRegular = new FontStyle($myriadPro, 'Regular');
$myriadProBold = new FontStyle($myriadPro, 'Bold');

/** Creates a Character Style */
$boldRed = new CharacterStyle('Bold + Red');

/** Creates a Paragraph Style */
$myParagraphStyle = new ParagraphStyle('Body');

/** Creates a Story */
$myStory = new Story();
    new ParagraphStyleRange(
        new CharacterStyleRange(
            new Text('Hello World! We\'re happy to have you here! This document was created by ')
        new CharacterStyleRange(
            new Text('IDML-Creator')
        new CharacterStyleRange(
            new Text('. Get more information about it under ')

/** Creates a TextFrame and adds the Story */
$textFrame = new TextFrame();
    ->setPosition(20, 20, Unit::MILLIMETERS())
    ->setSize(170, 257, Unit::MILLIMETERS())
    ->setColumns(1, 10, Unit::MILLIMETERS())

/** Creates a Page */
$page = new Page();
    ->setFormat(210, 297, Unit::MILLIMETERS())
    ->setMargin(20, 20, 20, 20, Unit::MILLIMETERS())
    ->setColumns(1, 10, Unit::MILLIMETERS())

/** Creates a Spread and adds the Page */
$spread = new Spread();
    ->insertPage($page, PagePositionEnum::RIGHT())

/** Registers all contents */
    ->addColor($black, $red)
    ->addFont($myriadProRegular, $myriadProBold)

/** Sets up the writer object and creates an IDML file */
$writer = new Writer(
    new Tree()

How does it work?

IDML-Creator makes it simple to create an IDML in PHP. Have a look! The PHP code on the left creates this document:

singlePage.idml (5 KB)

Who uses IDML-Creator?

ManyPrint Solutions

Fully individualized layout documents combined with AI and the whole power of the World Wide Web.


Creates calendar templates to make it easy for designers to work with calendars. They no longer need to worry about the calendar information!


Software development, Web2Print, Print2Web, connecting dots between digital und printing media.

Want to use IDML-Creator?

Get in contact! Use our demo library Read the documentation