Мне нужно прочитать pdf-файл с файловым «C: \ file.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 таким образом с помощью библиотеки PDF (будь то PDFBox или iText) - большая трата ресурсов и может изменить PDF-файл. – mkl