最初に保存せずにサーブレットを使用してPDFをレンダリングできるようになるまで、私はほぼそこにいます(私は思います)。私はそれをうまくセットアップすることができました、しかし私は最初に印刷ダイアログでクライアントのブラウザでPDFを開かせようとして立ち往生しています。
次の方法でPDFをクライアントに正常に送信できました。
DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
Document doc = builder.parse(new StringBufferInputStream(buf.toString()));
OutputStream os = resp.getOutputStream();
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(doc, null);
renderer.layout();
renderer.createPDF(os);
os.close();
しかし、それを開くときに印刷ダイアログを配置する方法がわかりません。このコードを物理PDFファイルに使用しましたが、OutputStreamの内容をPdfReaderに入力するためのバイト配列として読み取ることができる必要があります(私は思います)。
PdfReader reader = new PdfReader("a_physical_file.pdf");
PdfStamper stamper = new PdfStamper(reader, os);
stamper.setPageAction(PdfWriter.PAGE_OPEN, new PdfAction(PdfAction.PRINTDIALOG), 1);
stamper.close();
実際のファイルではなく、OutputStreamを使用してこれを行う方法がわからない...
そこに投稿したい場合は、iTextチャットルームも作成しました:https ://chat.stackoverflow.com/rooms/8945/itext