Acrobat DC预检处理非PDF文件

时间:2016-10-20 15:53:20

标签: pdf acrobat

我想处理并验证文件夹中的PDF是有效的PDF / A文件。问题是我需要处理一个包含word和excel等文件的文件夹,这些文件预检转换为PDF,进程,然后挂起以供用户输入以丢弃temprary文件。有几百个文件,所以等待用户输入是不可行的。

也许我在搜索时没有使用正确的短语,但我无法找到如何强制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:

所以问题是在执行JavaScript之前转换并读取非PDF文件,这意味着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 个答案:

答案 0 :(得分:1)

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