下载由Javascript通过Servlet生成的xml元素

时间:2015-12-08 15:00:24

标签: javascript java servlets download save

我有一个由JS libraray D3生成的SVG图形,应保存在客户端计算机上。我想提供不同的格式,虽然我发现了用于下载SVG和PNG的纯JS解决方案,但我仍然坚持提供PDF。据我所知,没有纯粹的客户端解决方案支持所有SVG元素(我试过jsPDF),虽然我想知道为什么没有更简单的解决方案。 无论如何,这就是为什么我想使用一个使用java batik库的servlet(与本主题相同:Convert SVG to PDF

现在我想拿出我的SVG元素,将其转换为字符串,然后创建一个ajax get请求:

    var svg = $("#chart").get(0);
    var serializer = new XMLSerializer();
    var sXML = serializer.serializeToString(svg);

$.get("http://localhost:8080/Webmap/Conversion", 
            {svg: svg},
            function (){
                //how do i handle the response object?
        });

在我的servlet中,我想获取字符串,转换内容并将其检索到客户端,以便可以下载:

protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    String svgString = req.getParameter("svg");
    StringReader svg = new StringReader(svgString);
    File pdf = new File("/tmp/chart.pdf");

    Transcoder transcoder = new PDFTranscoder();
    TranscoderInput transcoderInput = new TranscoderInput(svg);
    TranscoderOutput transcoderOutput = new TranscoderOutput(new  FileOutputStream(pdf));
    transcoder.transcode(transcoderInput, transcoderOutput);

    resp.setContentType("application/pdf");
    resp.setHeader("Content-Disposition", "attachment; filename=/tmp /chart.pdf");

    //...how do i have to wrap the generated pdf file into the resp object?
}

很抱歉,如果这看起来像一个简单的问题,但我现在基本上不理解的是如何将pdf附加到响应中,如何在浏览器中下载它?

0 个答案:

没有答案