我正在尝试从File
检索InputStream
或PDDocument
实例而不将PDDocument
保存到文件系统。
PDDocument doc= new PDDocument();
...
doc.save("D:\\document.pdf");
File f= new File("D:\\document.pdf");
PDFBox
中是否有任何方法可以从现有File
返回InputStream
或PDDocument
?
答案 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);
答案 3 :(得分:0)
我正在尝试从
File
检索InputStream
或PDDocument
实例而不将PDDocument
保存到文件系统。[...]
PDFBox
中是否有任何方法可以从现有File
返回InputStream
或PDDocument
?
显然,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());
}