1

我正在使用 openPdf 库(iTextPdf 的分支)将 #{Address_name_1} 等占位符替换为实际值。我的 PDF 文件并不简单,所以我使用正则表达式来查找这个占位符:[{].*?[A].*?[d].*?[d].*?[r].*?[e].*?[s].*?[s].*?[L].*?[i].*?[n].*?[e].*?[1].*?[}]

并做类似的事情

content = MY_REGEXP.replace(content, "Saint-P, Nevskiy pr."); obj.setData(content.toByteArray(CHARSET)).

当我的替换线太长并且不幸的是从右端切断时,就会出现问题。我能以某种方式让它延续到下一行吗?天真\n是行不通的。

4

2 回答 2

1

PDF 文件不是文本文件。每条线都是一个具有 x/y 偏移的对象。要在下一行放置一些东西,需要在新的 x/y 坐标处放置一个新对象。您将需要一个高级 PDF 编辑工具包。

于 2020-01-20T17:25:18.000 回答
1

PDF 以不同的方式存储字符串。没有下一行,有行。

因此,您需要在模板上的字段上添加几个占位符,以便替换足够长的时间,例如:

#{Address_name_1_line1}
#{Address_name_1_line2}
#{Address_name_1_line3}

并将其放在模板上的不同行中。未使用的空占位符(因为替换时间不够长)应替换为空字符串。

对于更长的替换,您将需要使用多个占位符。要使用的占位符数量和替换拆分应由代码确定。

如果您的 PDF 太复杂而无法放置不同的占位符,那么您将需要占位符所有内容,您的所有文本内容都应该插入占位符,至少如果您想使用这种方法。

于 2020-01-20T17:29:14.623 回答