当前位置: 首页 > 知识库问答 >
问题:

用于Vaadin 7用户界面的多页打印或报告库

常自怡
2023-03-14

我们有一个Vaadin 7用户界面页面,包含多个布局、面板和图表(浏览器将附带滚动条,因为高度很大)。当我们尝试在Vaadin代码中使用JavaScript或使用浏览器的Ctrl P打印时,它在Firefox 32.0.3中只打印一页;在IE 8中打印多个页面,只有第一页的数据。

  • 我们尝试为UI页面中的所有组件指定未定义的大小(如中所述)https://vaadin.com/forum#!/Thread/3869543/7861633)

以上两种情况都没有解决我们的问题。我们可以从文档中了解到,Vaadin scrolling使用DOM结构,知道这样的工具没有提供适当的打印选项是不寻常的。

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

最后,这些是我们的问题-

  1. 如何解决Vaadin 7中的多页打印问题
  2. 如果我们无法解决第一个问题,那么Vaadin 7和GAE支持的最佳报告库(PDF、PNG、HTML或打印)是什么

任何指导我们的指导方针或建议都将不胜感激。

共有2个答案

王英奕
2023-03-14

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

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();
}
匡安宜
2023-03-14

打印超文本标记语言页面充其量是随机的。

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

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

 类似资料:
  • 我是Jasper报告的新手。我有一个包含2组的报告。根据查询,正在打印多页。 第一组高度 - 95分,第二组高度 - 144分 我希望这些多页打印在一页中(我希望一页中包含5页)。每页高度为239点。(即使页面内容小于239分,我希望将剩余部分保留为空白,并在239分后开始下一页)。我尝试创建一个报告,并将上述报告作为子报告,并设置主报告的高度为1195(239*5)点。尽管如此,这些都被打印在不

  • 问题内容: 我有一个 条形码 报告,该报告使用序列( Oracle 后端)生成我的 条形码 编号。 这是在我的查询: 我将此字段放置在设计器窗口中,该窗口将显示 条形码 值。 我有一个带有表情的图像: 以上是使用序列值的 条形码 。 我希望能够说打印/生成100或更多报告。目前,我一次只能生成一份报告。 因此,我的第一个猜测是获取一个提示用户输入值的参数,该值将指示要打印的 条形码 数量,每个 条

  • 问题内容: 我们如何阻止用户使用不同的方法来打印网页? 禁用右键单击 禁用按键组合 右键单击->打印 有什么方法可以停止打印网页? 我们可以使用javascript处理这3个事件吗?或者我们可以说。如果用户将执行任何这些事件。然后我想运行我的其他代码。这可能吗? 问题答案: 用户计算机上的网页不受控制。用户可以执行他或她想做的任何事情,但是您可以提供PDF并禁用打印该PDF。不过,如果我必须打印一

  • 打印页面包含RichTextBlock。这个RichTextBlock过去包含文本,可以使用以下代码打印。如果页面包含列表框或网格视图,我需要如何打印的帮助。是否可以使用RichTextBlock包含列表框并检测溢出以继续打印?如果您能提供示例、参考或教程,将不胜感激。谢谢 ---更新此列表框将包含以下数据: ItemName ItemCode价格数量。。 ------ ------ ----更新

  • 问题内容: 我有一个填充有动态数据的表,要处理在打印中的问题,我在其中应用了一些分页符,一切正常,但是在打印时,我需要在每页下方显示一个分页,例如“ Page 1 of 3 ”,依此类推。我已经尝试过使用CSS,但是我只能用它打印当前页码。还有其他方法可以实现吗?这是我的代码 问题答案: 您是否尝试过:

  • 问题内容: 我只想在不选择用户的情况下打印JasperReport。我进行了搜索,但是没有有效的解决方案。这是我的代码的相关部分: 我想选择一台打印机,而不是简单的printReport。有什么办法吗? 问题答案: 这是应该的样子: