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实现内容过长时部分
有时数据内容太长时我们并不希望其全部显示出来,因为这样可能会导致用于显示这些内容的标签被撑开影响美观. 这时就希望能够实现默认只显示部分内容,在鼠标放上去的时候再将全部的内容显示出来. 这里提供一个简 ...
随机推荐
- mac使用相关笔记
1.软件提示已损坏,需要移到废纸篓的解决方法 -> sudo spctl --master-disable xattr -r -d com.apple.quarantine <path&g ...
- UE编辑器
引用ue的js 下载地址http://pan.baidu.com/s/1gdrQ35L <script type="text/javascript" src="__ ...
- 【SpringBoot】SpringBoot的基础,全面理解bean的生命周期
前言 前段时间直接上手使用springboot开发了一个数据平台的后台部分,但是自身对于springboot的原理和过程还不是很清晰,所以反过来学习下springboot的基础. 大家都知道sprin ...
- TestStack.White安装详解
一.安装 NuGet TestStack.White是通过NuGet进行安装的.NuGet最低支持VS2010.我使用的VS2015. 安装方式一 :从Visual Studio的工具->扩展和 ...
- spring controller使用了@ResponseBody却返回xml
使用ajax请求数据 $.ajax({ url:message.rootPath +"/sendMessage.xhtml", type:"post", dat ...
- Kindeditor在线文本编辑器过滤HTML
KindEditor.ready(function (K) { editor = K.create('textarea[name="content"]', { filterMode ...
- nginx 日志统计接口每个小时访问量
指定时间段增量统计nginx日志不同接口的访问量: #!/bin/bash#此脚本用于统计nginx日志当前时间15分钟之内不同接口(URL)的访问量统计LOG=/usr/local/nginx/lo ...
- Python 学习笔记14 类 - 使用类和实例
当我们熟悉和掌握了怎么样创建类和实例以后,我们编程中的大多数工作都讲关注在类的简历和实例对象使用,修改和维护上. 结合实例我们来进一步的学习类和实例的使用: 我们新建一个汽车的类: #-*- codi ...
- luoguP1313 计算系数 题解(NOIP2011)
P1313 计算系数 题目 #include<iostream> #include<cstdlib> #include<cstdio> #include<cm ...
- python面试题之有没有一个工具可以帮助查找python的bug和进行静态的代码分析?
pycheck pylint 本文首发于python黑洞网,博客园同步更新