HoudiniEsq Smartdoc

HoudiniEsq SmartDoc is intelligent document automation. SmartDoc can dynamically generate polished finished documents in either PDF, Word or OpenOffice formats from a single document template.

SmartDoc is rule based and can be used to easily and dynamically generate documents from templates that conditionally include or exclude content in your documents. HoudiniEsq SmartDoc also supports the inclusion of repeating rows of data.

Dynamically create Motions, Pleadings, Invoices, you name it. HoudiniEsq SmartDoc is similar to functionality found in separate expensive services and products like XpressDox and HotDocs, except this functionality is tightly integrated and all inclusive. SmartDoc even works with HoudiniEsq LiveDoc. Combine the two and you have a questionnaire that drives your document generation processes.

SmartDoc document templates can be crated and generated in HoudiniEsq or MS Word or automatically via HoudiniEsq’s Workflow Automation features. Documents can also be generated in bulk easily with a single click and in all formats if desired with a single click.

 

Features

  • Conditional statements
  • Create and store variables for use in your documents and conditional statements
  • Insertion of text or image data into the body, headers, footers and tables
  • Inclusion or exclusion of static or dynamic content
  • Hyperlink Insertion
  • Repeating content
  • Table row repetition or exclusion
  • Table column exclusion
  • Numbered & bullet list support
  • SmartDoc template merging

 

Basic Token

 

The start of a SmartDoc token is annotated by << and the end by >>. So to create a field that looks up “first name”, you would simply select a SmartDoc token from HoudiniEsq’s field token selector under Organization settings or from within the MS Word plugin. In this case HoudiniEsq would insert a unique token that looks somthing like this <<firstname1234>> into your document template. You will notice that there are no spaces and an integer is included as part of the token name. This is to insure that related data with similar names do not get confused.

HoudiniEsq SmartDoc is strict when it comes to identifying tokens in your templates and will ignore invalid mark-up. For example, <firstname1234>> will be ignored and left in the document as plain text because one of the closing “<” characters is missing. Likewise, a space between the << and the name or the name and >> will result in the token being ignored. In general, avoid spaces if you manually type the tokens in yourself.

Plain text mark-up can be used to place fields and tokens into your document templates but this is not the easiest method of creating HoudiniEsq SmartDoc templates. We suggest that you use with HoudiniEsq web based interface or the HoudiniEsq MS Word plugin to insert tokens.

In addition, data and text can be dynamically included or excluded in your documents by using SmartDoc conditional syntax.

HoudiniEsq supports the inclusion of tokens that simply match (essentially, this is a one-to-one match). Whenever a token is encountered, HoudiniEsq SmartDoc will substitute the actual data value in the document for the token. The inserted data inherits all the typesetting, fonts and document characteristics that exist in the document template where the token is inserted.

The following is an example of a basic token.

<<firstname1234>>

Example: Replace this token with whatever data is referenced by “<<firstname1234>>”. HoudiniEsq SmartDoc template tokens can be manually typed into your templates. You can look up tokens under the HoudiniEsq Organization settings-Templates-Field References, or by using the HoudiniEsq MS Word plugin to insert SmartDoc tokens into your templates.

Hyperlinks

 

<<link_firstname1234>>

To insert data as a hyperlink the SmartDoc template token must begin with “link_” e.g <<link_firstname1234>>. The URL can optionally specify a label in addition to the URL, the form is: “label_name|field_name”. e.g. <<link_clickme|firstname1234>> would yield the first name as a clickable link in the document with a label of “clickme”.

 

Storing data in Variables

 

Use variables to store temporary values or data during the processing of your document.

<<$name=firstname1234>>

Lookup the data associated with “firstname1234” and assign it to the a variable called “name” which can be recalled later during additional processing. This is handy if you will refer to the sam value several times.

Example: Assign the number 1.7 to variable $a1. Assign the string “Mac” to variable $a2. Assign the boolean true to variable $a3. Assign the value null to variable $a4.

<<$a1=1.7>>
<<$a2='Mac'>>
<<$a3=true>>
<<$a4=null>>

 

Variables 

 

Use variables to store temporary values during the processing of your document.

<<$a1>>

Lookup the variable “a1” and insert its value into the document.

Conditional Statements

 

Conditional statements are used to include or exclude words, sentences, or blocks or text.Example: All content up to the closing element is included or excluded depending on the value associated with “name”, the expression “expr” (see below), or the values stored in the variable called “a1”.Special tokens such as cs_, rs_, cr_, rr_, and es_ etc should be placed on their own line or table row. These lines are excluded from the final document.

<<cs_name>>
  The rain in Spain...
<<es_>>
  or
<<cs_{expr}>>
  The rain in Spain...
<<es_>>
  or
<<cs_$a1>>
  The rain in Spain...
<<es_>>

 

Expressions

 

HoudiniEsq SmartDoc uses { and } to delineate an expression. The following table shows examples of valid expressions that HoudiniEsq SmartDoc supports. The examples are for a conditional statement (“cs_”) but apply to conditional columns (cc_) and rows (cr_) in tables as well.

Description

<<cs_{firstname1234<100}>>

Lookup data element “firstname1234” and see if it is less than 100 numerically. If “firstname1234” is not numeric, a string comparison will be performed automatically.

<<cs_{firstname1234=’Mac’}>>

Lookup data element “firstname1234” and see if it is equal to the String literal “Mac”.

<<cs_{$firstname1234!=100}>>

Lookup the variable “firstname1234” and see if it is not equal to the numeric value 100. If variable “firstname1234” does not resolve to a numeric value, a String comparison is performed.

<<cs_{firstname1234=null}>>

Lookup the data element “firstname1234” and determine if it’s value is null

<<cs_{$firstname1234}>>

Determine if the value of the template variable $firstname1234 is true

Repeating Data

 

All content up to the closing element is repeated whilst there is data associated with “name” or the variable “a1”

<<rs_name>>
  The rain in Spain...
<<es_>>
  or
<<rs_$a1>>
  The rain in Spain...
<<es_>>

 

Conditional Rows

 

Include the following table rows depending on the value associated with “name”, expression “expr” or the variable “a1”.

<<cr_name>>
  The rain in Spain...
<<er_>>
  or
<<cr_{expr}>>
  The rain in Spain...
<<er_>>
  or
<<cr_$a1>>
  The rain in Spain...
<<er_>>

 

Repeating Rows

 

Repeat the following table rows whilst there is data associated with “name” or the variable “abc”.

<<rr_name>>
  The rain in Spain...
<<er_>>
  or
<<rr_$abc>>
  The rain in Spain...
<<er_>>

 

Conditional Columns

 

Include or exclude the table column containing this field depending on the value associated with “name” or the expression “expr” or the variable “abc”.

<<cc_name>>
  The rain in Spain...
<<ec_>>
  or
<<cc_{expr}>>
  The rain in Spain...
<<ec_>>
  or
<<cc_$abc>>
  The rain in Spain...
<<ec_>>

Image insertion

 

HoudiniEsq SmartDoc cannot support floating images in MS Word because it uses the bookmarks feature for image placeholder insertion. When you position an image using the floating position settings, MS Word removes the bookmark. There are other limitations to how HoudiniEsq supports images, particularly in terms of overlapping with text and other images. This generally will not cause issues for most documents.

When you insert a placeholder image, you will embed the image in the document. This means there is a copy of the image at every location in which it is placed (not a referenced copy). To limit the overall size of the template file and to improve the performance of  document generation, you should use simple small placeholder images to identify the locations.

Image placeholder names are identified using special prefixes.

Insert a image using the default stretch algorithm.

<<img_name>>
Insert a image using the stretch algorithm. Stretches the image to match the template’s placeholder.

<<imgstretch_name>>
Insert a image using the stretch algorithm. Fit the image into the template’s placeholder preserving the image’s aspect ratio.

<<imgfit_name>>

 

To insert an image element (MS Word):

  1. Position the insertion point at the location of the image. 2. Select Insert>Picture>From File.
  2. In the Insert Picture dialog box,navigate to the location of the placeholder image and select it in the list of files.
  3. Click Insert.
  4. When the image appears in the document, select it and use the reshaping handles to adjust the dimensions of the image.
  5. Make sure that the image is selected and click Insert>Bookmark.
  6. IntheBookmarkdialogbox,type img_image1 in to the Bookmark name field.
  7. Click Add.

To insert an image element (OpenOffice or LibreOffice):

  1. Position the insertion point at the location of the image.
  2. Select Insert>Picture>From File.
  3. In the Insert picture dialog box,navigate to the location of the place holder image and select it in the list of files.
  4. ClickOpen.
  5. When the image appears in the document, select it and use the reshaping handles to adjust the dimensions of the image.
  6. Make sure that the image is selected and click Format>Picture.
  7. In the Picture dialog box, select the Options tab.
  8. Type img_image1 in to the Name field.
  9. Click OK.

 

Template Merges

You can break your templates into smaller reusable blocks that can be combined intelligently based on conditions and data.
Insert a SmartDoc template named sub1.doc at this location.
<<ref:sub1.doc>>
Lookup “sub1” in the data to get the name of the template to insert at this location.

<<refLookup:sub1>>

Was this article helpful?

Related Articles