0

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

  1. 切换到只读的、预先格式化的打印视图(不是默认值,即数据输入)
  2. 将该表单视图导出为 PDF
  3. 保存表格
  4. 关闭表格

通过谷歌搜索,我找到了一些让我很接近的解决方案,但我一直遇到诸如 thisXDocument 无法在上下文中识别或 Export 方法无效等问题。我目前同时使用“Microsoft.Office.Interop.InfoPath”和“Microsoft.Office.Interop.InfoPath.SemiTrust”作为参考。我在 Visual Studio 2012 中工作。

鉴于上述要求,这可以通过 C# 代码完成吗?(如果可以)需要哪些命名空间?

4

1 回答 1

0

我最终在表单底部得到了两个按钮——一个用于“保存并关闭”,一个用于“导出为 PDF”。如果它对其他人有帮助,这里是我的“导出为 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 视图定义为默认打印视图来解决切换视图的问题。导出功能显然像打印一样工作,因此它会在导出前自动切换到打印视图。

于 2014-12-10T19:43:46.903 回答