2010-01-08 2 views
3

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

Любые идеи о том, как я начинаю: я новичок в форматах PDF, но хорошо понимаю развитие SharePoint.

ответ

0

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

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

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

Возможно, у вас есть веская причина использовать PDF-формы, но вы также можете использовать InfoPath или даже MS-Word для заполнения форм. Легко извлекать данные Word и InfoPath из SharePoint, и, если хотите, вы можете convert the documents to PDF as well.

3

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

Дмитрий

0

Если вы можете использовать форму 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

Смежные вопросы