Bir PDF dosyasından iTextSharp kütüphanesini kullanarak bir dizeye okumaya çalışıyorum.PDF dosyasından okuma metni .NET içinde
iTextSharp.text.pdf.PdfReader pdfReader = new iTextSharp.text.pdf.PdfReader(@"C:\mypdf.pdf");
ITextExtractionStrategy strategy = new SimpleTextExtractionStrategy();
string currentText = PdfTextExtractor.GetTextFromPage(pdfReader, 1, strategy);
text = Encoding.UTF8.GetString(ASCIIEncoding.Convert(Encoding.Default, Encoding.UTF8, Encoding.Default.GetBytes(currentText)));
pdfReader.Close();
Console.WriteLine(text);
Bu normalde Tamam çalışır, ancak her birkaç satır boşluk gibi çıkışı ile beni bırakarak, ihmal edilecek: "thisismyoutputwithoutwhitespace". Doğru şekilde ayrıştırılan metin, yazılmayan metinle aynı gibi görünüyor; Aynı metin tutarlı bir şekilde ayrıştırılmayacak, bu da bana PDF'lerde bir şey olduğunu düşündürüyor.
Çok teşekkür ederim! Bu çok yardımcı. Ancak, IsChunkAtBounary() 'nin geçersiz kılınabileceğinden emin misiniz? "Geçersiz kılma, çünkü soyut, sanal olarak işaretlenmez" alıyorum. Yeni bir sınıf oluşturdum, LocationTextExtractionStrategy genişletilmiş ve yöntemi geçersiz kıldım. –
Bu, Java'dan C# 'a bir taşıma hatası gibi görünüyor. Bunun bir sonraki sürümde sabitlendiğinden emin olacağım. Bir geçici çözüm olarak, ITextExtractionStrategy arabiriminin tamamen yeni bir uygulamasını etkin bir şekilde yaratarak, LocationTextExtractionStrategy kodunu kopyalamanız gerektiğini düşünüyorum. Yeni uygulamanızda isChunkAtWordBoundary yöntemini ayarlayabilirsiniz. Biliyorum ... en temiz çözüm değil. C# ile aşina değilim; belki daha fazla C# deneyime sahip biri daha zarif bir çözüm düşünebilir. – rhens
Eğer LocationTextExtractionStrategy'in kaynak koduna sahip değilseniz, burada bulabilirsiniz (en güncel sürüm): http://sourceforge.net/p/itextsharp/code/HEAD/tree/trunk/src/core/iTextSharp /text/pdf/parser/LocationTextExtractionStrategy.cs – rhens