仅打印嵌入ASP.NET页面的图像

时间:2012-09-25 15:49:29

标签: c# asp.net image printing tiff

我希望使用C#,Microsoft Visual Studio,asp.net进行打印。

目标:我正在尝试打印传真文档中的所有页面。

格式:传真文档作为包含多个页面的单个.tiff文件接收。

需要做什么: - 我需要迭代.tiff图像中的每一页并将它们全部打印出来。

// This function will iterate all pages, one at a time. //

 protected void PrintAll_Click(object sender, EventArgs e)
 {
    // counts number of pages in the fax document.//
    int number = _FaxPages.Count;

    // for loop to iterate through each page. //
    for (int i = 0; i < number; i++)
    {
        string _FaxId = Page.Request["FaxId"];

        _PageIndex = i;

        imgFax.ImageUrl = "ShowFax.ashx?n=" + _FaxId + "&f=" + _PageIndex + "&mw=750";

        PrintAll.Attributes.Add("onclick", "return printing()");             
    }
}

在我的Java脚本中我有:

function printing() { window.print(); }

现在的问题是:

  1. 该功能仅打印一页(tiff文件的最后一页)....它打印整个窗口,而不仅仅是整个Web浏览器窗口中嵌入的.tiff图像。

    关于如何打印.tiff嵌入图像而不是整个网络浏览器窗口的任何想法。

  2. 虽然我的for循环遍历页面。只有在循环遍历所有页面并在最后一页停止后才会调用print函数(例如第6/6页)。然后它只打印最后一页(以及浏览器窗口中的其余内容)。这不是我想要发生的......我不想在浏览器窗口上打印所有多余的材料,如按钮,链接等...我只想从浏览器窗口中嵌入.tiff图像。

1 个答案:

答案 0 :(得分:1)

在将页面发送到客户端之前,您当前的代码将遍历服务器端的所有页面并更新映像URL。这意味着ImageUrl将永远只是您的最后一页。

要打印所有图像,有多种解决方案:

  • 修改您的ShowFax.ashx,添加一个选项以立即渲染所有传真页面并将其放入图片网址。
  • 在运行时为每个页面添加一个新的Image元素到父容器。
  • 让javascript函数printing()进行回发,增加页面索引和图片上的网址,然后重复代码。
  • 创建整个循环客户端。

要仅打印图像,请使用CSS样式表隐藏其他元素并添加media="print",如下所示:

<link rel="stylesheet" type="text/css" media="print" href="print.css" />