p.g*_*all 5 javascript indesign-server adobe-indesign
我正在编写一些JS代码来重新链接图像,然后调整它以适应包含的对象.简化版代码:
var image = (get image);
try {
image.itemLink.relink(File(new_filename));
}
catch(e) {
(log it);
}
var image = (find image again because after the relink it would otherwise cause error "Object no longer exists")
(work out new width, height, v offset, h offset);
try {
if(image.locked) {
lock_later = true;
image.locked = false;
}
}
catch(e) { }
// Resize and reposition image
image.geometricBounds = [(rectangle.geometricBounds[0] + h_offset) + "mm", (rectangle.geometricBounds[1] + w_offset) + "mm", (rectangle.geometricBounds[2] - h_offset) + "mm", (rectangle.geometricBounds[3] - w_offset) + "mm"];
// Lock the image again if it was locked before
if(lock_later) {
image.locked = true;
}
Run Code Online (Sandbox Code Playgroud)
使用块周围的try/catch块if(image.locked),调整大小行会抛出错误"Image is locked"(因为它无法解锁).如果没有try/catch但保留if(image.locked)块,则会抛出错误"该属性在当前状态下不适用".在试图访问时image.locked.
那么什么"状态"是我的形象,为什么它不"适用",即使应用程序明显使用它来阻止我调整它?我如何调整图像大小,因为这是一个自动化过程,在生产中我无法事先手动编辑InDesign进行编辑?
如Adobe的文档中所述,可以通过更改读/写布尔属性来锁定和解锁图像容器 - 图像周围的父框架(通用SplineItem)locked.
在InDesign CS4及更早版本中,GraphicClass没有此属性,但是从InDesign CS5开始,该属性locked也出现在其中及其所有派生类中.根据Adobe的文档,它是一个读/写属性.但是,这似乎是错误的.尝试使用CS6,我发现locked其父框架内的图形属性仅反映了父框架的状态,实际上是只读的.
在CS4及更早版本的InDesign用户界面中,选择框架内的图形时,将禁用菜单项"锁定".在CS5及更高版本的用户界面中,无法选择锁定的项目,因此无法调用菜单项.
给定图形图像句柄的最简单的解决方法是通过其父级检查和/或更改状态:
image = app.activeDocument.allGraphics[0]; // a handle to the first graphic
image.parent.locked = false; // unlock it
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
852 次 |
| 最近记录: |