2 Stimmen

Automatisierte Konvertierung von InfoPath-Formularen in PDF

Ich wurde damit beauftragt, eine Reihe von XML-Dateien (~10k), die mit verschiedenen InfoPath-Vorlagen (20) verknüpft sind, programmatisch zu öffnen und dann die ausgefüllten Formulare als PDF auf einer Netzwerkfreigabe zu speichern. Dies wird eine einmalige Aufgabe sein.

Ich habe Code, um durch den Satz von XML-Dateien zu gehen und sie in InfoPath öffnen . Allerdings ist die dokumentierte Befehlszeilenparameter sind für meine Bedürfnisse nicht ausreichend (keine Druck-/Schließparameter).

Kann jemand Vorschläge für Startparameter machen, die InfoPath veranlassen, eine bestimmte Datei zu öffnen, sie als PDF zu drucken und nach dem Druck zu schließen? Gibt es eine alternative Methode, um dieses Ziel zu erreichen?

Wir verwenden InfoPath 2007 und die Dateien werden in MOSS 2007 gehostet.

1voto

Dirk Vollmar Punkte 166522

Verwendung der COM-Interop-Assembly für InfoPath (Hinzufügen eines Verweises auf Microsoft.Office.Interop.InfoPath ) können Sie ein XML-Formular mit dem folgenden Ausschnitt ausdrucken:

using Microsoft.Office.Interop.InfoPath;

class Program
{
    static void Main(string[] args)
    {
        Application app = new Application();
        XDocument xdoc = app.XDocuments.Open(@"C:\tmp\Form1.xml", 1);
        xdoc.PrintOut();
        app.Quit(false);
    }
}

Der Druck erfolgt über die Standarddruckereinstellungen, und ich habe keine Möglichkeit gefunden, diese zu ändern. Da es sich jedoch um eine einmalige Aufgabe für Sie handelt, sollte dies kein Problem darstellen.

Ein größeres Problem könnte sein, dass Sie keine Möglichkeit haben, den Namen der Ausgabedatei Ihres PDF-Druckers anzugeben. Vielleicht können Sie Ihren Drucker so konfigurieren, dass er einen Standardnamen verwendet, dann warten, bis die Datei gedruckt ist, sie verschieben und dann das nächste Dokument drucken.

0voto

Nathan Hartley Punkte 3713

Und hier ist die Antwort von @Dirk Vollmar in Powershell, unter Verwendung von COM.

$app = New-Object -ComObject InfoPath.Application
$xdoc = $app.XDocuments.Open('C:\path\file.xml', 1)
$xdoc.PrintOut()
Start-Sleep -Seconds 2
$app.Quit($true)

Siehe Microsofts Dokumentation für weitere Informationen zur Automatisierung von InfoPath.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X