当前位置:首页 > JavaScript

js实现pdf打印

2026-04-04 14:01:05JavaScript

使用 window.print() 方法打印 PDF

通过浏览器原生打印功能实现 PDF 打印,适用于简单内容打印。

function printPDF() {
  window.print();
}

调用 printPDF() 会触发浏览器打印对话框,用户可选择打印为 PDF。

使用 jsPDF 库生成 PDF

jsPDF 是一个流行的 JavaScript 库,用于生成 PDF 文件。

// 安装 jsPDF
// npm install jspdf

import { jsPDF } from "jspdf";

function generatePDF() {
  const doc = new jsPDF();
  doc.text("Hello world!", 10, 10);
  doc.save("document.pdf");
}

使用 html2pdf.js 转换 HTML 为 PDF

html2pdf.js 可将 HTML 元素转换为 PDF 文件。

js实现pdf打印

// 安装 html2pdf.js
// npm install html2pdf.js

import html2pdf from "html2pdf.js";

function convertToPDF() {
  const element = document.getElementById("content-to-print");
  html2pdf().from(element).save();
}

使用 PDFKit 生成复杂 PDF

PDFKit 适用于需要复杂布局的 PDF 生成。

// 安装 PDFKit
// npm install pdfkit

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

function createPDF() {
  const doc = new PDFDocument();
  doc.pipe(fs.createWriteStream("output.pdf"));
  doc.fontSize(25).text("Some text", 100, 100);
  doc.end();
}

使用浏览器打印样式优化

通过 CSS 媒体查询优化打印输出效果。

js实现pdf打印

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

处理打印分页问题

使用 CSS 控制分页行为,避免内容被截断。

.page-break {
  page-break-after: always;
}

.no-break {
  page-break-inside: avoid;
}

使用 PDF.js 显示和打印 PDF

Mozilla 的 PDF.js 可用于在网页中显示和打印 PDF 文件。

// 引入 PDF.js 库
pdfjsLib.getDocument("document.pdf").promise.then(function(pdf) {
  pdf.getPage(1).then(function(page) {
    const viewport = page.getViewport({ scale: 1.0 });
    const canvas = document.getElementById("pdf-canvas");
    const context = canvas.getContext("2d");
    canvas.height = viewport.height;
    canvas.width = viewport.width;

    page.render({
      canvasContext: context,
      viewport: viewport
    });
  });
});

使用服务器端生成 PDF

对于复杂需求,可考虑使用服务器端解决方案如:

  • Node.js 的 Puppeteer
  • PHP 的 TCPDF
  • Python 的 ReportLab

这些方法通常能提供更稳定的打印质量和更丰富的功能。

标签: jspdf
分享给朋友:

相关文章

js实现复制功能

js实现复制功能

使用 document.execCommand 方法 这种方法适用于较旧的浏览器,但在现代浏览器中可能被逐步淘汰。通过创建一个临时的 textarea 元素,将文本内容放入其中,然后执行复制命令。…

js jquery

js jquery

jQuery 简介 jQuery 是一个快速、简洁的 JavaScript 库,简化了 HTML 文档遍历、事件处理、动画设计和 Ajax 交互。它兼容多种浏览器,提供易于使用的 API,使开发者能够…

js实现自举

js实现自举

实现 JavaScript 自举的方法 JavaScript 自举(Bootstrap)通常指通过 JavaScript 动态加载自身或依赖的脚本,实现运行时环境的初始化或扩展。以下是几种常见实现方式…

js实现投球

js实现投球

实现投球动画的基本思路 使用JavaScript和CSS动画结合的方式模拟投球效果。核心是通过改变元素的位置、旋转和缩放属性,配合定时器或CSS过渡实现平滑动画。 创建基础HTML结构 <di…

js 实现跳转

js 实现跳转

使用 window.location.href 进行跳转 通过修改 window.location.href 可以跳转到指定 URL,浏览器会加载新页面: window.location.hre…

js分页实现

js分页实现

分页的基本原理 分页的核心是通过计算当前页码和数据偏移量,从服务器或本地数据中截取对应范围的数据进行展示。通常需要以下参数:当前页码(currentPage)、每页条数(pageSize)、总数据量(…