我几乎(我认为)能够使用 servlet 呈现 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