我需要讀取帶有filepath「C:\ file.pdf」的pdf文件並將其寫入outputStream。什麼是最簡單的方法來做到這一點?如何讀取pdf文件並將其寫入outputStream
@Controller
public class ExportTlocrt {
@Autowired
private PhoneBookService phoneBookSer;
private void setResponseHeaderTlocrtPDF(HttpServletResponse response) {
response.setContentType("application/pdf");
response.setHeader("content-disposition", "attachment; filename=Tlocrt.pdf");
}
@RequestMapping(value = "/exportTlocrt.html", method = RequestMethod.POST)
public void exportTlocrt(Model model, HttpServletResponse response, HttpServletRequest request){
setResponseHeaderTlocrtPDF(response);
File f = new File("C:\\Tlocrt.pdf");
try {
OutputStream os = response.getOutputStream();
byte[] buf = new byte[8192];
InputStream is = new FileInputStream(f);
int c = 0;
while ((c = is.read(buf, 0, buf.length)) > 0) {
os.write(buf, 0, c);
os.flush();
}
os.close();
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
............................................ ................................................
你的問題似乎要求從文件複製例程到一個專門的'OutputStream'和@Pheonix'答案顯示如何做到這一點---是否有任何理由你標記你的問題[pdf]更不用說[itext] ? – mkl
我在我的項目中使用了Itext,所以我認爲它在這個例子中可能是有用的。我錯了。 –
事實上,就像@ Stephan的答案提出了一個使用PDFBox的解決方案,您也可以使用iText首先解析整個PDF,然後再次序列化它。但用PDF庫(PDFBox或iText)複製PDF文件會浪費大量資源,並可能會改變相關PDF文件。 – mkl