首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用node-qpdf解密节点中的PDF

无法使用node-qpdf解密节点中的PDF
EN

Stack Overflow用户
提问于 2019-12-03 20:59:27
回答 1查看 1.1K关注 0票数 0

我们需要使用node解密受密码保护的PDF文件。我们使用node-qpdf。这是我们的场景。

1)。我们得到了密码保护的PDF文件作为输入。2)。使用QPDF和可用的密码,我们正在尝试解密它。3)。最后,我们得到了损坏的PDF文件。

我们按照给定的链接进行参考: a)。https://www.npmjs.com/package/node-qpdf

在解密部分,我们可以看到以下代码:

代码语言:javascript
复制
var qpdf = require('node-qpdf');
qpdf.decrypt(localFilePath, 'YOUR_PASSWORD_TO_DECRYPT_PDF', outputFilePath);

localFilePath = './myInputFile_WithPassword.pdf'
YOUR_PASSWORD_TO_DECRYPT_PDF = 'test'
outputFilePath = './myoutfileWith_NopasswordProtection.pdf'

在运行相同的之后,我们得到如下错误:

代码语言:javascript
复制
TypeError: callback is not a function
at handleError (/home/runner/node_modules/node-qpdf/index.js:141:5)
at Socket.<anonymous> (/home/runner/node_modules/node-qpdf/index.js:124:5)
at Object.onceWrapper (events.js:286:20)
at Socket.emit (events.js:198:13)
at Socket.EventEmitter.emit (domain.js:448:20)
at addChunk (_stream_readable.js:287:12)
at readableAddChunk (_stream_readable.js:268:11)
at Socket.Readable.push (_stream_readable.js:223:10)
at Pipe.onStreamRead [as onread] (internal/stream_base_commons.js:94:17)

对于回调问题,我们还尝试将代码更改为:

代码语言:javascript
复制
    qpdf.decrypt(localFilePath,'YOUR_PASSWORD_TO_DECRYPT_PDF', (res)=>{
    console.log(res);
    fs.createWriteStream(outputFilePath)       
     });

但得到的错误如下:

代码语言:javascript
复制
"**Error: spawn qpdf ENOENT**"

我们还尝试了以下代码:

=

代码语言:javascript
复制
var exec = require('child_process').exec;
var pdfsourcepath = './myInputFile_WithPassword.pdf'; 
var pdfdestinationpath = './myoutfileWith_NopasswordProtection.pdf'; 
var password = "test";  

var command = 'qpdf --decrypt --password='+password+' '+pdfsourcepath+' '+pdfdestinationpath+'';

exec(command, function (error){
if (error !== null){
console.log('exec error: ' + error);
 } 
else{
    console.log('Your pdf is decrypted successfully.');
    }
   }
 );

=

这段代码正在成功地工作。

现在,我们想使用node模块node-qpdf完全实现相同的功能,但正如前面所解释的那样,这是失败的。

请分享你对这个问题的看法。

我们还在docker镜像上实现了同样的方法,所以如果我们在主服务器上安装qpdf,容器是否能够获得该二进制文件?我看过这篇文章:https://hub.docker.com/r/mgodlewski/qpdf,但我有点困惑。

因此,在qpdf的docker图像方面也可以分享分辨率。

EN

回答 1

Stack Overflow用户

发布于 2020-08-31 10:46:21

我认为只要删除回调参数即可。解密命令可以返回解密文件的输出流。

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59157705

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档