Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将PDF转换为XML,然后再次转换为PDF_Xml_Pdf - Fatal编程技术网

将PDF转换为XML,然后再次转换为PDF

将PDF转换为XML,然后再次转换为PDF,xml,pdf,Xml,Pdf,我最近问了一个问题,关于把一个PDF文件变成一个XML文件,然后把它返回到一个PDF文件,最好是和原始文件完全一样,但至少差不多 我一直在尝试不同的方法,到目前为止,我想出了这个方法 用LibreOffice编写的文档将另存为DocBook XML。假设它名为“file.xml” 该文件由文件“DocBook.XSL”启动的DocBook项目中的一组XSL模板解析 这可以通过运行xsltproc-o intermediate-fo-file.fo/usr/share/xml/docbook/st

我最近问了一个问题,关于把一个PDF文件变成一个XML文件,然后把它返回到一个PDF文件,最好是和原始文件完全一样,但至少差不多

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

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

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

    从PDF无损转换为XML的唯一机会是使用与PDF具有相同文档视图的目标XML词汇表。由于PDF的文档视图主要(如果不是完全)关注于表示,而像Docbook这样的XML词汇表的设计通常的动机是捕获更高级别的抽象,因此您面临两个困难:(1)面向表示的XML词汇表不是很厚;(2)如果您想从PDF转换为更为传统的XML词汇表(直接或通过面向表示的XML),您将面临更大的挑战,试图根据目标词汇表的更高层次抽象来解释文档的表示。这将是非常困难的,最多,自动化这样一个过程


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

    如果您的文档以任何方式类似于全文文章(例如),可能会有所帮助

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

    输入/输出示例:

    用法:

    您也可以考虑XSL FO的TEX替代方案。我有一个旧的XSL将类似PDFX的XML转换为.texml,然后

    texml
    可以将其转换为
    .tex


    (披露:我写了PDFX。)

    谢谢你的回答。渐渐地,我了解了完成这项任务的困难,但考虑到与PDF中显示的相同信息相比,XML所需的空间很小,因此它仍能带来巨大的好处。在某些情况下,在大型长期存档系统中,它的容量是10倍-XML=10kb PDF=1Mb,我们可以处理数以百万计的文档,如果文件可以存储在XML中,它将产生影响,但是以PDF格式呈现-考虑到公司和当局最初以PDF格式生成大量文档的常见情况。@Paul如果您的PDF文档很简单,我相信您可以按照最初的要求执行。还有,你看过PDF/a(PDF存档)吗?嗨,吉米!PDF/A-1和PDF/A-2是非常适合长期存档的格式,但与XML相比,它们相当庞大。@PaulBergström:您将什么XML格式与PDF进行比较?DocBook?在这种情况下,Xml格式是PDF的适当但节省空间的表示形式的假设仅限于从DocBOok Xml生成的PDF;它不一定适用于任何公司或机构生产的任何其他PDF。为什么不告诉我们您使用的API?我们是这里的开发者。到2015年12月,Link不再响应。@StephaneRolland我很感激它已经过时了,但是--PDFX只使用PDF库获取页面、文字和图像,并通过统计、依赖规则和排版计算出逻辑结构。PDFX主页上引用了该机制的简短说明: