使用Asp.Net中的报表查看器控件进行跨浏览器rdlc报表打印时,不会打印图像和背面颜色
为了在asp.net mvc web app中的报表查看器控件中实现rdlc报表的打印function,我遵循了这个解决方案。 它对我有用https://stackoverflow.com/a/14052577/870561 。
这个jquery脚本在报表查看器工具栏中添加了一个打印按钮,点击后会显示很酷的打印预览对话框。 但它不是在打印中添加图像和背面颜色样式。
请建议一种方法,包括在rdlc报告中使用的图像以及背面颜色。 我的代码附在下面。
function pageLoad() { try { if (!$("#ff_print").length) { var ControlName = 'ReportViewer1'; var innerTbody = ' '; var innerTable = '' + innerTbody + '
' var outerDiv = '' + innerTable + '
'; $("#ReportViewer1_ctl05 > div").append(outerDiv); } } catch (e) { alert(e); } } function PrintFunc() { var strFrameName = ("printer-" + (new Date()).getTime()); var jFrame = $(""); jFrame .css("width", "1px") .css("height", "1px") .css("position", "absolute") .css("left", "-2000px") .appendTo($("body:first")); var objFrame = window.frames[strFrameName]; var objDoc = objFrame.document; var jStyleDiv = $("").append($("style").clone()); objDoc.open(); objDoc.write($("head").html()); objDoc.write($("#VisibleReportContentReportViewer1_ctl09").html()); objDoc.write("@page { size: auto; margin:5mm } ") objDoc.close(); objFrame.print(); setTimeout(function () { jFrame.remove(); }, (60 * 1000)); }
以下几点生效1. CSS对于背面颜色添加css -webkit-print-color-adjust: exact
。 更多信息 2.打印您需要的图像将此css属性添加到包含图像的img标签或div。 display:block;
或visibility:visible
3. Chrome无法快速加载图像,因此您必须在打印前添加暂停。 这个黑客对我有用。
我得到的最终解决方案:
function PrintFunc() { var strFrameName = ("printer-" + (new Date()).getTime()); var jFrame = $("
Interesting Posts
无法在跨域上使用JSONP发布数据
如何设置jQuery Ajax调用以在Asp.Net MVC中的thair请求头中全局注入AntiForgeryToken
使用Json将带有两个对象的viewmodel传递给控制器
validation预填充的jQuery表单(在第一个字段clear,ASP.NET和unobtrustive上无效)
为什么jQuery不能在Microsoft Visual Studio 2010中运行?
使用ASP.Net MVC从JQuerypost中丢失上下文
jQuery $ .getJSON只为每个控件工作一次。 不再次到达服务器
在javascript asp .net mvc razor中访问模型
Ajax长轮询无法正常工作
如何修改KendoUI DropDownList项目