如何通过代码调整打印选项?

时间:2013-09-26 12:33:49

标签: javascript php joomla

我在Joomla有一个订票系统。

当用户点击故障单链接时,网站上会显示故障单。

我正在使用 barcode.php 文件生成票号的条形码图片。

现在有两种用于打印票证的方案。

  1. 当我使用window.print() Ctrl + P 打印该票证时,会打印2页 即使我的票证内容只是单页。

  2. 当我使用以下javascript代码打印页面的特定部分时,不会生成条形码图像。

    function print_specific_div_content(){
        var content = "<html>";
        content += document.getElementById("divToPrint").innerHTML ;
        content += "</body>";
        content += "</html>";
    
        var printWin = window.open('','','left=0,top=0,width=552,height=477,toolbar=0,scrollbars=0,status =0');
        printWin.document.write(content);
        printWin.document.close();
        printWin.focus();
        printWin.print();
        printWin.close();
    }
    
  3. 我的要求是:

    故障单应仅在单页打印

    任何帮助或建议都将不胜感激。

    感谢。

    编辑1:

    我修改了我的功能如下,但遗憾的是它显示了新窗口但没有打印对话框。 :(

    function print_specific_div_content(){
        var win = window.open('','','left=0,top=0,width=552,height=477,toolbar=0,scrollbars=0,status =0');
        var handler = function() {
          win.print();
          win.close();
        };
        if(win.addEventListener)
            win.addEventListener('load', handler, false);
        else if(win.attachEvent)
            win.attachEvent('onload', handler, false);
    
        var content = "<html>";
        content += document.getElementById("divToPrint").innerHTML ;
        content += "</body>";
        content += "</html>";
        win.document.write(content);
        win.document.close();
    }
    

1 个答案:

答案 0 :(得分:9)

仅打印内容时,您需要在打印前等待文档加载,以便加载图像:

function print_specific_div_content(){
    var win = window.open('','','left=0,top=0,width=552,height=477,toolbar=0,scrollbars=0,status =0');

    var content = "<html>";
    content += "<body onload=\"window.print(); window.close();\">";
    content += document.getElementById("divToPrint").innerHTML ;
    content += "</body>";
    content += "</html>";
    win.document.write(content);
    win.document.close();
}