JS中FireFox新开窗口预览打印处理的方式
仅提供思路,勿喷如下↓
/**
* 打印方法
* @param dom 要被打印的dom元素
* @param parentClassName 该组件的页面根组件class名
* @param pageMargin @page中的maring值
*/
static print = (dom, parentClassName = '', pageMargin = '20px') => {
if (navigator.userAgent.indexOf("Firefox") > ) { let previewDom = document.getElementById('previewDom_serviceCharges');
if (previewDom && previewDom.offsetHeight) {
const imgNumber = parseInt(String(previewDom.offsetHeight / )) + ; let webConfig = (<any>window).config;
let hostAddress = webConfig.isDebug ? `http://${window.location.host}` : `http://${window.location.host}/erpfront/dist`;
let backimg = document.createElement('div'), htmlStr = '';
for (let i = ; i < imgNumber; i++) {
htmlStr += `
<img src='${hostAddress}/assets/images/contract-background.jpg'>
` ;
}
backimg.innerHTML = htmlStr;
backimg.setAttribute('style', `
position: absolute;
bottom: 0px;
padding: 0px;
margin: 0px;
top: ;
z-index: -;
width: %;
`);
//backimg.className = 'backimg';
previewDom.appendChild(backimg);
} const domPrint = document.createElement('div');
domPrint.className = parentClassName;
domPrint.id = 'dom-content-for-print-printutils';
domPrint.innerHTML = dom.outerHTML; let page = window.open('', '_blank');// 打开一个新窗口,用于打印
page.document.body.innerHTML = domPrint.outerHTML;// 写入打印页面的内容 const domPrintStyle = document.createElement('style');
domPrintStyle.id = 'dom-style-for-print-printutils';
domPrintStyle.innerHTML = PrintUtils.getFirefoxStyle(pageMargin); page.document.head.appendChild(domPrintStyle); page.print();// 打印
page.close();// 关闭打印窗口 }
}
static getFirefoxStyle(pageMargin: any) {
PrintUtils.firefoxStyleString = `
@media print {
body {
float: none !important;
position: static !important;
display: inline;
page-break-after: always;
}
body > * {
display: none;
}
body * {
color: # !important;
border-color: # !important;
}
@page {
margin: ${pageMargin}
}
#dom-content-for-print-printutils{
display: block
}
}
.icon {
margin-left: 11px;
font-size: 18px;
color: #32c5d2;
font-weight: ;
cursor: pointer;
}
.hr {
width: %;
color: #f5f5f5;
}
.inputCenter {
position: relative;
top: 20px;
}
.contractPreview {
margin: 0px auto;
width: %;
border: none;
position: relative;
z-index: ;
overflow: hidden;
}
return PrintUtils.firefoxStyleString;
}
JS中FireFox新开窗口预览打印处理的方式的更多相关文章
- Vue.js 3.0 新特性预览
总结起来,Vue 3 以下方面值得我们期待 : 更快 更小 更易于维护 更多的原生支持 更易于开发使用 完整的PPT:docs.google.com/presentatio… Evan 和 Vue 团 ...
- 基于Three.js的360X180度全景图预览插件
基于Three.js的360X180度全景图预览插件 时间 2015-08-12 10:01:10 HTML5中国 原文 http://www.html5cn.org/article-8621-1 ...
- js实现图片上传预览及进度条
原文js实现图片上传预览及进度条 最近在做图片上传的时候,由于产品设计的比较fashion,上网找了比较久还没有现成的,因此自己做了一个,实现的功能如下: 1:去除浏览器<input type= ...
- js实现移动端图片预览:手势缩放, 手势拖动,双击放大...
.katex { display: block; text-align: center; white-space: nowrap; } .katex-display > .katex > ...
- C# 9.0 新特性预览 - 类型推导的 new
C# 9.0 新特性预览 - 类型推导的 new 前言 随着 .NET 5 发布日期的日益临近,其对应的 C# 新版本已确定为 C# 9.0,其中新增加的特性(或语法糖)也已基本锁定,本系列文章将向大 ...
- C# 9.0 新特性预览 - 空参数校验
C# 9.0 新特性预览 - 空参数校验 前言 随着 .NET 5 发布日期的日益临近,其对应的 C# 新版本已确定为 C# 9.0,其中新增加的特性(或语法糖)也已基本锁定,本系列文章将向大家展示它 ...
- C# 9.0 新特性预览 - 顶级语句
C# 9.0 新特性预览 - 顶级语句 前言 随着 .NET 5 发布日期的日益临近,其对应的 C# 新版本已确定为 C# 9.0,其中新增加的特性(或语法糖)也已基本锁定,本系列文章将向大家展示它们 ...
- C# 9.0 新特性预览 - init-only 属性
C# 9.0 新特性预览 - init-only 属性 前言 随着 .NET 5 发布日期的日益临近,其对应的 C# 新版本已确定为 C# 9.0,其中新增加的特性(或语法糖)也已基本锁定,本系列文章 ...
- 20天等待,申请终于通过,安装和体验IntelliJ IDEA新UI预览版
欢迎访问我的GitHub 这里分类和汇总了欣宸的全部原创(含配套源码):https://github.com/zq2599/blog_demos 关于IDEA的预览版 IDEA会启用新的UI,这事情之 ...
随机推荐
- Android源码开发利器——Java源码调试(基于4.1.2)
原文地址:http://blog.csdn.net/jinzhuojun/article/details/8868038 调试Android Java源码 草帽的后花园——Neo 写在之前的 ...
- 9.一次简单的Web作业
Web作业 <!DOCTYPE html> <!-- 作业描述:由于引用了JQuery库,所以请在联网的时候打开该页面. 本次作业是在上次作业的基础上的进一步完善,上次作业页面预留的 ...
- redis 关闭持久化 实验验证
前言 由于redis持久化(RDB),导致我们的线上的磁盘被写炸 线上服务器是 64H 512G 大概写了rdb文件是 200G左右,写满了当时的目录 处理策略 关闭持久化,由于之前的现象表示,我们线 ...
- k8s集群管理注意要点【持续更新】
1.编写pod yaml文件时绑定调度标签,必须要给指定节点绑定标签,否则无法调度到指定节点上,报错: Events: Type Reason Age From Message ---- ------ ...
- 在Windows下编译扩展OpenCV 3.1.0 + opencv_contrib 及一些问题
一.准备工作: 1.下载OpenCV安装包:https://github.com/opencv/opencv 安装过程实际上就是解压过程,安装完成后得到(这里修改了文件名): 2.下载opencv_c ...
- 数据分析师面经一(bk)
2019年第一个数据分析面试: 先说一下心理感受,在BOSS多次看到这个岗位了,但是 呢一直没勇气去投这个岗位.首先毕竟是一个知名企业一万+人的公司,心里多少底气不足(小公司待习惯了吧),而且看岗位要 ...
- 26.Python三目运算符(三元运算符)用法详解
Python 可通过 if 语句来实现三目运算符的功能,因此可以近似地把这种 if 语句当成三目运算符.作为三目运算符的 if 语句的语法格式如下: True_statements if expres ...
- linux端口释放
查看linux连接端口范围 cat /proc/sys/net/ipv4/ip_local_port_range 调低端口释放等待时间 echo 20 > /proc/sys/net/ipv4 ...
- PHP-配置MySQL
安装mysql 修改PHP配置文件 修改php安装路径下 php.ini extension=php_mysqli.dll 在代码路径下添加php文件,在里面编辑 <?php phpinfo() ...
- C++入门经典-例8.10-实现抽象类中的成员函数
1:抽象类通常作为其他类的父类,如果从抽象类派生的子类是抽象类,则子类必须实现父类中的所有纯虚函数.代码如下: // 8.10.cpp : 定义控制台应用程序的入口点. // #include &qu ...