如何用多行替换 PDF 中的文本?
How can I replace text in PDF with muliply lines?
我正在使用 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 文件不是文本文件。每行都是一个具有 x/y 偏移量的对象。要在下一行放置一些东西,需要将一个新对象放置在新的 x/y 坐标处。您需要一个高级 PDF 编辑工具包。
PDF 以不同的方式存储字符串。没有下一行,还有一行。
因此,您需要在模板的字段上添加几个占位符,以进行足够长的替换,例如:
#{Address_name_1_line1}
#{Address_name_1_line2}
#{Address_name_1_line3}
并将其放在模板的不同行中。没有用到的空占位符(因为replacement不够长)应该用空字符串代替。
对于较长的替换,您将需要使用多个占位符。使用的占位符数量和替换拆分应由代码确定。
如果您的 PDF 太复杂而无法放置不同的占位符,那么您将需要占位符所有内容,您的所有文本内容都应输入到占位符中,至少如果您想使用这种方法。
我正在使用 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 文件不是文本文件。每行都是一个具有 x/y 偏移量的对象。要在下一行放置一些东西,需要将一个新对象放置在新的 x/y 坐标处。您需要一个高级 PDF 编辑工具包。
PDF 以不同的方式存储字符串。没有下一行,还有一行。
因此,您需要在模板的字段上添加几个占位符,以进行足够长的替换,例如:
#{Address_name_1_line1}
#{Address_name_1_line2}
#{Address_name_1_line3}
并将其放在模板的不同行中。没有用到的空占位符(因为replacement不够长)应该用空字符串代替。
对于较长的替换,您将需要使用多个占位符。使用的占位符数量和替换拆分应由代码确定。
如果您的 PDF 太复杂而无法放置不同的占位符,那么您将需要占位符所有内容,您的所有文本内容都应输入到占位符中,至少如果您想使用这种方法。