【问题标题】:PDFBox 0.7.3 convert pdf to textPDFBox 0.7.3 将pdf转换为文本
【发布时间】:2013-05-04 13:21:44
【问题描述】:

我想将 pdf 文件转换为文本文件,但某些 pdf 文件不能使用 pdfbox dll 作为比 Acrobat 5.x 更新的 acrobat 版本

请告诉我我在做什么?

output.WriteLine("Begin Parsing.....");
output.WriteLine(DateTime.Now.ToString());

PDDocument doc = PDDocument.load(path);
PDFTextStripper stripper = new PDFTextStripper();

output.Write(stripper.getText(doc));

【问题讨论】:

  • 你为什么用标签itextsharp标记这个问题?您的问题只是关于 PDFBox...

标签: c# itextsharp pdfbox pdftotext


【解决方案1】:

您的第一次尝试应该是使用当前版本的 PDFBox。您的 0.7.3 版本可以追溯到 2006! 同时 PDFBox 已成为 Apache 项目,位于 here: http://pdfbox.apache.org/,当前版本(截至 2013 年 5 月)为 1.8.1。而且我非常确定现在的 PDFBox 确实支持 PDF 对象流和交叉引用流,这是 PDF 参考版本 1.5 中的新功能,Adobe Acrobat 6 的版本已经为

如果这不起作用,您可能想尝试其他 PDF 库,例如iText(或 iTextSharp 在您的情况下)版本 5.4.x,如果 AGPL(或购买许可证)对您没有问题。

关于使用 iText(Sharp) 进行文本解析的信息可以在iText in Action — 2nd Edition 的第 15 章标记内容和解析 PDF 中找到。该章节的示例可以在网上找到:Java.Net

对于第一次测试,样本 ExtractPageContentSorted2.cs / ExtractPageContentSorted2.java 将是一个好的开始。中心代码:

PdfReader reader = new PdfReader(PDF_FILE);
PdfReaderContentParser parser = new PdfReaderContentParser(reader);
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= reader.NumberOfPages; i++) {
    sb.AppendLine(PdfTextExtractor.GetTextFromPage(reader, i));
}

如果当前的 PDFBox 版本和当前的 iText(Sharp) 版本都无法解析您的 PDF,您可能需要发布样本以供检查;有一些方法可以从 PDF 中删除文本解析所需的所有信息...

【讨论】:

  • 正确,毕竟您要求的是 text,也不是 rich textformatted text 或类似的东西.此外,当我在此处针对某些文档进行测试时,您使用 PDFBox PDFTextStripper 的示例也没有显示格式。
  • 我想检查 pdf 文件是否包含文本(任何不具体的文本)我看到很多我不需要的特定文本的答案,我使用了这个代码 System.IO.StreamReader Reader = new System .IO.StreamReader(路径);字符串文件内容 = Reader.ReadToEnd(); if (fileContent.Contains(" ")) { } contains 必须考虑,但我想测试 pdf 是否有任何文本。
  • 好吧,如果你可以检查文件内容,你肯定也可以检查StringBuilder 内容...不过,我建议先删除空格。至于您的测试,您实际上可以在任何文本弹出后立即停止解析页面内容,您甚至不需要收集StringBuilder 中的所有文本,而是可以在提取后立即检查为每个页面返回的字符串并停止只要有任何文字。您可以通过使用自定义的文本提取策略进行更多优化,该策略仅返回是否包含某些文本而不是...
  • 我没有使用字符串生成器,它需要很长时间,我使用 StreamWriter output = new StreamWriter(new FileStream(newpath, FileMode.Create));output.WriteLine(PdfTextExtractor.GetTextFromPage(reader, i ));我的代码只读 pdf 包含文本我不需要读取只有图像的 pdf,为此我检查是否包含任何文本
  • 好的@DinaJarrah,那么现在还有哪个问题?您拥有所有可用的构建块。只需将它们放在一起。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-13
  • 2018-03-22
  • 2017-02-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多