Экспортированные SVG переполняют границы - PullRequest
4 голосов
/ 01 мая 2019

Я визуализирую некоторые данные с помощью vaadin-charts: 3.2.0 и пытаюсь экспортировать SVG из графика. Я получаю некоторые результаты, но это не удовлетворяет. Я могу только поделиться скриншотами вместо самого SVG. Мне также пришлось пикселизировать метки для маскировки личных данных.

На экране видны оригинальные ваадин-диаграммы: Original vaadin-charts seen on screen

Экспортируемый SVG: Exported SVG

Одна проблема заключается в том, что метки выходят за границы svg. И чертежи диаграммы также выходят за границы, делая его похожим на неполный чертеж. Есть идеи, что не так с этой структурой?

public class SvgStreamResource extends StreamResource {

  public SvgStreamResource(String svgText, String filename) {
    super(new StreamSource() {
      @Override
      public InputStream getStream() {
        InputStream s = new BufferedInputStream( new ReaderInputStream(new StringReader(svgText)));
        return s;
      }
    }, filename + ".svg");
  }

  @Override
  public String getMIMEType() {
    return "image/svg+xml";
  }

}

Внутри компонента:

  Button exportButton = createExportButton("SVG", createSVGStreamSource(conf));
private SvgStreamResource createSVGStreamSource(Configuration conf) {
      String svg = SVGGenerator.getInstance().generate(conf);
      return new SvgStreamResource(svg, fileBaseName);
}
private Button createExportButton(String caption, SvgStreamResource svgStreamResource) {
      Button b = new Button(caption);
      FileDownloader downloader = new FileDownloader(svgStreamResource);
      downloader.extend(b);
      return b;
}
...