我想使用java将具有少量图像的PDF文件转换为xml。
是否有任何api可以做到这一点,以便pdf的所有图像和文本都将转换为xml文件。
请帮忙。
答案 0 :(得分:2)
使用pdftohtml。
可以与brew install pdftohtml
一起安装。这会在您的路径中添加pdftohtml
。
因此,要将pdf转换为xml,您可以运行pdftohtml -xml your_file.pdf your_file.xml
然后,只需使用java或任何其他语言来执行此命令。
答案 1 :(得分:1)
PDF是最糟糕的格式之一。它专为渲染2D图形和文本文档而设计。有些库允许您在PDF文档中操作PDF对象,但它无法告诉您图像是否与哪个段落相关。您将无法轻松提取它的语义。
另一方面,XML被设计为以结构良好的方式存储文本数据。这意味着它包含隐式语义。为了从没有语义的格式转换为具有隐式的格式,您需要将自己的逻辑添加到转换过程中,否则您最终会在XML中混乱,这与使用XML的整个目的相矛盾
由于每个PDF文档都非常不同,因此如果没有人工辅助,几乎不可能实现自动化。
如果您确实要这样做,我建议您使用库将PDF读入对象,并从那里开始编写转换器。您必须自己处理新页面,换行符,页码,标题,图像,图形,表格等等。由于XML主要用于文本数据,因此如果要以XML格式存储,则必须以某种方式处理图形,例如:将图形转换为Base64字符串。
答案 2 :(得分:0)
iText是一个允许您创建和操作PDF文档的库。它使开发人员能够通过动态PDF文档生成和/或操作来增强Web应用程序和其他应用程序。 开发人员可以使用iText:
* Serve PDF to a browser
* Generate dynamic documents from XML files or databases
* Use PDF's many interactive features
* Add bookmarks, page numbers, watermarks, etc.
* Split, concatenate, and manipulate PDF pages
* Automate filling out of PDF forms
* Add digital signatures to a PDF file
iText可以在Java和C#中使用。
答案 3 :(得分:0)
您可以对整个PDF文件的字节流进行Base64编码,并将其序列化为XML文档,如“<pdf><![CDATA[BASE64ENCODEDPDFFILECONTENTS...]]></pdf>
”。 =)