public virtual void testCutAndStack() { n.setXMLComment("This is a simple cut and stack layout witrh 2 stacks of one page each (two sided)\n"); setUpAutomatedInputRunList(); rl.setDescriptiveName("This is any RunList..."); lo = (JDFLayout)n.appendMatchingResource(ElementName.LAYOUT, EnumProcessUsage.AnyInput, null); lo.setResStatus(EnumResStatus.Available, true); lo.setMaxOrd(2); lo.setAutomated(true); lo.setXMLComment("2 stacks with 2 pages\n" + "The algorithm for calculating which pages go where is:\n" + "Ord + MaxOrd*SheetLoop%(MaxOrd*MaxStack*StackDepth) + StackOrd*StackDepth\n" + "Each set of stacks consumes 2 * 2 * 100 = 400 Pages (4 ContentObjects = 2 front, 2 Back / Sheet * 100 StackDepth"); lo.setAttribute("StackDepth", "100"); lo.setAttribute("MaxStack", "2"); JDFLayout cover = (JDFLayout)lo.addPartition(EnumPartIDKey.SheetName, "TheSheet"); JDFLayout coverFront = (JDFLayout)cover.addPartition(EnumPartIDKey.Side, EnumSide.Front); JDFContentObject co = coverFront.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 0, 0)); co.setOrd(0); co.setAttribute("StackOrd", "0"); co.setDescriptiveName("Front Page 0,2,4...0, Stack 0"); co.setXMLComment("this co consumes all pages 0,2,4...198, 400,402,404...598, 800...."); co = coverFront.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 8.5 * 72, 0)); co.setOrd(0); co.setAttribute("StackOrd", "1"); co.setDescriptiveName("Front Page 0,2,4,...0, Stack 1"); co.setXMLComment("this co consumes all pages 200,202,204...398, 600,602,604...798, 1000...."); JDFLayout coverBack = (JDFLayout)cover.addPartition(EnumPartIDKey.Side, EnumSide.Back); co = coverBack.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 8.5 * 72, 0)); co.setOrd(1); co.setAttribute("StackOrd", "0"); co.setDescriptiveName("Back Page 1,3,5, Stack 0"); co.setXMLComment("this co consumes all pages 1,3,5...199, 401,403,405...499, 801...."); co = coverBack.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 0, 0)); co.setOrd(1); co.setAttribute("StackOrd", "1"); co.setDescriptiveName("Back Page 1,3,5, Stack 1"); co.setXMLComment("this co consumes all pages 201,203,205...299, 601,603,605...799, 1001...."); doc.write2File(sm_dirTestDataTemp + "CutStack.jdf", 2, false); }
/// /// <summary> * </summary> /// private void executeLayout() { JDFLayout lo = (JDFLayout)theExpandedNode.getResource(ElementName.LAYOUT, EnumUsage.Output, 0); if (lo != null && vParts != null) { VJDFAttributeMap reducedMap = getReducedMap(new VString("Separation PartVersion", " ")); lo.setResStatus(EnumResStatus.Available, true); if (reducedMap != null) { int size = reducedMap.Count; for (int i = 0; i < size; i++) { JDFAttributeMap part = reducedMap[i]; if (bSingleSided == true && "Back".Equals(part.get("Side"))) { continue; } JDFLayout partLO = (JDFLayout)lo.getCreatePartition(part, partIDKeys); for (int j = 0; j < 4; j++) { JDFContentObject co = partLO.appendContentObject(); co.setCTM(new JDFMatrix(1 + 10 * j, 2 + 20 * j, 3 + 30 * j, 4 + 40 * j, 5 + 50 * j, 6 + 0 * j)); co.setOrd(j + i * 4); } } } } }
public virtual void testAutomateLayout4() { n.setXMLComment("This is a simple example of an automated layout that positions multiple instance documents onto one sheet\n" + "The structure is aligned as closely as possible with a static Layout\n" + "note that the actual processes and outputs have been omitted for brevity"); setUpAutomatedInputRunList(); rl.setDescriptiveName("This is a RunList specifiying 100 instance documents of 14 pages each in a ppml file.\n" + "DocCopies requests a repeat of 50 copies per document"); rl.setAttribute("DocCopies", 50, null); lo = (JDFLayout)n.appendMatchingResource(ElementName.LAYOUT, EnumProcessUsage.AnyInput, null); lo.setResStatus(EnumResStatus.Available, true); lo.setMaxOrd(1); lo.setMaxDocOrd(4); lo.setAutomated(true); lo.appendXMLComment("Layout for 4stacks on a sheet\n The number of pages per instance document is fixed\n" + "\n", null); JDFLayout cover = (JDFLayout)lo.addPartition(EnumPartIDKey.SheetName, "Stack"); cover.setDescriptiveName("one sided 4 up stack back side is empty"); JDFLayout coverFront = (JDFLayout)cover.addPartition(EnumPartIDKey.Side, EnumSide.Front); JDFContentObject co = coverFront.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 0, 0)); co.setOrd(0); co.setDocOrd(0); co.setDescriptiveName("Front Cover Page, document 0,4,..."); co = coverFront.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 8.5 * 72, 0)); co.setOrd(0); co.setDocOrd(1); co.setDescriptiveName("Front Cover Page, document 1,5,..."); co = coverFront.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 0, 11 * 72)); co.setOrd(0); co.setDocOrd(2); co.setDescriptiveName("Front Cover Page, document 2,6,..."); co = coverFront.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 8.5 * 72, 11 * 72)); co.setOrd(0); co.setDocOrd(3); co.setDescriptiveName("Front Cover Page, document 3,7,..."); doc.write2File(sm_dirTestDataTemp + "AutomatedLayout4.jdf", 2, false); }
public virtual void testAutomatedBooklet1() { n.setXMLComment("This is a simple Automated Booklet using negative ords\n" + "New Attribute @OrdsConsumed limits the number of ords consumed by an automated Layout\n" + "Negative Ord values are assumed to flow backwards\n" + "MaxOrd is not specified and must be calculated by counting the number of different ord values\n" + "If we want to keep maxord, it would have to be replaced by an xypair that specifies hom many are consumed from back and from front\n" + "If the number of pages is not mod 4, blank pages are retained at the back of the layout"); setUpAutomatedInputRunList(); rl.setDescriptiveName("This is any RunList..."); lo = (JDFLayout)n.appendMatchingResource(ElementName.LAYOUT, EnumProcessUsage.AnyInput, null); lo.setResStatus(EnumResStatus.Available, true); JDFLayout sheet = (JDFLayout)lo.addPartition(EnumPartIDKey.SheetName, "TheSheet"); sheet.setAutomated(true); sheet.setAttribute("OrdsConsumed", "0 -1"); JDFLayout sheetFront = (JDFLayout)sheet.addPartition(EnumPartIDKey.Side, EnumSide.Front); JDFContentObject co = sheetFront.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 0, 0)); co.setOrd(0); co.setDescriptiveName("Front left Page 0,2,4..."); co = sheetFront.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 8.5 * 72, 0)); co.setOrd(-1); co.setDescriptiveName("Back right page after folding -1 -3 -5 ... (Front sheet)"); JDFLayout sheetBack = (JDFLayout)sheet.addPartition(EnumPartIDKey.Side, EnumSide.Back); co = sheetBack.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 8.5 * 72, 0)); co.setOrd(1); co.setDescriptiveName("Back left Page 1,3,5"); co = sheetBack.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 0, 0)); co.setOrd(-2); co.setDescriptiveName("Front Right Page Page -2 -4 -6"); doc.write2File(sm_dirTestDataTemp + "SimpleAutomatedBooklet.jdf", 2, false); }
public virtual void testAutomateLayout1() { n.setXMLComment("This is the simplest example of an automated layout\n" + "The structure is aligned as closely as possible with a static Layout\n" + "note that the actual processes and outputs have been omitted for brevity"); setUpAutomatedInputRunList(); rl.setDescriptiveName("This is a RunList specifiying 100 instance documents of 14 pages each in a ppml file"); lo = (JDFLayout)n.appendMatchingResource(ElementName.LAYOUT, EnumProcessUsage.AnyInput, null); lo.setResStatus(EnumResStatus.Available, true); lo.setMaxOrd(14); lo.setMaxDocOrd(1); lo.setAutomated(true); lo.appendXMLComment("Layout for 2 Cover pages and 12 2 up two sided body pages\n The number of pages per instance document is fixed\n" + "This Layout is an example of an 'almost conventional' automated layout\n" + "MaxDocOrd is set to 1. This is redundant since 1 is the default.\n" + "A value of 1 explicitly resets all counters at a Document break.", null); JDFLayout cover = (JDFLayout)lo.addPartition(EnumPartIDKey.SheetName, "Cover"); cover.setDescriptiveName("one sided cover - the inner = back side is empty"); JDFLayout coverFront = (JDFLayout)cover.addPartition(EnumPartIDKey.Side, EnumSide.Front); JDFContentObject co = coverFront.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 0, 0)); co.setOrd(13); co.setDescriptiveName("Front Cover Page"); co = coverFront.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 8.5 * 72, 0)); co.setOrd(0); co.setDescriptiveName("Back Cover Page - (back of brochure but front of sheet)"); for (int i = 0; i < 3; i++) { JDFLayout body = (JDFLayout)lo.addPartition(EnumPartIDKey.SheetName, "Body" + (i + 1)); body.setDescriptiveName("sheet " + (i + 1) + " of 3 of the insert"); JDFLayout bodySide = (JDFLayout)body.addPartition(EnumPartIDKey.Side, EnumSide.Front); co = bodySide.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 0, 0)); co.setOrd(8 + 2 * (2 - i)); co.setDescriptiveName("Left Front Sheet Body Page"); co = bodySide.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 8.5 * 72, 0)); co.setOrd(1 + (2 * i)); co.setDescriptiveName("Right Front Sheet Body Page"); bodySide = (JDFLayout)body.addPartition(EnumPartIDKey.Side, EnumSide.Back); co = bodySide.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 0, 0)); co.setOrd(2 + (2 * i)); co.setDescriptiveName("Left Back Sheet Body Page"); co = bodySide.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 8.5 * 72, 0)); co.setOrd(7 + 2 * (2 - i)); co.setDescriptiveName("Right Back Sheet Body Page"); } doc.write2File(sm_dirTestDataTemp + "AutomatedLayout1.jdf", 2, false); }
public virtual void testWebGrowthCompensation() { JDFElement.setLongID(false); doc = new JDFDoc("JDF"); JDFNode n = doc.getJDFRoot(); JDFResourcePool rp = n.getCreateResourcePool(); JDFResource lo = n.addResource("Layout", EnumResourceClass.Parameter, EnumUsage.Input, null, null, null, null); JDFLayout losh = (JDFLayout)lo.addPartition(EnumPartIDKey.SheetName, "Sheet1"); JDFLayout lofr = (JDFLayout)losh.addPartition(EnumPartIDKey.Side, EnumSide.Front.getName()); rp.appendXMLComment("LayoutShift SHOULD be partitioned: at least Side and Separation will make sense", null); JDFResource los = n.addResource("LayoutShift", EnumResourceClass.Parameter, EnumUsage.Input, null, null, null, null); los.appendXMLComment("Note that the interpolation algorithm between positions is implementation dependent", null); los = los.addPartition(EnumPartIDKey.Side, "Front"); VString vSep = new VString("Cyan Magenta Yellow Black", " "); for (int i = 0; i < 16; i++) { int x = 720 * (i % 4); int y = 1000 * (i / 4); int ord = i % 8; JDFContentObject co = lofr.appendContentObject(); co.setOrd(ord); co.setOrdID(i); co.setCTM(new JDFMatrix(1, 0, 0, 1, x, y)); JDFMarkObject mo = lofr.appendMarkObject(); mo.setOrd(ord); mo.setOrdID(i + 100); mo.setCTM(new JDFMatrix(1, 0, 0, 1, x + 700, y + 900)); } for (int j = 0; j < vSep.Count; j++) { KElement sepShift = los.addPartition(EnumPartIDKey.Separation, vSep.stringAt(j)); for (int i = 0; i < 16; i += 2) { int x = 720 * (i % 4); int y = 1000 * (i / 4); KElement shiftObject = sepShift.appendElement("ShiftPoint"); shiftObject.setAttribute("Position", new JDFXYPair(x + 360, y + 500).ToString()); shiftObject.setAttribute("CTM", new JDFMatrix(1, 0, 0, 1, j + i / 4, j + i % 4).ToString()); } } doc.write2File(sm_dirTestDataTemp + "WebgrowthPartition.jdf", 2, false); }
public virtual void testDynamicMarks() { JDFElement.setLongID(false); JDFLayout lo = (JDFLayout)n.appendMatchingResource(ElementName.LAYOUT, EnumProcessUsage.AnyInput, null); lo.setXMLComment("Layout that illustrates dynamic mark placement - all margins are 25 points (gutter=2*25)"); lo.setSurfaceContentsBox(new JDFRectangle(0, 0, 500, 350)); JDFSheet s = lo.appendSheet(); JDFSurface su = s.appendFrontSurface(); JDFContentObject co0 = su.appendContentObject(); co0.setOrd(0); JDFMatrix m1 = (JDFMatrix)JDFMatrix.unitMatrix.Clone(); m1.shift(25, 25); co0.setCTM(JDFMatrix.unitMatrix); co0.setTrimSize(new JDFXYPair(200, 300)); string[] id = new string[2]; id[0] = co0.appendAnchor(null); JDFContentObject co1 = su.appendContentObject(); m1 = (JDFMatrix)JDFMatrix.unitMatrix.Clone(); m1.shift(275, 25); co1.setCTM(m1); co1.setTrimSize(200, 300); id[1] = co1.appendAnchor(null); { JDFMarkObject mark0 = su.appendMarkObject(); mark0.setXMLComment("Register Mark on the top right of the sheet - assumed size is 20*30, assumed sheet size is 500*350"); mark0.setTrimSize(20, 30); mark0.setCTM(new JDFMatrix(1, 0, 0, 1, 500 - 20, 350 - 30)); mark0.appendDeviceMark().setAttribute("Anchor", "TopRight"); mark0.appendRegisterMark().setXMLComment("mark metadata goes here"); appendRefAnchor(mark0, "TopRight", "Parent", null); } { JDFMarkObject mark0 = su.appendMarkObject(); mark0.setXMLComment("Vertical Slug Line beginning at the top of the bottom margin of of the sheet between the 2 pages" + "\nnote that no TrimSize need be specified and therefore TrimCTM / CTM place the point defined by @Anchor" + "\nnote also that the anchor points to centerleft which is in the unrotated (horizontal) cs of the slug line"); JDFMatrix m0 = new JDFMatrix(1, 0, 0, 1, 0, 0); m0.rotate(90); m0.shift(250, 25); mark0.setCTM(m0); JDFDeviceMark dm = mark0.appendDeviceMark(); dm.setAttribute("Anchor", "CenterLeft"); dm.setFontSize(10); dm.setFont("GhostCrypt"); JDFJobField jf = mark0.appendJobField(); jf.setXMLComment("Result: Sheet Printed by Dracula at the moonphase FullMoon"); jf.setAttribute("JobFormat", "Sheet Printed by %s at the moonphase %s"); jf.setAttribute("JobTemplate", "Operator,MoonPhase"); appendRefAnchor(mark0, "BottomCenter", "Parent", null); } for (int i = 0; i < 2; i++) { JDFMarkObject mark0 = su.appendMarkObject(); mark0.setXMLComment("Horizonzal Slug Line, centered 5 points over the top of page " + i + "\nnote that page is not yet a predefined token\n"); JDFMatrix m0 = new JDFMatrix(1, 0, 0, 1, 0, 0); m0.rotate(90); m0.shift(25 + 100, 300 + 25 + 5); if (i == 1) { m0.shift(250, 0); } mark0.setCTM(m0); JDFDeviceMark dm = mark0.appendDeviceMark(); dm.setAttribute("Anchor", "BottomCenter"); dm.setFontSize(8); JDFJobField jf = mark0.appendJobField(); jf.setXMLComment("Result: Page # " + i + " for Customer, Polanski - Job: J11"); jf.setAttribute("JobFormat", "Page # %i for Customer, %s - Job: %s"); jf.setAttribute("JobTemplate", "Page,JobRecipientName,JobID"); appendRefAnchor(mark0, "BottomCenter", "Sibling", id[i]); } doc.write2File(sm_dirTestDataTemp + "LayoutDynamicMarks.jdf", 2, false); }
/// /// * <param name="n"> </param> /// * <param name="rlOut"> </param> /// private void setupLayout(bool complex) { JDFLayout lo = (JDFLayout)n.appendMatchingResource("Layout", EnumProcessUsage.AnyInput, null); JDFLayerList ll = lo.appendLayerList(); const string layerNames = "BackGround Language"; VString layers = new VString(layerNames, " "); if (complex) { layers.Add("Currency"); } for (int i = 0; i < layers.Count; i++) { ll.appendLayerDetails().setName(layers.stringAt(i)); } JDFRunList rlOutDe = (JDFRunList)rlOut.addPartition(EnumPartIDKey.PartVersion, "De"); rlOutDe.setResStatus(EnumResStatus.Available, true); JDFRunList rlOutEn = (JDFRunList)rlOut.addPartition(EnumPartIDKey.PartVersion, "Fr"); rlOutEn.setResStatus(EnumResStatus.Unavailable, true); if (complex) { JDFRunList rlOutSwiss = (JDFRunList)rlOut.addPartition(EnumPartIDKey.PartVersion, "Ch"); rlOutSwiss.setResStatus(EnumResStatus.Unavailable, true); } for (int i = 0; i < 2; i++) { string sheetName = "Sheet" + i; JDFLayout lSheet = (JDFLayout)lo.addPartition(EnumPartIDKey.SheetName, sheetName); JDFRunList rlSheet = (JDFRunList)rlOutDe.addPartition(EnumPartIDKey.SheetName, sheetName); for (int j = 0; j < 2; j++) { string side = j == 0 ? "Front" : "Back"; JDFLayout lSide = (JDFLayout)lSheet.addPartition(EnumPartIDKey.Side, side); JDFRunList rlSide = (JDFRunList)rlSheet.addPartition(EnumPartIDKey.Side, side); rlSide.setFileURL("file://out/De/" + sheetName + "_" + side + ".tif"); for (int k = 0; k < 4; k++) { JDFContentObject poBkg = lSide.appendContentObject(); int ord = i * 8 + j * 4 + k; poBkg.setOrd(ord); poBkg.setOrdID(ord); JDFMatrix matrix = new JDFMatrix(1.0, 0.0, 0.0, 1.0, 0.0, 0.0); matrix.shift((k % 2) * 200, (k / 2) * 300); poBkg.setCTM(matrix); poBkg.setLayerID(0); JDFContentObject poLang = lSide.appendContentObject(); poLang.setOrd(ord + 16); poLang.setOrdID(ord); poLang.setCTM(matrix); poLang.setLayerID(1); if (complex) { JDFContentObject pOCurr = lSide.appendContentObject(); pOCurr.setOrd(ord + 32); pOCurr.setOrdID(ord); pOCurr.setCTM(matrix); pOCurr.setLayerID(2); } } } } }
public virtual void testAutomateLayout3() { n.setXMLComment("This is a simple example of an automated layout that positions multiple instance documents onto one sheet\n" + "The structure is aligned as closely as possible with a static Layout\n" + "note that the actual processes and outputs have been omitted for brevity"); setUpAutomatedInputRunList(); rl.setDescriptiveName("This is a RunList specifiying 100 instance documents of 14 pages each in a ppml file"); lo = (JDFLayout)n.appendMatchingResource(ElementName.LAYOUT, EnumProcessUsage.AnyInput, null); lo.setResStatus(EnumResStatus.Available, true); lo.setMaxOrd(7); lo.setMaxDocOrd(2); lo.setAutomated(true); lo.appendXMLComment("Layout for 2*1 Cover page and 2*6 2 up two sided body pages\n The number of pages per instance document is fixed\n" + "This Layout is an example of an 'almost conventional' automated layout\n" + "MaxDocOrd is set to 2. Thus 2 documents are positioned on each sheet.\n", null); JDFLayout cover = (JDFLayout)lo.addPartition(EnumPartIDKey.SheetName, "Cover"); cover.setDescriptiveName("one sided cover - the inner = back side is empty"); JDFLayout coverFront = (JDFLayout)cover.addPartition(EnumPartIDKey.Side, EnumSide.Front); JDFContentObject co = coverFront.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 0, 0)); co.setOrd(0); co.setDocOrd(0); co.setDescriptiveName("Front Cover Page, document 0,2,4,..."); co = coverFront.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 8.5 * 72, 0)); co.setOrd(0); co.setDocOrd(1); co.setDescriptiveName("Front Cover Page, document 1,3,5,..."); for (int i = 0; i < 3; i++) { JDFLayout body = (JDFLayout)lo.addPartition(EnumPartIDKey.SheetName, "Body" + (i + 1)); body.setDescriptiveName("sheet " + (i + 1) + " of 3 of the insert"); JDFLayout bodySide = (JDFLayout)body.addPartition(EnumPartIDKey.Side, EnumSide.Front); co = bodySide.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 0, 0)); co.setOrd(1 + i); co.setDocOrd(0); co.setDescriptiveName("Front Sheet Body Page, document 0,2,4,..."); co = bodySide.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 8.5 * 72, 0)); co.setOrd(1 + (2 * i)); co.setDocOrd(1); co.setDescriptiveName("Front Sheet Body Page, document 1,3,5,..."); bodySide = (JDFLayout)body.addPartition(EnumPartIDKey.Side, EnumSide.Back); co = bodySide.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 0, 0)); co.setOrd(2 + (2 * i)); co.setDocOrd(0); co.setDescriptiveName("Back Sheet Body Page, document 0,2,4,..."); co = bodySide.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 8.5 * 72, 0)); co.setOrd(2 + (2 * i)); co.setDocOrd(1); co.setDescriptiveName("Back Sheet Body Page, document 1,3,5,..."); } doc.write2File(sm_dirTestDataTemp + "AutomatedLayout3.jdf", 2, false); }
public virtual void testAutomateLayout_PlateSet() { for (int loop = 0; loop < 3; loop++) { n.getAuditPool().appendXMLComment("This is a simple example of an automated layout used for conventional prepress\n" + "The structure is aligned as closely as possible with a static Layout", null); JDFRunList run = rl.addRun("file://host/data/test.pdf", 0, -1); run.setNPage(128); rl.setResStatus(EnumResStatus.Available, true); rl.setDescriptiveName("This is a RunList specifiying 128 pages each in a pdf file."); lo = (JDFLayout)n.appendMatchingResource(ElementName.LAYOUT, EnumProcessUsage.AnyInput, null); lo.setResStatus(EnumResStatus.Available, true); lo.setMaxOrd(4); lo.setAutomated(true); const string format = "Sheet%02i"; lo.setAttribute("NameFormat", format); lo.setAttribute("NameTemplate", "SheetNum"); lo.appendXMLComment("Simple automated Layout with exactly one sheet\n", null); JDFLayout sheet = (JDFLayout)lo.addPartition(EnumPartIDKey.SheetName, "Sheet"); sheet.setDescriptiveName("two sided 2 up sheet"); JDFLayout sheetFront = (JDFLayout)sheet.addPartition(EnumPartIDKey.Side, EnumSide.Front); JDFContentObject co = sheetFront.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 0, 0)); co.setOrd(0); co.setDescriptiveName("Front 1st, 5th, 9th... Page"); co = sheetFront.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 8.5 * 72, 0)); co.setOrd(1); co.setDescriptiveName("Front 2nd, 6th, 10th... page"); JDFLayout sheetBack = (JDFLayout)sheet.addPartition(EnumPartIDKey.Side, EnumSide.Back); co = sheetBack.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 0, 0)); co.setOrd(2); co.setDescriptiveName("Back 3rd, 7th, 11th... Page"); co = sheetBack.appendContentObject(); co.setCTM(new JDFMatrix(1, 0, 0, 1, 8.5 * 72, 0)); co.setOrd(3); co.setDescriptiveName("Back 4th, 8th, 12th... page"); JDFRunList rlSheet = (JDFRunList)n.appendMatchingResource(ElementName.RUNLIST, EnumProcessUsage.AnyOutput, null); rlSheet.setDirectory("file://host/out/"); if (loop == 0) // instantiate individually { PrintfFormat fmt = new PrintfFormat(format); for (int i = 0; i < 128; i += 4) { string sheetName = fmt.tostr(1 + i / 4); JDFRunList rlp = (JDFRunList)rlSheet.addPartition(EnumPartIDKey.SheetName, sheetName); JDFRunList rlF = (JDFRunList)rlp.addPartition(EnumPartIDKey.Side, EnumSide.Front); rlF.appendLayoutElement().setMimeURL(sheetName + "Front.pdf"); JDFRunList rlB = (JDFRunList)rlp.addPartition(EnumPartIDKey.Side, EnumSide.Back); rlB.appendLayoutElement().setMimeURL(sheetName + "Back.pdf"); } } if (loop == 1) // instantiate individually { rlSheet.appendLayoutElement().setMimeURL("AllSheets.pdf"); PrintfFormat fmt = new PrintfFormat(format); JDFIntegerRangeList integerRangeList = new JDFIntegerRangeList(); for (int i = 0; i < 128; i += 4) { string sheetName = fmt.tostr(1 + i / 4); JDFRunList rlp = (JDFRunList)rlSheet.addPartition(EnumPartIDKey.SheetName, sheetName); JDFRunList rlF = (JDFRunList)rlp.addPartition(EnumPartIDKey.Side, EnumSide.Front); integerRangeList.Clear(); integerRangeList.Append(i / 2); rlF.setPages(integerRangeList); JDFRunList rlB = (JDFRunList)rlp.addPartition(EnumPartIDKey.Side, EnumSide.Back); integerRangeList.Clear(); integerRangeList.Append(1 + i / 2); rlB.setPages(integerRangeList); } } else // instantiate by template { JDFFileSpec fs = rlSheet.appendLayoutElement().appendFileSpec(); fs.setMimeType("application/pdf"); fs.setFileFormat(format + "%s_%s.pdf"); fs.setFileTemplate("SheetNum,Surface,Separation"); } doc.write2File(sm_dirTestDataTemp + "AutomatedLayout_Plateset" + loop + ".jdf", 2, false); n.getResourceLinkPool().deleteNode(); n.getResourcePool().deleteNode(); } }