我的公司通过 Excel 从外部公司接收数据。我们将其导出到 SQL Server 以运行数据报告。他们现在正在更改为 PDF 格式,有没有办法可靠地将 PDF 中的数据移植到我们的 SQL Server 2008 数据库中?
这需要编写一个应用程序还是有一种自动化的方式来做到这一点?
我的公司通过 Excel 从外部公司接收数据。我们将其导出到 SQL Server 以运行数据报告。他们现在正在更改为 PDF 格式,有没有办法可靠地将 PDF 中的数据移植到我们的 SQL Server 2008 数据库中?
这需要编写一个应用程序还是有一种自动化的方式来做到这一点?
如前所述 - 您必须编写一个应用程序来执行此操作,但理想情况下,您将能够从外部公司获取原始数据,而不必处理 PDF。
但是,如果您确实想从 PDF 中提取数据,我使用了iText,发现它非常强大、可靠且最重要的是 - 免费。它有 Java 和 .Net 风格——iTextSharp是 .Net 版本。它允许您以编程方式操作 PDF 文档,并将 PDF 的内容公开给您编写的应用程序。
这完全取决于他们如何在 PDF 中包含数据。一般来说,这里有两种可能的情况:
数据只是 PDF 中的文本对象。您需要使用工具从 PDF 中提取文本,然后将其插入数据库。
数据包含在 PDF 的表单域中。您需要使用工具从表单字段中提取数据并将其插入数据库。
希望场景 #2 适用于您,因为这正是 PDF 表单的设计目的。场景 #1 实际上只是一个 hack,只有在您没有任何其他选择的情况下才会使用它。从 PDF 中提取纯文本并不像您想象的那么容易或准确。
如果您收到 PDF 表单,那么您需要做的就是将 PDF 表单中的正确字段与数据库中的相应字段匹配,然后输入数据。如果您编写自己的应用程序,此过程可以完全自动化。
这需要编写一个应用程序还是有一种自动化的方式来做到这一点?
是的,这两个选项都需要编写应用程序或购买应用程序。如果您编写自己的应用程序,则需要找到支持从表单字段检索数据或从 PDF 中提取文本的第三方 PDF 库。
免责声明:我隶属于ByteScout PDF Extractor SDK工具的制造商
只是想分享一些从 PDF 中提取文本数据的其他真实场景:
使用 ItextSharp,执行以下操作
using System;
using System.Configuration;
using System.Data.SqlClient;
using System.IO;
using System.Text;
using iTextSharp.text.pdf;
protected void BtnSubmit_Click(object sender, EventArgs e)
{
String FilePath = @"GetFilePath";
StringBuilder sb = new StringBuilder();
PdfReader reader = new PdfReader(FilePath);
PdfStamper myStamp = new PdfStamper(reader, new FileStream(FilePath + "_TMP", FileMode.Create));
AcroFields form = myStamp.AcroFields;
if (form.GetField("GetFieldIdFromPDF") != null)
sb.Append(form.GetField("GetFieldIdFromPDF").ToString());
}
我认为您将不得不为此编写一个应用程序。这个问题讨论了从 PDF 中提取数据。在此之后,您可以将数据导出为 excel 格式,以便您可以保留现有的导入格式。
查找有关从 PDF 中“抓取”数据的信息。我相信 Adobe 有一些工具可以让您对简单的文本执行此操作,但我没有使用过它们。
不过老实说,我会尽一切努力从供应商那里获取原始格式的数据。