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

问题描述 投票:0回答:2

我看到一些可能相关的问题,但并没有真正回答问题。我有一个 InfoPath 2013 表单,通过 SharePoint 2013 InfoPath 表单服务进行托管。该表单具有代码隐藏功能,我正试图对一个按钮进行编码,使其执行以下步骤。

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

通过google,我找到了一些让我接近的解决方案,但我一直遇到这样的问题,比如thisXDocument在上下文中没有被识别,或者Export方法无效。我目前同时使用 "Microsoft.Office.Interop.InfoPath "和 "Microsoft.Office.Interop.InfoPath.SemiTrust "作为引用。我在Visual Studio 2012中工作。

考虑到上述要求,是否可以通过C#代码来实现,(如果可以)需要哪些命名空间?

c# pdf pdf-generation infopath infopath-forms-services
2个回答
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视图定义为默认打印视图来解决切换视图的问题。导出功能显然就像打印一样,所以它在导出前会自动切换到打印视图。

© www.soinside.com 2019 - 2024. All rights reserved.