0

我想将 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));
4

1 回答 1

1

您的第一次尝试应该是尝试使用当前版本的 PDFBox。您的 0.7.3 版本可以追溯到2006 年!PDFBox 同时已成为 Apache 项目,位于: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) 进行文本解析的信息可以在第 15 章标记内容和解析 PDFiText in Action - 2nd Edition中找到。该章的示例可以在线找到: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 中删除文本解析所需的所有信息......

于 2013-05-06T13:10:13.037 回答