Java PDFBox,如何从PDDocument获取File对象

时间:2013-06-03 08:24:06

标签: java pdfbox

我正在尝试从File检索InputStreamPDDocument实例而不将PDDocument保存到文件系统。

 PDDocument doc= new PDDocument(); 
 ...     
 doc.save("D:\\document.pdf"); 
 File f= new File("D:\\document.pdf"); 

PDFBox中是否有任何方法可以从现有File返回InputStreamPDDocument

4 个答案:

答案 0 :(得分:10)

我解决了它:

PDDocument doc=new PDDocument();        
PDStream ps=new PDStream(doc);
InputStream is=ps.createInputStream();

答案 1 :(得分:1)

我以这种方式解决它(它在临时文件目录中创建一个文件):

final PDDocument document = new PDDocument();
final File file = File.createTempFile(filename, ".pdf");
document.save(file);

如果你需要

document.close();

答案 2 :(得分:0)

如果您首先创建输出流

,该怎么办?
PDDocument doc= new PDDocument(); 
File f= new File("D:\\document.pdf");
FileOutputStream fOut = new FileOutputStream(f);  
doc.save(fOut); 

看看这个 http://pdfbox.apache.org/apidocs/org/apache/pdfbox/pdmodel/PDDocument.html#save(java.io.OutputStream)

答案 3 :(得分:0)

  

我正在尝试从File检索InputStreamPDDocument实例而不将PDDocument保存到文件系统。

     

[...]

     

PDFBox中是否有任何方法可以从现有File返回InputStreamPDDocument

显然,PDFBox无法在不将File保存到文件系统的情况下返回有意义的PDDocument对象

它没有提供直接提供InputStream的方法,但是很容易在它周围编写代码。 e.g:

InputStream docInputStream = null;

try (   ByteArrayOutputStream baos = new ByteArrayOutputStream();
        PDDocument doc = new PDDocument()   )
{
    [...]
    doc.save(baos);
    docInputStream = new ByteArrayInputStream(baos.toByteArray());
}