html转成pdf 的实践过程以及坑

最近碰到一个需求需要,把页面直接转为文件,最后决定把页面转为pdf最为合适。

正好github有这个ng指令https://github.com/hearsid/ng-html-to-pdf-save,于是便直接拿来用。

该实现主要利用html2canvas.js以及jsPDF。前者将dom直接转换为canvas,后者则生成pdf文件,整个流程都在前端完成。

其中碰到的最大的一个坑,便是因为我需要转为的html为一个模态框modal中的页面,但是只有可视化区域才能截图并生产pdf,这样肯定是有问题的。原来是因为position: absolute 和 position:fixed的元素就会有这样的问题存在。因此需要克隆元素,并将克隆的元素position设置为relative,最后在利用document.body.removeChild();清除掉,便可以解决这个问题。

                        //为了确保absolute定位的元素也能购全部截取,而不是只是可视化区域才能截取
    					//所以这里克隆了元素,设为relative定位
    					function hiddenClone(element){
    						  
    						  var clone = element.cloneNode(true);
    						
    						  var style = clone.style;
    						  style.position = 'relative';
    						  style.top = window.innerHeight + 'px';
    						  style.left = 0;
    						  style.width= "900px" ;
    						  style.boxShadow= 'none' ;
    						 
    						  document.body.appendChild(clone);
    						  return clone;
    					}

 

转载于:https://my.oschina.net/hengwangm/blog/1499753

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值