繁体   English   中英

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

[英]Java PDFBox, how to get File object from PDDocument

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

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

PDFBox是否有任何方法可以从现有PDDocument返回FileInputStream

我解决了:

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

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

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

如果你需要

document.close();

如果首先创建输出流该怎么办

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)

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

[...]

PDFBox是否有任何方法可以从现有PDDocument返回FileInputStream

显然,如果不将PDDocument保存到文件系统中, PDFBox无法返回有意义的File对象。

它也没有提供直接提供InputStream的方法,但是很容易围绕它编写代码。 例如:

InputStream docInputStream = null;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM