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

Javascript 如何通过代码调整打印选项?,javascript,php,joomla,Javascript,Php,Joomla,我在Joomla有订票系统 当用户单击票证链接时,票证将显示在站点上 我正在使用一个barcode.php文件来生成票号的条形码图像 现在有两个场景我用来打印票据 当我使用window.print()或Ctrl+p打印该票据时,会打印两页 即使我的票证内容只有一页 当我使用下面的javascript代码打印页面的特定部分时,不会生成条形码图像 function print_specific_div_content(){ var content = "<html>";

我在Joomla有订票系统

当用户单击票证链接时,票证将显示在站点上

我正在使用一个barcode.php文件来生成票号的条形码图像

现在有两个场景我用来打印票据

  • 当我使用
    window.print()
    Ctrl+p打印该票据时,会打印两页 即使我的票证内容只有一页

  • 当我使用下面的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();
    }
    
    function print\u specific\u div\u content(){
    var-content=“”;
    content+=document.getElementById(“divToPrint”).innerHTML;
    内容+=”;
    内容+=”;
    var printWin=window.open(“”,,“left=0,top=0,width=552,height=477,toolbar=0,scrollbars=0,status=0');
    printWin.document.write(内容);
    printWin.document.close();
    printWin.focus();
    printWin.print();
    printWin.close();
    }
    
  • 我的要求是:

    车票只能打印在一页上

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

    谢谢

    编辑1:

    我对函数进行了如下修改,但不幸的是,它显示了新窗口,但没有打印对话框:(

    function print\u specific\u div\u 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);
    否则,如果(赢,附件)
    win.attachEvent('onload',handler,false);
    var-content=“”;
    content+=document.getElementById(“divToPrint”).innerHTML;
    内容+=”;
    内容+=”;
    赢。文件。写(内容);
    win.document.close();
    }
    
    仅打印内容时,您需要等待文档加载后再打印,以便加载图像:

    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();
    }
    
    function print\u specific\u div\u content(){
    var win=window.open(“”,,“left=0,top=0,width=552,height=477,toolbar=0,scrollbars=0,status=0');
    var-content=“”;
    内容+=”;
    content+=document.getElementById(“divToPrint”).innerHTML;
    内容+=”;
    内容+=”;
    赢。文件。写(内容);
    win.document.close();
    }
    
    我正在调用javascript函数onclick一个按钮的事件。所以图像是aleady加载的。不是吗?不是,因为您刚刚添加了“new”在新窗口中将HTML转换为新文档,需要对其进行解析并加载其图像。哦,对了。但我不知道如何使用您提供的代码。您能解释一下吗?您需要将对
    print
    close
    的调用移动到
    onload
    事件的处理程序中。您可以像我一样使用代码在
    content
    printWin
    中替换它,并调用您自己的
    窗口。打开
    。请检查我的编辑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 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();
    }