如何打印加入表格?
How to Print a Join Form?
无法确定如何在 BMC Remedy 9.0 中打印加入表单的内容。 Remedy 的文档只解释打印报告,不解释连接表单。我希望能够使用 Ctrl-P 或内部 Remedy process/action link 进行打印。我的加入表单主要包含字符字段。尽管页面宽度为 915 像素,高度为 1000 像素,但打印预览会在高度的前 ~20 像素处截断。有谁知道如何在浏览器中打印表单?
弄清楚如何做到这一点 - 如果您通过 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,并且您正在测试的用户具有适当的权限还有特权。
无法确定如何在 BMC Remedy 9.0 中打印加入表单的内容。 Remedy 的文档只解释打印报告,不解释连接表单。我希望能够使用 Ctrl-P 或内部 Remedy process/action link 进行打印。我的加入表单主要包含字符字段。尽管页面宽度为 915 像素,高度为 1000 像素,但打印预览会在高度的前 ~20 像素处截断。有谁知道如何在浏览器中打印表单?
弄清楚如何做到这一点 - 如果您通过 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,并且您正在测试的用户具有适当的权限还有特权。