2010-01-05 13 views
2

J'ai été chargé d'ouvrir programatically un ensemble de fichiers XML (~ 10k) associée à différents modèles InfoPath (20), puis enregistrer les formes habitées au format PDF à un partage réseau. Ce sera une tâche ponctuelle.conversion automatique des formulaires InfoPath au format PDF

J'ai le code pour faire défiler l'ensemble des fichiers XML et open them in InfoPath. Cependant, les documented command-line parameters ne sont pas suffisants pour mes besoins (pas d'impression/fermeture des paramètres).

Quelqu'un peut-il fournir des suggestions pour les paramètres de démarrage qui vous raconteront InfoPath d'ouvrir un fichier spécifique, l'imprimer au format PDF, et à proximité lors de l'impression? Existe-t-il une méthode alternative pour atteindre cet objectif?

Nous utilisons InfoPath 2007 et les fichiers sont hébergés dans MOSS 2007.

+0

Avez-vous une imprimante PDF ou comment voulez-vous convertir au format PDF? –

+0

J'utilise habituellement PDFCreator pour une tâche comme celle-ci. Réglez-le sur l'impression automatique à un emplacement spécifié, puis attendez le fichier avant de le déplacer et de le renommer. –

Répondre

1

Utilisation de l'assembly COM pour InfoPath (ajouter une référence à Microsoft.Office.Interop.InfoPath) vous pouvez imprimer un fichier XML forment avec l'extrait suivant:

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

impression se produit à l'aide des paramètres de l'imprimante par défaut et je n'ai pas trouvé un moyen de changer cela. Cependant, comme c'est une tâche ponctuelle pour vous, je suppose que cela ne devrait pas poser de problème.

Plus d'un problème pourrait être que vous ne disposez pas d'un moyen de spécifier le nom du fichier de sortie de l'imprimante PDF. Peut-être pouvez-vous configurer votre imprimante pour qu'elle utilise un nom par défaut, puis attendez que le fichier soit imprimé, déplacez-le et imprimez le document suivant.

0

Et voici la réponse dans Powershell de @Dirk Vollmar, en utilisant 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) 

Voir Microsoft documentation, pour plus d'informations sur l'automatisation InfoPath.