Showing results for 
Search instead for 
Did you mean: 
Account Deactivated

Book Cover Assembly in FFCore

I was asked by a customer whether it would be possible to automate book cover assembly. Specifically, they were looking for a workflow that would take book covers that come in as separate components and automatically assemble them into cover files. Additionally, bleed content on the cover panels must be removed from the inside spine. Finally, this workflow should be able to support books of any size with spines of any thickness.


The input will be cover components that look like this:

Screen Shot 2015-03-26 at 5.03.43 PM.png

Notice that all 4 panels have bleed content in the spine edge.


This workflow is built around submission of 5 PDF files that follow a specific naming convention (per the customer requirements). Job naming convention:

  • FC - Front Cover
  • BC - Back Cover
  • IFC - Inside Front Cover
  • IBC - Inside Back Cover
  • spine - Spine

Replacing the Route node with a split node would allow submission of a single PDF with a page per component. The key requirement in this case is that the pages always be in the same sequence.


This is the workflow that will automate cover assembly

Screen Shot 2015-03-26 at 5.11.07 PM.png


This workflow will impose books of any size with a spine of any thickness as long as they fit into a 12 x 18 sheet. To support multiple press sheet sizes I would suggest making multiple workflows and then routing between them in the Hot Folder routing.


The route component routes the jobs based on their name. The panel (FC, BC, IFC, IBC) components are imposed 1up on a 9 x 12 press sheet. They are aligned either to the left (for FC and IBC panels) or right (for BC and IFC panels)

Screen Shot 2015-03-26 at 5.20.08 PM.png


The imposed panels will no longer contain any spine bleed content. This is important for two reasons:

  • The watermark node used later in the workflow places PDFs using the cropbox. As such, the outside cover cannot be assembled as expected without removing the spine bleed
  • The inside spine must not have any content as this interferes with binding

The panels are than saved to the sandbox using the Job ID and Job Name variables. The Job ID variable ensures that the panels have unique names so that jobs with identical names will not overwrite each other.

Screen Shot 2015-03-26 at 5.24.09 PM.png


These components will be used later in the workflow to assemble the covers.



The spine is put through another branch in the workflow.

Screen Shot 2015-03-26 at 5.30.33 PM.png


In this branch a blank page is added after the first page of the spine. This page is added in order to build the inside cover.

The size of this page is based on the size of the Media box in the existing page

Screen Shot 2015-03-26 at 5.28.23 PM.png


FreeFlow Core will copy the dimensions of the pages relative to which it inserts blank pages. Additionally, FreeFlow Core will also copy any PDF box inside of the selected PDF box.This means that the blank page will have PDF boxes that match the page in the original document. This is critical as it allows the workflow to properly assemble the inside book cover.


The spine is then imposed 1up on 12 x 18. When FreeFlow Core imposes a document it defines PDF boxes based on the location of the boxes of the PDFs that were imposed. This means that the imposed PDF retains useful PDF boxes. These are used downstream in the workflow to assemble the cover.

Screen Shot 2015-03-26 at 5.33.52 PM.png

Note: We could have used Resize to achieve the same result as 1up imposition. However, that would require some fixes in v4 SP2 so the workflow I built was done with imposition instead.


After this the spine and the cover panels are joined into a single file. This is not needed to build the cover but it forces FFCore to finish imposing and saving the covers before it attempt to assemble the cover. Without this the cover assembly may start before all the panels have been saved which would result in an error.


The result, however, if a file with the 12 x 18 spine and four 9 x 12 cover panels.

We could remove the panels with a Delete Pages component. However, I chose instead to use split with a single branch to delete all pages except those that are 12 x 18 in size.

Screen Shot 2015-03-26 at 5.36.35 PM.png

Split can serve as a sort of "reverse delete" in some cases. However, when all's said and done either method would work just as well.


Lastly, the watermark component is used to add the saved cover components to the spine document.

Screen Shot 2015-03-26 at 5.38.22 PM.png

Two key settings here:

Using the full path to the sandbox location that was used to save the cover panels (e.g. C:\Xerox\FreeFlow\Core\Data\Save Destinations\Cover Components\$FFwfJob.Id$ - $FFwfJob.groupName$ - FC.pdf)


Using the new v4 SP2 functionality to place content outside of the selected PDF box.

Screen Shot 2015-03-26 at 5.40.12 PM.png

All cover panels are placed outside of the trimbox which defines the spine content in the 12 x 18 cover file.


The result is a workflow that enables lights out cover assembly of books of any size with spines of any thickness while at the same time ensuring there's no printing on the inside of the spine

Screen Shot 2015-03-26 at 5.41.40 PM.png

Screen Shot 2015-03-26 at 5.41.47 PM.png


I've enclosed the workflow and the files used to build the workflow.

Note: This uses an early build of v4 SP2. It is officially unsupported.