无法从c#中的ITextSharp读取pdf中的文本
本文关键字:pdf 文本 读取 ITextSharp 中的 | 更新日期: 2023-09-27 18:04:25
我有两个pdf文件。在"安全"选项卡上,两个文件都设置了"安全方法:无安全"answers"文档组装:不允许"answers"页面提取:不允许"。其他物品是允许的。使用标准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文件,但这个文件也是空的(而第一个文件转换为txt没有任何问题)。可以从c#或任何其他应用程序中读取此文件中的文本吗?如果我买了adobereader,我要把这个文件转换成txt吗?这两个文件有什么不同?
谢谢
可能有很多pdf实际上是图像。正如Bruno Lowagie所说,你不能从pdf图像中提取文本。你需要使用第三方OCR。
您可以使用adobeacrobat将pdf转换为可编辑的格式,如word, html..
我在Aspose担任社交媒体开发人员。我建议您下载并尝试Aspose.Pdf for . net将PDF转换为文本文件。如果您的文件包含图像,并且需要从这些图像中提取文本,您可以使用Aspose.Pdf将Pdf文件转换为图像,然后使用Aspose执行OCR。. net的OCR
下面是使用。net
的Aspose.Pdf将PDf转换为文本的示例代码//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();
请下载免费试用版并试用。