2010-01-05 88 views
2

我已经通过编程方式开启了与各种InfoPath模板(20)关联的一组XML文件(〜10k),然后将填充后的表单作为PDF保存到网络共享。这将是一次性任务。将InfoPath表单自动转换为PDF

我有代码循环访问XML文件集和open them in InfoPath。但是,documented command-line parameters不足以满足我的需求(无打印/关闭参数)。

任何人都可以提供启动参数的任何建议,告诉InfoPath打开特定文件,将其打印到PDF并在打印时关闭?有没有其他方法可以实现这一目标?

我们正在使用InfoPath 2007和文件在MOSS 2007

+0

你有PDF打印机吗?或者如何转换为PDF? – 2010-01-05 16:58:53

+0

我通常使用PDFCreator来完成这样的任务。将其设置为自动打印到指定位置,然后在移动和重命名文件之前等待文件。 – 2016-11-30 22:38:24

回答

1

托管使用InfoPath的COM互操作程序集(添加引用Microsoft.Office.Interop.InfoPath),您可以打印XML用下面的代码片段形成:

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

打印使用情况的默认打印机设置,我还没有找到一种方法来改变这种状况。然而,因为这是你的一次性任务,我认为这不应该是一个问题。

更多的问题可能是您没有办法指定PDF打印机的输出文件名。也许您可以将打印机配置为使用默认名称,然后等待打印文件,移动它,然后打印下一个文档。

0

这里是@Dirk Vollmar在Powershell中的回答,使用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) 

有关自动化InfoPath的更多信息,请参阅Microsoft的documentation