2016-10-20 95 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