我正在使用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不起作用。

最佳答案

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

因此,您将需要在模板的字段上添加几个占位符,以进行可能足够长的替换,例如:

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


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

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

如果您的PDF太复杂而无法放置不同的占位符,那么您将需要对所有内容进行占位符,至少您要使用此方法时,应将所有文本内容都合并到占位符中。

10-06 13:45
查看更多