有没有办法在pdf acro字段中强制换行?

时间:2019-09-18 12:02:40

标签: pdf line-breaks flying-saucer openpdf

正如标题所述,我目前正在努力在pdf-acro字段中强制换行("\n""\r\n")。我正在使用OpenPdf和FlyingSaucer(有关详细信息,请参见依赖项),并通过设置“ Ff”属性的位标记13和26设法启用多行和富文本格式的字段。

我使用的是PDF参考ISO-3200_2008作为指南(从442页开始)。
https://www.adobe.com/content/dam/acom/en/devnet/pdf/pdfs/PDF32000_2008.pdf

问题

我阅读了现有的PDF并以编程方式填写了acro字段。像这样:

acroFields.setField("address", content);

内容只是带有一些换行符的简单字符串。没什么特别的。

我的文字太长,必须在某些时候中断。启用多行后,文本将中断,但前提是到达行尾。基本上,我要显示的是地址和顶部的其他信息。但是并不是所有的行都相等,例如,我想在同一行上包含信息1和2,在单独的行上包含信息4和5。

我的想法

<h2>What I want</h2>
<pre>Company XYZ
A brand here</pre>

<pre>Another Section
With some more info that goes further to the right
phone, email, website</pre>
<br>
<h2>What it looks like</h2>
<p>Company XYZ
A brand here
Another Section
With some more info that goes further to the right
phone, email, website</p>

问题

  1. 一般有没有办法在PDF中实现换行符?
  2. 有没有办法以编程方式实现换行符?
  3. 我可以在OpenPdf或FlyingSaucer中这样做吗?
  4. 如果没有简单的方法-可行的解决方法是什么?

依赖项

compile group: 'com.github.librepdf', name: 'openpdf', version: '1.3.3'
compile group: 'com.googlecode.juniversalchardet', name: 'juniversalchardet', version: '1.0.3'
compile 'org.xhtmlrenderer:flying-saucer-core:9.1.18'
compile 'org.xhtmlrenderer:flying-saucer-pdf-openpdf:9.1.18'

1 个答案:

答案 0 :(得分:0)

它不起作用,因为其中的内容(来自解析的html文件的输入)中包含\r\n,但是不知何故它仅适用于\n,所以我做了以下工作:

content.replaceAll("\\\\r\\\\n", Chunk.NEWLINE.getContent()); // 2nd param is just "\n"

这解决了我的问题。