本周我一直在使用Vaadin排行榜,我发现了一个无法解决的问题。我需要将几个图表发送到PDF生成(使用iTextpdf),我可以使用SVGGenerator。主要问题是我无法使用此解决方案,因为最终的笔记本电脑不允许任何安装,并且SVG Generator需要Phantomjs(不能安装任何附加组件)。我试图找到一个不同的解决方案将图表内容转换为我可以管理的文件或缓冲区,但我想我已经阅读了很多帖子,我无法区分解决方案。
因此,我将首先尝试澄清基本问题:
a)是否可以在笔记本电脑中没有安装的情况下管理SVG Generator?
b)如果没有,是否有不同的方法将图表转换为可以管理类以将其插入PDF的对象?
我可以向您保证,我试图阅读本论坛和官方Vaadin论坛中与此主题相关的所有文档,但我无法找到任何解决方案。我不想看起来很懒,我只想避免花更多的时间来澄清解决这个问题的主要前提条件。
提前感谢您的时间和帮助。
亲切的问候,
大卫。
答案 0 :(得分:1)
您可以截取图表的屏幕截图并将其附加到pdf:
Screenshot screenshot = new Screenshot();
screenshot.setTargetComponent(myTargetComponent);
myChartLayout.addComponent(screenshot);
//when complete
screenshot.addScreenshotListener(new ScreenshotListener() {
public void screenshotComplete(ScreenshotImage image) {
//do something
}
});
//take screenshot
screenshot.takeScreenshot();
答案 1 :(得分:0)
如果没有某种类型的网络浏览器引擎,您将无法呈现Vaadin图表。这就是PhantomJS提供的功能。但是,如果你有一个完整的网络浏览器,你可以从那里手动获取SVG标记;自动化起来有点困难。这适用于Chrome:
copy(document.getElementsByTagName('svg')[0].outerHTML)
答案 2 :(得分:0)
您不需要安装phantomjs,只需将其二进制文件与您的Web应用程序(Reference)捆绑在一起。我对我的亚马逊AWS部署做了同样的事情,它运行得很好。