InfoPath C#按钮:切换视图,然后导出为PDF

时间:2014-11-11 20:04:13

标签: c# pdf pdf-generation infopath infopath-forms-services

我已经看到了一些可能相关的问题,但并没有真正回答这个问题。我有一个InfoPath 2013表单,该表单是通过SharePoint 2013 InfoPath Forms Services托管的。该表单具有代码隐藏功能,我尝试编写一个按钮,以便执行以下步骤:

  1. 切换到只读,预先格式化的打印视图(不是默认值,即数据输入)
  2. 将表单视图导出为PDF
  3. 保存表单
  4. 关闭表单
  5. 通过谷歌搜索,我找到了一些让我接近的解决方案,但是我一直遇到像上面没有识别出的这个问题,或者导出方法无效。我目前正在使用" Microsoft.Office.Interop.InfoPath"和" Microsoft.Office.Interop.InfoPath.SemiTrust"作为参考。我在Visual Studio 2012中工作。

    鉴于上述要求,可以通过C#代码和(如果有的话)完成所需的命名空间吗?

1 个答案:

答案 0 :(得分:0)

我最终在表格底部有两个按钮 - 一个用于"保存并关闭" &安培;一个用于"导出为PDF"。万一它可以帮助其他人,这里是我的代码#34;导出到PDF"按钮。文件夹位置和PDFName在表单中定义(文件夹位置根据它们从中启动表单的位置动态获取,而PDFName是表单中其他值的连接)。

public void CTRL_PDF_Clicked(object sender, ClickedEventArgs e)
    {
        // Write your code here.

        //Declare variables
        string fileName;
        string fileLocation;
        XPathNavigator nameNode;
        XPathNavigator folderNode;
        XPathNavigator timeNode;

        //Get the values for each variable from fields in the form
        nameNode = MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:PDFName", NamespaceManager);
        folderNode = MainDataSource.CreateNavigator().SelectSingleNode("/my:myFields/my:FolderLocation", NamespaceManager);
        fileName = nameNode.Value;
        fileLocation = folderNode.Value;

        //Export the view as a PDF file.
        Microsoft.Office.InfoPath.View currentView = this.CurrentView;
        this.CurrentView.Export(@fileLocation + fileName + ".pdf", ExportFormat.Pdf);

        // End your code here.
    }

我不得不通过将格式化的PDF视图定义为默认打印视图来切换视图。 “导出”功能显然与打印类似,因此在导出之前会自动切换到打印视图。