Highchart第三方图表控件,导出默认是从官方地址导出,这样在无外网的条件下则导致导出失败,改进如下:

后台导出代码:

public partial class HighChart : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
if (Request.Form["type"] != null && Request.Form["svg"] != null && Request.Form["filename"] != null)
{
string tType = Request.Form["type"].ToString();
string tSvg = Request.Form["svg"].ToString();
string tFileName = Request.Form["filename"].ToString();
if (tFileName == "")
{
tFileName = "chart";
}
MemoryStream tData = new MemoryStream(Encoding.UTF8.GetBytes(tSvg));
MemoryStream tStream = new MemoryStream();
string tTmp = new Random().Next().ToString(); string tExt = "";
string tTypeString = ""; switch (tType)
{
case "image/png":
tTypeString = "-m image/png";
tExt = "png";
break;
case "image/jpeg":
tTypeString = "-m image/jpeg";
tExt = "jpg";
break;
case "application/pdf":
tTypeString = "-m application/pdf";
tExt = "pdf";
break;
case "image/svg+xml":
tTypeString = "-m image/svg+xml";
tExt = "svg";
break;
} if (tTypeString != "")
{
string tWidth = Request.Form["width"].ToString();
Svg.SvgDocument tSvgObj = SvgDocument.Open(tData);
switch (tExt)
{
case "jpg":
tSvgObj.Draw().Save(tStream, ImageFormat.Jpeg);
break;
case "png":
tSvgObj.Draw().Save(tStream, ImageFormat.Png);
break;
case "pdf":
PdfWriter tWriter = null;
Document tDocumentPdf = null;
try
{
tSvgObj.Draw().Save(tStream, ImageFormat.Png);
tDocumentPdf = new Document(new Rectangle((float)tSvgObj.Width, (float)tSvgObj.Height));
tDocumentPdf.SetMargins(0.0f, 0.0f, 0.0f, 0.0f);
iTextSharp.text.Image tGraph = iTextSharp.text.Image.GetInstance(tStream.ToArray());
tGraph.ScaleToFit((float)tSvgObj.Width, (float)tSvgObj.Height); tStream = new MemoryStream();
tWriter = PdfWriter.GetInstance(tDocumentPdf, tStream);
tDocumentPdf.Open();
tDocumentPdf.NewPage();
tDocumentPdf.Add(tGraph);
tDocumentPdf.CloseDocument();
}
catch (Exception ex)
{
throw ex;
}
finally
{
tDocumentPdf.Close();
tDocumentPdf.Dispose();
tWriter.Close();
tWriter.Dispose();
tData.Dispose();
tData.Close();
}
break;
case "svg":
tStream = tData;
break;
}
}
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = tType;
Response.AppendHeader("Content-Disposition", "attachment; filename=" + tFileName + "." + tExt + "");
Response.BinaryWrite(tStream.ToArray());
Response.End();
}
}
}
}

  exporting.src.js文件中,导出服务地址改为 url: 'HighChart.aspx'即可。

最新文章

  1. nginx添加 nginx_heath模块
  2. 1002. A+B for Polynomials (25)
  3. php访问远程服务器上的文件
  4. javascript中的数组操作
  5. K - 最少拦截系统
  6. https抓包判断证书问题
  7. uva 10154
  8. hdoj 4612 Warm up【双连通分量求桥&&缩点建新图求树的直径】
  9. 《Principles of Mathematical Analysis》-chaper1-实数系与复数系
  10. javascript 数组 排除null, undefined, 和不存在的元素
  11. 利用java反射机制对方法进行调用
  12. 熔断器C#实现
  13. java 多线程Callable和Runable执行顺序问题详解
  14. SpringBoot的事件监听
  15. C#窗体打包步骤
  16. [LeetCode] Rotated Digits 旋转数字
  17. PopupWindow 以及拍照、裁剪
  18. Windows编程之模块遍历(C++实现)
  19. Linux基础命令---设置程序优先级nice
  20. ECS Navicat for MySQL远程连接报10038的错误

热门文章

  1. android 开发 实现自动安装
  2. 虚拟机备份转移后,网络启动异常,提示“SIOCSIFADDR: No such device”的解决方案
  3. 20160727noip模拟赛zld
  4. NYOJ-44 子串和 AC 分类: NYOJ 2014-01-04 22:53 154人阅读 评论(0) 收藏
  5. 在线最优化求解(Online Optimization)之四:RDA
  6. 01-04-02【Nhibernate (版本3.3.1.4000) 出入江湖】HQL查询
  7. 1. what is Lua?
  8. JavaScript 隐式转换
  9. java基础知识回顾之java Thread类学习(十)--线程的状态以及转化使用的方法介绍
  10. JDK8 学习