问题描述
我正在尝试使用 asp.net 以 jpg、png 和 pdf 格式导出高图。但它给了我 空错误。 这是页面的 aspx 侧:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ChartExport.aspx.cs" Inherits="ChartExport" ValidateRequest="false" %>
<html>
<head>
<Meta http-equiv="X-UA-Compatible" content="IE=edge" />
<Meta charset="utf-8" />
<Meta name="viewport" content="width=device-width,initial-scale=1,shrink-to-fit=no">
<link href="/Scripts/jqueryui/jquery-ui.css" rel="stylesheet" />
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css" />
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" />
<%: System.Web.Optimization.Styles.Render("~/Content/Font.css") %>
<%: System.Web.Optimization.Styles.Render("~/Content/artone.css") %>
<%: System.Web.Optimization.Styles.Render("~/Content/artoneMenu.css") %>
<link id="clientTheme" runat="server" type="text/css" rel="stylesheet" />
<script src="/Scripts/jquery/jquery.min.js"></script>
<script src="/Scripts/jqueryui/jquery-ui.js"></script>
<script src="/Scripts/Highcharts-6.1.4/code/highcharts.js"></script>
<script src="/Scripts/Highcharts-6.1.4/code/modules/exporting.js"></script>
</head>
<body>
<form>
<div style="text-align:center;margin-top:50px;">
<span class="filter_fontsize chartfilters"><%=Title %></span>
<br />
<asp:Literal ID="svgChart" runat="server"></asp:Literal>
</div>
</form>
</body>
</html>
这是页面的 aspx.cs 一侧:
protected override void OnInit(EventArgs e)
{
}
protected override void OnLoad(EventArgs e)
{
ArtBase art = new ArtBase();
var css = CssthemeHelper.GetCsstheme(art.CurrentHealthPlanId);
var themePath = string.Format("{0}?v={1}",css,Guid.NewGuid().ToString());
clientTheme.Attributes.Add("href",themePath);
BindRequest();
LoadPageData();
}
protected override void LoadPageData()
{
var svg = new XmlDocument();
if (string.IsNullOrEmpty(Scale)) {
svgChart.Text = SVG;
return;
}
svg.LoadXml(SVG);
float scale = float.Parse(Scale);
scale = scale > 0f ? scale : 1f;
var svgHeight = float.Parse(svg.DocumentElement.GetAttribute("height")) * scale;
var svgWidth = float.Parse(svg.DocumentElement.GetAttribute("width")) * scale;
svg.DocumentElement.SetAttribute("width",svgWidth.ToString());
svg.DocumentElement.SetAttribute("height",svgHeight.ToString());
svgChart.Text = svg.OuterXml;
}
#endregion
protected override void Render(HtmlTextWriter writer)
{
if (Type.ToLower().Contains("pdf"))
{
ExportPdf();
return;
}
if (Type.ToLower().Contains("svg"))
ExportSvg();
Exportimage();
}
private void ExportSvg() {
Response.Clear();
Response.ClearHeaders();
response.addheader("Content-Type",Type);
Response.AppendHeader("content-disposition",string.Format("attachment;filename={0}.svg",FileName));
byte[] data = System.Text.ASCIIEncoding.UTF8.GetBytes(SVG);
Response.OutputStream.Write(data,data.Length);
Response.End();
}
private void ExportPdf() {
// base.Render(writer);
TextWriter myWriter = new StringWriter();
HtmlTextWriter htmlWriter = new HtmlTextWriter(myWriter);
base.Render(htmlWriter);
// instantiate a html to pdf converter object
HtmlToPdf converter = new HtmlToPdf();
converter.Options.pdfpageOrientation = pdfpageOrientation.Landscape;
converter.Options.EmbedFonts = true;
// create a new pdf document converting the html string of the page
PdfDocument doc = converter.ConvertHtmlString(
myWriter.ToString(),Request.Url.AbsoluteUri);
//save pdf document
doc.Save(Response,false,string.Format("{0}.pdf",FileName));
// close pdf document
doc.Close();
}
private void Exportimage() {
TextWriter myWriter = new StringWriter();
HtmlTextWriter htmlWriter = new HtmlTextWriter(myWriter);
base.Render(htmlWriter);
var converter = new HtmlToImage();
var image = converter.ConvertHtmlString(myWriter.ToString(),Request.Url.AbsoluteUri);
var imageFormat = Type.Contains("png") ? ImageFormat.Png : ImageFormat.Jpeg;
Response.Clear();
Response.ClearHeaders();
response.addheader("Content-Type",string.Format("attachment;filename={0}.{1}",FileName,imageFormat.ToString()));
image.Save(Response.OutputStream,imageFormat);
Response.End();
}
}
在渲染函数中,Type 变量给出了 null 异常。看起来图表路径尚未加载到此变量中。有人可以帮助我在哪里犯错误吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)