Help · Utilities · Job tickets

JDF Bridge guide

How JDF and the Duplo DC job XML line up, converting in both directions, hot folders and JMF.

Overview

Translates between JDF — the CIP4 job ticket that MIS and prepress systems speak — and the DC job XML the Duplo PC Controller reads. Drop a file in and the direction is taken from it: a JDF becomes a DC job, a DC job becomes JDF 1.5.

What it is for

Plenty of production software can write a JDF and nothing else — Prinect, Apogee, Avanti, EFI Pace, a web-to-print front end. None of them know what a Duplo DC wants. Rather than have someone read the JDF and retype the job into the controller, the bridge converts it. The other direction matters too: a DC job you have already built can be handed back to a JDF workflow so the MIS can track it.

How the two formats line up

Closer than you would expect. Duplo’s schema is plainly derived from JDF — the attribute names are the same ones CIP4 uses.

Duplo DC job XMLJDF 1.5
DuploDCJobTemplateJDF, a Combined node with Types="Cutting Creasing Perforating"
@MediaSizeMedia/@Dimension
CutBlock/@BlockName, @BlockSize CuttingParams/CutBlock — same attribute names
CutBlock/@BlockPositionCutBlock/@BlockTrf, as 1 0 0 1 x y
Crease/@PositionY, @Depth CreasingParams/Crease with StartPosition, WorkingPath and Depth
Perforation/@StartPosition, @WorkingPath PerforatingParams/Perforate — same attribute names again
@ToolID, Regmark, Skewmark, Shrinkagemark, Barcode a private duplo: namespace — see below

Coordinates and repetition

Two things are not a straight rename, and they are where a careless converter would quietly cut the wrong job.

Perforations live in a different coordinate space. A DC Perforation is addressed relative to the piece it crosses, with y measured down from that piece’s trim top. JDF puts everything in sheet coordinates with y up. Every perforation is moved between the two spaces. Creases already agree — both are sheet-absolute and y-up — so those pass through untouched.
The DC repeats, JDF does not. The controller applies one Perforation to every matching block, so a 4-up sheet with the same perf on each piece carries one entry. JDF has no such rule and wants it written out per block. Going out to JDF expands — two entries become eight on a 4-up — and coming back in collapses them again. The panel tells you when this happens.

Hot folders

Fiery server setup. The job is submitted straight to the print server’s own queue over its API rather than dropped in a hot folder, so a rejected job comes back as a real error instead of a file sitting unnoticed in a directory.
Fiery server setup. The job is submitted straight to the print server’s own queue over its API rather than dropped in a hot folder, so a rejected job comes back as a real error instead of a file sitting unnoticed in a directory.

The One file tab is for one-offs. The Hot folders tab is the one that earns its keep: two watched folders, one in each direction, running in the background.

DirectionWhat it does
JDF in → DC job XML outPoint the watch folder at wherever the MIS drops its JDF and the output folder at the PC Controller's Import XML folder. Jobs cross on their own.
DC job XML in → JDF outThe other way, so a finished DC job is handed back for the MIS to track.

Each direction takes a watch folder and an output folder, and optionally a folder to file the original into and one for anything that fails. The output name can use {name}, {job} and {date}. Check now sweeps both folders immediately rather than waiting.

They keep running with the window closed. The conversion happens in the suite's background process, not in the app, so the folders work whenever ImposeIQ is running — including sitting in the system tray — and start again by themselves when the PC is switched on. You do not need to leave the JDF Bridge open.

Three details that matter in a real shop:

SituationWhat happens
A file is still copying inIt is left until it stops growing. Reading a JDF half-written across the network gives a confusing error for a file that is perfectly good a second later.
The output folder is being watched tooOutput is written under a temporary name and renamed into place, so the DC Controller never sees a partly written job and rejects it.
A DC job lands in the JDF folderLeft alone with a note rather than moved to the error folder — a file is not broken just because it came in the wrong door.

Watching a mapped drive or a UNC share is normal in a print shop, and that is exactly where file-change events go missing without raising an error, so the folders are also re-checked on a timer. Under Settings → Notifications you can route JDF hot folder failed a job to a popup, email or text; a hot folder that has quietly stopped converting otherwise looks just like a quiet day.

Workflow Automation also has a Convert JDF ↔ DC job XML step under Output, for when the translation is one stage of a longer workflow rather than a folder on its own.

The Die Line Reader also has a Save as JDF… button beside its XML export, so a die-line PDF can go straight out as JDF. The JDF is produced from the DC XML rather than built separately, so the two exports can never describe different jobs.

JMF messaging

JDF is the job; JMF — Job Messaging Format — is the conversation about it. Handing a workflow application a file and never speaking again leaves every job it sent sitting open on its list for ever. The JMF messaging tab is the bridge's half of that conversation with whatever application is driving the finisher.

Workflow application MIS, Switch, whatever drives the floor ImposeIQ JDF Bridge and the Duplo finisher behind it Command · SubmitQueueEntry "here is a job, and here is the JDF" Response · ReturnCode 0 "it arrived, it is queued" — silence here reads as a failed submission Signal · Status — Running / InProgress unprompted, as the job moves Signal · Status — Completed, Amount + Waste the sheet counts an MIS bills from Command · ReturnQueueEntry "here is the job back, and where the finished JDF is" Signal · Notification — Class Error instead of the above, when it goes wrong — with the reason attached
The conversation JMF carries. Gold is what the application sends; blue is what the bridge sends back.

Three settings at the top describe the shop rather than the job, so they are remembered: the application's JMF listener address, the Sender ID this bridge calls itself, and the Device ID of the finisher the messages are about. Below them go the job's details — their Job ID and queue entry ID, echoed back exactly as they sent them, since those are their handles for the job and swapping them is how an MIS loses track of something it is holding open.

SayWhat goes out
It arrivedA Response to their SubmitQueueEntry with ReturnCode 0 and the queue entry marked Waiting. A submission that gets no response is, to the sender, a failed one.
It startedA Status signal — device Running, job InProgress.
It finishedA Status signal — job Completed, 100%, with the good and wasted sheet counts attached. Those amounts are what an MIS bills from.
Hand the job backA ReturnQueueEntry command pointing at the finished JDF, which is how a device gives the job back rather than just reporting on it.
It went wrongA Notification signal, Class Error, carrying the explanation you typed. An error with no comment is a return code and nothing else.
What I can be askedThe answer to their KnownMessages query — the list of messages this bridge services.

Send posts the message to the listener; Save and Copy are for a workflow that collects messages from a folder instead. If their answer comes back with a ReturnCode other than zero, that is a refusal and the bridge reports it — including their comment — rather than claiming the message was accepted.

Traffic goes the other way too. Drop a JMF they sent on Something arrived and the bridge reads it, shows what it learned — their message ID, the JDF's location, where to reply — and builds the response it owes them, ready to send back. Anything it cannot honestly service comes back as ReturnCode 5 naming the message type, because a sender that gets silence retries for ever.

The posting happens in the background process. A window loaded from the local disk has no origin a JMF listener will accept and cannot set the CIP4 content type, so the message is posted by the suite itself — which also means a refused connection comes back as something you can act on rather than a blank failure.

What does not survive, and what does

JDF has no home for a Duplo tool id or for the registration, skew, shrinkage and barcode marks. Rather than drop them, they travel in a private namespace — duplo:ToolID and a duplo:DCMarks block. A JDF consumer ignores anything in a namespace it does not know, so the file stays valid JDF, and a round-trip back to DC XML returns every one of them exactly.

Coming the other way, some things a JDF can describe are beyond the machine, and those are reported rather than guessed at:

In the JDFWhat happens
A BlockTrf that rotates or scales a blockOnly the position is used, and it says so — a DC can only place a block square to the sheet.
A perforation outside every blockLeft out and reported. The DC addresses perforations relative to a piece, so one that belongs to no piece cannot be expressed.
A crease running down the sheetBecomes a Score perforation — the DC Crease element carries a Y position and nothing else.
No Media dimensionFalls back to the output Component, and failing that to the extent of the blocks, with a warning to check the sheet size before cutting.
Check the first one. Convert a job you already know, send it to the controller, and compare it against the same job built by hand. Once one has gone through cleanly the rest will follow — but a job ticket format is exactly the sort of thing where a shop’s particular MIS does something slightly its own way.

JDF job tickets from an outside MIS

The Bridge above translates the cutting part of a JDF. The MIS also takes in the whole job ticket — who the customer is, how many, when it is due, the finished size, the stock, how many up, which files and which finishing — from any system that writes JDF or XJDF: EFI Pace, PrintSmith Vision, Avanti, Prinect, or a web-to-print front end. Open MIS → Jobs → JDF tickets.

Way inHow it works
Hot folderThe sender drops a .jdf (and usually its PDF) in a folder. The ticket is taken in and filed in Handled tickets go to; one that cannot be read goes to Failed tickets go to. A PDF that was sitting beside it is filed with it once it has been copied into the job.
JMFTurn on Listen for JMF and give the sender the address shown as its JMF device URL. It sends a SubmitQueueEntry whose URL points at the JDF (a file, a share, or http). The reply carries the MIS job number as the queue entry, so the sender can track it. If the sender gave a return address it is told when the job is released or rejected. Device status sent to the same port goes to the floor tracking, as JMF from a finisher always has.
By handTake in a JDF file… — for trying a new sender’s tickets before pointing it at the folder, or one that came by e-mail.

Every ticket becomes a job on hold, waiting for review. The MIS fills in what it can:

From the ticketWhat the MIS does with it
CustomerMatched on the sender’s customer id against your customer code, then e-mail, then name. A customer you do not have is created, and the review says so in case it is a duplicate.
Press sheetMatched to a catalog stock of that size, preferring one whose name shares words with the paper the ticket names. If nothing is that size, the review says to pick one.
Finishing processesRouted to your cost centers — cut, crease and perf to one DC pass (the DC the ticket names, if you have it), spot UV to a DDC, foil to the DFL, folding, stitching, binding. A process no cost center does is listed so it can be added by hand.
Their impositionKept on the job. A workflow uses it instead of the estimate’s layout.
Cut blocksTurned into a DC job by the Bridge and filed in the job folder.
ArtworkCopied into the job folder. A file that has not arrived yet is looked for again every 30 seconds, up to the Wait for artwork time.

The job’s JDF job ticket card shows what came in and everything worth a second look. Correct anything on the job, then Release to production — or Reject it with a reason. Release is refused while the job has no quantity, no trim size, or artwork the ticket named is still missing. A held job cannot be moved off hold with the Status dropdown; it has to be released, so there is always a record of who let it go.

Imposing on release. Set When a job is released, send it to to a workflow that imposes: an Impose N-up step with Use the layout from the MIS job ticked, then DC or OMR marks, then the DC job. The step then uses the sender’s columns, rows, sheet and gutters. A ticket sent again before release updates the held job; one sent again after release changes nothing and the job’s history says so.

Not supported yet: JDF sent inside a MIME package (the sender is told to send a file or http link instead).

Finishing check — Duplo finisher limits

Every MIS job has a Finishing check card on its ticket. It checks the job against each Duplo finisher on its routing, using the limits from the Duplo brochures and product guides, so a job that a finisher cannot run is caught before the sheets are printed.

FinisherWhat is checked
DC-618, DC-648, DC-746Sheet fits the feeder (DC-618 330.5 mm wide, DC-648 and DC-746 370 mm; DC-746 B2 sheets through the DSF-20K / DC-20000). Stock weight. Pieces at least 48 × 50 mm. Gutters: under 3 mm cannot be cut; a slit gutter must be 0 or 5–15 mm, and one over 15 mm lands on the exit tray. Edge margins 3.2–55 mm for the slitter. Lead margin at least 3 mm, trail at least 5 mm; on the DC-618 a trail of 60 mm or more is not chopped into the bin. Slit count (6, or 8 on a DC-648 and 10 on a DC-746 with the extra modules), 30 cuts, 20 creases. Micro-perf stock range on the DC-618.
HC-550i, HC-680iSheet fits the cutter. Narrowest strip against the minimum cut, with and without the false clamp.
DDC-810 PRO, DDC-8000Sheet and stock. The 10 mm uncoated border when the job has spot UV, coating or foil. Coating width (DDC-810 322.5 mm) and thickness (DDC-810 from 15 µm, DDC-8000 from 10 µm).
DFL-500, DFL-700Sheet and stock.
UD-320, UD-M300, DSM-1000Sheet and stock; the waste separator needs 200 gsm or more; the DSM-1000 needs a 28 mm reference-edge margin.
DBM-150, DBM-350, DBM-700i, iSaddleThe open spread fits the feeder. Inside and cover stock. Sheets per book (pages ÷ 4): DBM-150 25 (20 on coated), DBM-350 25, DBM-700i 30 — up to 50 with the DBM-700S square spine and 24 gauge wire, 10 on stock under 64 gsm — iSaddle 30.
DPB-500, DB-300Book size and spine (pages ÷ 2 × the stock’s caliper): DPB-500 1–51 mm, DB-300 up to 50.8 mm.
CF375, CP375, TF375, DF-1300LSheet and stock; perforating range on the CP375; creases.

Cannot run means the machine cannot take the job. Check means it may need an option, a setting or a test sheet.

Horizon, Standard, GBC, MBM and other makers

From operator manuals. Where a maker’s own operator manual is on file (Duplo Docs → Competators), its figures replace the web page’s — a manual gives the gutters, edge trims and cut limits a web page leaves out. That covers the Horizon SmartSlitter (3 across with a gutter, 5 butted; gutters 5–15 mm; edge trim 3–60 mm), SmartStacker, AFC-566F, CRF-362, CRA-36 and RD-3346; the Uchida AeroCut X, Prime, Velocity, nano and nanoMax (2 mm gutter minimum, lead/trail trim, 20 cuts, creases and perforations per sheet in all); the Morgana DigiBook 200/300/450 perfect binders, AutoCreaser 33, 50 and Pro 385 and DigiFold Pro; the Challenge 305 TC cutter; the Graphic Whizard PT-330 S/SA and PT-335 SCC; and PDI Rhin-O-Tuff punches. Setup → Finishers shows “manual:” and the file name under Limits from.

POLAR (Heidelberg). POLAR cutters, formerly Polar-Mohr, are now sold by Heidelberg. Their limits come from Heidelberg’s product pages and sheets: the N 78, N 92, N 115, N 137, N 155 and N 176 high-speed cutters; the D 66 PLUS and D 80 PLUS hydraulic cutters; the TwinClamp 115/137; and the Autotrim M 137 label cutter. The check compares the sheet with the cut width and table depth. It compares the narrowest strip with the smallest cut, with and without the false clamp plate. For the Autotrim it also checks the label size (20 × 40 up to 230 × 1,010 mm). Heidelberg publishes no cut width for the TwinClamp, so the TwinClamp gives warnings only. Loading height is in the notes but is not checked. To match a cost center, put the model in its name, for example “Polar N 115”.

Cutter programs (POLAR and Horizon)

The Imposer’s Cutter Program… button saves the layout on screen as cutting data. The Cutter program (POLAR / Horizon) workflow step does the same after an Impose step, writing straight into a hot folder. Three files can be made:

  • PPF (CIP3 cut data) for POLAR Compucut. Point the step at Compucut’s hot folder, and Compucut builds the cutting program and sends it to a POLAR N or D PLUS cutter.
  • JDF (a Cutting ticket with cut blocks) for Horizon iCE LiNK’s JDF hot folder. Compucut 5.0.6 and later reads JDF too.
  • Backgauge program (.txt): every cut as a backgauge dimension in inches and mm, in order, with what drops off at each cut. The operator can key it into any guillotine: POLAR, Horizon, Challenge or a Duplo HC.

Pick the cutter so the program knows its smallest cut. When a trim is narrower than that, the program turns the pile round and finishes from the other side. Tick False clamp plate fitted to use the larger false-clamp minimum. The shop’s own guillotines from Setup → Finishers are in the list too. In the step, [var.machines] uses the first guillotine on the MIS job’s routing.

Lead edge in the PPF / JDF sets which way up the sheet is written; the default puts the lead (gripper) edge at the bottom. Before the first live job, send one test file to Compucut or iCE LiNK and check that the sheet appears the right way round. If it doesn’t, switch the setting. The files follow the published CIP3 PPF 3.0 and JDF specifications, but they have not yet been tried on a live Compucut or iCE LiNK. Demo copies are marked DEMO inside the file and in its name.

Setup → Finishers also lists GBC — Catena, Ultima and Pinnacle roll laminators, Spire III, Foton 30, StreamPunch Ultra and VFX, eWire VFX, MagnaPunch Elite and the Ci500E coil inserter — and MBM, with the machines MBM sells: Uchida AeroCut X, X Pro, nanoMax, AeroDieCut and Precision Card Pro; Triumph 4350, 4815, 4850, 4855, 5255, 5260, 5560, 6655, 6660, 7260 and Speedcut 56/68 cutters; MBM 208J, 408A, 508A and 1800S folders; SF2, Sprint 3000, iBooklet and StitchMaster; GoCrease 3000, 4000 and SEMI; and the FoilGlazer II. As with Horizon, every limit comes from the maker’s own page or PDF. Roll laminators are checked on document width and board thickness (they publish no sheet length); inline punches on the page size, which must be one they punch; wire and coil binders on book thickness (from the caliper) or sheet count. Where MBM’s web page and its PDF disagree (the 1800S top weight), the lower figure is the limit and the rest is a Check — test first.

Shops that also run Horizon equipment — sold in the US by Standard Finishing Systems as Standard Horizon — are covered too. MIS → Setup → Finishers lists the Horizon models with published specs: SmartSlitter, RD-N4055, CRF-362, CRA-36, CRS-36, AFV-566/564 folders, PF-P3110, StitchLiner Mark V, Mark IV and 6000, SPF-200A/L, SPF-2000, BQ-160, BQ-280PUR, BQ-300, BQ-500, CABS6000, HT-30C, HT-300, HT-110, HT-80, APC-610 and PC-640. Each limit was taken from Horizon’s own product pages or Standard’s brochures, and only what Horizon publishes is checked — for example the SmartSlitter’s sheet size, weights, 48 × 50 mm minimum piece, 3-up and perforating range, but not a gutter or lead margin, because Horizon does not publish one. Models marked confirm came from a hard-to-read PDF and only warn.

On each cost center, pick the machine under Machine for the finishing check; a cost center named with the model (“Standard Horizon StitchLiner Mark V”) is matched on its own. For anything else — a Standard-sold Plockmatic or Hunkeler, an older Horizon, another maker — press Add a finisher, choose what kind of machine it is, and enter the limits from its spec sheet in millimetres and gsm. Only the limits you enter are checked. Stitchers are checked by stitch thickness when the stock has a caliper, or scaled from the maker’s “about N sheets of X gsm” when it does not (as a warning).

Paper weight. The card shows which weight it used and where it came from, in this order: the JDF ticket’s weight; the Weight (gsm) entered on the stock; the stock’s Basis weight (“100# cover” is 271 gsm, converted exactly); a basis weight in the stock’s name (“100# Silk Text”); or, last, the caliper — about 21 gsm per point, which is only an estimate, so a limit it breaks is shown as Check, not Cannot run. Setup → Stock shows every paper’s weight and flags the ones that are estimated or missing; a missing or estimated weight can also be typed straight into the job’s Finishing check card and saved to the stock.

Margins. When the Imposer generates a job it is linked to — or an Impose workflow step runs for an MIS job — it records the layout it really built: sheet, grid, gutters between columns and between rows, and the distance from each sheet edge to the nearest trim line. From then on the card says As imposed and checks those exact numbers. Before that the card says Forecast: the margins are worked out from the estimate (or the JDF ticket), centred between the lead grip and the other margins the way the Imposer places the block — not assumed equal on every side. Column gutters are checked as slit gutters and row gutters as cut gutters.

A JDF job with a Cannot run result will not release on its own. Fix the job, or tick Release anyway and give a reason: who overrode it, why, and every problem they overrode go in the job’s history.

In a workflow. Add a Finishing check step after the MIS job link (or at the top of a release workflow). By default it stops the workflow when a finisher cannot run the job; set it to carry on and use [var.finishBlocks] in a Route step to send those jobs to an approval instead. It also sets [var.finishWarns] and [var.finishSummary]. Put it after the Impose step and it checks the sheet as imposed (the Impose step sets [var.marginLead], [var.marginTrail], [var.marginLeft], [var.marginRight] and the [var.imposed…] grid); before it, the forecast.

Return to JDF Bridge · Downloads · Support