以下のコードで、ボタン押下をトリガーにして、HTML内のJPG画像ファイルをPDFに変換してダウンロードさせる処理を行っています。
今のやり方だとdocument.saveでファイルシステム上にPDFファイルの実体を書き込んだ上でそれをダウンロードさせているのですが、そうではなく、ファイルシステム上にPDFファイルを書き込むことなくダウンロードができるようにしたいです。そのようなことは可能でしょうか?可能であれば、どのようにコードを書けばいいかご教示お願いしたいです。
Java
1/** 2 * ファイルダウンロードを行います。 3 * 4 * @param accessKey 5 * @return 6 * @throws Exception 7 */ 8 @GET 9 @Path("fileDownload") 10 public Response fileDownload(@QueryParam("accessKey") String accessKey) throws Exception { 11 // 変換元ファイルオブジェクト生成 12 File file = new File(accessKey); 13 //ファイル名取得 14 String fileName = file.getName(); 15 //PDFドキュメントを作成 16 PDDocument document = new PDDocument(); 17 PDImageXObject xImage = null; 18 //レスポンス用 19 String absolutePath = file.getAbsolutePath() + ".pdf"; 20 File pdfFile = null; 21 try { 22 //サイズ指定 23 PDRectangle rec = new PDRectangle(); 24 rec.setUpperRightX(0); 25 rec.setUpperRightY(0); 26 rec.setLowerLeftX(1000); 27 rec.setLowerLeftY(1000); 28 //ページを追加(1ページ目) 29 PDPage page = new PDPage(rec); 30 document.addPage(page); 31 32 //イメージオブジェクトを生成 33 xImage = PDImageXObject.createFromFile(file.getAbsolutePath(), document); 34 //DocumentへのObjectの登録はContentStream生成の前で実施。 35 36 //書き込む用のストリームを準備 37 PDPageContentStream stream = new PDPageContentStream(document, page); 38 39 //イメージ描画 40 stream.drawImage(xImage, 100, 100); 41 42 //ストリームを閉じる 43 stream.close(); 44 45 //作成したPDFを保存 46 document.save(absolutePath); 47 48 //ファイルオブジェクト生成 49 pdfFile = new File(absolutePath); 50 } catch (IOException e) { 51 e.printStackTrace(); 52 } 53 54 // レスポンス情報 55 return Response.ok((Object)pdfFile).header("Content-Type", "application/pdf") 56 .header("Content-Disposition", "attachment;filename=" + encodingStringByUTF8(fileName)) 57 .header("Content-Lentgh", file.length()) 58 .build(); 59 } 60
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。