java - 将 SVG 图像提交到 Servlet

标签 java jquery web-applications svg

我正在编写一些关于 Java Web 应用程序的报告。我的要求之一是能够将报告数据导出为 PDF。这些报告由多个元素组成,其中大部分是由 Highcharts 提供的 HTML 表格和 SVG 图表。

Highcharts 有一个内置功能,可以将其图形导出为 PDF,但我还需要一个包含其他 HTML 数据的文档,所以除了编写自己的代码之外别无选择。由于 Highcharts 图形是在客户端创建的,因此我需要将其 SVG 输出提交到服务器,以便能够将图像包含在 PDF 文档中。

我的第一个(也许是幼稚的)方法是创建一个带有隐藏输入的表单,例如:

<form id="fileExport" method="POST" action="servlet/FileExportServlet">
    <input type="hidden" id="svgParam" name="svgParam" />
</form>

然后我将隐藏输入的值设置为图形的 svg 代码,如下所示:

$("div#getPDF").live("click", function()
{
    //the chart svg data is inside a div with class highcharts-container
    //I copy the svg to the hidden input that I will submit
    $("#svgParam").val($(".highcharts-container").html());

    //submit the form with the hidden input
    $("#fileExport").submit();
});

我面临的问题是,显然 SVG 数据对于隐藏输入的值来说太大,因此当它到达服务器时它会被截断。我以这种方式提交表单,因为我不想刷新页面来开始下载。

我在想也许我可以将 SVG 元素编码为数据 URI,但我认为它也不会阻止截断,尽管它大多数时候会生​​成较短的字符串。

有人知道如何将 SVG 数据传输回服务器吗? (最好还允许一些其他参数)

谢谢

最佳答案

如果您的表单使用 POST 操作,数据将不会被截断。

话虽如此,使用文本阵营发送二进制数据还是令人不安的。我会尝试:

a) 将其作为文件附件发送(但您的用户可能需要设置字段值)。

b) 将其与 HTML 分开直接发送到您的服务器(例如,使用 CURL)

c)至少,继续使用隐藏字段,但至少对数据使用encode64。

关于java - 将 SVG 图像提交到 Servlet,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11569921/

相关文章:

java - 重新加载的文件在java中没有改变

Java swing gui 和 lwjgl

javascript - 如何在单选按钮上调用指令以在 Angular Js 中设置值

javascript - 在 jquery 中从页面搜索文本时获取和错误(不自然的功能)?

web-applications - Firefox 和 Chrome 应用 list 的主要区别是什么

android - 简单的 Android 应用程序,允许用户仅选择 IP 和端口

java - .Net 与 Java 的移动开发对比。你怎么看?

java - 静态方法和静态 block 之间的线程安全

javascript - 如何在回发后保持对 asp 文本框或任何 html 元素的关注

node.js - 如何在 Web 应用程序中集成外部依赖项