Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将InfoPath表单自动转换为PDF_Pdf_Infopath - Fatal编程技术网

将InfoPath表单自动转换为PDF

将InfoPath表单自动转换为PDF,pdf,infopath,Pdf,Infopath,我的任务是通过编程打开一组与各种InfoPath模板(20)关联的XML文件(~10k),然后将填充的表单以PDF格式保存到网络共享中。这将是一项一次性任务 我有代码可以循环浏览XML文件集和。但是,这些参数不足以满足我的需要(没有打印/关闭参数) 是否有人可以提供有关启动参数的建议,这些参数将告诉InfoPath打开特定文件,将其打印为PDF,然后在打印时关闭?是否有其他方法来实现这一目标 我们使用的是InfoPath 2007,文件托管在MOSS 2007中。使用InfoPath的COM互操

我的任务是通过编程打开一组与各种InfoPath模板(20)关联的XML文件(~10k),然后将填充的表单以PDF格式保存到网络共享中。这将是一项一次性任务

我有代码可以循环浏览XML文件集和。但是,这些参数不足以满足我的需要(没有打印/关闭参数)

是否有人可以提供有关启动参数的建议,这些参数将告诉InfoPath打开特定文件,将其打印为PDF,然后在打印时关闭?是否有其他方法来实现这一目标


我们使用的是InfoPath 2007,文件托管在MOSS 2007中。

使用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打印机的输出文件名。也许您可以将打印机配置为使用默认名称,然后等待文件打印出来,移动文件,然后打印下一个文档。

下面是@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的。

您是否有PDF打印机或如何转换为PDF?我通常使用PDFCreator执行类似的任务。将其设置为自动打印到指定位置,然后等待文件移动和重命名。