当前位置:首页 > JavaScript

js实现pdf

2026-04-05 19:16:03JavaScript

使用 jsPDF 生成 PDF

安装 jsPDF 库:

npm install jspdf

基本示例代码:

import { jsPDF } from "jspdf";

const doc = new jsPDF();
doc.text("Hello world!", 10, 10);
doc.save("example.pdf");

使用 PDFKit 生成 PDF

安装 PDFKit:

npm install pdfkit

基本示例代码:

const PDFDocument = require('pdfkit');
const fs = require('fs');

const doc = new PDFDocument();
doc.pipe(fs.createWriteStream('output.pdf'));
doc.fontSize(25).text('Some text here', 100, 100);
doc.end();

使用 html2pdf.js 转换 HTML 为 PDF

安装 html2pdf.js:

npm install html2pdf.js

基本示例代码:

import html2pdf from 'html2pdf.js';

const element = document.getElementById('content-to-export');
html2pdf().from(element).save();

使用 Puppeteer 生成 PDF

安装 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: 'networkidle2'});
  await page.pdf({path: 'example.pdf', format: 'A4'});
  await browser.close();
})();

添加样式和格式

jsPDF 添加字体和样式:

doc.setFont("helvetica", "bold");
doc.setFontSize(16);
doc.setTextColor(255, 0, 0);

PDFKit 添加图像:

doc.image('path/to/image.png', {
  fit: [250, 300],
  align: 'center',
  valign: 'center'
});

处理中文显示问题

jsPDF 使用自定义字体:

import { jsPDF } from "jspdf";
import simhei from './simhei-normal';

const doc = new jsPDF();
doc.addFileToVFS("simhei-normal.ttf", simhei);
doc.addFont("simhei-normal.ttf", "simhei", "normal");
doc.setFont("simhei");
doc.text("中文内容", 10, 10);

生成表格

jsPDF 自动表格插件:

import 'jspdf-autotable';

doc.autoTable({
  head: [['Name', 'Email', 'Country']],
  body: [
    ['John', 'john@example.com', 'USA'],
    ['李华', 'lihua@example.com', 'China']
  ]
});

分页控制

PDFKit 分页示例:

doc.addPage();
doc.text('This is page 2', 100, 100);

jsPDF 分页示例:

doc.addPage();
doc.text('This is page 2', 10, 10);

保存选项

设置 PDF 元数据:

doc.setProperties({
  title: 'Sample PDF',
  subject: 'Demo PDF generation',
  author: 'Your Name',
  keywords: 'javascript, pdf',
  creator: 'Your App'
});

浏览器兼容性提示

现代浏览器支持这些库生成 PDF,但需要注意:

  • 某些功能可能需要 polyfill
  • 移动端浏览器可能有不同表现
  • 大型文档可能需要性能优化

这些方法各有优缺点,选择取决于具体需求:

js实现pdf

  • 简单文本:jsPDF
  • 复杂布局:PDFKit
  • HTML转换:html2pdf.js
  • 网页截图:Puppeteer

标签: jspdf
分享给朋友:

相关文章

js实现全选

js实现全选

实现全选功能的方法 在JavaScript中实现全选功能通常涉及监听全选复选框的点击事件,并根据其状态控制其他复选框的选中状态。以下是几种常见的实现方式: 基础DOM操作实现 通过获取所有目标复选框…

js实现验证

js实现验证

验证表单输入 使用JavaScript验证表单输入是常见的需求。可以通过监听表单提交事件,检查输入字段是否符合要求。 document.getElementById('myForm').addEve…

vue实现pdf

vue实现pdf

Vue 中实现 PDF 功能的方法 使用第三方库 vue-pdf 安装 vue-pdf 库: npm install vue-pdf 在组件中使用: <template> <…

js实现点击显示和隐藏

js实现点击显示和隐藏

实现点击显示和隐藏的JavaScript方法 使用classList.toggle切换类名 通过添加/移除CSS类控制元素的显示与隐藏,需提前在CSS中定义隐藏样式(如display: none)。…

js钟表实现

js钟表实现

实现JavaScript钟表的基本方法 创建一个简单的JavaScript钟表可以通过以下步骤完成,涵盖数字和模拟两种形式。 数字钟表实现 HTML结构只需一个显示时间的容器: <div i…

js实现视口

js实现视口

js实现视口检测的方法 使用JavaScript检测元素是否进入视口(viewport)可以通过Intersection Observer API或手动计算元素位置实现。以下是两种常见方法: Int…