所以我有一个程序可以创建一个输出 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
每个问题都有它的父标题,每个答案都有它的父问题。像这样的文件可以有无限数量的标题,每个标题无限数量的问题,以及每个问题 0 到 5 个答案。
为了让我的程序能够在它的 GUI 中组装相同的文件,它需要几条信息。
它需要知道:
标题数量(整数)
标题类型(布尔值)(标题不必只包含问题,所以这是必需的,但我在示例中省略了其他类型的标题以简化问题)
包含每个标题/问题/答案中的文本的字符串
按照示例,这就是我的可读文件的样子:
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 中创建一个特殊的阅读器来寻找并解析那些线。