js实现将html
使用JavaScript实现HTML转PDF
在JavaScript中,将HTML转换为PDF可以通过多种库实现。以下介绍几种常见方法:
html2pdf.js html2pdf.js是一个流行的开源库,基于jsPDF和html2canvas,能够将HTML元素转换为PDF。
安装:
npm install html2pdf.js
基本用法:
import html2pdf from 'html2pdf.js';
const element = document.getElementById('element-to-export');
const opt = {
margin: 10,
filename: 'myfile.pdf',
image: { type: 'jpeg', quality: 0.98 },
html2canvas: { scale: 2 },
jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' }
};
html2pdf().from(element).set(opt).save();
jsPDF jsPDF是另一个常用的PDF生成库,可以与html2canvas配合使用。
安装:
npm install jspdf html2canvas
示例代码:
import jsPDF from 'jspdf';
import html2canvas from 'html2canvas';
const element = document.getElementById('content-to-print');
html2canvas(element).then(canvas => {
const imgData = canvas.toDataURL('image/png');
const pdf = new jsPDF();
pdf.addImage(imgData, 'PNG', 0, 0);
pdf.save('download.pdf');
});
Puppeteer 对于服务器端转换,Puppeteer是更强大的选择。
安装:
npm install puppeteer
示例代码:
const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
await page.goto('https://example.com', {waitUntil: 'networkidle0'});
await page.pdf({path: 'page.pdf', format: 'A4'});
await browser.close();
})();
注意事项
- 客户端转换可能遇到跨域问题
- 复杂CSS样式可能无法完美呈现
- 大文档转换可能影响性能
- 服务器端转换需要Node.js环境
样式优化建议
为确保PDF输出质量:
- 使用固定尺寸布局
- 避免使用视口单位(vw/vh)
- 明确指定字体大小
- 测试不同缩放比例下的显示效果
以上方法可根据具体需求选择,客户端轻量级转换推荐html2pdf.js,服务器端高质量转换推荐Puppeteer。







