我需要读取带有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