Marklogic中的PDF到XML转换

时间:2013-12-18 12:35:28

标签: xml pdf type-conversion marklogic

我们的文件系统上有一些PDF文件,通过MLCP加载到Marklogic服务器。获取PDF后,CPF会在启用默认转换的Marklogic中触发。这导致PDF文件转换为XML(docbook格式)文件。 PDF可能在页面末尾包含一个句子,文本的某些部分会溢出到下一页。问题在于,当转换发生时,每个页面中的文本都保留在标记中,这意味着下一页的溢出文本将显示在单独的标记中。对于例如考虑一句“快速的棕色狐狸跳过一只懒狗”。现在,“快速棕色狐狸”出现在PDF的一页中,其余的“跳过懒狗”进入下一页。转换后,这就是XML中出现的内容:

......
<para>The quick brown fox</para>
...... (some information about headers)
<para>jumps over the lazy dog</para>

有没有一种方法可以在转换过程中保留文本的连续性?

1 个答案:

答案 0 :(得分:1)

有两种方法可以实现目标。更强大的前期方式和更轻松的后期处理方式。 (1)通过PDF配置文件。默认情况下PDFtoXHTML.cfgConverters/cvtpdf 您安装的子目录。您可以创建自己的配置文件并通过它引用它 配置xdmp:pdf-convert的选项。你想要做的是在页面上添加一个裁剪框来裁剪出来 页码,页眉/页脚等。语法是:

[ANNOT PLAN]
0.Iceni Crop Box =1-# [341.15, 91.78, 259.87, 364.84];
[-- END --]

你怎么知道这个盒子的几何形状应该是什么?您可以从中下载名为Gemini的工具 Iceni这样做。只要您处理的所有文档具有相同的几何图形,这都可以正常工作。

(2)通过docbook输出的后处理。页面的开头和结尾都标记在 PDF 转换生成的 XHTML 中,并且也会传播到Docbook。类似的东西:

&amp;para>
  &amp;phrase id="pge03"> &amp;/phrase>
&amp;/para> &amp;para>
  &amp;phrase id="pgs04"> &amp;/phrase>
&amp;/para>
&amp;para/>

您可以运行某种查找此模式的样式表并删除页眉/页脚 附近的信息。它变得棘手,因为你必须决定是否拼接相邻 页面周围的段落可以一起折断,大概是基于样式信息。默认情况下 Docbook不保留XHTML中的样式信息,但如果需要,可以将其获取 通过在Docbook步骤中将选项preserve-styles设置为false。查看Docbook管道。 (这来自安装目录中的Installer/conversion/docbook-pipeline.xml。)