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

Mil*_*lov 4 java pdfbox

我试图从一个File或一个InputStream实例检索PDDocument而不保存PDDocument到文件系统.

 PDDocument doc= new PDDocument(); 
 ...     
 doc.save("D:\\document.pdf"); 
 File f= new File("D:\\document.pdf"); 
Run Code Online (Sandbox Code Playgroud)

有没有PDFBox退货FileInputStream现有的方法PDDocument

Mil*_*lov 10

我解决了它:

PDDocument doc=new PDDocument();        
PDStream ps=new PDStream(doc);
InputStream is=ps.createInputStream();
Run Code Online (Sandbox Code Playgroud)

  • 这个“解决方案”没有任何意义。我怀疑任何支持投票的人都实际测试过它,他们似乎也不知道 PDFBox。例如,`public PDStream(PDDocument document)` 构造函数的 JavaDocs 将 `document` 参数描述为 * 流将成为其中一部分的文档。* 所以 `ps=new PDStream(doc)` 仅仅创建一个新的(空的) PDF流*在*文档中,*不是*包含*文档的流。 (2认同)

Tom*_*ski 5

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

final PDDocument document = new PDDocument();
final File file = File.createTempFile(filename, ".pdf");
document.save(file);
Run Code Online (Sandbox Code Playgroud)

如果你需要

document.close();
Run Code Online (Sandbox Code Playgroud)


fGo*_*fGo 1

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

PDDocument doc= new PDDocument(); 
File f= new File("D:\\document.pdf");
FileOutputStream fOut = new FileOutputStream(f);  
doc.save(fOut); 
Run Code Online (Sandbox Code Playgroud)

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