- Сообщения
- 33 687
- Реакции
- 10 999
Раз уж Санчес доделал свой макрос для автоматического сужения текста, выложу и я очередной скрипт, на этот раз, для акробата.
Предположим, нужно разрезать страницу на две части по вертикали или горизонтали. Можно это сделать стандартным акробатовским Crop, но чертовски неудобно и не интерактивно. При запуске скрипта достаточно ткнуть в точку разреза и страница разобьется на две вертикальные или горизонтальные части. Скрипт работает начиная с 7 версии акробата (не ридера). В подменю Tools появляются два дополнительных пункта "Divide Page Horizontal" и "Divide Page Vertical".
Предположим, нужно разрезать страницу на две части по вертикали или горизонтали. Можно это сделать стандартным акробатовским Crop, но чертовски неудобно и не интерактивно. При запуске скрипта достаточно ткнуть в точку разреза и страница разобьется на две вертикальные или горизонтальные части. Скрипт работает начиная с 7 версии акробата (не ридера). В подменю Tools появляются два дополнительных пункта "Divide Page Horizontal" и "Divide Page Vertical".
Код:
// Divide Page script.
// Copyright (c) MBK 2013
// mikhail_kondakov@mail.ru http://mbkhome.narod.ru
var aRect;
var IsHoriz;
if (app.viewerVersion < 10) {
app.addMenuItem({ cName: "DivPage", cUser: "Divide Page Horizontal", cParent: "Tools", cExec:
"DivPage(true)",
cEnable: "event.rc = (event.target != null);"});
app.addMenuItem({ cName: "DivPage", cUser: "Divide Page Vertical", cParent: "Tools", cExec:
"DivPage(false)",
cEnable: "event.rc = (event.target != null);"});
} else {
app.addToolButton({ cName: "DivPage", cLabel: "Divide Page Horizontal", cExec:
"DivPage(true)",
cEnable: "event.rc = (event.target != null);"});
app.addToolButton({ cName: "DivPage", cLabel: "Divide Page Vertical", cExec: "DivPage(false)",
cEnable: "event.rc = (event.target != null);"});
}
mouseClicFunc = app.trustedFunction(function(isHoriz)
{
X= this.mouseX;
Y= this.mouseY;
app.beginPriv();
this.insertPages( {
nPage: 0,
cPath: this.path,
nStart: 0
});
var halfWidth1 = X;
var halfWidth2 = (aRect[2]-aRect[0])-X;
var halfheight1 = Y;
var halfheight2 = (aRect[1]-aRect[3])-Y;
var cropLeft = new Array();
var cropRight = new Array();
if (!isHoriz)
{
cropLeft[0] = aRect[0];
cropLeft[1] = aRect[1];
cropLeft[2] = aRect[0] + halfWidth1;
cropLeft[3] = aRect[3];
cropRight[0] = aRect[2] - halfWidth2;
cropRight[1] = aRect[1];
cropRight[2] = aRect[2];
cropRight[3] = aRect[3];
} else
{
cropLeft[0] = aRect[0];
cropLeft[1] = aRect[1];
cropLeft[2] = aRect[2];
cropLeft[3] = aRect[1]-halfheight2;
cropRight[0] = aRect[0];
cropRight[1] = aRect[3]+halfheight1;
cropRight[2] = aRect[2];
cropRight[3] = aRect[3];
}
this.setPageBoxes( {
cBox: "Trim",
nStart: 0,
rBox: cropLeft
});
this.setPageBoxes( {
cBox: "Trim",
nStart: 1,
rBox: cropRight
});
this.setPageBoxes( {
cBox: "Crop",
nStart: 0,
rBox: cropLeft
});
this.setPageBoxes( {
cBox: "Crop",
nStart: 1,
rBox: cropRight
});
this.removeField("MyButton");
app.endPriv();
return;
}
);
function DivPage(isHoriz) {
aRect = this.getPageBox("Crop");
IsHoriz=isHoriz;
f = this.addField("MyButton", "button", 0 , aRect);
f.setAction("MouseUp","mouseClicFunc(IsHoriz);");
return;
}