c# - 获取PDF内容

标签 c# pdf itext pdf-reader pdftotext

我想阅读一些内容pdf文件。我刚刚开始接触这些东西,我只是想知道这样做的正确方法是什么。 ItextSharp 阅读器在这种情况下可能会有所帮助,因此我使用以下方法将 pdf 转换为文本:

public static string pdfText(string path)
{
    PdfReader reader = new PdfReader(path);
    string text = string.Empty;
    for(int page = 1; page <= reader.NumberOfPages; page++)
    {
        text += PdfTextExtractor.GetTextFromPage(reader,page);
    }
    reader.Close();
    return text;
}

我仍然想知道这种方法是否可行,或者我是否应该将此 pdf 转换为 excel,然后阅读我想要的内容。

专业人士的想法将不胜感激。

最佳答案

使用 iText,您还可以选择特定的文本提取策略。但请记住,这始终是一个启发式过程。

Pdf 文档基本上只包含为查看者呈现文档所需的说明。所以没有“文本”的概念。更多类似“在位置 420、890 绘制字符 A”的内容。

为了使任何文本提取工作正常,它需要对两个字符何时足够接近以至于应该将它们连接起来以及何时应该分开进行一些猜测。

巧合的是,iText 是根据正在使用的字体中单个空格字符的宽度来执行此操作的。

请记住,也可能有 ActualText(这是一种隐藏在文档中的文本,仅用于提取。它可以使文档呈现像“-”这样的字符(连字版),它被提取为“oe”(非连字版本)。

根据您的输入文档,您可能想要查看 ITextExtractionStrategy 的不同实现。

关于c# - 获取PDF内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43253813/

相关文章:

java - 如何将 ByteArrayOutputStream 表示的单页文档插入到另一个文档中?

java - 如果PDF文件已打开,如何关闭它?

java - 为什么我的表单在没有调用 flattenFields 方法的情况下就被展平了?

c# - .net core [授权] 将 ClaimsIdentity 与 AAD 组结合使用

c# - Metro 风格应用程序中的任务

.net - 是否可以修改 PDF 表单字段名称?

ssl - 如何从 itext bouncycaSTLe tsaclient 建立 ssl 连接

java - 使用itext将文本文件转换为pdf时设置编码

c# - 在 ASP.NET MVC 3 中缓存数据

c# - 具有相同元素类型和等级的数组类型不相等