通过Servlet下载Javascript生成的xml元素
我有一个由JS libraray D3生成的SVG图形,应该保存在客户端计算机上。我想提供不同的格式,虽然我找到了下载SVG和PNG的纯JS解决方案,但我还是有点拘泥于提供PDF。据我所知,目前还没有支持所有SVG元素的纯客户端解决方案(我尝试了jsPDF),尽管我想知道为什么没有更简单的解决方案。 无论如何,这就是为什么我想使用一个使用JavaBatik库的servlet(与本主题中的方式相同:) 现在我想获取我的SVG元素,将其转换为字符串,然后发出ajax get请求:通过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
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附加到响应中,以及如何在浏览器中提供下载?你可以找到许多关于这个主题的解释和示例,只需谷歌一下:谢谢你可以找到许多关于这个主题的解释和示例,谷歌搜索:干杯