Requires the Pagination Module.
A sample workspace and document is available from link below.
Import the Data Source using File->New->EasyCatalog Panel->Import Data Source. This contains images and will open with the correct grouping for pagination (Category 1 > Category 2 > Category 3).The sample defines a number of Parent Pages and Formatting Rules which can be paginated using the Containers method of Pagination. To generate the output shown below, select the top level group, then paginate using the default settings.
What are Containers?
Containers can be used to solve complex layout issues. Below is an example, which is setup on the A-image+table data threading Parent Page. The Container is filled with tables and images, and an indicator shows related elements. If the Container overflows, it continues to another threaded Container, with numbering starting over. Data Threading is used which ensures both image and table elements contain the same amount of data.
Overview of Containers
A Container is custom frame type, with properties describing how it behaves. Containers are shown with a non printing dotted stroke and display the name of the Formatting Rule they populate with along with what data it populates with. At the bottom right, a threading adornment can be used to thread Containers, similar to the text threading. If a Container is overset this is shown with a red plus icon. During pagination Containers are populated like any other page item according to the settings applied.
The Window->EasyCatalog Containers menu shows a panel used to view and apply the principal properties to the selected Containers(s). Any changes are applied dynamically if the Auto Recomposition menu option is enabled.
The name of the Formatting Rule to populate the Container with. Either select from the list or drag a Formatting Rule from the top part of the Formatting Rules panel to the Container.
Arrange and Align
In the example, the Arrange property is set to populate across – down, meaning the second item will be placed to the right of the first, and continue to the next row if it doesn’t fit. The Align option defines the final alignment of the items. These vary depending if across – down or down – across is chosen.
The reference point in the Container to place the arranged and aligned items.
Defines the vertical and horizontal spacing (gutter) between items.
Used to indicate the Container should horizontally or vertically fit to its content, with optional minimum and maximum limits. If a Container is inside another Container it will automatically be restricted to the parent Containers dimensions.
For Containers, the default setting is on, which allows overset content to thread to another Container. Turning this off will disable threading and never show it as overset.
This is also used to specify threadability of regular frames and Containers inside a Formatting Rule. In the following example, both image and table frame are marked as Threadable and have an Edge Relationship. This means the image and table are treated as part of single thread, so can be split into separate Formatting Rules (If it’s ‘Content Threaded’. ‘Data Threaded’ ignores this property)
When populated this would split the Formatting Rule between two Containers as shown::
Keep With Next
In the example above, if Keep With Next is set for the image frame, it would always need to appear with part of the table below.
Pressing this will empty the Container and release data associated with it.
Refreshes the Container content.
Removes the Container frame but leaves its content.
The Formatting Rule ‘Containers’ Panel
Another key set of options can be seen on the ‘Containers’ panel when editing a Formatting Rule. These properties define how the Formatting Rule behaves when populated inside a Container.
These settings determine the minimum size needed inside a Container. When empty, it will attempt to place it in any available space. Providing minimum values improves performance.
– Note these values are automatically updated when the page items of the rule are updated.
Populate As Container
When checked, the Formatting Rule will be populated inside its own Container when “Populate On Drag and Drop” is used, or the Formatting Rule is populated via pagination.
Indicates the Formatting Rule can be overset and split into a new instance of itself.
Formatting Rules that split are threadable using two distinct methods:
This method treats the entire Formatting Rule as a single entity, where data is gradually added until it reaches its limit. Any Containers or frames inside consume the same amount of data. This method is slower than Content threading, as it determines the maximum data capacity of the content. For instance, if a Formatting Rule contains a table, the table will fill with data until it overflows. When a new instance of the rule is created, it will generate a new table and fill it, rather than linking to the previous one. This approach also allows specification of Keep Together At Start and Keep Together At End settings. These pertain to either the number of records or the number of rows in a tabular field, depending on the content of the rule.
Elements inside the Formatting Rule that flagged as Threadable using the Containers Panel are threaded independently. For instance, if a text box overflows, its text frame content will be threaded to the next instance inside the next Formatting Rule (See example above). Containers flagged as Threadable are also threaded in the same manner. If there are multiple threadable items, they can be interconnected using the Edge Relationship tool. However, only one set of linked items is allowed. In this scenario, items are populated in the order they are linked. When overset, the subsequent items in the thread are removed. As the Container thread continues, it references the previous container to identify which items were not overset and removes them, while threading any items that were previously overset or unpopulated.
First, Regular, Last
If the item can split, these are alternative Formatting Rules to be used in various split scenarios:
First. The rule used in the first instance of overset
Regular. The rule used when the item is linked from an overset item and is overset.
Last. The rule used when the item is linked from an overset item and is not overset.
If the item can’t split, they nominate the first, repeating and last rules to use in the Container.
Indicates the next rule to user inside a Container. If a next rule is specified, the rule after it will be taken from its next rule setting.
Breakdown of the Sample Document
In order to further draw contrast between the two type of Formatting Rule threading, we’ll take a look at the sample in more detail:
image+table data threading
The example at the top uses this Formatting Rule. Drag it a document inspect it. A frame edge relationship has been configured using the Edge Relationship Tool, so when the image Container resizes, the table Container is moved vertically to maintain the space between. Both Containers have settings applied to limit their depth. The contents of both image and table Containers are repeated once for every Category 3 Group. Because the Type of threading is set to Data Threading, the Containers are filled with same amount data until they are overset.
When the content splits we see the following results. With each of the Containers holding the same amount of data:
image+table content threading
Exactly the same as above, but set to use ‘content threading’. Notice how this threads between the smaller Containers at the top to the one below. Each contains a different amount of data:
Single Image and table (non Container)
This example shows how regular text frames can be used when marked a ‘threadable’. In this case both the image and the table frame are flagged, with an Edge Relationship, to form a single threadable chain of. This enables it to split.
When two containers are threaded and the rule splits, we see the following:
If the image frame was not Threadable, it would repeat for each instance. For example:
To facilitate the creation of the image labels in the above example, a “Computed Field” command is used which is aware of the position of the record in the container. The sample uses this command to create the numbering for both the image and table.
CONTAINERRECORDINDEX(field name) – Gives the record index inside the container, an optional field name will group the data by that field and give the index of the group the record is in.
CONTAINERINDEX() – Gives the index of the Container in a thread, so 1 for first, 2 for the second etc.
This can be combined with other commands to create sequences such as A-Z or Roman numerals for the content. For performance reasons, these command should be not tagged with field markers as they are not needed once the container is populated.
Using Containers To Build Data Sheets
Containers are also a useful tool in paginating Data Sheet type layouts. More on that can be found here
Containers also have special behaviour when used with tabular fields, specifically for splitting across multiple containers. More on that can be found here
Fields With Multiple Values
For fields that contain multiple values separated by a return, containers can be used to repeat items for each value. More details are here