You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

NodeJS读取PDF文档属性:需获取文档限制摘要

解决Node.js读取PDF文档限制属性的方案

我之前也碰到过类似的需求,要读取PDF里的文档限制这类深层属性,file-metadata确实只能搞定基础文件信息,给你推荐几个靠谱的Node.js模块,亲测能用:

1. pdf-lib(推荐,功能全面)

这个模块不仅能读取PDF元数据,还支持修改PDF,处理权限相关的属性很顺手。

首先安装:

npm install @pdf-lib/core

然后用以下代码读取文档限制:

const { PDFDocument } = require('@pdf-lib/core');
const fs = require('fs');

async function readPDFRestrictions(pdfPath) {
  const pdfBytes = fs.readFileSync(pdfPath);
  const pdfDoc = await PDFDocument.load(pdfBytes);
  
  // 获取文档权限信息
  const permissions = pdfDoc.getPermissions();
  
  console.log('文档限制摘要:');
  console.log(`是否允许打印: ${permissions.canPrint()}`);
  console.log(`是否允许修改内容: ${permissions.canModify()}`);
  console.log(`是否允许复制内容: ${permissions.canCopy()}`);
  console.log(`是否允许添加注释: ${permissions.canAnnotate()}`);
}

readPDFRestrictions('./your-document.pdf');

2. pdf-parse(轻量解析)

如果只需要读取元数据和权限,这个轻量模块足够用,不需要额外的依赖。

安装:

npm install pdf-parse

示例代码:

const pdfParse = require('pdf-parse');
const fs = require('fs');

async function getPDFPermissions(pdfPath) {
  const dataBuffer = fs.readFileSync(pdfPath);
  const pdfData = await pdfParse(dataBuffer);
  
  // 权限信息通常在Info对象的Permissions字段里
  if (pdfData.info && pdfData.info.Permissions) {
    const permissions = pdfData.info.Permissions;
    console.log('文档权限字段:', permissions);
    // 可以根据权限值解析具体限制,比如不同的数字对应不同权限
  }
}

getPDFPermissions('./your-document.pdf');

3. hummusjs(底层操作)

这个模块偏向底层PDF操作,适合需要更精细控制的场景,能直接读取PDF的字典信息。

安装:

npm install hummus

示例代码:

const hummus = require('hummus');
const fs = require('fs');

function readPDFRestrictionsHummus(pdfPath) {
  const pdfReader = hummus.createReader(pdfPath);
  const catalog = pdfReader.getCatalogDictionary();
  const permissionsDict = catalog.get('Perms');
  
  if (permissionsDict) {
    console.log('文档限制详情:');
    console.log(`打印权限: ${permissionsDict.get('Print')}`);
    console.log(`修改权限: ${permissionsDict.get('Modify')}`);
    console.log(`复制权限: ${permissionsDict.get('Copy')}`);
  }
}

readPDFRestrictionsHummus('./your-document.pdf');

注意事项

  • 加密的PDF需要先解密才能读取这些属性,部分模块支持传入密码进行解密操作;
  • 不同PDF的权限字段命名可能略有差异,实际使用时可以根据PDF的结构调整代码。

内容的提问来源于stack exchange,提问作者naresh

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 08:28:14