Vaadin:打开一个新窗口,其中PDF内容放在String变量中

时间:2013-09-24 14:09:13

标签: string pdf window vaadin

我想打开一个包含放置在String变量中的PDF内容的新窗口。 我已经有一个连接事件的按钮。在这种情况下,我想调用新窗口。

方法如下:

private void show_archivobjekt(String data) {
String pdf = anfrage.get_archivobjectdata(data);
System.out.println(pdf);  // This shows my PDF content in console and works!

    // How to convert this String into a StreamSource

    StreamResource streamResource = new StreamResource(pdfss, "test.pdf",  myView);
    streamResource.setCacheTime(5000);
    streamResource.setMIMEType("application/pdf");
    myView.getMainWindow().open(streamResource, "_blank");
}

myView 是应用程序。 如何将 String pdf 转换为StreamSource( pdfss )?我是否必须先将其保存为文件,还是可以直接将其转换为内存中的StreamSource?

控制台输出显示了以%PDF-1.3开头的典型PDF内容......依此类推。

任何帮助将不胜感激。提前谢谢!

1 个答案:

答案 0 :(得分:0)

此问题的答案可通过官方支持论坛获取:https://vaadin.com/forum#!/thread/148544

通过使用字符串的字节表示创建ByteArrayInputStream作为源,只需像这样创建StreamResource:

StreamResource streamResource = new StreamResource(
    new StreamResource.StreamSource() {
        public InputStream getStream() {
            return new ByteArrayInputStream(pdf.getBytes());
        }
    }, "test.pdf");