将PDF表单数据读入SharePoint列表

时间:2010-01-08 15:39:08

标签: sharepoint pdf

我有一个应用程序,客户填写PDF表单,然后将其发布到sharepoint库。发布文档后,我们想要启动事件处理程序以从表单中提取用户数据并将其发布到一个或多个共享点列表中。

关于我如何开始的任何想法 - 我是PDF表单的新手,但对SharePoint开发有很好的理解。

3 个答案:

答案 0 :(得分:3)

请访问www.pdfsharepoint.com。他们的产品允许填写Pdf表单并将其提交到SharePoint。字段可以映射到SharePoint列。

梅德

答案 1 :(得分:0)

您可以编写一个自定义处理程序来捕获PDF表单提交as explained here(包括示例代码)。

或者,您可以使用在保存PDF表单时触发的工作流程,并使用third party library从表单中提取数据。

如果您更喜欢使用SharePoint Designer工作流,则可以使用Workflow Power Pack等产品将.net代码直接嵌入到工作流程中。 (免责声明,我参与了这个产品,它是晶圆厂; - )。

您可能有充分的理由使用PDF表单,但您也可以考虑使用InfoPath甚至MS-Word来填写表单。如果您希望convert the documents to PDF as well可以轻松从SharePoint中提取Word和InfoPath数据。

答案 2 :(得分:0)

如果您可以使用PDF表单提交操作,那么您可以让表单将数据直接提交到SharePoint列表。为此,您需要创建一个自定义http处理程序并将其保存到扩展名为“.ashx”的_Layouts文件夹。

在PDF表单中,设置提交操作以XML格式提交数据并将其指向http处理程序的URL。

以下是处理程序的示例代码;

<%@ Assembly Name="Microsoft.SharePoint,Version=12.0.0.0,Culture=neutral,PublicKeyToken=71e9bce111e9429c" %>
<%@ WebHandler Language="C#" Class="SP_PDFSubmitHandler" %>

using System;
using System.Web;
using Microsoft.SharePoint;
using System.Xml;

public class SP_PDFSubmitHandler : IHttpHandler {

    public void ProcessRequest (HttpContext context) {
        SPSite site = SPContext.Current.Site;
        SPWeb web = site.OpenWeb();

        try
        {
            string rawXML = "";
            XmlTextReader reader = new XmlTextReader(context.Request.InputStream);
            XmlDocument xmlDoc = new XmlDocument();
            xmlDoc.Load(reader);
            string _xmlString = xmlDoc.InnerXml;
            System.Text.ASCIIEncoding encoding = new System.Text.ASCIIEncoding();
            string _fileTime = DateTime.Now.ToFileTime().ToString();

            byte[] docAsBytes = encoding.GetBytes(_xmlString);

            //Insert Document 
        web.AllowUnsafeUpdates = true;

            SPList list = web.Lists["Purchase Order"];
            SPListItem item = list.Items.Add();

            item["Title"] = "PurchaseOrder_" + _fileTime + ".xml";
            item["Company Name"] = xmlDoc.GetElementsByTagName("txtOrderedByCompanyName").Item(0).InnerText;
            item["Date"] = xmlDoc.GetElementsByTagName("dtmDate").Item(0).InnerText;
            item["Order Total"] = xmlDoc.GetElementsByTagName("numGrandTotal").Item(0).InnerText;
            item.Attachments.Add("PurchaseOrder_" + _fileTime + ".xml", docAsBytes);
            item.Update();

        //Redirect the browser to the Purchase Order list so we can see our submisison.
        context.Response.Redirect("http://myserver/Lists/Purchase%20Order/AllItems.aspx");   

        }
        catch (Exception ex)
        {
            context.Response.Write(ex.Message);
        }


    }

    public bool IsReusable {
        get {
            return false;
        }
    }

}

以下是介绍流程http://blogs.adobe.com/mtg/2009/03/submitting-data-from-an-pdf-form-to-ms-sharepoint.html

的精彩帖子

以下是有关处理程序https://msdn.microsoft.com/en-us/library/bb457204.aspx

的MSDN帖子