jsPDF导出PDF宽大于高异常处理

 更新时间:2023年08月25日 10:14:34   作者:DiracKeeko  
这篇文章主要为大家介绍了jsPDF导出PDF宽大于高异常处理,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

情况说明

在将HTML内容区导出PDF时,按width和height的相对大小可以分为瘦长区域(下图蓝框)和扁宽区域(下图红框)两种情况。

我写的pdf导出逻辑在导出瘦长区域时没问题,在导出扁宽区域时,会出现PDF内容横向被截断的情况(横向展示不全)。

举例如下面两张图片。

问题所在

html导出pdf经过了2个步骤:

1.html -> img (没问题)

2.img -> pdf (出了问题)

将img转为pdf并导出用的是jsPDF。

jsPDF使用时分为3个步骤:

1.const pdf = new jsPDF(args); 创建一个指定尺寸的空白的PDF,把它想象成画布。

2.pdf.addImage(args); args有一系列的参数,在画布的指定位置放入图片。

3.pdf.save(fileName); 导出pdf。

问题出在第1步,创建空白的pdf画布。

new jsPDF(options) 官方文档 

https://artskydj.github.io/jsPDF/docs/jsPDF.html

关注format,官方文档里写了支持array,形如[595.28, 841.89] (问题就在这)

const pdf = new jsPDF("", "pt", pageSizeArr);

若 我们想要一个宽1000,高500的画布

很自然的想到pageSizeArr = [1000, 500]

但这样的输入,JSPDF会生成一个 宽500 高1000的画布

也就是说

pageSizeArr = [1000, 500]
或 pageSizeArr = [500, 1000]

jsPDF会都生成 宽500 高1000的画布 (!!!!!!!!)

在项目中,我的pageSizeArr设置如下

pageSizeArr = [scrollWidth, scrollHeight];

这种情况下,如果真的需要导出一个扁宽的HTML 内容区, (scrollWidth > scrollHeight)

画布的尺寸和HTML的内容区尺寸对不上, HTML的右侧会被截断。

解决方案

scrollWidth > scrollHeight的时候,做一个A4纸比例的画布 宽:高 = 1 : 1.414 (简化为1 : 1.4)

且 宽度 等于 scrollWidth。

pageSizeArr = [scrollWidth, 1.4 * scrollWidth];

以上就是jsPDF导出PDF宽大于高异常处理的详细内容,更多关于js导出PDF宽高异常处理的资料请关注脚本之家其它相关文章!

相关文章

  • 详解babel是如何将class语法糖转换为es5的语法

    详解babel是如何将class语法糖转换为es5的语法

    这篇文章主要详细介绍了babel是如何将class语法糖转换为es5的语法,文中通过代码示例给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-02-02
  • 深入理解JavaScript系列(46):代码复用模式(推荐篇)详解

    深入理解JavaScript系列(46):代码复用模式(推荐篇)详解

    这篇文章主要介绍了深入理解JavaScript系列(46):代码复用模式(推荐篇)详解,本文讲解了原型继承、复制所有属性进行继承、混合(mix-in)、借用方法等模式,需要的朋友可以参考下
    2015-03-03
  • javascript如何实现create方法

    javascript如何实现create方法

    这篇文章主要介绍了javascript如何实现create方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2019-11-11
  • JavaScript常见手写题超全汇总

    JavaScript常见手写题超全汇总

    作为前端开发,JS是重中之重,下面这篇文章主要给大家介绍了关于JavaScript常见手写题的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-12-12
  • uniapp实现微信公众号支付的方法步骤

    uniapp实现微信公众号支付的方法步骤

    本文主要介绍了uniapp实现微信公众号支付的方法步骤,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • JavaScript数据类型检测实现方法详解

    JavaScript数据类型检测实现方法详解

    Javascript中检查数据类型一直是老生常谈的问题,类型判断在web开发中也有着非常广泛的应用,所以下面这篇文章主要给大家介绍了关于JS数据类型检测的那些事,需要的朋友可以参考下
    2022-11-11
  • js下用eval生成JSON对象

    js下用eval生成JSON对象

    在使用eval生成JSON对象时,一定要注意添加一对圆括号
    2010-09-09
  • Javascript 函数parseInt()转换时出现bug问题

    Javascript 函数parseInt()转换时出现bug问题

    天测试的测出来的。parseInt(1.13*100),实际返回值是112,下面有个示例,大家可以看看下
    2014-05-05
  • JS原型与原型链的深入理解

    JS原型与原型链的深入理解

    这篇文章主要和大家一起深入理解JS原型与原型链,原型是JavaScript中一个比较难理解的概念,本文为大家解决这个难题,感兴趣的小伙伴们可以参考一下
    2017-02-02
  • javascript 短路法代码精简

    javascript 短路法代码精简

    简化IF-ELSE 高效,但请灵活使用
    2009-08-08

最新评论