InDesign Server - 无法调整图像大小 - 它已锁定且无法解锁

时间:2014-09-28 17:37:10

标签: javascript adobe-indesign indesign-server

我正在编写一些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;
}

使用if(image.locked)块周围的try / catch块,调整大小行会抛出错误“图像被锁定”(因为它无法解锁)。如果没有try / catch但保留if(image.locked)块,则会抛出错误“该属性在当前状态下不适用”。在尝试访问image.locked时。

那么“状态”是我的形象,为什么它不“适用”,即使应用程序明显使用它来阻止我调整它?我如何调整图像大小,因为这是一个自动化过程,在生产中我无法事先手动编辑InDesign进行编辑?

1 个答案:

答案 0 :(得分:5)

如Adobe的文档中所述,图片容器 - 父框架'周围'可以通过更改读/写布尔属性locked来锁定和解锁图像,这是一个通用的SplineItem

在InDesign CS4及更早版本中,Graphic类没有此属性,但自从InDesign CS5开始,属性locked也会出现在其中及其所有派生类中。根据Adobe的documentation,它是读/写属性。但是,这似乎是错误。尝试使用CS6,我发现其父框架内的图形的locked属性仅反映了父级的状态,实际上是只读

在CS4及更早版本的InDesign用户界面中,菜单项" Lock"选择框架内的图形时禁用。在CS5及更高版本的用户界面中,无法选择锁定的项目,因此无法调用菜单项。

给定图形图像的句柄,最简单的解决方法是通过其父级检查和/或更改状态:

image = app.activeDocument.allGraphics[0]; // a handle to the first graphic
image.parent.locked = false; // unlock it