在我的网络应用程序中,用户只能上传图片和PDF。它们从前端到后端都是base64字符串。在那里,在Node.js 8.9服务器上,我想做一些健全性检查,即测试我得到的base64字符串实际上只是图像和PDF - 而不是别的。
对于图像,这很容易。使用带有failOnError
true的尖锐npm模块,给了我我想要的内容:base64字符串中的一个错误的字符将导致失败并且输入将被拒绝。
然而,对于PDF,我找不到类似的解决方案。我已经尝试过pdf2json(无论如何我的要求似乎已经过功能了),但是通过转换为缓冲区传递base64字符串失败了。
答案 0 :(得分:0)
我终于找到了一个完全符合我期望的NPM模块:hummusJS。 以下代码适用于我的测试:有效的PDF被接受,而无效的字符串被拒绝。到目前为止,没有发现任何性能影响。
var hummus = require('hummus');
let pdfBase64String = '<<base64 string here>>';
let bufferPdf;
try {
bufferPdf = Buffer.from(pdfBase64String, 'base64');
const pdfReader = hummus.createReader(new hummus.PDFRStreamForBuffer(bufferPdf));
var pages = pdfReader.getPagesCount();
if(pages > 0) {
console.log("Parsable with Hummus and more than 0 pages. Seems to be a valid PDF!");
}
else {
console.log("Unexpected outcome for number o pages: '" + pages + "'");
}
}
catch(err) {
console.log("ERROR while handling buffer of pdfBase64 and/or trying to parse PDF: " + err);
}