Vaadin 7 UI的多页打印或报告库

时间:2014-09-25 07:30:41

标签: vaadin vaadin7

我们有一个Vaadin 7 UI页面,其中包含多个布局,面板和图表(当高度很大时,浏览器将随ScrollBar一起提供)。当我们尝试使用Vaadin代码中的JavaScript或使用浏览器的Ctrl + P进行打印时,它只在Firefox 32.0.3中打印一页;打印多个页面,仅显示IE 8中第一页的数据。

以上两个案例都没有解决我们的问题。正如我们从文档中可以理解的那样,Vaadin滚动使用DOM结构,知道这样的工具不能提供正确的Print选项是不寻常的。

为了简要说明我们的目标,我们正在考虑Vaadin中的报告选项进行一些数据分析。我们看到StackOverflow中提到的一些选项(使用JasperReport等),但是无法实现它们,因为我们需要将此应用程序部署到具有不受支持的功能的Google App Engine(GAE),例如FileOutputStream等。

总而言之,这些是我们的问题 -

  1. 如何解决Vaadin 7中的多页打印问题?
  2. 如果我们无法解决第一个问题,Vaadin 7和GAE支持的最佳报告库(PDF或PNG或HTML或打印)是什么?
  3. 任何指导我们的指导或建议都将受到赞赏。

2 个答案:

答案 0 :(得分:0)

打印HTML页面最多是随机的。

每个浏览器都有自己的显示和分页规则。我们总是使用pdf来打印东西。

iReport / Jasperreports是我们大部分时间都在使用的东西

答案 1 :(得分:0)

您可以尝试以下解决方法:

private void setSizeUndefined2Print()
{
    com.vaadin.ui.JavaScript.getCurrent().execute("document.body.style.overflow = \"auto\";" +
                                                  "document.body.style.height  = \"auto\"");
    UI.getCurrent().setSizeUndefined();
    this.setSizeUndefined();
}

如果在某些情况下你需要切换回"定义"大小,可以使用下一个方法:

private void setSizeFull2Print()
{
    com.vaadin.ui.JavaScript.getCurrent().execute("document.body.style.overflow = \"\";" +
                                                  "document.body.style.height  = \"\"");
    UI.getCurrent().setSizeFull();
    this.setSizeFull();
}