// c) by apfel-z.net 2015
// === Menue-Definintionen ======================================================================
zuDoppelseitenToolsAddAllMenuItems();
function zuDoppelseitenToolsAddAllMenuItems() {
var zuDoppelseitenTool_EnableIfDocOpen = "event.rc = event.target != null";
/* app.addSubMenu({ cName: "DoppelEinzelseiten", cUser: "Doppel-/Einzelseiten", cParent: "Tools"});*/
app.addSubMenu({ cName: "DoppelEinzelseiten", cUser: "Doppel-/Einzelseiten", cParent: "Edit"});
app.addMenuItem({ cName: "OZDSES_1", cUser: "Doppelseiten -> Einzelseiten (mit Beschnitt)", cParent: "DoppelEinzelseiten", cEnable: zuDoppelseitenTool_EnableIfDocOpen, cExec: "OZzuEinzel();"});
app.addMenuItem({ cName: "OZDSES_2", cUser: "Einzelseiten -> Doppelseiten (ohne Beschnitt)", cParent: "DoppelEinzelseiten", cEnable: zuDoppelseitenTool_EnableIfDocOpen, cExec: "OZzuDoppel();"});
}
// === Funktionen ======================================================================
function OZzuDoppel() {
var dDoc = event.target;
var docSize = dDoc.getPageBox("Trim");
var tmpSize = [0, docSize[1], docSize[2]*3, docSize[3]];
// Gerade Seiten nach links (erste und letzte Seite auslassen)
for (var i = 1; i < dDoc.numPages-1; i++) {
if (i/2 != Math.floor(i/2)) { // Nur Gerade Seiten!
dDoc.setPageBoxes("Crop", i, i, tmpSize);
dDoc.setPageBoxes("Media", i, i, tmpSize);
}
}
// Aus ungeraden Seiten ein Template machen
for (var i = 1; i < dDoc.numPages-1; i++) if (i/2 == Math.floor(i/2)) {
var tTmp = dDoc.createTemplate("TmpOverlay_"+i, i);
tTmp.spawn(i-1, false, true);
dDoc.removeTemplate("TmpOverlay_"+i);
}
// Die zu großen Seiten wieder verkleinern
var endSize = [0, docSize[1], docSize[2]*2, docSize[3]];
for (var i = 1; i < dDoc.numPages-1; i++) {
if (i/2 != Math.floor(i/2)) {
dDoc.setPageBoxes("Crop", i, i, endSize);
dDoc.setPageBoxes("Media", i, i, endSize);
}
}
// Überschüssige Seiten löschen
for (var i = dDoc.numPages-2; i > 1; i-=2) {
dDoc.deletePages(i, i);
}
}
function OZzuDoppel_alt2() {
var dDoc = event.target;
// Croppen
dDoc.setPageBoxes("Crop", 0, dDoc.numPages-1, dDoc.getPageBox("Trim"));
var docSize = dDoc.getPageBox("Trim"); console.println(docSize);console.println(dDoc.getPageBox("Crop"));
var oddSize = [-docSize[2], docSize[1], docSize[2], docSize[3]];
var evenSize = [0, docSize[1], docSize[2]*2, docSize[3]];
// Gerade Seiten nach links und ungerade Seiten nach rechts (erste und letzte Seite auslassen)
for (var i = 1; i < dDoc.numPages-2; i++) {
if (i/2 != Math.floor(i/2)) {
// Gerade
dDoc.setPageBoxes("Crop", i, i, evenSize);
dDoc.setPageBoxes("Media", i, i, evenSize);
} else {
// Ungerade
dDoc.setPageBoxes("Crop", i, i, oddSize);
dDoc.setPageBoxes("Media", i, i, evenSize);
}
}
// Aus ungeraden Seiten ein Template machen
for (var i = 1; i < dDoc.numPages-1; i++) if (i/2 == Math.floor(i/2)) {
var tTmp = dDoc.createTemplate("TmpOverlay_"+i, i);
tTmp.spawn(i-1, false, true);
dDoc.removeTemplate("TmpOverlay_"+i);
}
// Überschüssige Seiten löschen
for (var i = dDoc.numPages-2; i > 1; i-=2) {
dDoc.deletePages(i, i);
}
}
function OZzuDoppel_alt() {
var dDoc = event.target;
// Croppen
dDoc.setPageBoxes("Crop", 0, dDoc.numPages-1, dDoc.getPageBox("Trim"));
dDoc.setPageBoxes("Media", 0, dDoc.numPages-1, dDoc.getPageBox("Trim"));
var docSize = dDoc.getPageBox("Media");
var oddSize = [-docSize[2], docSize[1], docSize[2], docSize[3]];
var evenSize = [docSize[0], docSize[1], docSize[2]*2, docSize[3]];
// Gerade Seiten nach links und ungerade Seiten nach rechts (erste und letzte Seite auslassen)
for (var i = 1; i < dDoc.numPages-2; i++) {
if (i/2 != Math.floor(i/2)) {
// Gerade
dDoc.setPageBoxes("Crop", i, i, evenSize);
dDoc.setPageBoxes("Media", i, i, evenSize);
} else {
// Ungerade
dDoc.setPageBoxes("Crop", i, i, oddSize);
dDoc.setPageBoxes("Media", i, i, oddSize);
}
}
// Aus ungeraden Seiten ein Template machen
for (var i = 1; i < dDoc.numPages-2; i++) if (i/2 == Math.floor(i/2)) {
var tTmp = dDoc.createTemplate("TmpOverlay_"+i, i);
tTmp.spawn(i-1, false, true);
dDoc.removeTemplate("TmpOverlay_"+i);
}
}
function OZzuEinzel() {
var dDoc = event.target;
var iOrigNumPages = dDoc.numPages;
var iStartPage = dDoc.pageNum;
//First duplicate pages
for (var j = iOrigNumPages-1; j >= 0; j--) {
JSToolsSeiteHalbieren1Helper(null, j, j);
}
this.pageNum = iStartPage;
//Then crop them
iOrigNumPages = dDoc.numPages; //New number of pages
var bLeft = false;
var iTest = iOrigNumPages/2;
if (iTest == Math.floor(iTest)) { //Even Number, is left page
bLeft = true;
}
for (i = iOrigNumPages-1; i >= 0; i--) {
dDoc.pageNum = i;
var aRect = this.getPageBox({cBox:"Bleed", nPage:i});
var bRect = this.getPageBox({cBox:"Media", nPage:i});
var bleedWidth = aRect[2] - aRect[0];
var mediaWidth = bRect[2] - bRect[0];
var borderLeft = aRect[0];
if (bLeft == false) {
//Links
bRect[2] = bleedWidth/2 + borderLeft + 0;
/*bRect[2] = bleedWidth/2 + borderLeft + 15;*/
} else {
//Rechts
bRect[0] = bleedWidth/2 + borderLeft - 0;
/*bRect[0] = bleedWidth/2 + borderLeft - 10;*/
}
try {
this.setPageBoxes({nStart:i, nEnd:i, rBox:bRect, cBox:"Media"});
} catch(e) {
app.alert(e.toString());
break;
}
bLeft = !bLeft ;
}
this.pageNum = iStartPage;
//Hack to force page refresh
//app.execMenuItem("RotateCW");
//app.execMenuItem("RotateCCW");
}
function JSToolsSeiteHalbieren1Helper(iNewPagesCount, iInsertPos, iCurrentPage) {
var sTempName = "MV1DuplPageTempl";
sTempName += Math.random();
var dDoc = event.target;
iInsertPos = (iInsertPos == null) ? dDoc.numPages : iInsertPos;
iNewPagesCount = (iNewPagesCount == null) ? 1 : iNewPagesCount;
var tTemplate = dDoc.createTemplate(sTempName,iCurrentPage);
try {
for (var i = 0; i < iNewPagesCount; i++) {
tTemplate.spawn(iInsertPos+i, false, false);
}
} catch (e) { app.alert(e); }
dDoc.removeTemplate(sTempName);
}