我有两个pdf文件。在Sercurity选项卡上,两个文件都设置了Security方法:无安全性和文档程序集:不允许,页提取:不允许。其他项目是允许的。我使用standart 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#或任何其他应用程序读取此文件中的文本?如果我购买Adobe,我会把这个文件转换成txt?这两个文件有什么区别?
谢谢
发布于 2014-05-21 09:11:31
我在Aspose做社交媒体开发者。我建议您下载并尝试Aspose.Pdf for .NET将PDF转换为文本文件。如果您的文件包含图像,并且需要从这些图像中提取文本,则可以使用Aspose.Pdf将Pdf文件转换为图像,然后使用Aspose.OCR for .NET执行OCR。
下面是使用Aspose.Pdf for .NET将Aspose.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();
请下载免费试用版并试用。
发布于 2014-05-21 06:58:13
可能有很多的pdf,实际上是图像。你不能像Bruno所说的那样从图像中提取pdf。你需要为这个选择第三方OCR。
您可以使用Acrobat将pdf转换为可编辑格式,如word、html。
https://stackoverflow.com/questions/23774209
复制相似问题