2

我希望使用 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 嵌入图像而不是整个 Web 浏览器窗口的任何想法。

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

4

1 回答 1

1

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

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

  • 编辑您的ShowFax.ashx,添加一个选项以一次呈现所有传真页面并将其放在图像 URL 中。
  • Image在运行时将每个页面的新元素添加到父容器。
  • 让 javascript 函数printing()进行回发,增加页面索引和图像上的 URL 并重复代码。
  • 创建整个循环客户端。

对于仅打印图像,使用 CSS 样式表隐藏其他元素并添加media="print"如下内容:

<link rel="stylesheet" type="text/css" media="print" href="print.css" />
于 2012-10-02T07:59:35.103 回答