Чтение данных PDF-форм в списки SharePoint - PullRequest
3 голосов
/ 08 января 2010

У меня есть приложение, в котором клиенты заполняют форму PDF, а затем публикуют ее в библиотеке sharepoint. После публикации документа мы хотим запустить обработчик событий, чтобы извлечь данные пользователя из формы и опубликовать их в одном или нескольких списках sharepoint.

Любые идеи о том, как начать работу. Я новичок в работе с PDF-формами, но хорошо разбираюсь в разработке SharePoint.

Ответы [ 3 ]

3 голосов
/ 12 марта 2011

Взгляните на www.pdfsharepoint.com. Их продукт позволяет заполнять формы в формате PDF и отправлять их в SharePoint. Поля могут быть сопоставлены со столбцами SharePoint.

Дмитрий

0 голосов
/ 20 апреля 2017

Если вы можете использовать действие отправки формы в формате PDF, тогда форма может отправить данные непосредственно в список SharePoint. Для этого вам необходимо создать собственный обработчик http и сохранить его в папке _Layouts с расширением .ashx.

В форме PDF установите действие отправки для отправки данных в формате XML и укажите его для URL-адреса обработчика http.

Вот пример кода обработчика;

<%@ 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

Вот сообщение MSDN об обработчиках https://msdn.microsoft.com/en-us/library/bb457204.aspx

0 голосов
/ 09 января 2010

Вы можете написать собственный обработчик, который ловит отправку формы PDF , как описано здесь (включая пример кода).

В качестве альтернативы вы можете использовать рабочий процесс, который запускается при сохранении формы PDF, и извлекать данные из формы с помощью сторонней библиотеки .

Если вы предпочитаете использовать рабочие процессы SharePoint Designer, вы можете встроить свой код .net непосредственно в рабочий процесс, используя такой продукт, как Powerflow Power Pack . (Отказ от ответственности, я работал над этим продуктом, и это потрясающе; -).

Возможно, у вас есть веская причина использовать PDF-формы, но вы также можете рассмотреть возможность использования InfoPath или даже MS-Word для заполнения ваших форм. Из Word легко извлечь данные Word и InfoPath, и при желании вы можете также преобразовать документы в PDF .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...