Spring MVCのpdf生成

私は、Spring MVCに基づいたJava Webアプリケーションを持っています。
タスクは、pdfファイルを生成することです。すべてが知っているように、春のエンジンには独自のiTextライブラリが組み込まれているので、pdfファイルの生成はとても簡単です。まず、AbstractViewをオーバーロードしてPdfViewを作成する必要があります。そして、seconfのことは、コントローラでそのビューを使用することです。しかし、私のアプリケーションでは、生成されたpdfファイルをローカルドライブに保存するか、ユーザーにそのファイルをダウンロードするためのリンクを与える必要があります。その場合の見解は私には適していません。

私はpdfファイルを作成し、バイト配列を返すいくつかの普遍的なpdfジェネレータを作成したいと思います。だから私はファイルを(ハードドライブ上に)保存するか、またはブラウザで直接印刷するためにその配列を使用することができます。そして、問題は

PdfVIewソリューションで、そのようなエンジン(バイト配列のみを返す)を使用する方法はありますか?オーバーロードされたbuildPdfDocumentメソッド(PdfView内)にはすでにPdfWriterとDocumentパラメータがあるので、私は尋ねています。
ありがとうございました

ベストアンサー

tldr;ビューを使用してファイルに保存できるはずです。

Flying Saucer
およびそのiTextRendererを使用して、AbstractPdfViewをオーバーロードします。

import org.xhtmlrenderer.pdf.ITextRenderer;
public class MyAbstractView extends AbstractView {
   OutputStream os;

   public void buildPdfDocument(Map model, com.lowagie.text.Document document, com.lowagie.text.pdf.PdfWriter writer, HttpServletRequest request, HttpServletResponse response){
   //process model params
   os = new FileOutputStream(outputFile);
   ITextRenderer renderer = new ITextRenderer();
   String url = "http://www.mysite.com"; //set your sample url namespace here
   renderer.setDocument(document, url); //use the passed in document
   renderer.layout();
   renderer.createPDF(os);
   os.close();
   }
}

protected final void renderMergedOutputModel(Map model,
                                         HttpServletRequest request,
                                         HttpServletResponse response)
                                  throws Exception{
 if(os != null){
  response.outputStream = os;
 }

public byte[] getPDFAsBytes(){
  if(os != null){
     byte[] stuff;
     os.write(stuff);
     return stuff;
  }
}

}

おそらく、ここに示すサンプル実装を調整する必要がありますが、それは基本的な要点です。

コメントする

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です