项目中做了一个统计,为了省事儿就用ie自带的打印,打印输出的内容,但是发现,页面中使用了<asp:Chart>的控件,打印不出来。
一般的IE打印是没有调整这个选项
但是即使勾上了这个选项,打印可以看到背景了,但是还是看不到那个图形。原因是微软的图形的机制是生成的临时图片,所以可能是那个图片地址就不能引用所以导致打印不出图片。
解决方法:
打开微软的例子,发现它也打印不了,但是有2个例子可以打印,原来是将chart控件,放在网页文件中,直接输出流。
将chart控件放到网页中,然后加上一个属性rendertype="BinaryStreaming",在原来直接放置chart的地方,用image替换,
<asp:image id="Image1" runat="server" ImageUrl="test.aspx" width="480px" height="300px"></asp:image>,那个imageurl就是放chart的那个网页,那个网页是什么样的呢,是这样的,
<%@ Page Language="c#" Inherits="System.Web.UI.DataVisualization.Charting.Samples.BinaryStreamingImage" CodeFile="BinaryStreamingImage.aspx.cs" %>
<asp:chart id="Chart1" runat="server" height="296px" width="412px" imagelocation="~/TempImages/ChartPic_#SEQ(300,3)"
imagetype="Png" palette="BrightPastel" backcolor="#F3DFC1" rendertype="BinaryStreaming"
BorderlineDashStyle="Solid" backgradientstyle="TopBottom" borderwidth="2" bordercolor="181, 64, 1">
<titles>
<asp:Title ShadowColor="32, 0, 0, 0" Font="Trebuchet MS, 14.25pt, style=Bold" ShadowOffset="3" Text="Binary Streaming" ForeColor="26, 59, 105"></asp:Title>
</titles>
<legends>
<asp:Legend Enabled="False" IsTextAutoFit="False" Name="Default" BackColor="Transparent" Font="Trebuchet MS, 8.25pt, style=Bold"></asp:Legend>
</legends>
<borderskin skinstyle="Emboss" />
<series>
<asp:Series XValueType="Double" Name="Series1" ChartType="SplineArea" BorderColor="180, 26, 59, 105" Color="220, 65, 140, 240" YValueType="Double">
<points>
<asp:DataPoint YValues="6" />
<asp:DataPoint YValues="9" />
<asp:DataPoint YValues="3" />
<asp:DataPoint YValues="5" />
<asp:DataPoint YValues="2" />
<asp:DataPoint YValues="7" />
<asp:DataPoint YValues="8" />
<asp:DataPoint YValues="1" />
</points>
</asp:Series>
</series>
<chartareas>
<asp:ChartArea Name="ChartArea1" BorderColor="64, 64, 64, 64" BorderDashStyle="Solid" BackSecondaryColor="White" BackColor="OldLace" ShadowColor="Transparent">
<area3dstyle Rotation="10" perspective="10" enable3d="True" Inclination="15" IsRightAngleAxes="False" wallwidth="0" IsClustered="False">
</area3dstyle>
<axisy linecolor="64, 64, 64, 64">
<labelstyle font="Trebuchet MS, 8.25pt, style=Bold"/>
<majorgrid linecolor="64, 64, 64, 64"/>
</axisy>
<axisx IsMarginVisible="False" linecolor="64, 64, 64, 64">
<labelstyle font="Trebuchet MS, 8.25pt, style=Bold"/>
<majorgrid linecolor="64, 64, 64, 64"/>
</axisx>
</asp:ChartArea>
</chartareas>
</asp:chart>
什么都没有,就一个头,直接加chart控件。就直接输出来了。效果就是下图。如果你要根据参数动态生成图形,就用url传值的方式传过去即可。
Ps:
1、页面中不是引用image,而是常规使用chart控件,如果你把chart控件的rendertype="BinaryStreaming"属性写上去的话,那么你这个页面就会以字符串流的显示方式显示在IE浏览器中了。
2、页面常规使用chart控件,如果不是用IE,而是用chrome打印,是可以看到图片的,不知道为什么?不过为了通用,使用rendertype="BinaryStreaming"属性,将chart分离还是比较灵活的。
3、如果您还有什么用法或者解决方法可以留言,共同提高。