9

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

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

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

4

4 回答 4

10

我解决了它:

PDDocument doc=new PDDocument();        
PDStream ps=new PDStream(doc);
InputStream is=ps.createInputStream();
于 2013-06-04T12:13:34.913 回答
4

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

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

如果你需要

document.close();
于 2015-09-22T13:17:54.397 回答
1

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

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)

于 2013-06-03T08:33:47.520 回答
0

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

[...]

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

显然 PDFBox 不能在不保存 a到文件系统的File情况下返回有意义的对象。PDDocument

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

InputStream docInputStream = null;

try (   ByteArrayOutputStream baos = new ByteArrayOutputStream();
        PDDocument doc = new PDDocument()   )
{
    [...]
    doc.save(baos);
    docInputStream = new ByteArrayInputStream(baos.toByteArray());
}
于 2018-04-09T09:32:33.170 回答