2016-10-20 70 views
0

我想处理并验证文件夹中的PDF是否为有效的PDF/A文件。问题是我需要处理一个包含word和excel等文件的文件夹,其中包括preflight转换为PDF,进程,然后挂起用于用户输入以放弃temperary文件的文件。有几百个文件,所以等待用户输入是不可行的。Acrobat DC预检处理非PDF文件

也许我在搜索时没有使用正确的短语,但我找不到如何强制Adobe Acrobat DC仅处理PDF文件。我发现在Acrobat X中,您可以指定源文件https://www.evermap.com/ActionWizardX.asp,但我在DC中没有找到相应的文件。

有没有办法强制一个动作只处理PDF文件?


编辑:

继@Joel Geraci的建议,并找到this post,我已经创建了一个在行动中运行下面的脚本。此时,它似乎运行配置文件,但我不知道它是否实际修改了文档,因为对this.closeDoc()的调用不会提示保存文档,并且生成的文档似乎不会保存为PDF/A文件。

/* Convert PDF/A-3a */ 
try 
{ 
    if(this.path.split('.').pop() === 'pdf') 
    { 
    var oProfile = Preflight.getProfileByName("Convert to PDF/A-3a"); 

    if(oProfile != undefined) 
    { 
     var myPreflightResult = this.preflight(oProfile); 
     console.println("Preflight found " + myPreflightResult.numErrors + " Errors."); 
     console.println("Preflight found " + myPreflightResult.numWarnings + " Warnings."); 
     console.println("Preflight found " + myPreflightResult.numInfos + " Infos."); 
     console.println("Preflight fixed " + myPreflightResult.numFixed + " Errors."); 
     console.println("Preflight not fixed " + myPreflightResult.numNotFixed + " Errors."); 
     this.closeDoc(); 
    } 
    } 
} 
catch(theError) 
{ 
    $error = theError; 
    this.closeDoc({bNoSave : true}); 
} 

编辑2:

我最终解决有关使用saveAs功能。我不确定如何将XML数据导出到文件,但这似乎已足够。

/* Convert PDF/A-3a */ 
try 
{ 
    if(this.path.split('.').pop() === 'pdf') 
    { 
    var oThermometer = app.thermometer; 
    var oProfile = Preflight.getProfileByName("Convert to PDF/A-3a"); 

    if(oProfile != undefined) 
    { 
     var myPreflightResult = this.preflight(oProfile, false, oThermometer); 
     console.println("Preflight found " + myPreflightResult.numErrors + " Errors."); 
     console.println("Preflight found " + myPreflightResult.numWarnings + " Warnings."); 
     console.println("Preflight found " + myPreflightResult.numInfos + " Infos."); 
     console.println("Preflight fixed " + myPreflightResult.numFixed + " Errors."); 
     console.println("Preflight not fixed " + myPreflightResult.numNotFixed + " Errors."); 
     if(myPreflightResult.numErrors > 0) { 
     var cXMLData = myPreflightResult.report(oThermometer); 
     console.println(cXMLData); 
     } 
     this.saveAs(path,"com.callas.preflight.pdfa"); 
    } 
    } 
} 
catch(theError) 
{ 
    $error = theError; 
    this.closeDoc({bNoSave : true}); 
} 

编辑3:

所以问题是,非PDF文件转换和读取执行我的JavaScript之前,这意味着this.path.split('.').pop() === 'pdf'实际上并没有过滤掉任何东西。我发现Doc类的requiresFullSave属性指定文档是否是临时文件。但是,我发现我仍然被问到是否要保存临时文件,这没有帮助。

编辑4

上的临时文件调用Doc.closeDoc(true)导致Acrobat将崩溃,似乎没有成为另一种方式来关闭文档而不保存。我发现没有明确的方法(我发现)关闭临时文档而不提示用户保存并采用删除所有非PDF文件的方式。

最终脚本:

/* Convert PDF/A-3a */ 
try 
{ 
    console.println(path + " is temp: " + requiresFullSave); 
    if(!requiresFullSave) 
    { 
    var oThermometer = app.thermometer; 
    var oProfile = Preflight.getProfileByName("Convert to PDF/A-3a"); 

    if(oProfile != undefined) 
    { 
     var myPreflightResult = this.preflight(oProfile, false, oThermometer); 
     console.println("Preflight found " + myPreflightResult.numErrors + " Errors."); 
     console.println("Preflight found " + myPreflightResult.numWarnings + " Warnings."); 
     console.println("Preflight found " + myPreflightResult.numInfos + " Infos."); 
     console.println("Preflight fixed " + myPreflightResult.numFixed + " Errors."); 
     console.println("Preflight not fixed " + myPreflightResult.numNotFixed + " Errors."); 
     if(myPreflightResult.numErrors > 0) { 
     var cXMLData = myPreflightResult.report(oThermometer); 
     console.println(cXMLData); 
     } 
     this.saveAs(path,"com.callas.preflight.pdfa"); 
    } 
    } 
    else{ 
    // As noted in the documentation found [here][2] 
    // Note:If the document is temporary or newly created, setting dirty to false has no effect. That is, the user is still asked to save changes before closing the document. See requiresFullSave. 
    // this.dirty = false; 
    // this.closeDoc(true); 
    } 
} 
catch(theError) 
{ 
} 

回答

1

而不是创建一个运行预检动作,尝试创建运行一些JavaScript的动作。 JavaScript将测试正在处理的文件的文件扩展名,然后通过JavaScript执行预检(如果它是PDF),如果不是则跳过。

+0

您是否知道如何制作一个在其上运行PreflightProfile的文档,以保存成功? – Nielsvh

+1

最简单的方法是... app.execMenuItem(“Save”); 但是在下面的URL中有关于该主题的很棒的文章。 https://acrobatusers.com/tutorials/how-save-pdf-acrobat-javascript – joelgeraci