3

好吧,我最近问了一个关于将 PDF 文件变成 XML 文件然后将其返回到 PDF 文件的问题,最好与原始文件完全相同,但至少几乎相同。

我一直在尝试不同的方法,到目前为止我想出了这个。

  1. 用 LibreOffice 编写的文档被保存为 DocBook XML。假设它被命名为“file.xml”。
  2. 该文件由文件“docbook.xsl”启动的 DocBook 项目中的一组 XSL 模板解析。
  3. 这可以通过运行:xsltproc -o intermediate-fo-file.fo /usr/share/xml/docbook/stylesheet/nwalsh/fo/docbook.xsl file.xml
  4. 结果是一个中间 XSL-FO,通过运行以下命令变为 PDF: fop intermediate-fo-file.fo final.pdf
  5. 此 PDF 文件看起来与原始 ODT 文件几乎相同。

但是,假设我一开始有一个 PDF 文件,怎么能做同样的事情呢?有什么建议么?

4

2 回答 2

5

从 PDF 无损转换到 XML 的唯一机会是使用与 PDF 具有相同文档视图的目标 XML 词汇表。由于 PDF 的文档视图主要(如果不完全是)集中在表示上,并且设计像 Docbook 这样的 XML 词汇表的通常动机是捕获更高级别的抽象,因此您面临两个困难:(1)面向表示的 XML 词汇表并不厚实并且 (2) 如果您想从 PDF 转换为更传统的 XML 词汇表(直接或通过面向表示的 XML),您将推动水上坡,试图解释文档的表示形式目标词汇的更高层次的抽象。充其量,要使这样的过程自动化是非常困难的。

如果这是一种思想实验,并且您正在考虑 PDF-XML-PDF 往返以了解何时以及如何实现它,那么您现在知道某些人会给出的理由认为它在任何一般形式下都不可能。如果您出于某种实际原因需要此 PDF 到 PDF 数据流,您可能需要考虑是否可以通过其他方式实现您的实际目标。

于 2012-08-26T00:26:12.627 回答
1

如果您的文档与全文文章类似(例如http://pdfx.cs.man.ac.uk/example.pdf),PDFX可能会有所帮助。

它将 PDF 文章转换为结构类似于 Docbook 文档的 XML。它还尝试保留在原始 PDF 中找到的有关提取元素的一些定位信息(例如页码和列号),这可以帮助您从 PDFX XML 转到您已经制作 PDF 的 Docbook XML。

输入/输出示例:http: //pdfx.cs.man.ac.uk/example

用法: http: //pdfx.cs.man.ac.uk/usage

您也可以考虑使用 Tex 替代 XSL-FO,TeXML。我有一个旧的 XSL 可以将类似 PDFX 的 XML 转换为 .texml,然后texml可以将其转换为.tex.

(披露:我写了 PDFX。)

于 2012-09-28T14:47:56.530 回答