当前位置:首页 > 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
分享给朋友:

相关文章

css3结合js制作

css3结合js制作

CSS3 结合 JavaScript 制作动态效果 CSS3 和 JavaScript 结合可以实现丰富的动态效果,包括动画、交互和响应式设计。以下是几种常见的实现方式: CSS3 动画与 Java…

js实现打印

js实现打印

使用window.print()方法实现打印 在JavaScript中,可以通过调用window.print()方法直接触发浏览器的打印功能。这会打开系统的打印对话框,用户可以选择打印机和设置打印选项…

使用js实现

使用js实现

使用JavaScript实现 JavaScript可以通过Math.random()函数生成随机数,结合其他方法可以实现多种随机数生成需求。 // 生成0到1之间的随机小数 const random…

利用js实现

利用js实现

使用 JavaScript 实现 在 JavaScript 中,可以通过多种方式实现功能,具体取决于需求。以下是几种常见的方法: 方法一:使用原生 JavaScript // 示例代码 funct…

js实现vue路由

js实现vue路由

Vue 路由的基本实现 在 Vue.js 中实现路由功能通常使用 Vue Router 库。Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。 安装 Vue R…

js实现视口

js实现视口

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