跳到主要内容

检查 PDF 表单

PDF 表单在表单元数据方面与标准 PDF 文件有所不同。这种元数据决定了打开文件的编辑器类型:是表单编辑器还是标准 PDF 编辑器。

为了区分标准 PDF 文件和 PDF 表单,可以使用检查函数。这些函数会读取文件的前 300 个字节,并检查其中是否存在"ONLYOFFICEFORM"。如果为true,那么这就是一个 PDF 表单。否则,它就是一个标准的 PDF 文件。

备注

通过指定document.isForm参数,您可以加快文件的打开速度。

以下示例展示了不同编程语言的检查函数。

function isExtendedPDFFile(text) {
if (!text) {
return false;
}
const indexFirst = text.indexOf("%\u00CD\u00CA\u00D2\u00A9\u000D");
if (indexFirst === -1) {
return false;
}
let pFirst = text.slice(indexFirst + 6);
if (!(pFirst.lastIndexOf("1 0 obj\u000A<<\u000A", 0) === 0)) {
return false;
}
pFirst = pFirst.slice(11);
const signature = "ONLYOFFICEFORM";
const indexStream = pFirst.indexOf("stream\u000D\u000A");
const indexMeta = pFirst.indexOf(signature);
if (indexStream === -1 || indexMeta === -1 || indexStream < indexMeta) {
return false;
}
let pMeta = pFirst.slice(indexMeta);
pMeta = pMeta.slice(signature.length + 3);
let indexMetaLast = pMeta.indexOf(" ");
if (indexMetaLast === -1) {
return false;
}
pMeta = pMeta.slice(indexMetaLast + 1);
indexMetaLast = pMeta.indexOf(" ");
if (indexMetaLast === -1) {
return false;
}
return true;
}