Sto cercando di leggere il testo da un PDF in una stringa utilizzando la libreria iTextSharp.Leggere il testo da PDF in .NET
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);
Questo funziona normalmente OK, ma ogni poche righe gli spazi verrà omesso, lasciandomi con uscita del tipo: "thisismyoutputwithoutwhitespace". Il testo che analizza correttamente sembra essere lo stesso del testo che non lo fa; lo stesso testo sarà costantemente analizzato in modo errato, il che mi fa pensare che sia qualcosa all'interno dei PDF.
Grazie mille! Questo è molto utile. Tuttavia, sei sicuro che IsChunkAtBounary() sia sovrascrivibile? Sto ottenendo un "impossibile eseguire l'override perché non è contrassegnato come astratto, virtuale ..". Ho creato una nuova classe, esteso LocationTextExtractionStrategy e ho sovrascritto il metodo. –
Questo sembra essere un errore di porting, da Java a C#. Mi assicurerò che questo sia corretto nella prossima versione. Come soluzione, penso che dovrai copiare il codice LocationTextExtractionStrategy, creando in modo efficace un'implementazione completamente nuova dell'interfaccia ITextExtractionStrategy. Nella tua nuova implementazione puoi regolare il metodo isChunkAtWordBoundary. Lo so ... non la soluzione più pulita. Non ho molta familiarità con C#; forse qualcuno con più esperienza in C# può pensare ad una soluzione più elegante. – rhens
Se non si dispone del codice sorgente di LocationTextExtractionStrategy, è possibile trovarlo qui (la versione più recente): http://sourceforge.net/p/itextsharp/code/HEAD/tree/trunk/src/core/iTextSharp /text/pdf/parser/LocationTextExtractionStrategy.cs – rhens