java - PDF和 "massive"XMP数据存储

标签 java itext xmp

所以我有一个程序可以创建一个输出 PDF 文件,我想通过在其中嵌入元数据来使其可读(通过我的程序)。这是相当多的数据。

有人建议我使用 XMP 格式来执行此操作。不过,我不确定这是否有效。

如果您不想阅读所有内容,请跳至最后一段,如果您不明白问题,请返回此处...

我的文件可能具有如下结构:

Heading1
<indent>1.Question
<indent><indent>a)answer
<indent><indent>b)answer
<indent>2.Question
<indent><indent>a)answer
<indent><indent>b)answer
<indent><indent>c)answer
<indent>3.Question
<indent>4.Question
Heading2
<indent>1.Question
<indent>2.Question
<indent><indent>a)answer

每个问题都有其父标题,每个答案都有其父问题。像这样的文件可以有无限数量的标题,每个标题有无限数量的问题,每个问题有零到五个答案。

为了让我的程序能够在 GUI 中组装相同的文件,它需要几条信息。

它需要知道:

  • 标题数量(整数)

  • 标题类型( boolean 值)(标题不必只包含问题,因此这是必需的,但我在示例中省略了其他类型的标题以简化问题)

  • 包含每个标题/问题/答案中的文本的字符串

按照示例,我的可读文件如下所示:

2                  //heading number
Q/4/headingText    //type of heading/number of question/content
2/questionText     //number of answers/content
answerText         //content
answerText         //etc...
3/questionText
answerText
answerText
answerText
0/questionText
0/questionText
Q/2/headingText
0/questionText
1/questionText
answerText

如果我假设文件是​​逐行读取的,这是可能的。第一行将告诉您预期有多少个标题,第二行(以及每个标题行)将告诉您标题类型以及在下一个标题之前预期有多少个问题。问题行将告诉有多少后续行包含答案内容。答案行仅包含内容。

所有这些都是为了说明我需要我的“保存文件”。

最后一段

XMP 可以实现这一切吗?能够逐行读取属性并拥有附加多个值的属性,或者至少以某种方式将其划分为几个属性,从而可以实现保留此功能?

最重要的问题是,XMP 读取器/写入器 (iText) 能否处理 XMP 文件的非固定大小?

我的替代方法是简单地将这些行附加在 PDF 文件末尾的某个位置(不要弄乱交叉引用表),并将它们注释掉(使用 %),然后用 Java 创建一个特殊的阅读器来查找,并解析这些行。

最佳答案

这就是我对你的问题的解释。

您想要创建一个人类可读的 PDF,并呈现标题文本、问题和可能的答案。

同时,您希望 PDF 能够被对 PDF 一无所知的程序读取。程序读取的内容与人类可以读取的内容不同,它具有一定的结构。

我没有看到 PDF 链接。我会将您希望机器可读的数据存储为 PDF 的附件,并让您的程序提取该附件。如果你的程序可以使用 iText,那就小菜一碟了。如果您的程序只能读取字节,那么您可以尝试不同的选项:

(1) 将数据存储为未压缩的流。通过添加某种长的可识别字符串作为数据的第一行来查找未压缩的流(这或多或少是无法解释 PDF 语法的软件检测 XMP 流的方式)。

(2) 将数据存储为压缩流,但在压缩流的流字典中添加一个额外的条目。循环遍历 PDF 文件中的对象,查找具有特定自定义键/值对的流字典,读取流并将其解压缩。

如果我误解了您的问题,请重新表述。

关于java - PDF和 "massive"XMP数据存储,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12315883/

相关文章:

pdf - 将 XMP 元数据嵌入 PDF

c# - 从 EPS 文件中提取 XMP 元数据

java - 与普通线程的实时线程同步

java - 使用出站适配器配置断路器以处理连接超时问题

c# - 如何使用 itextsharp 获取 html 内容并将其转换为 PDF?

pdf - PDF (XMP) 格式的每页信息规范

java - Slick2D 未检测到鼠标移动

java - Android NDK 库仅在运行时不加载三星 galaxy 4.0.2 手机

c# - 从 GridView 导出为 PDF

c# - iTextSharp - 如何设置不可见的签名字段名称