String Vaadin:打开一个新窗口,将PDF内容放在字符串变量中

String Vaadin:打开一个新窗口,将PDF内容放在字符串变量中,string,pdf,window,vaadin,String,Pdf,Window,Vaadin,我想打开一个新窗口,其中包含放置在字符串变量中的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! // H

我想打开一个新窗口,其中包含放置在字符串变量中的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是应用程序。 如何将字符串pdf转换为StreamSource(pdfss)?我必须首先将其保存为文件,还是可以将其直接转换为内存中的StreamSource

控制台输出显示通常以%PDF-1.3开头的PDF内容。。。等等

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


Rainer

此问题的答案可通过以下官方支持论坛获得:

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

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

在没有编码getBytes()的情况下,我在正确生成PDF时遇到了一些问题。因此,我添加了pdf.getBytes(“ISO-8859-1”)以获得最佳解决方案。我在PDF中嵌入了导致这些问题的图像。现在一切正常。