如何使用javascript+;HTML5

如何使用javascript+;HTML5,javascript,html,pdf,Javascript,Html,Pdf,我想使用客户端可用选项(javascript、HTML5或其他)检查PDF的版本,因为我必须验证PDF版本必须为1.3,如果PDF版本为1.3,则仅将其上载到服务器 我知道有各种服务器端选项可用于识别pdf版本,但我希望客户端可用选项,以便用户不需要重新上传整个文件(如果不是1.3版) 提前谢谢。您必须使用 首先创建文件读取器并注册onload处理程序 作为一个例子,PDF的前几个字节应该是纯ASCII,我们可以将它们作为文本读取,应该看起来像%PDF-1.3(其中1.3是版本),所以如果我们得

我想使用客户端可用选项(javascript、HTML5或其他)检查PDF的版本,因为我必须验证PDF版本必须为1.3,如果PDF版本为1.3,则仅将其上载到服务器

我知道有各种服务器端选项可用于识别pdf版本,但我希望客户端可用选项,以便用户不需要重新上传整个文件(如果不是1.3版)

提前谢谢。

您必须使用

首先创建文件读取器并注册
onload
处理程序

作为一个例子,PDF的前几个字节应该是纯ASCII,我们可以将它们作为文本读取,应该看起来像
%PDF-1.3
(其中1.3是版本),所以如果我们得到字节5到7(是的,我知道它说
file.slice(5,8)
我没有编写规范;)

应该相当直接地访问表单验证。留给读者作为练习

警告

这是一个简单的示例,适用于x.x版本,但如果不进行修改,将无法正确读取x.xx版本

constpdfupload=document.getElementById('pdfUpload');
const pdfVersion=document.getElementById('pdfVersion');
//等待输入被“更改”
pdfUpload.addEventListener('change',(e)=>{
//抓取所选文件
让[file]=e.target.files;
如果(!文件)返回;
//使用文件阅读器
let reader=new FileReader();
reader.onload=(e)=>{
//阅读内容
让versionString=e.target.result;
pdfVersion.innerText=versionString;
};
//PDF文件应该以类似“%PDF-1.3”的格式开始
//只抓取我们需要的部分
reader.readAsText(file.slice(5,8));
})

PDF版本:
您必须使用

首先创建文件读取器并注册
onload
处理程序

作为一个例子,PDF的前几个字节应该是纯ASCII,我们可以将它们作为文本读取,应该看起来像
%PDF-1.3
(其中1.3是版本),所以如果我们得到字节5到7(是的,我知道它说
file.slice(5,8)
我没有编写规范;)

应该相当直接地访问表单验证。留给读者作为练习

警告

这是一个简单的示例,适用于x.x版本,但如果不进行修改,将无法正确读取x.xx版本

constpdfupload=document.getElementById('pdfUpload');
const pdfVersion=document.getElementById('pdfVersion');
//等待输入被“更改”
pdfUpload.addEventListener('change',(e)=>{
//抓取所选文件
让[file]=e.target.files;
如果(!文件)返回;
//使用文件阅读器
let reader=new FileReader();
reader.onload=(e)=>{
//阅读内容
让versionString=e.target.result;
pdfVersion.innerText=versionString;
};
//PDF文件应该以类似“%PDF-1.3”的格式开始
//只抓取我们需要的部分
reader.readAsText(file.slice(5,8));
})


PDF版本:
谢谢。。它起作用了。。事实上,经过研究,我知道ReaderAPI有另一种方法readAsBinaryString,那么使用哪种方法更安全呢?readAsText或readAsBinaryString?@user2746557根据MDN文章
readAsBinaryString
未被删除“标准化`并在2012年7月实际被弃用<代码> Read Steste也允许您指定文本编码,除非指定,否则假定“代码> UTF-8/CODE >。@ USER 27 46567在<代码>进一步阅读RealSimiBaseStudio时只允许ASCII编码,这可能对您的需求也足够了。回答你的问题谢谢。。它起作用了。。事实上,经过研究,我知道ReaderAPI有另一种方法readAsBinaryString,那么使用哪种方法更安全呢?readAsText或readAsBinaryString?@user2746557根据MDN文章
readAsBinaryString
未被删除“标准化`并在2012年7月实际被弃用<代码> Read Steste也允许您指定文本编码,除非指定,否则假定“代码> UTF-8/CODE >。@ USER 27 46567在<代码>进一步阅读RealSimiBaseStudio时只允许ASCII编码,这可能对您的需求也足够了。解决你的问题