2013-05-04 146 views
0

我要PDF文件转换为文本文件,但一些PDF文件不PDFBOX DLL作为Acrobat版本所以在Acrobat 5.x的新工作PDFBox的0.7.3将PDF转换为文本

请告诉我我做的事?

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

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

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

为什么用标记itextsharp标记此问题?你的问题只是关于PDFBox ... – 2013-05-06 12:34:15

回答

1

您的第一次尝试应该是尝试使用当前版本的PDFBox。您的0.7.3版本可追溯至2006年的与此同时,PDFBox已成为Apache项目,位于here: http://pdfbox.apache.org/,当前版本(截至2013年5月)为1.8.1。我非常肯定,PDFBox nowerdays不支持PDF参考版本1.5中新增的PDF对象流和交叉参考流,Adobe Acrobat 6的版本已经构建为

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

上利用iText(夏普)的文本分析的信息可以在第15章标明含量被发现和解析的iText in Action — 2nd Edition 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(夏普)版本可以解析您的PDF,你可能要张贴检查的样本;有办法从PDF中删除文本解析所需的所有信息...

+0

谢谢你我测试它,但文本显示没有格式化 – 2013-05-07 06:59:04

+0

正确,你要求*文本*,或者*富文本*或*格式文本*或其他东西线。此外,使用PDFBox PDFTextStripper的示例在我对这里的某些文档进行测试时不会显示格式。 – mkl 2013-05-07 08:12:54

+0

我想检查PDF文件是否包含文本(任何文本没有具体)我看到许多特定文本的答案,我不需要,我用这个代码System.IO.StreamReader Reader = new System.IO.StreamReader(path) ; string fileContent = Reader.ReadToEnd(); if(fileContent.Contains(“”)) { }包含必须采取任何想法,但我想测试如果PDF有任何文本。 – 2013-05-07 09:01:36