关于容器的宽度和高度----Indesign javascript

//本方法是取出一个Rectangle的两对坐标,然后通过相减获得,参见Indesign CS4的IDML文档中的四组坐标,注意:返回的单位为"点points“

function RectangleWidthHeight(myRectangle)
{
 var myRectangleTopLeft = myRectangle.resolve(AnchorPoint.topLeftAnchor, CoordinateSpaces.pasteboardCoordinates, true);
 var myRectangleTopRight = myRectangle.resolve(AnchorPoint.topRightAnchor, CoordinateSpaces.pasteboardCoordinates, true);
 var myRectangleBottomLeft = myRectangle.resolve(AnchorPoint.bottomLeftAnchor, CoordinateSpaces.pasteboardCoordinates, true); 
 var d1x = (myRectangleTopRight[0][0] - myRectangleTopLeft[0][0]);
 var d1y = (myRectangleTopRight[0][1] - myRectangleTopLeft[0][1]);
 var myWidth = hypotenuse(d1x,d1y);
 var d2x = (myRectangleTopLeft[0][0] - myRectangleBottomLeft[0][0]);
 var d2y = (myRectangleTopLeft[0][1] - myRectangleBottomLeft[0][1]);
 var myHeight = hypotenuse(d2x,d2y); 
 return [myWidth,myHeight]; 
}
function hypotenuse(d1,d2)
{
 return Math.sqrt(Math.pow(d1,2) + Math.pow(d2,2) );
}

//方法二:改变一个Rectangle的宽度

function ChangeRectangleWidth(myRectangle,newWidth)
{
 var myEqmeasure = myRectangle.geometricBounds; //取出一个Rectangel的四个坐标
 var y1 = myEqmeasure[0];
 var y2 = myEqmeasure[2];
 var x1 = myEqmeasure[1];
 var x2 = x1 + newWidth;
 myRectangle.geometricBounds = [y1,x1,y2,x2];  //将坐标重组然后赋值,这样就改变了Rectangle的宽度,高度同理
}

//改变TextFrame的宽度,单位为毫米

myTextFrame.textFramePreferences.textColumnFixedWidth = 300; 

//获取一个TextFrame容器对象,

var myDocument = app.activeDocument;

for (var i = 0; i < myDocument.textFrames.length; i++)
  {
   
    var obj = myDocument.textFrames[i]);     //同理,Rectangle/Group/links/images为相应的rectangles[i]/groups[i]/links[i]/images[i]
       
  } 

 

posted @ 2016-05-17 10:36  lovemx  阅读(208)  评论(0)    收藏  举报