如何解决PDF 文件和 JavaScript:如何检查 PDF 是原生的还是扫描的
我正在使用 JavaScript/HTML/CSS 开发前端应用程序。 此应用程序允许用户上传 PDF 文件。我正在寻找一种使用 JavaScript 的方法来区分 pdf 文件是原生还是扫描的。
原生 PDF 是“天生数字化”文档的 PDF,因为 PDF 是从文档的电子版本创建的,而不是打印出来的。
相比之下,扫描的 PDF 是打印文档的 PDF,例如,当您从打印日志中扫描页面,然后将此文件另存为 PDF 时。请仅提交原生 PDF。
在原生pdf的情况下,我不想允许上传,而在另一种情况下,我想允许上传。 我找到了这个 JavaScript 库:https://pdfjs.express/ 也许这就是我需要的,但我不知道从哪里开始。 在 stackoverflow 中,我找到了一些关于它的内容,但没有找到关于 JavaScript 代码的内容。
解决方法
“原生 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 压缩的。 Reference。此外,PDF 有时可能会混合扫描文本和常规文本。所以没有办法让这个 100% 准确。
JavaScript 访问本地文件存在安全风险。如果您正在运行服务器,则用户可以上传他们的文件,服务器可以使用 Node.js 对其进行解析。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。