You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

InDesign脚本为瓷砖分块排版图自动添加行列字母数字编号

InDesign瓷砖分块自动定位编号脚本实现

问题背景

开发InDesign自动化脚本过程中未在公开渠道找到对应解决方案,需求来自瓷砖印刷实际业务场景:

  • 业务流程需要将大幅面图像拆分为多个正方形分块,分别印刷在单块瓷砖上,铺贴工人需参考定位标识拼接还原整幅图像
  • 定位规则采用类海战棋网格规则:纵向行用大写字母标识、横向列用数字标识,即A1、A2这类编号,标识放置在图像外侧,仅作铺贴定位参考
  • 已完成基础脚本开发,可实现InDesign文档每页放置1张正方形分块图并居中适配页面,也已掌握在图片下方添加并定位文本框的方法,核心待解决问题为按上述行列规则生成对应的编号文本内容。

初始基础脚本

已完成的初始图片导入排版脚本如下:

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();

需求明细

  • 支持用户手动设置横向瓷砖列数(例如设置为4)
  • 编号生成规则:第一行(A行)依次生成A1至A4的编号,第二行(B行)依次生成B1至B4的编号,后续行依次递推使用C、D等字母,直到所有瓷砖分块图处理完成
  • 编号文本需放置在对应页面图片的下方居中位置

最终实现代码

结合参考方案适配完成的最终可用脚本如下,已加入输入校验、编号生成、文本框样式设置逻辑:

var Pagewidth =app.activeDocument.documentPreferences.pageWidth;
var Pageheight = app.activeDocument.documentPreferences.pageHeight;
// 弹出输入框让用户设置列数
var Columns = prompt("请输入横向瓷砖列数","");
if(!Columns){
    exit();
}
if(!Number(Columns)){
    alert("仅允许输入数字");
    exit();
}
var Imagefolder = Folder.selectDialog("选择图片所在文件夹");
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 = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
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("当前编号序列长度不足,无法覆盖文档内所有图片");
            break;
        }
    }
}

内容的提问来源于stack exchange,提问作者user18714172

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.31 13:03:30