xml - Marklogic 中的 PDF 到 XML 转换

标签 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)通过PDF配置文件。默认情况下,这是 Converters/cvtpdf 中的 PDFtoXHTML.cfg 您的安装的子目录。您可以创建自己的配置文件并通过 配置选项为xdmp:pdf-convert。您要做的就是在页面上添加一个裁剪框以裁剪掉 页码、页眉/页脚等。其语法为:

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

你如何计算出这个盒子的几何形状应该是什么?您可以从以下位置下载一个名为 Gemini 的工具 艾西尼要做这件事。只要您处理的所有文档都具有相同的几何形状,这种方法就可以正常工作。

(2) 通过文档输出的后处理。页面的开头和结尾在 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 步骤中将选项 keep-styles 设置为 false 。查看 Docbook 管道。 (这来自安装目录中的 Installer/conversion/docbook-pipeline.xml。)

关于xml - Marklogic 中的 PDF 到 XML 转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20658377/

相关文章:

android - 为什么线性布局不可能有样式属性

Java Transformer 类在转换时重复一些 xml 节点属性

c# - 如何将数组转换为 BindingList

java - 将 long 转换为 int 得到 0

c# 如何读取包含普通文本元素和 xml 文本元素的单个文件

c++ - 用于 C++ 的 XSLT 2.0 库

java - 由于某种原因,首页的背景颜色不正确

java - 此代码用于水平显示 pdf 中的文本,如何在我的 pdf 页面上将其更改为垂直显示

php - DOMPDF - 将创建的 PDF 附加到电子邮件

mysql - 将小端二进制转换为 double