簡體   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