Skip to content

Layouts and imposition ​

This page is for prepress people who are new to the CoCoCo data model. It maps the model's terms onto the ones you already use.

Everything in this page hangs off a component (ComponentState). A component is one printed part of a job, such as a cover or a text block. Three of its fields carry the prepress data:

Component fieldPrepress analogType
layoutPage geometry: trim, bleed, safe area, die lines, finishesComponentLayout
impositionSpecsImposition plans for the componentImpositionSpecState
prepressOperationsPrepress steps and their statusPrepressOperationState

All lengths are Length values. Each keeps the unit it was entered in (raw and unit) and can be read back in any unit (millimeters, points, inches, or value(unit:)).

Component layout: the page box model ​

ComponentLayout describes one finished piece before imposition:

FieldPrepress meaning
substratePhysical sheet or substrate size before cutting (LayoutDimension)
trimBoxFinal trimmed size (LayoutBox)
bleedBleed per side (top, right, bottom, left), measured from the trim box edges (BleedSpec)
bleedBoxExplicit absolute bleed box. When present, it overrides bleed.
safeBoxSafe or live-content area inside the trim box
allowanceExtra allowance per side, for example for hemming or grommets (LayoutAllowance)
layersOrdered layers: content, marks, die lines and finishes (LayoutLayer)

A box's x and y give its bottom-left corner.

Each layer has a kind (LayoutLayerKind). Content kinds are CONTENT, MARKS and WHITE_UNDERPRINT. Cutting and forming kinds are DIE_CUT, KISS_CUT, REVERSE_CUT, PARTIAL_CUT, CREASE, PERFORATION, FOLD, DRILL and PUNCH. Finishing kinds are SPOT_VARNISH, FLOOD_VARNISH, LAMINATE, FOIL, EMBOSS, DEBOSS, GLUE, EYELETS, HEMMING and OTHER. Each layer also records whether it is printable, its stacking sortOrder, its boundary shape and any marks. placement stays empty on an authored layer. It is set only when the layer is placed onto an imposed sheet.

graphql
query ComponentPrepress($id: ComponentID!) {
  getComponent(id: $id) {
    name
    layout {
      substrate { width { millimeters } height { millimeters } }
      trimBox { width { millimeters } height { millimeters } }
      bleed { top { millimeters } right { millimeters } bottom { millimeters } left { millimeters } }
      layers { id name kind printable sortOrder }
    }
    impositionSpecs { id name isPrimary pagesUp scheme orientation layoutStatus }
    prepressOperations { kind status completedAt }
  }
}

Imposition specs ​

An ImpositionSpecState is one imposition scenario for a component. A component can have several specs. isPrimary marks the one selected for assessment.

A spec holds two kinds of data:

  • The planning decision. This is pagesUp, sheetsPerForm, totalForms, totalPages, scheme, orientation, bindingType, gutterH and gutterV. Schemes (ImpositionScheme) are WORK_AND_TURN, WORK_AND_TUMBLE, SHEETWISE, WEB_PERFECT and OTHER. The binding type decides page order on a folded signature (saddle-stitch nests, perfect-bound gathers). Without one, pages are imposed sequentially.
  • The sheet geometry (layout, a SheetLayout). This is the press sheet size, margins, grid, placed cells, fold lines, trim marks and the pages on the front and back surfaces.

layoutStatus (ImpositionLayoutStatus) records where the geometry came from. Read it before you trust the geometry:

StatusMeaningCan be imposed
ENGINECalculated by the imposition engine against a real substrateYes
SYNTHESIZEDRebuilt from the entered pages-up, scheme and orientation against the component's real substrateYes
PROVISIONALRebuilt, but the component has no substrate, so the press sheet size is a guessNo, until the stock is confirmed
NONEToo little information to place a cellNo

The impose_pdf workflow node refuses PROVISIONAL and NONE specs. A guessed sheet size would produce plates that look right but cut wrong.

Calculating an imposition ​

The imposition engine has three modes (ImposingMode):

  • SIGNATURE: folded signatures for books and brochures.
  • GANGING: identical items stepped and repeated for flatwork.
  • WEB: roll-fed web presses, described by a web press profile.

In signature mode, the engine tries the fold patterns that fit each substrate. It returns every plan that is not beaten on all four objectives at once: waste, sheet utilisation, signature count and fold uniformity. recommendedIndex points at the suggested plan. A fold pattern is skipped when the substrate is thicker than that pattern allows. listFoldPatterns returns the fold catalogue.

previewImposition runs the engine without saving anything. You can use it for estimates before a component exists:

graphql
query PreviewBrochure($substrate: String!) {
  previewImposition(input: {
    finishedWidth: { value: 210, unit: MM }
    finishedHeight: { value: 297, unit: MM }
    totalPages: 32
    bleed: { value: 3, unit: MM }
    quantity: 2000
    mode: SIGNATURE
    substrateIds: [$substrate]
  }) {
    recommendedIndex
    plans {
      sheetsPerCopy
      totalForms
      copiesPerSheet
      totalSheets
      wastePages
      objectives { waste utilisation signatureCount foldUniformity }
      signatures { index foldPatternId }
      layout { cols rows sheetWidth { millimeters } sheetHeight { millimeters } }
    }
    errors { path message }
  }
}

Unless you override them, the press settings default to a 10 mm grip edge, 5 mm tail edge, 5 mm side margins, zero gutters and 3 mm bleed. Utilisation values are ratios between 0 and 1, not percentages.

Other imposition operations:

  • calculateImposition runs the engine against a component. It reads finished size, bleed, page count and quantity from the component. In SIGNATURE mode it writes the selected plan (the recommended one unless you pass selectPlanIndex) as imposition specs, one per signature, and by default replaces the existing specs. In GANGING and WEB mode it only returns plans and writes nothing.
  • upsertImpositionSpec saves a plan you enter by hand. Its geometry is rebuilt, so its layoutStatus is SYNTHESIZED, PROVISIONAL or NONE.
  • renderImpositionSVG draws a saved spec or an inline sheet layout as an SVG, front or back.

In workflows, the impose_plan node runs the engine and outputs the plan. The impose_pdf node takes a plan or saved specs, imposes the component's source PDFs and stores the print-ready PDF as a file attached to the component.

Prepress operations ​

A PrepressOperationState tracks one prepress step on a component. The step has a kind (PrepressOperationKind): PREFLIGHT, RIP, CTP, PROOF, COLOR_CONVERSION, IMPOSITION, COLOR_MANAGEMENT, TRAPPING or OTHER. Each operation also carries a status, notes, an assigned user, start and completion times, and the output file it produced (for example a proof PDF or a plate file).

The queries and mutations named on this page are listed in the query and mutation reference.

Connect machines, automate workflows, and build custom apps for print production.