js打印窗口内容并当窗口内容较长时自动分页
项目环境Angular:
方法1、window.print()
HTML页面上的代码:
<div id="tenementBillTable" class="dialog-content">
<div *ngFor="let item of dataList" class="table-container">
<div class="table-header">电费清单</div>
<div class="table-info">
<div class="clearfix">
<span class="fl">户 名:</span>
<div class="fl">{{item.tenementName}}</div>
</div>
<div class="clearfix">
<span class="fl">电费年月:</span>
<div class="fl">{{item.month}}</div>
</div>
</div>
<div class="table-wrapper">
...
</div>
</div>
</div>
ts文件中:
printList(){
this.tenementBillTable = this._elementRef.nativeElement.querySelector("#tenementBillTable");
document.body.style.visibility = "hidden";
this.tenementBillTable.style.visibility = "visible";
window.print();
document.body.style.visibility = "visible";
}
然后再用css控制打印分页
page-break-before,page-break-after属性控制分页。
不过在实际应用中,我需要打印的是弹框中的内容,使用原生的方法打印,页面的样式无法调整,故放弃使用这个方法。
方法2、jqprint插件
项目中引用jQuery不方便,也没有找到具体文档,所以这个方法还没试过。
方法3、essence-ng2-print基于angular的打印插件。
安装依赖
npm install --save essence-ng2-print@latest
html文件中引入
<essence-ng2-print #print [printHTML]="tenementBillTable" [showBtn]="false" [printCSS]="printCSS"></essence-ng2-print>
在module里面引入
import {EssenceNg2PrintModule} from "essence-ng2-print";
@NgModule({
imports: [
EssenceNg2PrintModule
]
})
组件中引入
import { EssenceNg2PrintComponent } from "essence-ng2-print";
再使用
@ViewChild("print") printComponent: EssenceNg2PrintComponent;
然后需要设置打印时使用的css文件。
this.printCSS = ["assets/css/print.css"];
不过打印的时候也还是会有分页的问题,根据需要,在css文件中添加了page-break-after样式来控制打印分页。
.table-container:nth-child(3n) {
page-break-after: always;
}
其他的设置根据api文档里面可做具体的设置。
https://www.npmjs.com/package/essence-ng2-print
Inputs
mode(?string='iframe') - 打印模式。可选的值:iframe,popup standard(?string='html5') - 弹出窗口的网页文档标准,只适用于mode = 'popup'。可选的值:strict(严格模式),loose(兼容模式),html5(HTML5) popTitle(?string='') - 弹出窗口的标题,只适用于mode = 'popup' showBtn(?boolean=true) - 如果为true将显示打印按钮 btnText(?string='打印') - 打印按钮显示的文本 btnClass(?Object={"print-btn": true,"print-btn-success": true};) - 打印按钮class,传值与[ngClass]一样 printHTML(string|HTMLElement) - 打印的内容 printStyle(?string) - 打印内容style。将写进打印页面的style标签中 printCSS(?Array<string>) - 打印内容css文件路径。将在打印页面生成link标签,支持绝对/相对路径(相对于当前路由地址),建议用绝对路径 Outputs
printComplete - 打印完成的事件
Instance Method
print - 开始打印内容
js打印窗口内容并当窗口内容较长时自动分页的更多相关文章
- 内容高度小于窗口高度时版权div固定在底部
<!doctype html><html><head><meta charset="utf-8"><title>文档内容 ...
- js打印div指定区域内容
<script> function myPrint(obj){ var newWindow=window.open("打印窗口","_blank") ...
- js打印html中的内容
js打印方法 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www. ...
- js打印Iframe中的内容,并且不需要预览。
js打印Iframe中的内容,并且不需要预览 js代码如下: <script type="text/javascript" language="Javascript ...
- 透明窗口(窗口上面文字图片等内容不透明)的实现(使用SetLayeredWindowAttributes API函数)
透明窗口(窗口上面文字图片等内容不透明)的实现 本文讨论通过SetLayeredWindowAttributes来实现本文的目的. SetLayeredWindowAttributes的实现必须将窗口 ...
- js打印保存用户输入的内容
在用js打印局部页面时,遇到用户新输入的内容没能打印出来,经过观察,发现我采用的js打印方法是读取页面源代码,而用户输入的内容如果不将其写入到页面源代码中去,是打印不出来的,下面是我的解决方法: // ...
- WPF 应用 - 通过 js 缩放 System.Windows.Controls.WebBrowser 的内容
1. 前提 原本是在大屏上展示系统,系统有个功能是加载第三方的网站,第三方网站按照大屏的分辨率写死了宽高: 现需要改到小屏展示系统,而这个第三方的网站不能随着 WebBrowser 窗口的尺寸调整网站 ...
- JS实现关闭当前子窗口,刷新父窗口
一.JS实现关闭当前子窗口,刷新父窗口 JS代码如下: <script> function refreshParent() { window.opener.location.href = ...
- html中使用js实现内容过长时部分
有时数据内容太长时我们并不希望其全部显示出来,因为这样可能会导致用于显示这些内容的标签被撑开影响美观. 这时就希望能够实现默认只显示部分内容,在鼠标放上去的时候再将全部的内容显示出来. 这里提供一个简 ...
随机推荐
- http 请求包含哪几个部分(请求行、请求头、请求体)
http协议报文 1.请求报文(请求行/请求头/请求数据/空行) 请求行 求方法字段.URL字段和HTTP协议版本 例如:GET ...
- pytho装饰器参数那些事_inspect.getcallargs
''' Created on Jul 26, 2019 @author: tomcat ''' import inspect def chack_admin(func): def wrapper(*a ...
- VS2010提示error TRK0002: Failed to execute command
转自VC错误:http://www.vcerror.com/?p=277 问题描述: windows8自动更新Microsoft .NET Framework 3.5和4.5.1安全更新程序,今天用V ...
- Vue 创建组件的两种方法
地址:https://blog.csdn.net/cofecode/article/details/74634301 创建组件的两种方法 1.全局注册 2.局部注册 var child=Vue.ext ...
- PHPStorm remoteHost链接FTP成功,但不显示文件目录
============================================== 勾上前两个选项就可以了
- Autofac基本使用
原文:Autofac基本使用 AutoFac是.net平台下的IOC容器产品,它可以管理类之间的复杂的依赖关系.在使用方面主要是register和resolve两类操作. 这篇文章用单元测试的形式列举 ...
- Java使用Jsoup简单解析页面
jsoup 是一款 Java 的 HTML 解析器,可直接解析某个 URL 地址.HTML 文本内容.它提供了一套非常省力的 API,可通过 DOM,CSS 以及类似于 jQuery 的操作方法来取出 ...
- 钉钉机器人SDK 封装预警消息发送工具
1 群机器人 (1) 引言 钉钉聊天群内支持的群机器人, 类似QQ 群机器人, 可以发天气, 讲笑话那样; 钉钉群机器人支持自定义机器人, 允许开发者管理机器人做预警消息通知; ...
- setquota - 设置磁盘配额或时间限制
SYNOPSIS(总览) setquota [ -u | -g ] filesystem-name block-soft block-hard inode-soft inode-hard name.. ...
- Razor 保存动态表格
本文转载自 ASP.NET MVC数组模型绑定 ,https://www.cnblogs.com/choon/p/5429065.html 内容根据评论内容中的方式有所调整 在ASP.NET MVC ...