2016-05-22 1 views
0

PdfReader Reader = neue PdfReader (neue FileInputStream (fpath));Android: Wie kann ich Leser nur für eine Seite in iText definieren

Wir können Leser in diesem Typ definieren. Dies ist für alle PDF-Datei. Ich muss diesen Leser nur für eine Seite definieren. Zum Beispiel nur für 10. Seite der PDF-Datei.

Wir können Seite für Seite lesen, um Text zu bekommen, aber ich muss dies tun, um Bilder zu bekommen.

TextExtractionStrategy strategy; 
     StringBuilder sb = new StringBuilder(); 


    for (int i = 1; i <= reader.getNumberOfPages(); i++) { 
      strategy = parser.processContent(i, new SimpleTextExtractionStrategy()); 
      strW.write(strategy.getResultantText()); 

      sb.append(strW.toString); 
     }} 
+0

Nur um Ihre Frage zu klären: Sie möchten alle Bilder extrahieren, die sich auf einer bestimmten Seite in einem PDF-Dokument befinden? –

+0

Eigentlich möchte ich Reader für eine bestimmte Seite in einem PDF definieren. Ich kann ja für deinen Kommentar sagen. –

+0

Wie ersetzt man 'for (int i = 1; i <= reader.getNumberOfPages(); i ++)' durch ein einfaches 'int i = 10;'? – mkl

Antwort

1

Bitte beachten Sie die offizielle Dokumentation und die Suche nach selectPages. Die Methode selectPages() reduziert die PdfReader Instanz auf die in Ihrer Auswahl aufgelisteten Seiten.

Zum Beispiel, wenn Sie die PdfReader Instanz auf Seite 10 begrenzen möchten, können Sie diese Zeile verwenden:

reader.selectPages("10"); 

aktualisieren

Sie behaupten, dass die oben Ihre Frage nicht beantworten . Wenn das wahr ist, dann formuliere bitte deine Frage, weil ich an keine andere Interpretation deiner Frage denken kann.

Vielleicht gibt es ein Sprachproblem, wie Amedee in seinem Kommentar angibt, aber ich denke, dass das Problem mit einigen Missverständnissen über PDF zusammenhängt. Eine PDF-Datei besteht aus einer Reihe von Objekten. Diese Objekte sind in einer Querverweistabelle aufgelistet. Jede Software, die ein PDF liest, muss am Ende der Datei beginnen, wo sie das Trailer-Wörterbuch findet. Dieses Trailer-Wörterbuch bezieht sich auf das Wurzelwörterbuch nach Nummer. Der Viewer sucht das Objekt in der Querverweistabelle und sucht nach dem Seitenwörterbuch im Katalog. Das Seitenwörterbuch enthält eine Baumstruktur: den Seitenbaum. Ein PDF-Reader wird durch den Seitenbaum navigieren und ein Seitenwörterbuch für jede Seite finden. Das Seitenwörterbuch enthält Verweise auf alle Ressourcen, die zum Rendern der Seite benötigt werden: Inhaltsströme, Verweise auf Schriftarten, Bilder usw. Diese Objekte (Seitenwörterbücher, Streams, Fontwörterbücher usw.) können in der gesamten Datei gefunden werden (am Anfang, in der Mitte, am Ende). Sie sind nicht in der gleichen Reihenfolge wie die Seiten angeordnet. Die Querverweistabelle kennt den Byte-Offset jedes dieser Objekte. Wenn Sie das wissen, wissen Sie, dass jede Frage, die "Ich möchte nur eine Seite eines PDF durch das Isolieren einer bestimmten Anzahl von fortlaufenden Bytes lesen" lautet, eine Frage ist, die ein tiefes Verständnis für PDF offenbart.

+0

Das ist nicht genau meine Anfrage. Ich muss das tun; Leser = Leser.SelectPage (10); beispielsweise. Aber danke, ich habe auch eine Methode gelernt. –

+0

Wenn das nicht genau Ihre Anfrage ist, dann erläutern Sie bitte, was Ihre Anfrage ist. Ich verstehe, dass es eine Sprachbarriere geben kann. Es kann hilfreich sein, wenn Sie Beispiele geben, was Sie wirklich wollen, und geben Sie den Code, den Sie bereits geschrieben haben. Code ist einfacher zu schreiben und zu verstehen als eine Fremdsprache. –

+0

@AliA Ihre Frage ist falsch. Ich habe meine Antwort aktualisiert. Warum stellen Sie eine Frage, die falsch ist? Welches Problem versuchen Sie zu lösen, indem Sie eine Frage stellen, die falsch ist? –

Verwandte Themen