pdfjs 使用指南

PDF.js 是一个功能丰富的库,它提供了许多 API 用于加载、解析、渲染和操作 PDF 文件。以下是 PDF.js 的主要 API 概述,以及一些常用的函数和对象。

PDF.js 主要 API 概述

  • pdfjsLib.getDocument()
    用于加载 PDF 文档的核心函数。返回一个包含 PDF 文档信息的 PDFDocumentProxy 对象。

  • PDFDocumentProxy
    代表整个 PDF 文档的代理对象,包含文档级别的操作方法。

  • PDFPageProxy
    代表 PDF 文档中的单个页面的代理对象,包含与页面渲染、获取文本等相关的操作方法。

  • PDFRenderTask
    表示页面渲染操作的对象,通常是通过调用 page.render() 方法返回的。

  • TextContent
    表示页面的文本内容,包含每个字符的位置和样式信息。

常用的 API 和函数

  1. 加载 PDF 文档
    pdfjsLib.getDocument(src).promise
    参数:
    src: 文件的 URL 或 ArrayBuffer。
    返回:
    Promise:加载完成后返回 PDFDocumentProxy 对象。
  2. PDFDocumentProxy 对象的方法
    • getPage(pageNumber)
      获取指定页码的页面对象。
      pdfDoc.getPage(1).then((page) => { … });
    • numPages
      pdfDoc.numPages
      返回 PDF 文件的总页数。
    • getMetadata()
      获取 PDF 文档的元数据,包括信息和元标签。
      pdfDoc.getMetadata().then((metadata) => { … });
    • getOutline()
      获取 PDF 文档的目录大纲(书签)。
      pdfDoc.getOutline().then((outline) => { … });
    • getAttachments()
      获取 PDF 文档的附件。
      pdfDoc.getAttachments().then((attachments) => { … });
    • getDestinations()
      获取文档中的命名目的地。
      pdfDoc.getDestinations().then((destinations) => { … });
    • getJavaScript()
      获取 PDF 文档中嵌入的 JavaScript。
      pdfDoc.getJavaScript().then((js) => { … });
  3. PDFPageProxy 对象的方法
    • render(renderContext)
      渲染 PDF 页面到指定的渲染上下文中,如 Canvas。
      const renderTask = page.render({
      canvasContext: canvas.getContext(‘2d’),
      viewport: page.getViewport({ scale: 1.0 }),
      });
    • getViewport(scale)
      获取页面视口,允许设置缩放比例。
      const viewport = page.getViewport({ scale: 1.5 });
    • getTextContent()
      获取页面的文本内容,包括每个字符的位置和样式。
      page.getTextContent().then((textContent) => { … });
    • getAnnotations()
      获取页面上的注释和标注信息。
      page.getAnnotations().then((annotations) => { … });
    • getOperatorList()
      获取页面的操作符列表,通常用于自定义渲染。
      page.getOperatorList().then((ops) => { … });
  4. 其他常用对象和方法
    GlobalWorkerOptions.workerSrc
    设置 PDF.js 使用的 Web Worker 文件路径,以提升性能。
    pdfjsLib.GlobalWorkerOptions.workerSrc = ‘path/to/pdf.worker.js’;
    PDFJS.version 和 PDFJS.build
    获取当前 PDF.js 库的版本和构建号。

使用示例

以下是一个完整示例,展示如何使用 PDF.js 加载 PDF 文档并渲染第一页到 Canvas:

<canvas id="pdfCanvas"></canvas>

<script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.16.105/pdf.min.js"></script>
<script>
  const url = 'path/to/your/file.pdf';

  // 设置 PDF.js worker 文件路径
  pdfjsLib.GlobalWorkerOptions.workerSrc = 'https://cdnjs.cloudflare.com/ajax/libs/pdf.js/2.16.105/pdf.worker.min.js';

  // 加载 PDF 文档
  pdfjsLib.getDocument(url).promise.then((pdfDoc) => {
    console.log(`PDF loaded with ${pdfDoc.numPages} pages`);

    // 获取第一页
    return pdfDoc.getPage(1);
  }).then((page) => {
    const viewport = page.getViewport({ scale: 1.5 });
    const canvas = document.getElementById('pdfCanvas');
    const context = canvas.getContext('2d');
    canvas.height = viewport.height;
    canvas.width = viewport.width;

    // 渲染页面到 Canvas
    const renderContext = {
      canvasContext: context,
      viewport: viewport,
    };
    return page.render(renderContext).promise;
  }).then(() => {
    console.log('Page rendered');
  }).catch((error) => {
    console.error('Error loading PDF:', error);
  });
</script>

总结

PDF.js 提供了丰富的 API,可以满足各种 PDF 文档解析、渲染和操作的需求。从简单的渲染到复杂的文本和元数据提取,PDF.js 都可以轻松实现。要全面掌握其功能,可以参考官方文档并结合实际项目中的应用需求进行深入学习。

  • 4
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
PDF.js是一个用于在Web上呈现PDF文档的JavaScript库。你可以使用pdfjs-dist来引入并使用该库。下面是一些基本的使用步骤: 1. 首先,下载pdfjs-dist库。你可以从PDF.js的官方GitHub仓库中获取最新版本的库文件:https://github.com/mozilla/pdf.js/releases 2. 解压缩下载的文件,你将会看到一个名为`pdfjs-dist`的文件夹。 3. 将`pdfjs-dist`文件夹中的`build`文件夹复制到你的项目中。 4. 在你的HTML文件中引入`pdf.js`和`pdf.worker.js`这两个脚本文件。你可以使用以下代码片段: ```html <script src="path/to/pdf.js"></script> <script src="path/to/pdf.worker.js"></script> ``` 请确保将`path/to/`替换为实际的文件路径。 5. 创建一个用于呈现PDF文档的容器元素。例如,你可以在HTML中添加一个带有id属性的div元素: ```html <div id="pdfContainer"></div> ``` 6. 使用JavaScript代码加载并呈现PDF文档。你可以使用以下代码示例: ```javascript // 获取用于呈现PDF的容器元素 const container = document.getElementById('pdfContainer'); // 使用PDF.js加载PDF文档 PDFJS.getDocument('path/to/pdf/document.pdf').promise.then(pdf => { // 获取第一页 pdf.getPage(1).then(page => { // 创建一个canvas元素来显示页面内容 const canvas = document.createElement('canvas'); container.appendChild(canvas); // 设置canvas的尺寸 const viewport = page.getViewport({ scale: 1 }); canvas.width = viewport.width; canvas.height = viewport.height; // 将页面呈现到canvas上 const renderContext = { canvasContext: canvas.getContext('2d'), viewport: viewport }; page.render(renderContext); }); }); ``` 确保将`path/to/pdf/document.pdf`替换为实际的PDF文档路径。 这只是一个简单的示例,你可以根据自己的需求进行进一步的定制和扩展。你可以在PDF.js的官方文档中找到更多关于使用pdfjs-dist的信息:https://mozilla.github.io/pdf.js/
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值