gpt4 book ai didi

javascript - 如何通过脚本在 InDesign 中用给定文件替换图形?

转载 作者:行者123 更新时间:2023-11-28 19:04:33 24 4
gpt4 key购买 nike

我需要用给定文件替换 InDesign 文档中的一些图像。使用 InDesign 服务器会发生这种情况,但脚本编写几乎与常规 InDesign 相同,只是无法进行用户交互。

我拥有的是一个 InDesign 文档、包含某些图像的矩形的 ID 以及应替换该图像的新图像的路径。

图像应被替换,但 FitOptions 等设置应保持不变。此外,新文件应嵌入到 InDesign 文档中。已经有一些可以工作的代码:

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.textFrames ?我实际上很困惑这甚至有效。

它也只是设置了一些 FitOptions,但我想保留现有的。

我对 InDesign 脚本编写非常陌生,所以我在这里迷失了方向。我正在阅读docsother resources ,但我很困惑。例如,为什么有 doc.textFrames.itemByID 但其他框架没有类似的内容?我是否必须迭代 doc.allPageItems 并比较 id?

最佳答案

itemByID 是适用于所有 pageItems 的方法,并且 textFramesrectangles 都是 pageItem 的子类。因此,您可以从两者访问此方法,并且它会给出相同的结果。您还应该能够使用 doc.rectangles.itemByID 。请参阅:http://www.indesignjs.de/extendscriptAPI/indesign11/#Rectangles.html#d1e201999__d1e202138

但是你说得对,描述有点令人困惑,它说:

Returns the TextFrame with the specified ID.

事实显然并非如此。如果您已经有了想要定位的 ID,则可以使用 doc.pageItems.itemByID,这可能不会那么困惑,因为基本上您在使用时正在寻找 pageItems itemByID。

至于拟合选项,它们是矩形对象的属性,因此放置新图像不应更改拟合选项。如果您想保持不变,只需删除对 fit() 的调用即可。参见RectangleframeFittingOptions的属性列表:http://www.indesignjs.de/extendscriptAPI/indesign11/#Rectangle.html

关于javascript - 如何通过脚本在 InDesign 中用给定文件替换图形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31940617/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com