Javascript 如何通过脚本在InDesign中用给定文件替换图形?
我需要用给定的文件替换InDesign文档中的一些图像。这是使用InDesign服务器实现的,但脚本编写与常规InDesign几乎相同,只是不允许用户交互 我拥有的是一个InDesign文档,一个包含某个图像的矩形的ID,以及一个新图像的路径,该图像应该替换该图像 应更换图像,但FitOptions等设置应保持不变。此外,新文件应嵌入InDesign文件中。已经有一些代码可以工作:Javascript 如何通过脚本在InDesign中用给定文件替换图形?,javascript,adobe-indesign,indesign-server,Javascript,Adobe Indesign,Indesign Server,我需要用给定的文件替换InDesign文档中的一些图像。这是使用InDesign服务器实现的,但脚本编写与常规InDesign几乎相同,只是不允许用户交互 我拥有的是一个InDesign文档,一个包含某个图像的矩形的ID,以及一个新图像的路径,该图像应该替换该图像 应更换图像,但FitOptions等设置应保持不变。此外,新文件应嵌入InDesign文件中。已经有一些代码可以工作: function changeImages(doc) { var arrayLength = change
function changeImages(doc) {
var arrayLength = changeImage.length;
for (var i = 0; i < arrayLength; i++) {
var fr = doc.textFrames.itemByID(1 * changeImage[i].id);
if (!fr)
continue;
var file = File(imagePath + changeImage[i].file);
fr.place(file);
fr.fit (FitOptions.CONTENT_TO_FRAME);
fr.fit (FitOptions.PROPORTIONALLY);
fr.fit (FitOptions.CENTER_CONTENT);
}
}
函数更改图像(doc){
var arrayLength=changeImage.length;
对于(变量i=0;i
这似乎不对。当对象是矩形时,为什么要使用doc.textFrames
?我真的很困惑,这甚至是有效的
它只是设置了一些选项,但我想保留现有的
我对InDesign脚本非常陌生,所以我在这里迷路了。我正在读和,但我感到困惑。e、 g为什么有
doc.textFrames.itemByID
但其他框架没有类似的内容?我必须迭代doc.allPageItems
并比较ID吗?itemByID
是一种可用于所有pageItems
的方法,textFrames
和矩形
都是pageItem的子类。因此,您可以从这两个方面访问此方法,并且它将给出相同的结果。您还应该能够使用doc.rectangles.itemByID
。见:
但你是对的,描述有点混乱,它说:
返回具有指定ID的TextFrame
显然情况并非如此。如果您已经有了想要定位的ID,那么可以使用doc.pageItems.itemByID
,这可能会比较容易混淆,因为在使用itemByID时基本上是在查找pageItems
至于
拟合选项
,它们是矩形对象的属性,因此放置新图像不应更改拟合选项。如果要保持不变,只需删除对fit()
的调用即可。请参见矩形
的属性列表中,框架安装选项
:itemByID
是一种可用于所有页面项
的方法,文本框
和矩形
都是页面项的子类。因此,您可以从这两个方面访问此方法,并且它将给出相同的结果。您还应该能够使用doc.rectangles.itemByID
。见:
但你是对的,描述有点混乱,它说:
返回具有指定ID的TextFrame
显然情况并非如此。如果您已经有了想要定位的ID,那么可以使用doc.pageItems.itemByID
,这可能会比较容易混淆,因为在使用itemByID时基本上是在查找pageItems
至于拟合选项
,它们是矩形对象的属性,因此放置新图像不应更改拟合选项。如果要保持不变,只需删除对fit()
的调用即可。请参见矩形
,框架安装选项的属性列表:Josef
在InDesign CS4中,我也遇到过同样的问题,即保留原始选项。我一直无法弄清楚如何获得InDesign CS4中当前使用的设置
为了解决这个问题,我所做的是在InDesign文档的框架拟合选项中设置空框架上的拟合中的值
然后在代码中我使用了这种设置,类似这样:
changeImages (app.activeDocument);
function changeImages(doc)
{
with(doc)
{
var rec = doc.rectangles.itemByID(207);
var file = new File("c:\\new_image.png");
rec.place(file);
rec.fit(rec.frameFittingOptions.fittingOnEmptyFrame);
}
}
约瑟夫
在InDesign CS4中,我也遇到过同样的问题,即保留原始选项。我一直无法弄清楚如何获得InDesign CS4中当前使用的设置
为了解决这个问题,我所做的是在InDesign文档的框架拟合选项中设置空框架上的拟合中的值
然后在代码中我使用了这种设置,类似这样:
changeImages (app.activeDocument);
function changeImages(doc)
{
with(doc)
{
var rec = doc.rectangles.itemByID(207);
var file = new File("c:\\new_image.png");
rec.place(file);
rec.fit(rec.frameFittingOptions.fittingOnEmptyFrame);
}
}
如何找到要更改的图像的ID?或者我们如何定义它?如何找到要更改的图像的ID?或者我们如何定义它?