当前位置:首页 > JavaScript

js实现pdf旋转

2026-03-01 14:31:16JavaScript

使用PDF.js实现PDF旋转

PDF.js是一个由Mozilla开发的JavaScript库,用于在浏览器中渲染PDF文档。以下方法可以实现PDF旋转功能:

安装PDF.js

<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.11.338/pdf.min.js"></script>

初始化PDF.js并加载文档

const pdfjsLib = window['pdfjs-dist/build/pdf'];
pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.11.338/pdf.worker.min.js';

async function loadPDF(url) {
  const loadingTask = pdfjsLib.getDocument(url);
  const pdf = await loadingTask.promise;
  return pdf;
}

旋转PDF页面

async function rotatePage(pdf, pageNumber, degrees) {
  const page = await pdf.getPage(pageNumber);
  const viewport = page.getViewport({ rotation: degrees });

  const canvas = document.createElement('canvas');
  const context = canvas.getContext('2d');
  canvas.height = viewport.height;
  canvas.width = viewport.width;

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

  return canvas;
}

使用示例

const pdfUrl = 'example.pdf';
loadPDF(pdfUrl).then(pdf => {
  // 旋转第一页90度
  rotatePage(pdf, 1, 90).then(canvas => {
    document.body.appendChild(canvas);
  });
});

使用浏览器打印API旋转PDF

另一种方法是利用浏览器的打印功能来实现旋转效果:

function rotatePDFForPrint() {
  const style = document.createElement('style');
  style.innerHTML = `
    @page {
      size: auto;
      transform: rotate(90deg);
    }
  `;
  document.head.appendChild(style);
  window.print();
}

使用第三方库PDF-LIB实现旋转

PDF-LIB是一个更现代的JavaScript库,提供更全面的PDF操作功能:

安装PDF-LIB

npm install pdf-lib

旋转PDF代码示例

js实现pdf旋转

import { PDFDocument } from 'pdf-lib';

async function rotatePDFPages(pdfBytes, degrees) {
  const pdfDoc = await PDFDocument.load(pdfBytes);
  const pages = pdfDoc.getPages();

  pages.forEach(page => {
    page.setRotation(degrees);
  });

  return await pdfDoc.save();
}

注意事项

  • 旋转角度应为90度的倍数(0, 90, 180, 270)
  • 旋转操作会增加内存使用,特别是大文档
  • 某些PDF可能包含限制旋转的权限设置
  • 客户端旋转不会修改原始PDF文件,仅影响显示

以上方法提供了不同场景下的PDF旋转解决方案,可根据具体需求选择适合的实现方式。

标签: jspdf
分享给朋友:

相关文章

js实现乘

js实现乘

JavaScript 实现乘法运算 在 JavaScript 中实现乘法运算可以通过多种方式完成,包括基本运算符、函数封装以及高级算法(如大数乘法)。以下是几种常见方法: 使用基本乘法运算符 Jav…

js实现报表

js实现报表

使用JavaScript实现报表 在JavaScript中实现报表功能可以通过多种方式完成,常见的方法包括使用原生JavaScript、第三方库(如Chart.js、D3.js)或结合后端数据渲染。以…

js实现二叉树

js实现二叉树

二叉树的基本概念 二叉树是一种树形数据结构,每个节点最多有两个子节点,分别称为左子节点和右子节点。二叉树的常见操作包括插入、删除、遍历等。 二叉树的节点定义 在JavaScript中,二叉树的节点可…

js树实现

js树实现

树的基本概念 树是一种非线性的数据结构,由节点和边组成。每个节点包含一个值和指向子节点的引用。树的顶部节点称为根节点,没有子节点的节点称为叶节点。 树的实现方式 在JavaScript中,树可以通过…

js实现投球

js实现投球

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

vue实现pdf下载

vue实现pdf下载

Vue 中实现 PDF 下载的方法 使用 pdf-lib 生成并下载 PDF 安装 pdf-lib 库: npm install pdf-lib 示例代码: import { PDFDocumen…