2016-10-20 7 views
0

Ich möchte verarbeiten und überprüfen, dass PDFs in einem Ordner gültige PDF/A-Dateien sind. Das Problem ist, dass ich einen Ordner mit Haufen von Dateien einschließlich Word und Excel unter anderem verarbeiten muss, die Preflight in PDFs konvertiert, verarbeitet und dann für Benutzereingaben hängt, um die Temporärdatei zu verwerfen. Da es einige hundert Dateien gibt, ist es nicht möglich, auf Benutzereingaben zu warten.Acrobat DC Preflight verarbeitet Nicht-PDF-Dateien

Vielleicht verwende ich nicht die richtigen Sätze, wenn ich suche, aber ich kann nicht herausfinden, wie man Adobe Acrobat DC dazu bringt, nur PDF-Dateien zu verarbeiten. Ich habe festgestellt, dass Sie in Acrobat X die Quelldateien https://www.evermap.com/ActionWizardX.asp angeben können, aber ich habe keine Entsprechung in DC gefunden.

Gibt es eine Möglichkeit, eine Aktion nur zum Verarbeiten von PDF-Dateien zu erzwingen?


Edit:

@ Joel Geraci Vorschlag Nach und this post zu finden, ich habe das folgende Skript erstellt, die in einer Aktion ausgeführt wird. An dieser Stelle scheint es das Profil auszuführen, aber ich weiß nicht, ob es tatsächlich das Dokument ändert, da der Aufruf an this.closeDoc() nicht fordert, das Dokument zu speichern, und das resultierende Dokument scheint nicht gespeichert zu werden eine PDF/A-Datei.

/* 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}); 
} 

Edit 2:

ich über die Verwendung der saveAs Funktion endete nieder. Ich bin mir nicht sicher, wie ich die XML-Daten in eine Datei exportieren soll, aber das scheint ausreichend zu sein.

/* 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}); 
} 

bearbeiten 3:

Das Problem ist also, dass Nicht-PDF-Dateien umgewandelt werden und zu lesen, bevor mein JavaScript ausgeführt wird, was bedeutet, dass die this.path.split('.').pop() === 'pdf' eigentlich nichts herauszufiltern. Ich fand, dass die requiresFullSave Eigenschaft der Doc-Klasse angibt, ob das Dokument eine temporäre Datei ist oder nicht. Ich habe jedoch festgestellt, dass ich immer noch gefragt werde, ob ich die temporäre Datei speichern möchte, was nicht hilft.

bearbeiten 4

Doc.closeDoc(true) auf einer temporären Datei aufrufen verursacht Acrobat zum Absturz zu bringen und es scheint nicht ein anderer Weg, um ein Dokument ohne Speichern zu schließen. Ich habe festgestellt, dass es keinen eindeutigen Weg gibt (den ich gefunden habe), ein temporäres Dokument zu schließen, ohne den Benutzer aufzufordern, zu speichern, und alle nicht-PDF-Dateien gelöscht zu haben.

Abschluss Skript:

/* 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) 
{ 
} 

Antwort

1

Anstatt eine Aktion erstellen, die Preflight ausgeführt wird, versuchen, eine Aktion erstellen, die einige JavaScript ausgeführt wird. Das JavaScript würde nach der Dateierweiterung der Datei suchen, die gerade verarbeitet wird, und dann das Preflight über JavaScript ausführen, wenn es sich um eine PDF-Datei handelt. Wenn nicht, wird es übersprungen.

+0

Wissen Sie, wie ein Dokument erstellt wird, auf dem ein PreflightProfile-Lauf ausgeführt wurde, um es bei Erfolg zu speichern? – Nielsvh

+1

Der einfachste Weg ist ... app.execMenuItem ("Speichern"); Aber es gibt einen tollen Artikel zu dem Thema unter der URL unten. https://acrobatusers.com/tutorials/how-save-pdf-acrobat-javascript – joelgeraci