0

难以弄清楚如何在 BMC Remedy 9.0 中打印加入表单的内容。Remedy 的文档只解释打印报告,而不是加入表格。我希望能够使用 Ctrl-P 或通过内部补救过程/操作链接进行打印。我的加入表单主要包含字符字段。尽管页面宽度为 915 像素,高度为 1000 像素,但打印预览会在前约 20 像素的高度处截断。有谁知道我如何在浏览器中打印表格?

4

1 回答 1

0

弄清楚如何做到这一点 - 如果您通过 WYSIWYG 将所有内容放在 Remedy 面板对象中,那么您可以在 Web 页脚中添加一个脚本以将 document.body.innerHTML 设置为面板的 innerHTML。这个小技巧以使页面可使用 window.print() 或 Ctrl-P 打印的方式组织元素。但是请注意,这个 innerHTML 赋值经常会损坏或丢失子文本区域或输入值等属性。因此,您必须在打印之前抓取这些值并将它们附加回页面。

<div>
    <script>

    function myPrint() 
    {
        var idTexts = [];
        var textareas = document.querySelectorAll('textarea[id][readonly]');

        for(var i = 0; i < textareas.length; i++)
        {
            idTexts.push(textareas[i].id);
            idTexts.push(textareas[i].value);
        }

        var inputs = document.querySelectorAll('input[id][readonly]');

        for(var i = 0; i < inputs.length; i++)
        {
            idTexts.push(inputs[i].id);
            idTexts.push(inputs[i].value);
        }

        //Assume there is only one panel object, so only one .pnl class on the page

        var printContents = document.querySelector('.pnl').innerHTML;
        document.body.innerHTML = printContents;

        for(var i = 0; i < idTexts.length; i++)
        {
            if(document.getElementById(idTexts[i]))
            {
                document.getElementById(idTexts[i]).value = idTexts[i+1];
            }
        }

        window.print(); 
    }

    /*On page load, I noticed the click event fired for a visible button
    without the user actually needing to click. 
    Will not work unless the button's visibility is set to true (Remedy is a weird creature).
    Used the setTimeout to allow time for the initial page load, as the onload event fired too early.
    If you don't want this button to appear on the page when it is printed
    overlay a transparent image on the button's display properties.*/

    document.querySelector('a[ardbn="btnPrintMe"]').onclick = setTimeout(function(){ myPrint(); }, 500);
    </script>
</div>

如果您仍然有打印问题,请确保此 btnPrintMe 按钮至少具有正确的 6 个权限:1101/-1101、1102/-1102、1103/-1103,并且与您一起测试的用户也具有适当的权限。

于 2015-12-07T22:22:06.557 回答