java - 如何用多行替换 PDF 中的文本?

标签 java pdf itext openpdf

我正在使用 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 太复杂而无法放置不同的占位符,那么您将需要对所有内容进行占位符,所有文本内容都应注入(inject)占位符中,至少如果您想使用此方法的话。

关于java - 如何用多行替换 PDF 中的文本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59827988/

相关文章:

java - Jackson:如何生成拒绝所有其他内容的 json 模式

java - 使用SearchView过滤器后RecyclerView无法排序

java - 在java中发送播放器数据的正确方法

java - onDescriptorWrite() 从未在 BluetoothGattCallback 中调用

iphone - ios将网页保存为pdf

java - 使用 iText 的 pdf 交互式表单的外观问题

java - iText Pdf 页面字节大小

c# - 使用 pdfSharp 展平 AcroForm 以减小文件大小

php - 将 php 输出保存为 PDF

java - 如何使用虚线作为单元格边框?