0

我有PrintTest.aspx页面加载来自数据库的图像路径并将其呈现在 div 中以打印这些图像可能多达 20000 个图像

       for (int i = 0; i < Files.Count; i++)
    {
    HtmlImage image=new HtmlImage();
        image.ID="ImageAN"+i.ToString();
        image.Src=Files[i].ToString();
        image.Alt="PrintImage";
        image.Attributes.Add("class","PrintImage");

    div_Print.Controls.Add(image);
    }

然后调用 JavaScript 函数打印 div_Print 的内容

 this.ClientScript.RegisterStartupScript(this.GetType(), "ClientScript", " PrintContent('div_Print')", true);

java脚本函数 >

 <script type="text/javascript">
function PrintContent(divName) {
    var DocumentContainer = document.getElementById(divName);
    var WindowObject = window.open();
    WindowObject.document.writeln(DocumentContainer.innerHTML);
    WindowObject.document.close();
    WindowObject.focus();
    WindowObject.print();
    WindowObject.close();
}
</script>

但是这种情况会导致我的浏览器不断崩溃并关闭。

我希望任何情况下都可以避免这种情况或打印图像而不将其呈现在 HTML 中

4

1 回答 1

2

你没有。这就是人们发明分页和搜索的原因。

有几个原因:

  • 内存是一种有限的资源,尤其是在移动设备上(如果你支持的话)
  • TMI,如果不花几个小时盯着它,人们无法直观地理解放在单个页面上的 20k 图像

像这样的东西

public ControlsTypeHere PrintImages(int take, int skip)
{
    int filesPrinted;

    for (int i = skip; i < Files.Count; i++)
    {
        if(filesPrinted >= take)
            break;

        HtmlImage image=new HtmlImage();
        image.ID="ImageAN"+i.ToString();
        image.Src=Files[i].ToString();
        image.Alt="PrintImage";
        image.Attributes.Add("class","PrintImage");

        div_Print.Controls.Add(image);

        filesPrinted++;
    }

    return div_Print.Controls;
}
于 2013-08-26T14:20:57.450 回答