2017-07-06 3 views
0

Ich versuche, zu extrahieren den Text aus dem PDF (Attachment-Link) mit dem Code (lib itext7) unter „Kann keine Bilddaten oder EI finden“:Versuchen Sie, ein PDF öffnen, erhalte ich die Fehler mit lib iTextSharp 7

 public static PageDescribe GetTextFromPage(PdfDocument fullDoc, int pageNum) 
    { 
     if (pageNum < 1) 
      return null; 
     else 
     { 
      PdfPage page = fullDoc.GetPage(pageNum); 
      if (page == null) 
       return null;             
      else 
      { 


       LocatedTextStrategy lStrat = new LocatedTextStrategy(); 
       string s = PdfTextExtractor.GetTextFromPage(page, lStrat,); 

       DateTime _startPoint = DateTime.Now; 
       lStrat.Points.Defragmentation(); 

       PageDescribe _res = new PageDescribe(pageNum, lStrat.Points); 
       return _res;             
      } 
     } 
    } 
} 

aber ich habe den Fehler nicht-Bilddaten oder EI finden:

See Image Error

Wenn ich manuell entfernen Sie die ursprüngliche logo der pdf dieser Fehler nicht auftritt. Aber ich kann das Quellsystem, das diese Dateien bereitstellt, nicht ändern.

Sample of pdf here

jemand irgendwelche Vorschläge?

+0

Können Sie den entsprechenden Code von 'LocatedTextStrategy' anzeigen? –

+0

Auch scheint es 'PdfTextExtractor.GetTextFromPage();' '3 Argumente, [wie hier] (https://stackoverflow.com/a/5003230/6741868). –

+0

Hallo @Keyur, ich benutze itext7, es gibt 3 Überladungen. Erste Überladung erhalten nur Pdfpage, zweite Überladung erhalten PdfPage und ITextExtractionStrategy (mein Code). Die dritte Überladung empfängt PdfPage, ITextExtractionStrategy und IDictionary . Der PdfReader, wie Ihr Link, ist nicht notwendig –

Antwort

0

heruntergeladen ich Ihre PDF-Datei, und versuchte, mit dem folgenden Code, es funktioniert für mich (Ich habe versucht, für Seite 1):

public string GetTextFromPage(string path, int pagenum) 
{ 
    PdfReader reader = new PdfReader(path); 
    string text = PdfTextExtractor.GetTextFromPage(reader, pagenum, new LocationTextExtractionStrategy()); 
    reader.Close(); 
    return text; 
} 

Sie die obige Methode ändern können Ihre PageDescribe Klasse zurückzukehren.

+0

Danke @KeyurPATEL. Welche Version von itext hast du benutzt? Ich benutze die Version itext7 (nuget) und es gibt keinen pdfreader Parameter in PdfTextExtractor.GetTextFromPage –

+0

Denken Sie daran, 'using iTextSharp.text; mit iTextSharp.text.pdf; mit iTextSharp.text.pdf.parser; ', da ich auch iTextSharp 7 verwende, heruntergeladen mit Nuget speziell, um den Code zu testen :) –

+0

iTextSharp ist andere lib, ich benutze itext7. Der Namespace verwendet iText.Kernel.Pdf; mit iText.Kernel.Pdf.Canvas.Parser; mit iText.Kernel.Pdf.Canvas.Parser.Listener; Hast du recht @Keyur PATEL, mit iTextSharp funktioniert, aber iext7 nein. es ist verrückt nein? lol –