私はWEBコンテキストアプリケーションでiTextPdfを使用する際に問題があります。iTextPDFで編集したPDFがWebサーブレットコンテキストで壊れているのはなぜですか?
実行時に編集したPDFをダウンロードするWebサーブレットがあります。
私はNON-WEBコンテキストアプリケーションでPDFを作成し、私のメソッドを呼び出す場合は、PDFは完全にを作成し、それは問題なく開きます。
しかしWEB-コンテキストアプリケーションに、ファイルが作成されますが、私は私のテストページからダウンロードを行うとき、それがを破損しています:私はダウンロードしたファイルを開いたとき、それは画像なしだとに関するエラーメッセージが表示されます見つからないフォント。私は「クリーン」ファイルとテキストエディタで「壊れた」ファイルを開くと
、彼らは同じ行数を持っていますが、実際には内容が異なる表示されます。
私は問題がWebレスポンスやそれに類するものでコンテンツタイプのレンダリングであると思われます。
私は、このマニュアルに従っている: http://developers.itextpdf.com/examples/itext-action-second-edition/chapter-9
これは、Spring MVCのコントローラの実装です:
@RequestMapping(path = "/downloadPDF", method = RequestMethod.GET)
public void downloadPDF(HttpServletResponse response){
try{
response.setContentType("application/pdf;charset=UTF-8");
ByteArrayOutputStream baos = myPDFHandler.getPdf('filetest.pdf');
OutputStream outputStream = response.getOutputStream();
baos.writeTo(outputStream);
outputStream.flush();
} catch (Exception e) {
e.printStackTrace();
}
}
これらはレスポンスヘッダです:
Response Headers
view source
Cache-Control:no-store
Cache-Control:no-cache
Content-Type:application/pdf;charset=UTF-8
Date:Tue, 24 May 2016 10:20:56 GMT
Expires:Thu, 01 Jan 1970 00:00:00 GMT
Pragma:no-cache
Server:Apache-Coyote/1.1
Strict-Transport-Security:max-age=31536000 ; includeSubDomains
Transfer-Encoding:chunked
X-Content-Type-Options:nosniff
X-Frame-Options:DENY
X-XSS-Protection:1; mode=block
問題が "ではありませんmyPDFHandler.getPdf "メソッドを使用します。これは、NON-WEBコンテキストでは完全に機能するためです。
おかげさまで
ファイルが 'UTF-8'でエンコードされていることを確認してください。 –
私はcharset = UTF-8を試してみたが、結果は同じだった。 NON-WEBの文脈で試してみると、それを指定する必要はありません... –
'charset = UTF-8'はそれにもかかわらず間違っています。それは、ブラウザがそれを受け取ると一度、そして一度サーバーに保存されると、PDFを共有できますか? – mkl