无法通过C#中的ITextSharp从pdf中读取文本

时间:2014-05-21 04:52:13

标签: c# pdf itextsharp

我有两个pdf文件。在“安全”选项卡上,两个文件都设置了“安全方法:无安全性和文档组装:不允许”和“页面提取:不允许”。其他项目是允许的。 我使用标准的ITextSharp方法从pdf中检索文本:

PdfReader pdfReader = new PdfReader(fileName);

                for (int page = 1; page <= pdfReader.NumberOfPages; page++)
                {
                    ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy(); //LocationTextExtractionStrategy();
                    string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, page, strategy);

                    currentText = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText)));
                    text.Append(currentText);

从第一个文件我可以获得currentText没有任何问题从第二个文件我无法检索文本,currentText是空的。我正在尝试使用LocationTextExtractionStrategy,但结果是一样的。我在SodaPDF中打开此文件并将其转换为txt文件,但此文件也是空的(而frist文件转换为txt没有任何问题)。 可以从C#或任何其他应用程序读取此文件中的文本吗?如果我购买Adobe Reader,我会将此文件转换为txt吗? 这两个文件有什么区别?

由于

2 个答案:

答案 0 :(得分:1)

可能有很多pdf实际上是图像。 Bruno Lowagie说,你不能从imaged pdf中提取文本。你需要为此进行第三方OCR。

您可以使用Adobe Acrobat将pdf转换为可编辑的格式,例如word,html ..

答案 1 :(得分:0)

我在Aspose担任社交媒体开发人员。我建议您下载并尝试Aspose.Pdf for .NET将PDF转换为文本文件。如果您的文件包含图像,并且需要从这些图像中提取文本,则可以使用Aspose.Pdf将Pdf文件转换为图像,然后使用Aspose.OCR for .NET执行OCR。

以下是使用Aspose.Pdf for .NET将PDf转换为Text的示例代码

//open document
Document pdfDocument = new Document("input.pdf");
//create TextAbsorber object to extract text
TextAbsorber textAbsorber = new TextAbsorber();
//accept the absorber for all the pages
pdfDocument.Pages.Accept(textAbsorber);
//get the extracted text
string extractedText = textAbsorber.Text;
// create a writer and open the file
TextWriter tw = new StreamWriter("extracted-text.txt");
// write a line of text to the file
tw.WriteLine(extractedText);
// close the stream
tw.Close();

请下载免费试用版并试用。

相关问题