…Reihenfolge von Aktionen festlegen

Dieser Abschnitt beschreibt, wie die Reihenfolge der Aktionen geändert werden kann, die entweder durch das bereits vorhandene Profil oder durch COM hinzugefügt wurden.

Bemerkung

Die bereitgestellten Code-Auszüge wurden in JavaScript geschrieben und sind im PDFCreator-Verzeichnis unter „COMScripts/JS Scripts/How To“ zu finden. Die folgenden Codezeilen wurden aus dem Skript ActionOrderManagment.js entnommen, welches dort zu finden ist und dort auch ausgeführt werden kann.

Los geht’s

  1. Zunächst holt man sich eine Referenz auf die PDFCreator Auftragswarteschlange, indem man die ActiveXObject(„ProgID“) Methode aufruft. Anschließend initialisiert man das COM-Objekt(welches im Grunde die Auftragswarteschlange ist) mit der Initialize() Methode .

var PDFCreatorQueue = new ActiveXObject("PDFCreator.JobQueue");
PDFCreatorQueue.Initialize();

//Sets up the path where the converted pdf file should be saved in
var fullPath = objFSO.GetParentFolderName(WScript.ScriptFullname) + "\\TestPage.pdf";
  1. Rufen Sie WaitForJob(int timeOut) auf, um darauf zu warten, dass ein Druckauftrag in der Warteschlange hinzugefügt. Der Parameter timeOut gibt die maximale Zeit in Sekunden an, die die Warteschlange auf das Eintreffen des Druckauftrags wartet. Diese Methode ist sehr wichtig, da jeder neu ausgelöste Druckauftrag einige Zeit braucht, bis er von der Druckerwarteschlange in die PDFCreator-Druckerwarteschlange gelangt. Wenn Sie die Eigenschaft NextJob aufrufen, ohne auf den Druckauftrag zu warten, kann es vorkommen, dass Sie null erhalten, obwohl der Druckauftrag einige Zeilen vorher ausgelöst wurde.

if(!PDFCreatorQueue.WaitForJob(10))
{
    WScript.Echo("The print job did not reach the queue within " + 10 + " seconds");
}
  1. Nun kann der nächste Druckauftrag aus der Auftragswarteschlange durch die Eigenschaft NextJob entnommen werden. Dadurch hat man eine Referenz auf den vordersten Auftrag in der Auftragswarteschlange.

var job = PDFCreatorQueue.NextJob;
  1. Richten Sie das Profil für den Job mit SetProfileByGuid(guid) ein. Der Parameter guid ist ein Zeichenkettentyp, der zur Zuweisung des entsprechenden Konvertierungsprofils verwendet wird (siehe Vordefinierte GUIDs für verfügbare GUIDs).

    ** Hinweis: ** Alternativ können Sie SetProfileByName(„MyNameForACertainProfile“) verwenden.

job.SetProfileByGuid("DefaultGuid");
  1. Richten Sie das Deckblatt und die Hintergrundseite ein. Wir verwenden die AddAction-Methode. Die Reihenfolge, in der Sie diese Aktion hinzufügen, bestimmt auch die Reihenfolge der Ausführung während der Konvertierung. Wenn Sie die alternative Möglichkeit zum Hinzufügen nach Aktionen verwenden, indem Sie nur die Einstellung aktivieren, wird dies dazu führen, dass alle Aktionen in einer Standardreihenfolge angeordnet werden.

// add action using the addAction
WScript.Echo("Applying cover page settings...");
job.AddAction("CoverPage");
job.SetProfileSetting("CoverPage.File", objFSO.GetParentFolderName(WScript.ScriptFullname) + "\\CoverPage.pdf");

WScript.Echo("Applying background page settings...");
job.AddAction("BackgroundPage");
job.SetProfileSetting("BackgroundPage.File", objFSO.GetParentFolderName(WScript.ScriptFullname) + "\\BackgroundPage.pdf");

// an alternative way to add an action. It will automatically add the action into the real ActionOrder list; but might cause an order change.
job.SetProfileSetting("AttachmentPage.Enabled", true);
job.SetProfileSetting("AttachmentPage.File", objFSO.GetParentFolderName(WScript.ScriptFullname) + "\\AttachmentPage.pdf");

Weitere Informationen zu den Einstellungen für Deckblatt, Hintergrundseite oder Anhangseite finden Sie unter Einstellungen der COM-Schnittstelle.

  1. Sie können alle aktiven Aktionen auflisten, indem Sie die Liste „ActionOrder“ vom Job anfordern.

// getting a copied list of all active job in the selected profile, the list elements will be string
// keep in mind this list is a copy of the "real" actionOrder list, changes will not have any
// effect on the profile itself
var activeActionOrder = job.GetProfileListSetting("ActionOrder");
listActions(activeActionOrder);
  1. Die Liste enthält Methoden, die ihren Eintrag ändern können (siehe ArrayList). Die Änderungen werden jedoch nur wirksam, wenn die Liste dem Job mithilfe der Methode „SetProfileListSetting(String, Arraylist)“ übergeben wird.

// you can change an manipulate the order by changing the list
// it will have no effect unless you use SetProfileList with your local list
activeActionOrder.RemoveAction("AttachmentPage");
listActions(activeActionOrder);
listActions(job.GetProfileListSetting("ActionOrder"));

// an important step to make sure you changes to your list will also be in the creator profile
job.SetProfileListSetting("ActionOrder", activeActionOrder);
  1. Nun sind Sie bereit, den Konvertierungsprozess zu starten.

//fullPath was introduced above
job.ConvertTo(fullPath);
  1. Die Eigenschaft IsFinished informiert über den Konvertierungsstatus. Wenn der Druckauftrag abgeschlossen ist, gibt IsFinished true zurück. Wenn Sie wissen möchten, ob der Auftrag erfolgreich ausgeführt wurde, berücksichtigen Sie die Eigenschaft IsSuccessful. IsSuccessful gibt true zurück, wenn der Auftrag erfolgreich konvertiert wurde, andernfalls false.

if(!job.IsFinished || !job.IsSuccessful)
{
     WScript.Echo("Error in process");
}
  1. Nach der Nutzung des COM Objektes darf man nicht vergessen, es wieder freizugeben, indem man die Methode ReleaseCom() aufruft, ansonsten kann keine andere PDFCreator Instanz arbeiten.

PDFCreatorQueue.ReleaseCom();