Node.js AWS Lambda环境下PDF文本永久红隐的可行方案咨询
Node.js环境下AWS Lambda实现PDF文本永久红隐的可行方案
一、直接实现文本永久红隐的纯Node.js方案
1. hummusjs + pdf-parse组合
利用hummusjs的PDF修改能力,结合pdf-parse提取文本坐标,直接在PDF对应位置绘制不透明红色矩形覆盖目标文本,生成的PDF中文本无法被选中或复制,实现永久红隐:
- 步骤:
- 使用
pdf-parse解析PDF,提取需要红隐的文本块及其坐标信息 - 用hummusjs打开原PDF,遍历目标页面,在对应坐标绘制红色填充矩形
- 保存修改后的PDF文件
- 使用
- 优势:纯Node.js依赖,无外部系统依赖,适配Lambda环境,处理速度快
2. LibreOffice层 + docx库组合
通过AWS Lambda部署LibreOffice层(官方社区有现成可复用的层),将PDF转成DOCX格式后处理,再转回PDF:
- 步骤:
- 用
libreoffice-convert将PDF转换为DOCX - 使用
docx库定位目标文本,添加红色底色并设置文本不可编辑 - 再将修改后的DOCX转回PDF
- 用
- 优势:LibreOffice对复杂PDF的兼容性远优于纯JS库,红隐效果稳定永久
二、无外部依赖的PDF转图片方案(解决pdf-lib局限)
优化PDF.js + canvas的组合,解决原生PDF.js渲染可靠性差的问题:
- 核心思路:启用PDF.js的字体加载配置,结合
canvas库渲染PDF页面为图片,再将图片合成新PDF - 关键代码示例:
const pdfjsLib = require('pdfjs-dist/legacy/build/pdf'); const { createCanvas } = require('canvas'); const { PDFDocument } = require('pdf-lib'); // 配置PDF.js worker pdfjsLib.GlobalWorkerOptions.workerSrc = require.resolve('pdfjs-dist/legacy/build/pdf.worker.entry'); async function pdfToImagePdf(pdfBuffer) { const doc = await pdfjsLib.getDocument({ data: pdfBuffer }).promise; const newPdf = await PDFDocument.create(); for (let i = 1; i <= doc.numPages; i++) { const page = await doc.getPage(i); const viewport = page.getViewport({ scale: 2 }); // 提升渲染分辨率 const canvas = createCanvas(viewport.width, viewport.height); const ctx = canvas.getContext('2d'); // 启用字体渲染,提升兼容性 const renderContext = { canvasContext: ctx, viewport: viewport, disableFontFace: false, useSystemFonts: true }; await page.render(renderContext).promise; const imageBuffer = canvas.toBuffer('image/png'); const image = await newPdf.embedPng(imageBuffer); const pageWidth = viewport.width / 2; // 对应scale=2的缩放,还原原尺寸 const pageHeight = viewport.height / 2; const newPage = newPdf.addPage([pageWidth, pageHeight]); newPage.drawImage(image, { x: 0, y: 0, width: pageWidth, height: pageHeight }); } return await newPdf.save(); }
- 优势:纯Node.js依赖,无需安装Ghostscript或GraphicsMagick,优化后对多数PDF的渲染兼容性大幅提升,生成的图片PDF可实现文本永久红隐
内容的提问来源于stack exchange,提问作者Mahedi Hassan
相关产品推荐
相关产品推荐

