当前位置:首页 > JavaScript

js实现将网页转换成pdf

2026-03-02 03:07:40JavaScript

使用html2pdf.js库

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

npm install html2pdf.js

基础代码示例:

js实现将网页转换成pdf

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控制打印样式:

js实现将网页转换成pdf

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的渲染
  • 大文档需考虑分页处理
  • 中文等非拉丁字符需要引入自定义字体

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

相关文章

css制作响应网页

css制作响应网页

响应式网页设计基础 使用CSS制作响应式网页的核心是让页面能够根据不同设备的屏幕尺寸自动调整布局和样式。主要通过媒体查询(Media Queries)、弹性布局(Flexbox)和网格布局(Grid)…

用css制作淘宝网页

用css制作淘宝网页

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

vue实现网页分享

vue实现网页分享

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

vue是实现网页的

vue是实现网页的

Vue 的基本概念 Vue 是一个用于构建用户界面的渐进式 JavaScript 框架,专注于视图层,易于与其他库或现有项目整合。 Vue 的核心功能 响应式数据绑定:数据变化时,视图自动更新。…

react实现网页打印

react实现网页打印

React 实现网页打印的方法 在 React 中实现网页打印功能可以通过多种方式完成,以下是几种常见的方法: 使用 window.print() 方法 调用浏览器原生的 window.print(…

react实现网页跳转

react实现网页跳转

使用 react-router-dom 进行页面跳转 安装 react-router-dom 库: npm install react-router-dom 在根组件(如 App.js)中配置路由:…