当前位置:首页 > JavaScript

js实现将网页转换成pdf

2026-03-02 03:07:40JavaScript

使用html2pdf.js库

html2pdf.js是一个基于jsPDF和html2canvas的库,能够将HTML元素转换为PDF。安装方式如下:

npm install html2pdf.js

基础代码示例:

import html2pdf from 'html2pdf.js';

const element = document.getElementById('content-to-export');
const opt = {
  margin: 10,
  filename: 'document.pdf',
  image: { type: 'jpeg', quality: 0.98 },
  html2canvas: { scale: 2 },
  jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' }
};

html2pdf().from(element).set(opt).save();

使用jsPDF配合html2canvas

jsPDF是纯客户端生成PDF的库,html2canvas可将DOM元素渲染为canvas。组合使用流程:

import jsPDF from 'jspdf';
import html2canvas from 'html2canvas';

const element = document.getElementById('pdf-content');

html2canvas(element).then(canvas => {
  const imgData = canvas.toDataURL('image/png');
  const pdf = new jsPDF('p', 'mm', 'a4');
  const imgProps = pdf.getImageProperties(imgData);
  const pdfWidth = pdf.internal.pageSize.getWidth();
  const pdfHeight = (imgProps.height * pdfWidth) / imgProps.width;

  pdf.addImage(imgData, 'PNG', 0, 0, pdfWidth, pdfHeight);
  pdf.save('download.pdf');
});

使用window.print()方法

浏览器原生打印功能可通过CSS控制打印样式:

window.print();

配套CSS示例:

@media print {
  body * {
    visibility: hidden;
  }
  #print-area, #print-area * {
    visibility: visible;
  }
  #print-area {
    position: absolute;
    left: 0;
    top: 0;
  }
}

使用Puppeteer(Node.js环境)

服务端渲染方案适合需要后端处理的场景:

const puppeteer = require('puppeteer');

async function generatePDF(url, outputPath) {
  const browser = await puppeteer.launch();
  const page = await browser.newPage();
  await page.goto(url, { waitUntil: 'networkidle0' });
  await page.pdf({
    path: outputPath,
    format: 'A4',
    printBackground: true
  });
  await browser.close();
}

generatePDF('https://example.com', 'output.pdf');

注意事项

  • 动态内容需等待加载完成后再转换
  • 复杂CSS可能需要额外调整打印样式
  • 跨域资源可能影响html2canvas的渲染
  • 大文档需考虑分页处理
  • 中文等非拉丁字符需要引入自定义字体

js实现将网页转换成pdf

标签: 转换成网页
分享给朋友:

相关文章

jquery网页

jquery网页

jQuery 网页开发基础 jQuery 是一个快速、简洁的 JavaScript 库,用于简化 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。以下是一些 jQuery 在网页开发中的核心…

用css制作淘宝网页

用css制作淘宝网页

页面布局设计 淘宝网页通常采用响应式布局,确保在不同设备上都能良好显示。主要结构包括顶部导航栏、搜索栏、轮播图、商品分类展示和页脚。 使用CSS的Flexbox或Grid布局可以快速实现这些结构。F…

css网页尾部制作

css网页尾部制作

CSS网页尾部制作方法 固定定位底部布局 使用position: fixed将尾部固定在页面底部,适用于需要常驻显示的场景。代码示例: footer { position: fixed; b…

vue实现网页分页

vue实现网页分页

Vue 实现网页分页的方法 使用计算属性实现分页 在 Vue 中可以通过计算属性对数据进行分页处理。定义一个 currentPage 和 pageSize,利用计算属性返回当前页的数据。 data…

vue实现网页分享

vue实现网页分享

Vue 实现网页分享功能 网页分享功能通常包括原生分享(调用浏览器或设备的原生分享接口)和自定义分享(通过社交媒体API或链接实现)。以下是几种常见的实现方式: 使用 Web Share API(原…

用vue实现网页

用vue实现网页

Vue.js 网页开发基础步骤 安装 Vue.js 开发环境 通过 npm 或 yarn 安装 Vue CLI(命令行工具),用于快速初始化项目。 npm install -g @vue/cl…