Automated Solutions for FrameMaker..

Object Style Designer

Have you commonly encountered scenarios where you have multiple images and you wanted to apply some common settings across all of them? Earlier you would have modified each one individually. Object Style Designer(OSD) in FrameMaker 11 solves it well by doing it all in one go!

Just like paragraph and character styles, FrameMaker allows you to create an Object Style with various properties using OSD.

In previous versions, users would apply the graphic properties individually on objects from the graphic toolbars. OSD stores these styles that can be applied in single step from the “O” catalog over the objects.

Object Style Designer

Object Style Designer

OSD is completely different from the other designers in look-n-feel (don’t know why it was implemented this way!). These inconsistencies in different features across FrameMaker is a major nuisance. Adobe team should give some thinking to make it better.


If the authors in an organization need to be guided on what context each element in a structured application holds, then this is a great feature. For template designers, this is a feature that should definitely be explored because they can place a basic structure along with helpful information for authors who start authoring an XML. An instance of which can be seen while creating new DITA XMLs.
The term banner text looks misleading but this feature is about having placeholder content inside elements that guides the author with some text.

For example, we did a File .. New .. XML .. Dita Topic. It showed “banner” text in grey color, on which we could just click and start typing (it informs authors to type in the correct context), while the placeholder content vanishes.
So it actually guides the author in two ways:

  • Where exactly to start authoring content in a document.
  • Setting the context right for what context to author in.
banner text

Banner Text

Moreover, we foresee common usage where the placeholder can contain some warning/essential prerequisites that the author should be aware of. The Help guide says that you can extend this to content other than DITA too! (via EDD).

For the authors that author in DITA standard and love the FrameMaker book capabilities, this is a feature to appreciate. Hopefully it would reduce the post processing effort which organizations commonly spend on publishing ditamaps from FrameMaker.
In FrameMaker 11, users can now generate print ready output from a DITA Map project. Essentially the ditamap to Book with FM components workflow has been enhanced in the latest FrameMaker release.

DITAMap saved as Book

The output would now now also include generation of cover page, ToC, Index, List of figures, List of tables etc.

Book with TOC, Index etc. published from FrameMaker

These properties are configurable in the ditafm-output.ini file (%appdata%\Adobe\FrameMaker\11). Numbering and pagination are  automatically handled as part of this book building process.

Many options are present in this ini file. We did not use all, but it goes to show a lot many parameters, left upon the user to configure as per the publishing requirements. For example, numbering notation for chapter, section and sub section components, Pagination (double sided or single sided) and presence of an option to generate flat books (pre-FrameMaker 9 era). And trust me a lot more to explore in this ini.

A few examples of entries in the ini file:



This ini file seems very long and is undocumented. Looks like users will need to figure out the meaning of the individual options themselves 😐

Real productivity improvements can be realized using one of the greatest feature in Framemaker history-the Ctrl shortcuts, in a brand new Avatar. FrameMaker 11 redefines control keys aka “Quick Catalogs“.

This gives author the power to perform various actions like element insertion, applying conditional tags, applying paragraph tags, variable insertion etc. using only keyboard shortcuts (CTRL 0-9). Though a variation of the same exists in previous versions of FrameMaker, but the new experience is much better. Using this, the author will see the list of character tags (or paragraph tags, conditional tags etc.) right where his/her insertion point is. This is much convenient because the author will see the complete menu rather than a single tag appearing in the status bar.

Navigation in new quick catalogs is better than before. For eg. to navigate through the list of tags starting with ‘b’, user just needs to press ‘b’ repeatedly. A user can type in the popup-menu and it searches for items/tags on the fly!

Another thing that needs special mention is “Hierarchical Element Insert”. Authors can insert a hierarchy of elements (say a>b>c), all in one step. Also, you do not have to worry about any element being invalid as only valid elements will be shown in this list (taking into consideration the hierarchy as well!!). We are certainly going to use this much more when authoring EDDs.

Hierarchical Element Insert

Hierarchical Element Insert

All in all a very productive and good looking feature!

Do you author in DITA ? Need to assemble your content from various sources(HTML, Word etc.)?

“Smart Paste” offers a great and a quick solution. Tools people can customize this functionality to work for other XML specifications as well. Full points to FrameMaker team for this feature.
Our experience:

  • Created a new DITA topic file.
  • Copied some paragraphs along with images and tables from the Web
  • Smart pasted the content in FrameMaker
  • With very minor tweaks, we could realize completely valid and relevant structure in the DITA topic being authored
Source Page

Source Page

Pasted Content

Pasted Content

Productive: Yes. Cool: Definitely!

Hello everyone:

I was going through a query on the Adobe FrameMaker user to user forums, found this interesting problem statement:

And I thought, why not try and solve this problem statement. Had fun solving it.
Sharing it for the benefit of the FrameMaker Extendscript community.
var doc = app.ActiveDoc
var variable = doc.FirstVarInDoc

var tr1 = variable.TextRange; //text range of the variable

	/*text range for next possible char*/
    var tl1 = new TextLoc(tr1.end.obj, tr1.end.offset + 1);	
    var tl2 = new TextLoc(tr1.end.obj, tr1.end.offset + 2);	
    var tr2  = new TextRange (tl1, tl2)

	var textitems = doc.GetTextForRange (tr2, Constants.FTI_String);

	if (textitems.length > 0)
		var str = textitems[0].sdata;
		if(str != " ") //if space then add text
			 doc.AddText (tr2.beg, " ");        
	variable = variable.NextVarInDoc;

Hope this solution nails the problem statement. It might also lead you to attack similar problems under different contexts.

Best Wishes:

ExtendScript is an extended implementation of JavaScript that provides a scripting interface for FrameMaker and many other Adobe applications. For more information on ExtendScript, see JavaScript Tools Guide.

ExtendScript is easy to learn, especially if you are familiar with FDK or a scripting language like JavaScript.

Available Documentation:

Introduction to Scripting in FrameMaker