Examples¶
Complete scripts you can adapt. All use the real API from the previous pages.
Saddle-stitch booklet (recorded)¶
This is the kind of script the GUI recorder produces.
imposio.setUnits("mm");
var doc = imposio.open("/jobs/brochure.pdf");
doc.setImposition({
sheet: { preset: "Auto", portrait: true, width: 320, height: 450 },
layout: { type: "Booklet", autoMode: "FitSheetToGrid",
cols: 2, rows: 2, order: "Z", scale: "None", placedRotation: "Auto",
gutterAuto: true, marginTop: 6, marginBottom: 6, marginLeft: 6, marginRight: 6 },
source: { mode: "all" },
cropMarks: { enabled: true, length: 4, weight: 0.088, sides: "firstpage" },
booklet: { foldScheme: "4pp", bindingEdge: "left", duplexFlip: "short" },
output: { profile: "rasterized", dpi: 600 }
});
var out = doc.generateImposition();
out.save("/jobs/brochure_booklet.pdf", { autoIndex: true });
Batch a list of files¶
The engine has no directory listing, so drive it from an array of paths.
imposio.setUnits("mm");
var files = ["/jobs/a.pdf", "/jobs/b.pdf", "/jobs/c.pdf"];
for (var i = 0; i < files.length; i++) {
var d = imposio.open(files[i]);
if (!d || !d.isValid()) continue;
d.setImposition({
layout: { type: "Booklet" },
booklet: { foldScheme: "4pp", bindingEdge: "left" },
cropMarks: { enabled: true }
});
var out = d.generateImposition();
out.save(files[i].replace(".pdf", "_imposed.pdf"), { autoIndex: true });
}
N-up a sheet of cards¶
imposio.setUnits("mm");
var d = imposio.open("/jobs/card.pdf");
d.setImposition({
sheet: { preset: "SRA3", portrait: false },
layout: { type: "NUp", autoMode: "FitGridToSheet", scale: "None",
gutterH: 3, gutterV: 3,
marginTop: 10, marginBottom: 10, marginLeft: 10, marginRight: 10 },
cropMarks: { enabled: true, sides: "both" }
});
d.generateImposition().save("/jobs/cards_sheet.pdf");
Rasterise to CMYK and export TIFF¶
imposio.setUnits("mm");
var d = imposio.open("/jobs/flyer.pdf");
d.rasterizePages("all", { dpi: 300, cmyk: true, intent: "relative" });
d.exportImage("/jobs/out/", { format: "tiff", dpi: 300, box: "trim", multipageTiff: true });
Build a page with the edit layer¶
imposio.setUnits("mm");
var d = imposio.newDocument(210, 297);
d.addRect(0, 10, 10, 190, 277, { stroke: "#000000", fill: "none", widthPt: 0.5 });
d.addText(0, 20, 250, 170, 20, "PROOF", { fontSizePt: 24, align: "center", bold: true });
d.save("/jobs/proof.pdf");
Page housekeeping¶
imposio.setUnits("mm");
var d = imposio.open("/jobs/scan.pdf");
d.rotatePages("odd", 90);
d.deletePages("1");
d.addBlankPage(-1, 210, 297);
d.setMetadata({ title: "Cleaned scan", author: "Imposio" });
d.save("/jobs/scan_clean.pdf", { autoIndex: true });
Fill a PDF form¶
var d = imposio.open("/forms/application.pdf");
// Inspect the fields
for (var f of d.formFields())
console.log(f.name + " (" + f.type + ") = " + f.value);
// Fill them — text, checkbox, radio, choice
d.setFormFields({
full_name: "Jane Smith",
agree: true,
delivery: "/express",
country: "Slovakia"
});
d.save("/forms/application_filled.pdf");