c# - 仅打印嵌入到 ASP.NET 页面中的图像

标签 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 循环遍历页面。只有在循环遍历所有页面并在最后一页(比如第 6/6 页)停止后,才会调用打印函数。然后它只打印最后一页(连同浏览器窗口中的其余内容)。这不是我想要发生的……我不想在浏览器窗口上打印所有多余的 Material ,例如按钮、链接等……我只想要浏览器窗口中的嵌入式 .tiff 图像。

最佳答案

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

打印所有图片,有多种方案:

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

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

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

关于c# - 仅打印嵌入到 ASP.NET 页面中的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12586582/

相关文章:

Java ImageIO 将图像 byte[] 读取到预分配的 BufferedImage 中

c# - 如何在浏览器中显示只有其内容的图像 (byte[])

javascript - 将 rowindex 传递给 JavaScript

image - 快速计算扭曲矩阵

image - 如何制作像ipad应用商店中那样的iOS图像 slider ?

c# - ASP.NET MVC 结合 Web API 路由

c# - Azure 函数停止从 IoT 中心调用

c# - 将 Grid.RowDefinition 高度绑定(bind)到 Xamarin 中的网格宽度

c# - 将 C++ 例程转换为 C#,主要是指针

java - 验证用户从文本框输入的内容#