使用Adobe Javascript将长文件名字符串拆分为两行

时间:2016-12-22 21:47:17

标签: javascript filenames adobe

我是在Adobe使用Javascript的新手。我编写了捕获文件名的脚本并将其作为标题添加到文档中,但问题是它不会分成2行长文件名。因此,长文本文件名不在页面边框内。

例如文件名是 “这是一个我需要分成两行的文本如何编写脚本以分割长文本并适合页面”

这只是一个样本。我需要编辑什么?有可能吗?

var trFileName = this.documentFileName.replace(/.*\/|\.pdf$/ig,""); //remove .pdf extension
var pageAmount = this.numPages; //define how many pages are there

this.addWatermarkFromText({
cText: trFileName,
nStart: 0,
nEnd: pageAmount,
nFontSize: 18,
aColor: color.blue,
cFont: "Helvetica-Bold",
nTextAlign: app.constants.align.center,
nHorizAlign: app.constants.align.center,
nVertAlign: app.constants.align.top,
//nHorizValue: -25, 
nVertValue: -87.87
})

1 个答案:

答案 0 :(得分:0)

因此,查看Acrobat的文档,快速执行此操作的方法是添加和使用bPercentage: -1属性,该属性应该缩放水印以适应最大100%的页面。显然,文本越长,类型化程度越小,但它应该只在需要时进行扩展。

这里最大的问题是“有多大太大了?”由于大多数字体不是固定宽度。因此,如果您没有某些功能来检查该字体中的类型大小,则需要设置临时图像,设置类型,然后测量图像的尺寸,然后决定打破文本的大小。

英语最糟糕的情况可能是W的无穷无尽的字符串,所以如果你想硬编码字体大小和一些合理的字符限制,你可以通过计算得到合理的最大字符数超出界限需要多少W。

获得该号码后,您可以拆分该字符串。

分割字符串的一种方法是使用substring:

    var cDisplayText = trFilename;

var nMaxChars = 10;
var cAdobeNewline = '\r';
var cLineBreakChar = '-';

if (cDisplayText.length > nMaxChars && cDisplayText.length > 0) {
  cDisplayText = cDisplayText.substring(0, nMaxChars) 
  + cLineBreakChar 
  + cAdobeNewline 
  +  cDisplayText.substring(nMaxChars);
}

然后将cText: trFileName,替换为cText: cDisplayText,

我没有测试过这个,我的javascript有点萎缩,但想法是测试字符串长度并插入连字符和换行符。

这(显然)不考虑需要超过1个换行符的情况。

相关问题