【问题标题】:Display embedded PDF in Vaadin Subwindow in Chrome在 Chrome 的 Vaadin 子窗口中显示嵌入的 PDF
【发布时间】:2012-03-01 09:39:26
【问题描述】:

我有一个 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 阅读器配合使用。有没有其他人遇到过这个问题并有什么建议?

【问题讨论】:

  • 转到 chrome://plugins 并确保启用了集成的 pdf 查看插件(Chrome PDF 查看器)。
  • Chrome PDF 查看器已启用。
  • @anataliocs : 如果有异常,你检查你的日志文件/控制台了吗?
  • 没有例外。我认为这纯粹是与浏览器相关的问题。
  • 开始的错误单:dev.vaadin.com/ticket/8387

标签: java pdf google-chrome vaadin


【解决方案1】:

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

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 中导致显示错误。我必须手动设置高度和宽度,这就是诀窍。否则很好的解决方案。
  • 我的意思是 window.setContent(vl) 其中 vl 是你的代码示例中的 vl。我没有测试过。但是感谢 safari 的提示,永远不要在 safari 中测试我的应用程序... :)
  • 同样在 IE8 中,如果您的垂直布局高度大于子窗口,并且子窗口有滚动条,则可能会弄乱您设置的其他插件或项目在主窗口中不可见。无法解释。 #AnotherReasonToHateIE ;)
猜你喜欢
  • 2014-09-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-12-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多