您的第一次尝试应该是尝试使用当前版本的 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 章标记内容和解析 PDF的iText 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 中删除文本解析所需的所有信息......