打印包含图像的HTML表单

时间:2015-07-28 10:46:07

标签: c# html asp.net

我想要制作html打印功能但是已经在aspx表单中定义和显示的图像在html打印表单中不存在

图片包含在QuotePanel

这是aspx表单中的图像定义

 <tr>
        <td style="text-align: center">
            <asp:Image ID="Image1" runat="server" Height="70px" 
                ImageUrl="~/abc.jpg" Width="700px" />
        </td>
    </tr>

这是

背后的代码
public static void PrintWebControl(Control ControlToPrint)
{
    StringWriter stringWrite = new StringWriter();
    System.Web.UI.HtmlTextWriter htmlWrite = new System.Web.UI.HtmlTextWriter(stringWrite);
    if (ControlToPrint is WebControl)
    {
        Unit w = new Unit(100, UnitType.Percentage);
        ((WebControl)ControlToPrint).Width = w;
    }
    Page pg = new Page();
    pg.EnableEventValidation = false;
    HtmlForm frm = new HtmlForm();
    pg.Controls.Add(frm);
    frm.Attributes.Add("runat", "server");
    frm.Controls.Add(ControlToPrint);
    pg.DesignerInitialize();
    pg.RenderControl(htmlWrite);
    string strHTML = stringWrite.ToString();
    HttpContext.Current.Response.Clear();
    HttpContext.Current.Response.Write(strHTML);
    HttpContext.Current.Response.Write("<script>window.print();</script>");
    HttpContext.Current.Response.End();
protected void btnPrint_Click(object sender, EventArgs e)
{
    Session["ctrl"] = QuotePanel;
   QuotePanel.Visible = true;
   Control ctrl = (Control)Session["ctrl"];
   PrintWebControl(ctrl);


}

1 个答案:

答案 0 :(得分:0)

从我可以制作的代码中,您试图使用回发来打印页面,然后运行javascript以使客户端执行打印。

如果您修改打印按钮以不进行回发(删除&#34; runat = server&#34;并将类型更改为简单的HTML按钮)并设置onclick事件以执行窗口,这将简单得多。打印()。这不仅可以简化代码,还可以使代码更好,因为它不需要往服务器往返打印页面。