如何在Vaadin 7中从流中打印pdf文件?

独自的

我正在尝试使用Apache FOP + xsl从vaadin 7中直接从流中打印pdf。目前,我可以成功创建新的xml文档,并使用xsl fo从中重新生成pdf文件。我将文件保存到服务器,一切看起来都很好。

我的问题是无法将文件保存到服务器,因此我需要将其读取为某种字节数组,然后在用户单击“打印”按钮时将其打开。

out = new java.io.FileOutputStream(
        "/testPrint.pdf");

try {
    // Construct fop with desired output format
    Fop fop = fopFactory.newFop(MimeConstants.MIME_PDF, foUserAgent, out);

    // XSL
    TransformerFactory factory = TransformerFactory.newInstance();
    Transformer transformer =
            factory.newTransformer(new StreamSource("printTemplate.xsl"));

    Result res = new SAXResult(fop.getDefaultHandler());

    //xml->xsl-fo-->pdf
    transformer.transform(xml, res);
} finally {
    out.close();
}

当用户单击“打印”按钮时,从服务器检查生成的pdf文档之后,它看起来不错。

 print.addClickListener(new ClickListener() {

@Override
public void buttonClick(ClickEvent event)
{
    PdfComponent pdf = new PdfComponent(lang, bookingDto);

    try {
        DOMSource xml = pdf.getXMLSource(bookingDto, lang);
        pdf.convertToPDF(lang,xml);
        } catch (Exception e) {
        e.printStackTrace();
    }

}
});

问题

当用户单击Vaadin 7应用程序中的“打印”按钮而不将文件保存到服务器时,如何将PDF文档放入流中,如何在浏览器中自动将其打开?

斯蒂芬·哈比奇

如描述Vaadin下载文件的工作在这里概括:

Button downloadButton = new Button("Download image");
StreamResource myResource = createResource();
FileDownloader fileDownloader = new FileDownloader(myResource);
fileDownloader.extend(downloadButton);

然后,您StreamResource提供一个InputStream包含文件数据的。因此,您无需将文件保存在服务器上。关于打印,我什至不知道是否可以指示浏览器直接打开打印对话框。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在Vaadin Flow中打印?

来自分类Dev

如何在c中打印pdf文件?

来自分类Dev

如何在vaadin组件中设置属性?

来自分类Dev

如何在Vaadin中设置autocomplete =“ off”

来自分类Dev

如何在Vaadin中显示模式窗口?

来自分类Dev

如何在Vaadin中对ComboBox进行排序?

来自分类Dev

如何在Vaadin中获取商品ID

来自分类Dev

如何在Vaadin中创建序号列

来自分类Dev

如何在Vaadin7的菜单中设置大图标?

来自分类Dev

如何在Vaadin 7中创建复杂的标头?

来自分类Dev

如何在 Vaadin 7 表中添加滚动条

来自分类Dev

如何在Vaadin中显示文本文件

来自分类Dev

如何在Vaadin中获取表中单击的行号?

来自分类Dev

如何在Vaadin中定义对TextField的验证约束?

来自分类Dev

如何在Vaadin 6表格中显示图像?

来自分类Dev

如何在Vaadin中的视图级别上设置授权

来自分类Dev

如何在Vaadin TextArea中检测Enter键

来自分类Dev

如何在Vaadin中单击链接时设置值

来自分类Dev

如何在Vaadin网格中仅使某些列可编辑?

来自分类Dev

如何在Vaadin 14中处理SSO重定向

来自分类Dev

如何在Vaadin 12.0.7中使用NestedBeanPropertyDefinition <T,V>?

来自分类Dev

如何在Vaadin中的视图级别上设置授权

来自分类Dev

如何在Vaadin中更改默认的HTML模板

来自分类Dev

如何在单个表格单元中显示多个Vaadin属性?

来自分类Dev

如何在vaadin树形表中隐藏展开/折叠图标?

来自分类Dev

如何在 vaadin 进度条中显示标签

来自分类Dev

如何在 Vaadin 8 中绑定外键

来自分类Dev

如何在 Vaadin 14 中播放声音?

来自分类Dev

如何在angularjs中读取pdf流