浏览器打印,Chrome网页打印中的宽度控制

Chrome可直接将网页保存(打印)为PDF(无需安装Adobe)

Chrome在保存为PDF文件时,默认纸张大小是A4。若布局为纵向,显示大小为210mm×297mm;若布局为横向,显示大小为297mm×210mm。

Windows下的网页打印的默认DPI为96dpi。按照1英寸=25.41mm换算,A4纸张可实际显示的像素宽度为794px×1123px,即打印网页的宽度为794px。

实际打印还会有页边距,如果页边距为5mm(窄边距),网页内容最大宽度约750px,若页边距为19mm(默认边距),网页内最大元素分辨率约650px。

基于此,很多网页在打印时会变形,因为打印时内容容器的宽度只有750px或者650px,但现在的网页内容大多都是基于至少1000px以上宽度设计的,这时候浮动容器会错位、超过宽度的图片和表格会显示不完全。

解决办法有两个。

其一,锁定网页的宽度。

当网页宽度被指定时,页面将被自动缩放。这可以保证PDF文件和浏览器上显示的效果一模一样。这时候打印出的PDF文件仍是A4大小。

其二,指定打印纸张大小。

@media print {
    @page {
        size: 210mm 297mm;  /* or size: 794px 1123px;   */
        size: 297mm 420mm;  /* or size: 1123px 1588px;  */
    }
}

原文:http://www.yujianlong.com/qianduan/7.html

第一种方法没有试验过,我是使用的第二种方法:

/* 通过分别设置左页和右页不同的左右页面距,为装订边留出更多的空间 */
   @media print {
    @page {
      size: 1800px 1800px;  /* or size: 1123px 1588px;  */
 
    }
    /* 设置 body 元素的 margin 来保证打印出来的页面带有外边距 */
    body {
      margin: 1cm;
    }
  }

我在做项目时用到的调用浏览器打印的方法。

function Print(){
		//根据div标签ID拿到div中的局部内容
      	var newStr=document.getElementById("opt-content").innerHTML;
      	var oldStr=document.body.innerHTML;
      	//把获取的局部div内容赋给body标签, 相当于重置了 body里的内容
      	document.body.innerHTML=newStr;
      	//调用打印功能
    	window.print();
    	//重新给页面内容赋值;
      	document.body.innerHTML=oldStr;
      	return location.reload();
    }

调用浏览器打印会比一般打印的方法简单很多。Return location.reload在这里是刷新的意思,如果没有这句代码打印完后要重新刷新一次网页才能再次打印

思路:先用一个div把要打印的页面包裹起来,再将打印的部分转换成HTML格式,然后触发打印事件

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值