在Apache FOP 0.95

时间:2018-02-04 11:57:03

标签: java block xsl-fo apache-fop

是否有可能在Apache FOP 0.95 生成的 PDF中找到fo:block id =“id_1”? 问题是在准备* .fo期间仍然缺少一些数据。这些数据必须稍后插入到生成的PDF文件中。

2 个答案:

答案 0 :(得分:1)

根据您的评论,您的问题实际上与XSL FO无关。

  

我的意思是如果解析pdf文件并替换该块的文本是可行的,那么用java编程

您问的是,您可以使用不同的文本替换现有PDF中的文本吗?

答案几乎绝对没有。 PDF不是文字处理格式。它是一种二进制格式,具有整个字节偏移量。除非您静态放置PDF Acroform字段并希望更改字段值或者您拥有PDF XFA表单并希望修改其中的XML,否则您不能希望这样做。

只有Adobe Reader才支持查看XFA表单,许多PDF查看器甚至不支持Acroforms。

一些XSL FO工具支持创建Acroforms。 Adobe软件除了支持创建XFA表单之外没有任何其他内容。许多Java库都支持操作这些。

但是你的问题是:

  

问题是在准备* .fo期间仍然缺少一些数据。问题是在准备* .fo期间仍然缺少一些数据。这些数据必须稍后插入到生成的PDF文件中。

当然可以。修改仅仅是XML的* .fo文件,并在处理为PDF之前插入所需的数据。为什么要处理FO到PDF丢失一些数据然后希望以后插入数据,在处理FO之前插入它。或者,如果您正在使用FO创建静态表单并希望稍后将数据标记到确切位置,则可以使用FO执行此操作。只需使用第一个PDF作为标记数据的第二个过程的背景。

答案 1 :(得分:0)

FOP 0.95支持fo:basic-linkinternal-destination,因此PDF中有ID。

我不知道PDF中的ID是否与FO中使用的ID相同。 Acrobat Reader可以打开特定ID的PDF(请参阅https://www.adobe.com/content/dam/acom/en/devnet/acrobat/pdfs/pdf_open_parameters.pdf中的nameddest=destination)。如果您可以让Acrobat在id_1打开您的PDF,那么您的ID通常可以使用。