在Chrome中,在Vaadin子窗口中显示嵌入式PDF

4

我有一个Vaadin应用程序,我正在尝试显示一个PDF文件,它是从我的Web服务器上作为存储的PDF读取的。

        setCaption(mainApp.getMsg("app.subwindow.help.title"));
    setHeight("750px");
    setWidth("1000px");
    setModal(true);
    setDraggable(false);
    setResizable(false);
    setBorder(Window.BORDER_MINIMAL);
    setScrollable(true);

    VerticalLayout vl = new VerticalLayout();
    vl.setSpacing(true);    
    vl.setSizeFull();

    Embedded pdf = new Embedded("test", new StreamResource(new StreamSource() {     
            public InputStream getStream() {
                InputStream is = PdfWindow.class.getClassLoader().getResourceAsStream("Lifestyle-Tracker-Promo.pdf");
                return is;
            }
        }, "file.pdf", mainApp));       

    pdf.setType(Embedded.TYPE_BROWSER);
    pdf.setMimeType("application/pdf"); 

    pdf.setSizeFull(); 
    vl.addComponent(pdf);   

    addComponent(vl);

我想在页面上使用嵌入式PDF阅读器显示PDF。这段代码在IE8和Firefox上运行良好,但是在Chrome的嵌入式PDF阅读器上却不能正常工作。是否还有其他人遇到了这个问题并且有任何建议?


1
前往 chrome://plugins 并确保启用了集成的 PDF 查看插件(Chrome PDF Viewer)。 - Ali
Chrome PDF Viewer已启用。 - anataliocs
@anataliocs:你有检查日志文件/控制台是否有异常吗? - Zakaria
我认为这纯粹是与浏览器相关的问题。 - anataliocs
开始了错误票据:http://dev.vaadin.com/ticket/8387 - anataliocs
1个回答

5

尝试将内容设置为全屏,您是否尝试将垂直布局设置为窗口的内容?

Window window = new Window();
        ((VerticalLayout) window.getContent()).setSizeFull();

Embedded pdf = new Embedded("test", new StreamResource(new StreamSource() {     
            public InputStream getStream() {
                InputStream is = PdfWindow.class.getClassLoader().getResourceAsStream("Lifestyle-Tracker-Promo.pdf");
                return is;
            }
        }, "file.pdf", mainApp));   

pdf.setType(Embedded.TYPE_BROWSER);
pdf.setMimeType("application/pdf"); 
pdf.setSizeFull();

window.addComponent(pdf);
getMainWindow().addWindow(window);

在进一步测试中,((VerticalLayout) window.getContent()).setSizeFull(); 在Safari浏览器中引起了显示错误。我不得不手动设置高度和宽度来解决这个问题。否则是个很好的解决方案。 - anataliocs
我是指window.setContent(vl),其中vl是你代码示例中的vl。我还没有测试过。但感谢你提到Safari,我从未在Safari中测试过我的应用程序... :) - niklas
在IE8中,如果您的垂直布局高度大于子窗口,并且子窗口具有滚动条,则可能会破坏您在主窗口中设置为不可见的其他插件或项目。很难解释。 #又一个讨厌IE的理由 ;) - anataliocs

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接