2013-08-01 61 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