Javascript importanotcommand返回未定义

Javascript importanotcommand返回未定义,javascript,pdftron,Javascript,Pdftron,我试图通过importanotcommand()方法使用xfdf格式导入徒手批注,但有时会得到一个未定义的返回值,我使用getAnnotCommand()方法生成这些字符串 xfdf字符串由getAnnotCommand()方法生成,我将该字符串记录到控制台,以确保它看起来正确。注释只能可靠地加载到文档的前两页 导入代码时,积压包含无法加载的注释: const backlog=docModel.prototype.annots[webviewer.id].backlog const backup

我试图通过importanotcommand()方法使用xfdf格式导入徒手批注,但有时会得到一个未定义的返回值,我使用getAnnotCommand()方法生成这些字符串

xfdf字符串由getAnnotCommand()方法生成,我将该字符串记录到控制台,以确保它看起来正确。注释只能可靠地加载到文档的前两页

导入代码时,积压包含无法加载的注释:

const backlog=docModel.prototype.annots[webviewer.id].backlog
const backup=docModel.prototype.annots[webviewer.id].backup
让annots=annotationManager.ImportAnotations(备份)
annotationManager.drawAnnotationsFromList(annots)
设tmp=[];
if(Array.isArray(backlog)){
而(backlog.length>0){
const backlogObj=backlog.pop()
if(backlogObj.xfdf){
const xfdf=backlogObj.xfdf
const annot=annotationManager.importanotcommand(xfdf)[0]
如果(annot==未定义){
tmp.推送(后标识)
}否则{
}
log('loading annot:',annot',\nxfdf:',xfdf)
}else if(backlogObj.hide){
annotationManager.HideAnotation(annotationManager.getAnnotationById(backlogObj.id))
}
}
docModel.prototype.annots[webviewer.id].backlog=tmp
失败的xfdf示例:


317.39,711.72;317.39,711.72;317.39,711.72;317.39,711.72;318.32,711.72;320.19,711.72;322.05,711.72;323.92,711.72;325.79,711.72;327.65,710.79;328.59,710.79;329.52,710.79;330.46,709.85;331.39,708.92;332.32,707.05;333.26,704.25;334.19,701.45;334.19,698.65;334.19,694.92;334.19,692.12;333.26,688.38;331.39,685.58;329.52,682.78;328.59,679.98;325.79,675.31;322.05,671.58;318.32,666.91;314.59,661.31;311.79,656.64;309.92,653.84;308.05,650.11;308.05,647.31;307.12,644.51;307.12,642.64;308.05,640.77;308.05,639.84;308.98,638.91;309.92,637.97;310.85,637.04;312.72,636.11;315.52,635.17;318.32,635.17;322.99,634.24;327.65,634.24;331.39,634.24;335.12,634.24;337.92,634.24;341.66,634.24;343.52,634.24;344.46,634.24;344.46,634.24
工作的示例xfdf:

?xml version=“1.0”encoding=“UTF-8”>
329.52,742.53;330.46,742.53;330.46,741.59;330.46,739.72;330.46,737.86;330.46,733.19;330.46,726.66;331.39,717.32;331.39,707.99;331.39,698.65;331.39,692.12;331.39,674.38;331.39,667.85;331.39,663.18;331.39,661.31;331.39,659.44;331.39,658.51;331.39,657.58;331.39,657.58
下面是我收到的一条错误消息,但它不会在每次我返回未定义时发出

CoreControls.js:989 exportAnnotations was called before all annotations were loaded.
Gq  @   CoreControls.js:989
(anonymous) @   CoreControls.js:1479
Promise.then (async)        
(anonymous) @   CoreControls.js:1479
dispatch    @   jquery-3.2.1.min.js:3
q.handle    @   jquery-3.2.1.min.js:3
trigger @   jquery-3.2.1.min.js:4
triggerHandler  @   jquery-3.2.1.min.js:4
applyWithArgs   @   CoreControls.js:92
trigger @   CoreControls.js:92
Tg  @   CoreControls.js:978
HE  @   CoreControls.js:1014
Yw  @   CoreControls.js:1012
uo  @   CoreControls.js:1011
uo  @   CoreControls.js:990
updateAnnotList @   my_file.js:224
注意,我的代码中的第224行是上面的
const annot=annotationManager.importanotCommand(xfdf)[0]

我希望importanotCommand(xfdf)会返回导入的注释列表,但有时会失败,只返回未定义的注释

CoreControls.js:989 exportAnnotations was called before all annotations were loaded.
您似乎正在尝试很快导出到。注释在文档最初加载后加载,如果有很多注释,则可能需要一段时间

您要等待此事件

但是,在对文档执行任何操作之前,需要等待documentLoaded事件


失败的注释适用于PDF的第二页。加载失败时,打开的/目标PDF是否至少有2页?此外,是否可以从javascript控制台向问题添加任何相关错误/警告。是的,文档有9页,xfdf字符串由此生成document@Ryan我为您提供了更多的控制台日志谢谢,我明天会在工作中尝试,目前这都是在等待文档加载后执行的,但我可以尝试将其替换为等待该事件
annotationsLoaded
事件似乎在加载所有注释之前触发,然后第二次触发。我在第二次加载时没有收到任何错误第一次激发时,某些批注仍作为未定义导入,所有批注都在第二次激发时加载。抱歉,不清楚此问题是否为您解决?如果这仍然是一个问题?如果是,请使用最新状态更新您的问题。我已将实现更改为在不同的webview中加载多个内容ers现在不再四处移动并不断重复使用它,因此不再存在这种东西的问题。