如何用JavaScript将HTML页面转换为高清PDF并提升分辨率?

更新于
2026-09-27 01:26:14
1阅读来源:SEO资源
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计688个文字,预计阅读时间需要3分钟。

如何用JavaScript将HTML页面转换为高清PDF并提升分辨率?

网上关于js实现转pdf的文章中,最终转换的PDF清晰度往往不够理想。今天为大家介绍如何提高js实现转pdf的清晰度。

引入jQuery文件

核心代码

如何用JavaScript将HTML页面转换为高清PDF并提升分辨率?

javascriptfunction convertHtmlToPdf(, fileName) { // 获取body元素 var body=$('body').(); // 创建一个新的iframe var iframe=$(''); iframe.attr('style', 'position:absolute; top:-9999px; left:-9999px;'); // 设置iframe的内容 iframe.attr('srcdoc', body); $('body').append(iframe);

// 获取iframe的内容 var iframeContent=iframe.contents().find('').(); var pdf=new jsPDF({ orientation: 'portrait', unit: 'pt', format: 'a4' });

var imgData=pdf.getImageData(0, 0, pdf.internal.pageSize.getWidth(), pdf.internal.pageSize.getHeight()); pdf.addImage(imgData, 'PNG', 0, 0, pdf.internal.pageSize.getWidth(), pdf.internal.pageSize.getHeight()); pdf.save(fileName); iframe.remove();}

// 调用函数convertHtmlToPdf('您的内容', 'output.pdf');

说明

1. 使用jQuery和jspdf库来实现转pdf功能。

2.将body元素的内容设置为iframe的srcdoc属性,这样iframe中的内容就与原始页面内容相同。

3.通过jspdf获取iframe的canvas数据,并添加到PDF中。

4.保存PDF文件,并删除iframe元素。

网上一些关于js实现html转pdf的文章大部分最终转成的PDF都不够清晰,今天为大家介绍如何提高js实现html转pdf的清晰度

引入js文件

cdn.bootcss.com/jquery/3.4.1/jquery.js

cdn.bootcss.com/jspdf/1.5.3/jspdf.min.js

cdn.bootcss.com/html2canvas/0.5.0-alpha2/html2canvas.min.js

注意事项:

1.生成的pdf中,dom元素间距异常;

2.提高分辨率后,生成的图片有偏差;

html语句:

<div id="demo"> ... </div>

JS代码:

download(){ var element = $("#demo"); // 这个dom元素是要导出pdf的div容器 var w = element.width(); // 获得该容器的宽 var h = element.height(); // 获得该容器的高 var offsetTop = element.offset().top; // 获得该容器到文档顶部的距离 var offsetLeft = element.offset().left; // 获得该容器到文档最左的距离 var canvas = document.createElement("canvas"); var abs = 0; var win_i = $(window).width(); // 获得当前可视窗口的宽度(不包含滚动条) var win_o = window.innerWidth; // 获得当前窗口的宽度(包含滚动条) if(win_o>win_i){ abs = (win_o - win_i)/2; // 获得滚动条长度的一半 } canvas.width = w * 2; // 将画布宽&&高放大两倍 canvas.height = h * 2; var context = canvas.getContext("2d"); context.scale(2, 2); context.translate(-offsetLeft-abs,-offsetTop); // 这里默认横向没有滚动条的情况,因为offset.left(),有无滚动条的时候存在差值,因此 // translate的时候,要把这个差值去掉 html2canvas(element).then(function(canvas) { var contentWidth = canvas.width; var contentHeight = canvas.height; //一页pdf显示html页面生成的canvas高度; var pageHeight = contentWidth / 592.28 * 841.89; //未生成pdf的html页面高度 var leftHeight = contentHeight; //页面偏移 var position = 0; //a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高 var imgWidth = 595.28; var imgHeight = 592.28/contentWidth * contentHeight; var pageData = canvas.toDataURL('image/jpeg', 1.0); var pdf = new jsPDF('', 'pt', 'a4'); //有两个高度需要区分,一个是html页面的实际高度,和生成pdf的页面高度(841.89) //当内容未超过pdf一页显示的范围,无需分页 if (leftHeight < pageHeight) { pdf.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight); } else { // 分页 while(leftHeight > 0) { pdf.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight) leftHeight -= pageHeight; position -= 841.89; //避免添加空白页 if(leftHeight > 0) { pdf.addPage(); } } } pdf.save('我的简历.pdf'); }) }

更多关于Javascript将html转成pdf的文章请大家点击下面的相关链接

本文共计688个文字,预计阅读时间需要3分钟。

如何用JavaScript将HTML页面转换为高清PDF并提升分辨率?

网上关于js实现转pdf的文章中,最终转换的PDF清晰度往往不够理想。今天为大家介绍如何提高js实现转pdf的清晰度。

引入jQuery文件

核心代码

如何用JavaScript将HTML页面转换为高清PDF并提升分辨率?

javascriptfunction convertHtmlToPdf(, fileName) { // 获取body元素 var body=$('body').(); // 创建一个新的iframe var iframe=$(''); iframe.attr('style', 'position:absolute; top:-9999px; left:-9999px;'); // 设置iframe的内容 iframe.attr('srcdoc', body); $('body').append(iframe);

// 获取iframe的内容 var iframeContent=iframe.contents().find('').(); var pdf=new jsPDF({ orientation: 'portrait', unit: 'pt', format: 'a4' });

var imgData=pdf.getImageData(0, 0, pdf.internal.pageSize.getWidth(), pdf.internal.pageSize.getHeight()); pdf.addImage(imgData, 'PNG', 0, 0, pdf.internal.pageSize.getWidth(), pdf.internal.pageSize.getHeight()); pdf.save(fileName); iframe.remove();}

// 调用函数convertHtmlToPdf('您的内容', 'output.pdf');

说明

1. 使用jQuery和jspdf库来实现转pdf功能。

2.将body元素的内容设置为iframe的srcdoc属性,这样iframe中的内容就与原始页面内容相同。

3.通过jspdf获取iframe的canvas数据,并添加到PDF中。

4.保存PDF文件,并删除iframe元素。

网上一些关于js实现html转pdf的文章大部分最终转成的PDF都不够清晰,今天为大家介绍如何提高js实现html转pdf的清晰度

引入js文件

cdn.bootcss.com/jquery/3.4.1/jquery.js

cdn.bootcss.com/jspdf/1.5.3/jspdf.min.js

cdn.bootcss.com/html2canvas/0.5.0-alpha2/html2canvas.min.js

注意事项:

1.生成的pdf中,dom元素间距异常;

2.提高分辨率后,生成的图片有偏差;

html语句:

<div id="demo"> ... </div>

JS代码:

download(){ var element = $("#demo"); // 这个dom元素是要导出pdf的div容器 var w = element.width(); // 获得该容器的宽 var h = element.height(); // 获得该容器的高 var offsetTop = element.offset().top; // 获得该容器到文档顶部的距离 var offsetLeft = element.offset().left; // 获得该容器到文档最左的距离 var canvas = document.createElement("canvas"); var abs = 0; var win_i = $(window).width(); // 获得当前可视窗口的宽度(不包含滚动条) var win_o = window.innerWidth; // 获得当前窗口的宽度(包含滚动条) if(win_o>win_i){ abs = (win_o - win_i)/2; // 获得滚动条长度的一半 } canvas.width = w * 2; // 将画布宽&&高放大两倍 canvas.height = h * 2; var context = canvas.getContext("2d"); context.scale(2, 2); context.translate(-offsetLeft-abs,-offsetTop); // 这里默认横向没有滚动条的情况,因为offset.left(),有无滚动条的时候存在差值,因此 // translate的时候,要把这个差值去掉 html2canvas(element).then(function(canvas) { var contentWidth = canvas.width; var contentHeight = canvas.height; //一页pdf显示html页面生成的canvas高度; var pageHeight = contentWidth / 592.28 * 841.89; //未生成pdf的html页面高度 var leftHeight = contentHeight; //页面偏移 var position = 0; //a4纸的尺寸[595.28,841.89],html页面生成的canvas在pdf中图片的宽高 var imgWidth = 595.28; var imgHeight = 592.28/contentWidth * contentHeight; var pageData = canvas.toDataURL('image/jpeg', 1.0); var pdf = new jsPDF('', 'pt', 'a4'); //有两个高度需要区分,一个是html页面的实际高度,和生成pdf的页面高度(841.89) //当内容未超过pdf一页显示的范围,无需分页 if (leftHeight < pageHeight) { pdf.addImage(pageData, 'JPEG', 0, 0, imgWidth, imgHeight); } else { // 分页 while(leftHeight > 0) { pdf.addImage(pageData, 'JPEG', 0, position, imgWidth, imgHeight) leftHeight -= pageHeight; position -= 841.89; //避免添加空白页 if(leftHeight > 0) { pdf.addPage(); } } } pdf.save('我的简历.pdf'); }) }

更多关于Javascript将html转成pdf的文章请大家点击下面的相关链接