Как мне прочитать файлы.svg и отредактировать их для браузера? - PullRequest
0 голосов
/ 23 апреля 2019

У меня есть полуфабрикат.svg. Мне нужно использовать батик, чтобы прочитать его и нарисовать дополнительный график на его основе, как в коде ниже, но браузер потерял метку теста. почему?

Контроллер:

String uri = "E:/shared/java/v1/test/src/main/resources/static/svg/02_panel.svg";
SVGGraphics2D g = SVGUtil.getSVGGraphics2DByUri(uri);
g.setSVGCanvasSize(contentSize);

g.drawString("Test Label", 100, 100);
g.dispose();

byte[] bufg = SVGUtil.transcodeToSVG(g.getDOMFactory());

writeSvgResponse(request, response, bufg);

SVGUtil.java

   public static SVGGraphics2D getSVGGraphics2DByUri(String uri) {
      try {
         String parser = XMLResourceDescriptor.getXMLParserClassName();
         SAXSVGDocumentFactory f = new SAXSVGDocumentFactory(parser);

         File file = new File(uri);
         InputStream in = new FileInputStream(file);

         Document doc = f.createDocument(parser, in);

         SVGGeneratorContext ctx = SVGGeneratorContext.createDefault(doc);

         SVGGraphics2D g = new SVGGraphics2D(ctx, false);

         return g;

      } catch (IOException ex) {
         ex.printStackTrace();
      }

      return getSVGGraphics2D();
   }

   public static byte[] transcodeToSVG(Document doc) throws TranscoderException {

      try {
         //Determine output type:
         SVGTranscoder t = new SVGTranscoder();

         TranscoderInput input = new TranscoderInput(doc);
         ByteArrayOutputStream bytestream = new ByteArrayOutputStream();
         OutputStreamWriter ostream = new OutputStreamWriter(bytestream, StandardCharsets.UTF_8);
         TranscoderOutput output = new TranscoderOutput(ostream);

         //Perform transcoding
         t.transcode(input, output);
         ostream.flush();

         return bytestream.toByteArray();

      } catch (IOException e) {
         // TODO Auto-generated catch block
         e.printStackTrace();
      }

      return null;
   }

Похоже, это связано с тем, что то, что нарисовал SVGGraphic, не было создано в Документе. Достижимо ли это требование?

...