1

我正在尝试开发一种用户可以填写并提交给我的表单,以便我可以收集数据。表单需要有 2 个行数可变的表。我们使用的是 MS Word,但我们希望更加平台中立。.PDF 之类的东西。一些用户没有互联网连接,因此他们需要通过电子邮件提交。我尝试了 Adob​​e FormsCentral 并喜欢他们的数据收集功能,但我使用的表单功能只能在 HTML 中使用,并且需要互联网连接。

如果我使用 Adob​​e LiveCycle 创建表单,那么我需要一种从中收集数据的方法。我不想花 8 万美元购买 Forms Pro,因为它本来可以让我收集数据。是否有人找到了产品或编写了一些东西来从 .PDF 表单中获取数据 (XML) 并将其放入 SQL Server 数据库中?

谢谢,保罗

4

2 回答 2

2

您将许多问题合并为一个问题。我建议您学习 PDF 和 Adob​​e,并了解您所描述的内容可以做什么和不能做什么。

PDF 表单有多种类型——Acroforms(静态)、静态 XFA 表单和动态 XFA 表单。根据您的描述,您需要动态 XFA(您说行数可变)。

您还请求离线处理,这意味着表单必须“启用阅读器”以允许远程用户将数据实际保存到表单中。

因此,您需要一个可以创建“支持 Adob​​e Reader 的动态 XFA 表单”的工具——只有 Adob​​e Lifecycle Designer 可以创建它,但您需要阅读他们的许可证以了解如何将该表单分发给用户。

至于处理动态 XFA Form 服务器端以提取数据,您可以查看iText。它可以从 PDF 中提取 XML,您可以使用该 XML 做任何您想做的事情(解析/放入数据库/无论什么)。

于 2013-08-02T17:57:01.173 回答
0

C# I ended up creating a LiveCycle XFA form that submits XML data and then read this email using the following code

        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;
}
于 2014-04-01T22:24:45.367 回答