我正在研究Java Web應用程序的一些報告。我的要求之一是能夠將報告數據導出爲PDF。這些報告由幾個元素組成,主要是由Highcharts提供的HTML表格和SVG圖表。將SVG圖像提交給Servlet
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操作而被截斷。看起來Eclipse調試器沒有顯示整個字符串,但數據本身已正確傳輸,所以我的問題在別處。 在我的情況a)和b)不可行,但我會按照您的建議對數據進行編碼。 – JayPea 2012-07-19 23:17:59