我正在使用JavaScript / HTML / CSS开发一个前端应用程序。此应用程序允许用户上传PDF文件。我正在寻找一种方法,使用使用JavaScript,来区分一个pdf文件是原生还是扫描。
本机PDF是指“与生俱来的数字”文档的PDF,因为该PDF是从文档的电子版本而不是从打印创建的。
相比之下,扫描的PDF是打印文档的PDF,例如当您从打印日志中扫描页面,然后将此文件保存为PDF时。请只提交本地PDF。
在原生pdf的情况下,我不想允许上传,而在另一种情况下,我想允许上传。我找到了这个JavaScript库:https://pdfjs.express/,也许这是我所需要的,但我不知道从哪里开始。在堆栈溢出中,我找到了一些关于它的东西,但是没有找到关于JavaScript代码的内容。
发布于 2021-07-09 13:48:56
“本机PDF”几乎总是包含一个/Font对象。
“扫描PDF”可能不会。
在绝大多数情况下,这应适用于:
fetch(url)
.then(response => response.blob())
.then(data => data.text())
.then(data => {
if (/\/Font/.test(data)) {
console.log('Probably native');
} else {
console.log('Probably scanned');
}
})
针对你的评论:
要使这更准确,需要解析整个文件,这并不简单,因为PDF对象通常是LZW压缩的。参考文献。此外,PDF有时会有扫描文本和常规文本的混合。因此,没有办法使这100%的准确性。
JavaScript访问本地文件将面临安全风险。如果您正在运行一个服务器,用户可以上传他们的文件,服务器可以使用Node.js解析它。
https://stackoverflow.com/questions/68317216
复制相似问题