ファイルパス "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] ? – mkl
私のプロジェクトでは別のもののために私はItextを使いましたので、この例では役に立つかもしれないと思いました。私は間違っていた。 –
実際、@ Stephanの答えがPDFBoxを使用したソリューションを提示したのと同じように、iTextを使って最初にPDF全体を解析してから再度シリアル化することもできました。 PDFライブラリー(PDFBoxやiTextなど)でPDFをそのままコピーすることは、リソースを大量に消費し、問題のPDFを変更する可能性があります。 – mkl