我们使用ABCPDF将HTMl页面转换为PDF。一切正常,除了使用highcharts生成的图表.ascesscript标签设置为true,但字符呈现的区域保持为空。在IE9中,呈现图表。有人知道解决方案吗?
Doc theDoc = new Doc();
theDoc.HtmlOptions.UseScript = true;
theDoc.HtmlOptions.ImageQuality = 100;
theDoc.AddImageUrl("/factsheet.html", false, 984, true);
byte[] theData = theDoc.GetData();
Response.Clear();
Response.ContentType = "application/pdf";
Response.AddHeader("content-disposition", "inline; filename=MyPDF.PDF");
Response.AddHeader("content-length", theData.Length.ToString());
Response.BinaryWrite(theData);
Response.End();
答案 0 :(得分:2)
此问题可能是由动态淡入的动画图形引起的。
ABCpdf将在完成加载后立即尝试捕获页面。因此,如果图表的初始状态为空白,则它将呈现在呈现的PDF文档中。
要使Highchart图形正确显示,您可能需要稍微延迟渲染。您可以通过将Gecko指定为HTML呈现引擎并通过HtmlOptions.OnloadScript属性设置延迟来实现此目的,例如:
Doc doc = new Doc();
doc.HtmlOptions.Engine = HTMLEngineType.Gecko;
doc.HtmlOptions.UseScript = true;
doc.HtmlOptions.OnLoadScript = "(function(){window.ABCpdf_go = false; setTimeout(function(){window.ABCpdf_go = true;}, 1000);})();";
doc.AddImageUrl("http://example.com/");
doc.Save("example.pdf");
在上面的示例中,JavaScript被分配给HtmlOptions.OnLoadScript属性,该属性将在客户端运行,并在1秒后将'window.ABCpdf_go'属性设置为'true'。
ABCpdf将等待window.ABCpdf_go在呈现任何HTML之前变为“true”或“undefined”。如果超过HtmlOptions.Timeout,ABCpdf将停止观看。
window.ABCpdf_go属性是ABCpdf的最新成员,因此请检查您是否使用了最新版本。