我想将pdf文件转换为文本文件,但某些pdf文件不适用于pdfbox dll,因为Acrobat的版本比Acrobat 5.x更新
请告诉我我的工作?
output.WriteLine("Begin Parsing.....");
output.WriteLine(DateTime.Now.ToString());
PDDocument doc = PDDocument.load(path);
PDFTextStripper stripper = new PDFTextStripper();
output.Write(stripper.getText(doc));
答案 0 :(得分:1)
您的第一次尝试应该尝试使用当前版本的PDFBox。您的0.7.3版本可以追溯到 2006年! PDFBox同时已成为一个Apache项目,位于here: http://pdfbox.apache.org/,当前版本(截至2013年5月)为1.8.1。我非常确定PDFBox nowerdays支持PDF对象流和交叉引用流,它们是PDF参考版本1.5中的新增内容,Adobe Acrobat 6版本是为
而构建的。如果这不起作用,您可能想尝试其他PDF库,例如如果AGPL(或购买许可证)对您没有问题,请iText(或您的案例中为iTextSharp)版本5.4.x。
有关使用iText(夏普)进行文本解析的信息,请参阅第15章标记内容和解析PDF {/ em> 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(夏普)版本都无法解析您的PDF,您可能希望发布样本进行检查;有一些方法可以从PDF中删除文本解析所需的所有信息......