【发布时间】:2022-06-14 15:02:57
【问题描述】:
我被脚本卡住了,无法在线找到解决方案,希望有人能帮助我。
在我工作的地方,我们在瓷砖上打印。其中一项主要工作是将大图像分割成几个正方形,然后将它们打印在如下图块上:
然后,瓷砖工将通过连接瓷砖来安装瓷砖以形成图像。为此,他必须对如何放置瓷砖有一些指示。
我们通常使用类似于战舰游戏中的网格,一侧是字母,另一侧是数字,就像您在图像中看到的红色那样(例如 A1、A2...)。
它们不会在图像内,仅供参考。
我已经编写了一个脚本来在 InDesign 文档的每页放置一个方形图像,现在我正在寻找的是在图像下插入一些文本,它标记了它是哪个图块(例如 A1、C5 ...)。
有一种方法可以手动为水平图块的数量选择自定义数字(例如 4),以便脚本将文本 A1 插入到 A4,然后开始将字母 B 一直插入到 B4,然后是 C、D 等. 等直到平铺图像用完?
到目前为止,这是我的脚本:
var Pagewidth =app.activeDocument.documentPreferences.pageWidth;
var Pageheight = app.activeDocument.documentPreferences.pageHeight;
var Imagefolder = Folder.selectDialog("Select a folder");
var Images = Imagefolder.getFiles(/.+\.(?:gif|jpe?g|eps|tiff?|psd|pdf|bmp|png)$/i);
for(var i =0; i < Images.length; i++) {
var Placed = app.activeDocument.pages.item(-1).place(Images[i]);
app.activeDocument.align(Placed[0], AlignOptions.VERTICAL_CENTERS, AlignDistributeBounds.PAGE_BOUNDS);
app.activeDocument.align(Placed[0], AlignOptions.HORIZONTAL_CENTERS, AlignDistributeBounds.PAGE_BOUNDS);
Placed[0].parent.fit(FitOptions.FRAME_TO_CONTENT);
app.activeDocument.pages.add(LocationOptions.AT_END);
}
app.activeDocument.pages.item(-1).remove();
编辑
以防万一我会尝试更清楚,我正在寻找的是在每个页面的图像下添加一些文本,如下所示:
我已经知道如何为每个图像添加文本框并将其放在它们下方。
不明白的是如何添加这种textframe内容。
更新
感谢 Yuri 提供的代码,我根据自己的目的对其进行了调整。
这是最终代码:
var Pagewidth =app.activeDocument.documentPreferences.pageWidth;
var Pageheight = app.activeDocument.documentPreferences.pageHeight;
var Columns = prompt("Type the number of columns","");
if(!Columns){
exit();
}
if(!Number(Columns)){
alert("You can only type numbers");
exit();
}
var Imagefolder = Folder.selectDialog("Select a folder");
if(!Imagefolder){
exit();
}
var Images = Imagefolder.getFiles(/.+\.(?:gif|jpe?g|eps|tiff?|psd|pdf|bmp|png)$/i);
for(var i =0; i < Images.length; i++){
var Placed = app.activeDocument.pages.item(-1).place(Images[i]);
app.activeDocument.align(Placed[0], AlignOptions.VERTICAL_CENTERS, AlignDistributeBounds.PAGE_BOUNDS);
app.activeDocument.align(Placed[0], AlignOptions.HORIZONTAL_CENTERS, AlignDistributeBounds.PAGE_BOUNDS);
Placed[0].parent.fit(FitOptions.FRAME_TO_CONTENT);
app.activeDocument.pages.add(LocationOptions.AT_END);
}
app.activeDocument.pages.item(-1).remove();
var Lettersnumber = 26;
var Arr = [];
var Letters = ["A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","X","Y","Z"];
for(var j = 0; j < Lettersnumber; j++){
for(var k = 1; k <= Columns; k++){
Arr.push(Letters[j] + k);
}
}
for(var l = 0; l < app.activeDocument.allGraphics.length; l++){
if(app.activeDocument.allGraphics[l].parentPage != null){
try{
var Subtext = app.activeDocument.allGraphics[l].parentPage.textFrames.add();
Subtext.textFramePreferences.verticalJustification = VerticalJustification.TOP_ALIGN;
Subtext.contents = Arr[l];
Subtext.paragraphs[0].appliedFont = app.fonts.item("Arial");
Subtext.paragraphs[0].pointSize = "30";
Subtext.paragraphs[0].justification = Justification.CENTER_ALIGN;
var Margin = app.activeDocument.allGraphics[l].parent.visibleBounds;
Subtext.visibleBounds = [Margin[2]+12, Margin[1], Margin[2]+4, Margin[3]];
Subtext.fit(FitOptions.FRAME_TO_CONTENT);
Subtext.fit(FitOptions.FRAME_TO_CONTENT);
Subtext.move(undefined, ["0", "12"]);
}
catch(e){
alert("The text is not enough for the number of images in the document");
break;
}
}
}
【问题讨论】:
标签: javascript adobe-indesign extendscript