Vaadin-SVG发生器,有其他选择吗?

Vaadin-SVG发生器,有其他选择吗?,svg,charts,vaadin,Svg,Charts,Vaadin,这周我一直在研究瓦丁图表,我发现了一个我无法解决的问题。我需要发送几个图表到一个PDF生成(使用iTextpdf),我可以使用SVGGenerator。主要问题是我无法使用此解决方案,因为最终的笔记本电脑不允许任何安装,并且SVG生成器需要Phantomjs(也不能安装任何附加组件)。我试图找到一个不同的解决方案,将图表内容转换为我可以管理的文件或缓冲区,但我想我已经阅读了太多的帖子,我无法区分解决方案 因此,我将首先尝试澄清基本问题: a) 是否可以在笔记本电脑中不安装任何设备就管理SVG生成

这周我一直在研究瓦丁图表,我发现了一个我无法解决的问题。我需要发送几个图表到一个PDF生成(使用iTextpdf),我可以使用SVGGenerator。主要问题是我无法使用此解决方案,因为最终的笔记本电脑不允许任何安装,并且SVG生成器需要Phantomjs(也不能安装任何附加组件)。我试图找到一个不同的解决方案,将图表内容转换为我可以管理的文件或缓冲区,但我想我已经阅读了太多的帖子,我无法区分解决方案

因此,我将首先尝试澄清基本问题:

a) 是否可以在笔记本电脑中不安装任何设备就管理SVG生成器

b) 如果没有,是否有其他方法将图表转换为对象?可以管理哪个类将其插入PDF

我可以向你保证,我曾试图阅读本论坛和官方瓦丁论坛中与此主题相关的所有文档,但我找不到任何解决方案。我不想显得懒惰,我只想避免花费更多的时间,并澄清主要的先决条件来解决这个问题

提前感谢您的时间和帮助

亲切问候,


David。

如果没有某种web浏览器引擎,您将无法渲染Vaadin图表。这就是PhantomJS提供的。但是,如果您拥有一个成熟的web浏览器,您可以从那里手动获取SVG标记;自动化只是有点困难。这在Chrome中起作用:

  • 在浏览器中打开图表应用程序
  • 打开JavaScript控制台(Ctrl/Cmd+Shift+J)
  • 键入如下内容:
    copy(document.getElementsByTagName('svg')[0].outerHTML)
  • 将剪贴板的内容粘贴到新的文本文件,并将其另存为SVG

  • 您不需要安装phantomjs,只需将其二进制文件与web应用程序捆绑在一起()。我在Amazon AWS部署中也做了同样的事情,效果很好。

    您可以截图并将其附加到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();