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

Acrobat中addWatermarkFromText()无法循环,仅第一页生效求助

解决PDF全页添加双水印问题

问题描述

拼凑代码实现PDF加水印功能,但仅第一页生效,需求为给所有页面添加两类水印:用条码字体显示文件名/工单编号,用普通字体显示页码。

初始失效代码

for (var p = 0; p < this.pageNum; p++);
var cMyText = event.target.documentFileName.replace(/\.pdf$/i,"");
event.target.addWatermarkFromText({
    cText: cMyText,
    nFontSize:10,
    aColor: color.black,
    cFont: "LibreBarcode39Text-Regular",
    nHorizAlign:app.constants.align.left,
    nHorizValue: 36,
    nVertAlign:app.constants.align.top,
    nVertValue: -3,
    nStart: p
})
for (var s=0; s<this.pageNum; s++);
var cMyText = "\nPage " + (s+1) + " of " + numPages;
event.target.addWatermarkFromText({
    cText: cMyText,
    nFontSize:8,
    aColor: color.black,
    nHorizAlign:app.constants.align.left,
    nHorizValue: 36,
    nVertAlign:app.constants.align.top,
    nVertValue: -10,
    nStart: s
})

失效原因

循环语句末尾的分号导致循环体为空,后续的水印添加代码仅执行一次,使用的是循环结束后的变量值(此时p/s等于总页数,对应第一页),因此仅第一页生效。

修正后可行代码

/*print identifier script by Chris B. Castonguay 2022*/

/*打开对话框请求工单编号并存储值*/
var cRtn = app.response("工单编号(格式:x1-23456-x)","条码生成器2000","roll-up-33","","工单#");

/*在左上角打印"工单#"文本水印*/
for (var p = 0; p < this.numPages; p++){
var cMyText = "工单# ";
event.target.addWatermarkFromText({
        cText: cMyText,
        nFontSize:10,
        aColor: ["CMYK", 0,0,0,.85],
        nHorizAlign:app.constants.align.left,
        nHorizValue: 36,
        nVertAlign:app.constants.align.top,
        nVertValue: 0,
        nStart: p
})
}
/*根据输入生成条码水印*/
for (var p = 0; p < this.numPages; p++){
var cMyText = "*" + cRtn + "*";
event.target.addWatermarkFromText({
        cText: cMyText,
        nFontSize:30,
        aColor: ["CMYK", 0,0,0,.85],
        cFont: "LibreBarcode39Text-Regular",
        nHorizAlign:app.constants.align.left,
        nHorizValue: 100,
        nVertAlign:app.constants.align.top,
        nVertValue: 0,
        nStart: p
})
}
/*添加页码水印*/
for (var s = 0; s < this.numPages; s++){
    var cMyText = "\n第 " + (s+1) + " 页,共 " + numPages + " 页";
        event.target.addWatermarkFromText({
            cText: cMyText,
            nFontSize:8,
            aColor: ["CMYK", 0,0,0,.85],
            nHorizAlign:app.constants.align.left,
            nHorizValue: 36,
            nVertAlign:app.constants.align.top,
            nVertValue: -15,
            nStart: s
    })
}

核心修正说明

  1. 移除循环末尾的分号,让水印添加代码成为循环体的一部分,遍历所有页面
  2. 替换this.pageNum为this.numPages,确保获取正确的总页数
  3. 优化了水印颜色、位置参数,新增工单编号交互功能(可按需修改为直接读取文件名)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 10:54:37