【问题标题】:Extract Data from .PDF files从 .PDF 文件中提取数据
【发布时间】:2011-01-24 16:29:20
【问题描述】:

我需要从 .PDF 文件中提取数据并将其加载到 SQL 2008。 谁能告诉我该怎么做??

【问题讨论】:

  • 哪些数据包含您要提取的那些PDF文件?
  • 书籍相关信息(基本上是市场上最畅销书籍的列表)
  • 我认为您的意思是元数据,即标题和作者等
  • @Edootjuh 我不认为他的意思是关于文件的元数据 - 听起来他更像是想提取文件的内容,其中包含一个数据表,对吧 S?
  • 该文件包含书名作者价格等书籍信息......我想从 PDF 文件中提取该信息

标签: c# ssis


【解决方案1】:

这是一个如何使用 iTextSharp 从 PDF 中提取文本数据的示例。您必须对其进行一些摆弄才能使其完全按照您的意愿行事,我认为这是一个很好的大纲。您可以看到如何使用 StringBuilder 来存储文本,但您可以轻松地将其更改为使用 SQL。

    static void Main(string[] args)
    {
        PdfReader reader = new PdfReader(@"c:\test.pdf");

        StringBuilder builder = new StringBuilder();

        for (int x = 1; x <= reader.NumberOfPages; x++)
        {
            PdfDictionary page = reader.GetPageN(x);
            IRenderListener listener = new SBTextRenderer(builder);
            PdfContentStreamProcessor processor = new PdfContentStreamProcessor(listener);
            PdfDictionary pageDic = reader.GetPageN(x);
            PdfDictionary resourcesDic = pageDic.GetAsDict(PdfName.RESOURCES);
            processor.ProcessContent(ContentByteUtils.GetContentBytesForPage(reader, x), resourcesDic);
        }
    }

public class SBTextRenderer : IRenderListener
{

    private StringBuilder _builder;
    public SBTextRenderer(StringBuilder builder)
    {
        _builder = builder;
    }
    #region IRenderListener Members

    public void BeginTextBlock()
    {
    }

    public void EndTextBlock()
    {
    }

    public void RenderImage(ImageRenderInfo renderInfo)
    {
    }

    public void RenderText(TextRenderInfo renderInfo)
    {
        _builder.Append(renderInfo.GetText());
    }

    #endregion
}

【讨论】:

    【解决方案2】:

    想象一下,如果你问这个问题。如何将 任意 文本文件中的数据加载到 SQL 表中。挑战不是打开文本文件并读取它,而是自动从文件中获取有意义的数据。

    因此,您可以使用iTextpdfSharp 来读取PDF 文件,但要获得有意义的数据将是一个挑战。

    【讨论】:

    • 更具体地说,iText iTextSharp的C#实现:--> sourceforge.net/projects/itextsharp
    • @Pandincus 感谢您指出正确的链接。我更新了我的答案
    • 我试过 ItextSharp 但它不起作用,基本上它里面的所有功能都是创建和编辑 PDF 文档而不是读取数据.....你能给我一个示例吗?
    【解决方案3】:

    您需要做的是首先使用工具从 PDF 中提取文本,然后将文件读入二进制阅读器.. 然后将其存储到您的数据库中.. 提取文本有多种工具可供使用。首先要提到的是:

  • iTextsharp 这是一个库,可以是 downloaded,用于在处理 PDF 文档时进行大量工作和深入的编辑和构建,并且有很多在线示例以及解释插件的完整书籍和其他的
  • 第二个工具是Adobe PDF iFilter,它是 adobe 中用于处理 PDF 修改和操作的工具。
  • 另外Foxit iFilter 也是一个类似的程序集,可以满足您的要求!
  • PDF Box也会为您服务!

    这些是最知名和有据可查的! 检查以下示例: 在代码项目上尝试以下示例:

  • Parsing PDF files in .NET using PDFBox and IKVM.NET.
  • A simple class to extract plain text from PDF documents with ITextSharp
  • Using the IFilter interface to extract text from various document types
  • A parser for PDF Forms written in C#.NET
    这些做的工作,他们并不难理解。希望他们能帮助你:-)

    最后一点:就我而言,我会选择 iTextSharp,因为它是文档最完善的库,提供的示例最多。

  • 【讨论】:

      【解决方案4】:

      如果您指的是元数据,请尝试这个问题(第一个答案)

      Read/Modify PDF Metadata using iTextSharp

      你必须自己做数据库的事情。

      【讨论】:

        猜你喜欢
        • 2011-04-20
        • 2018-08-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多