2013-08-01 58 views
1

我正在嘗試開發一種表單,用戶可以填寫並提交給我,以便我可以收集數據。該表格需要有兩個表格,其中包含可變數量的行。我們使用MS Word,但我們希望更平臺中立。就像.PDF。有些用戶不會有互聯網連接,所以他們需要通過電子郵件提交。我嘗試過Adobe FormsCentral並喜歡他們的數據收集功能,但我使用的表單功能只能在HTML中使用,並且需要互聯網連接。從.PDF表格收集數據

如果我使用Adobe LiveCycle創建表單,那麼我需要一種方法從它收集數據。我不想花費8萬美元購買Forms Pro,據說這可以讓我收集數據。是否有人發現了一個產品或者寫了一些東西從.PDF表單獲取數據(XML)並將其放入SQL Server數據庫中?

感謝, 保羅

+0

有人告訴我,我需要改寫我已經開始了形式有它的問題 – Paul

回答

0

C#我結束了創建提交XML數據,然後使用下面的代碼閱讀這封電子郵件的LiveCycle XFA表單

 XDocument xDoc = XDocument.Load(xml.FullName); 


     IEnumerable<XElement> monthlyReportElements = from el in xDoc.Descendants("MonthlyReportForm") select el; 

     foreach (XElement el in monthlyReportElements) 
     { 
      teamName = Helper.GetElement("TeamName", el, true); 
      reportingDate = string.Format("{0}-{1}", Helper.GetElement("ReportingYear", el, true), Helper.GetElement("ReportingMonth", el, true)); 
      pdfVersion = Helper.GetElement("FileVersionField", el, true); 
      supervisorEmail = Helper.GetElement("SupervisorEmail", el, true); 

      return true; 
     } 

internal static string GetElement(string elementName, XElement xElement, bool required) 
{ 
    if (xElement == null 
     || string.IsNullOrEmpty(elementName) 
     || xElement.Element(elementName) == null 
     || xElement.Element(elementName).Value == null) 
    { 
     if (required) 
      throw new Exception(string.Format("Required element '{0}' is missing", elementName)); 
     else 
      return string.Empty; 
    } 
    return xElement.Element(elementName).Value; 
} 
2

你有集於一身問題的許多問題。我建議你學習PDF和Adobe,並瞭解你可以做什麼,不能做什麼你所描述的。

有幾種類型的PDF表單 - Acroforms(靜態),Static XFA表單和動態XFA表單。根據你的描述,你需要動態的XFA(你說可變的行數)。

您還要求脫機處理,這意味着表單必須是「讀取器已啓用」才能允許遠程用戶實際上將數據保存到表單中。

因此,您需要一個可以創建「支持Adobe Reader的動態XFA表單」的工具 - 只有Adobe Lifecycle Designer可以創建它,但您需要閱讀其許可證以瞭解如何將該表單分發給用戶。

至於處理一個動態的XFA表單服務器端來提取數據,你可以看看iText。它可以從PDF中提取XML,並且可以使用該XML完成所需的任務(解析/放入數據庫/無論)。

+0

當用戶點擊提交按鈕時,它只提交XML數據。我想知道是否有一個SQL Server實用程序將XML文件拖入數據庫表中。 – Paul