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

通过Servlet下载Javascript生成的xml元素,javascript,java,servlets,download,save,Javascript,Java,Servlets,Download,Save,我有一个由JS libraray D3生成的SVG图形,应该保存在客户端计算机上。我想提供不同的格式,虽然我找到了下载SVG和PNG的纯JS解决方案,但我还是有点拘泥于提供PDF。据我所知,目前还没有支持所有SVG元素的纯客户端解决方案(我尝试了jsPDF),尽管我想知道为什么没有更简单的解决方案。 无论如何,这就是为什么我想使用一个使用JavaBatik库的servlet(与本主题中的方式相同:) 现在我想获取我的SVG元素,将其转换为字符串,然后发出ajax get请求: var s

我有一个由JS libraray D3生成的SVG图形,应该保存在客户端计算机上。我想提供不同的格式,虽然我找到了下载SVG和PNG的纯JS解决方案,但我还是有点拘泥于提供PDF。据我所知,目前还没有支持所有SVG元素的纯客户端解决方案(我尝试了jsPDF),尽管我想知道为什么没有更简单的解决方案。 无论如何,这就是为什么我想使用一个使用JavaBatik库的servlet(与本主题中的方式相同:)

现在我想获取我的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附加到响应中,以及如何在浏览器中提供下载?

你可以找到许多关于这个主题的解释和示例,只需谷歌一下:谢谢你可以找到许多关于这个主题的解释和示例,谷歌搜索:干杯