wie markieren Sie einen text oder ein Wort in einer pdf-Datei mit iTextsharp?
Ich Suche ein Wort in einem bestehenden pdf-Datei und ich möchten, markieren Sie den text oder das Wort
und speichern Sie die pdf-Datei
Ich habe eine Idee mit PdfAnnotation.CreateMarkup die wir finden konnten, die position des Textes, und wir können hinzufügen, bgcolor,...aber ich weiß nicht wie es zu realisieren 🙁
Bitte helfen Sie mir
InformationsquelleAutor Sankar M | 2011-06-29
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist einer von denen "klingt einfach, aber ist eigentlich wirklich komplizierte" Dinge. Siehe Mark ' s Beiträge hier und hier. Letztlich werden Sie wahrscheinlich darauf hingewiesen,
LocationTextExtractionStrategy
. Viel Glück! Wenn Sie tatsächlich finden Sie heraus, wie Sie es tun es hier posten, gibt es mehrere Menschen, die sich Fragen, was Sie genau Fragen!InformationsquelleAutor Chris Haas
Habe ich gefunden, wie dies zu tun, nur für den Fall jemand braucht, um Wörter oder Sätze mit Ortsangaben (Koordinaten) aus einem PDF-Dokument, finden Sie das Beispiel-Projekt
HIER
Ich verwendet VB.NET 2010. Vergessen Sie nicht, einen Verweis auf die iTextSharp-DLL in das Projekt.
Habe ich meine eigenen TextExtraction Strategie-Klasse basiert auf der Klasse LocationTextExtractionStrategy. Ich konzentrierte mich auf TextChunks, weil Sie bereits diese Koordinaten.
Es gibt einige bekannte Einschränkungen wie:
InformationsquelleAutor Jcis
@Jcis, habe ich es tatsächlich geschafft einen workaround für das handling von mehrere Suchvorgänge mit Ihrem Beispiel als Ausgangspunkt. Ich nutze das Projekt als eine Referenz in c# - Projekt, und verändert das, was es tut. Statt nur die Hervorhebung, die ich eigentlich haben Sie die Zeichnung ein weißes Rechteck um den Suchbegriff, und anschließend mit dem Rechteck-Koordinaten, platzieren Sie ein Formularfeld. Ich hatte auch ein vertauschen der contentbyte schreiben-Modus zu getovercontent, so dass ich blockieren, die für gesuchte text völlig. Was ich tatsächlich Tat, war zu erstellen, die ein string-array der Suchbegriffe, und dann mit einer for-Schleife erstelle ich so viele verschiedene text-Feldern wie ich brauche.
Prallt es die PDFTextGetter Funktion in deinem Beispiel hin und her zwischen zwei Dateien, bis ich erreichen das fertige Produkt. Es funktioniert wirklich gut, und es wäre nicht möglich gewesen ohne Ihre ersten Projekt, also danke dafür. Ich veränderte auch Ihre VB zu tun, die text-Feld-mapping-wie so;
Gerade dachte ich würde teilen, was ich geschafft mit Ihrem Projekt als Rückgrat. Er selbst erhöht den Feldnamen als ich von Ihnen. Ich hatte auch fügen Sie einen neuen parameter an Ihre Funktion, aber das ist es nicht Wert Eintrag hier. Danke wieder für diesen großen Vorsprung.
InformationsquelleAutor Mike Varosky
Dank Der Jcis!
Nach ein paar Stunden der Forschung und denken, ich fand Ihre Lösung, die mir geholfen, meine Probleme zu lösen.
es wurden 2 kleine bugs.
ersten: der stamper geschlossen werden muss, bevor der Leser, ansonsten wirft er eine exception.
zweitens: deine Lösung nicht funktionieren, wenn der gesuchte text ist in der letzten Zeile der extraced text.
InformationsquelleAutor Boris
Ich konvertieren Jcis's VB-Projekt zu WpfApplication C#(Datei in google drive) , und auch Boris's bugfixes , aber das Projekt nicht ausgeführt werden.
Es wird sehr geschätzt, wenn jemand, der versteht, der Algorithmus, das Programm, Update es.
Gut hinbekommen, aber du hast zwei Fehler: Zeile 165 sollte "sTextInUsedChunks = sTextInUsedChunks + chk.text;" und nach Zeile 179 einfügen "bStart = beugen = false;" Mit dieser Korrektur der alghorithm scheint gut zu funktionieren.
vielen Dank für deine Mühe um mein problem zu lösen. die Lösung läuft nun ohne Fehler. ideal wäre es, wenn der gesuchte text würde auch hervorgehoben.
Ich habe schnell versucht, den Algorithmus selbst, es gibt gemischte Ergebnisse. Es hebt richtig einige der Worte, aber es findet einige andere. Ich habe auch unterschiedliche Ergebnisse, wenn ich Spiele mit der groß - / Kleinschreibung, d.h. das Ergebnis ist nicht das gleiche, wenn ich nach "word" oder "Word". Außerdem, ich weiß nicht, wie es zu extrahieren den text. Es vermischt zwei benachbarte Spalten, während die standard-LocationTextExtractionStrategy Klasse nicht.
InformationsquelleAutor Ehsan Abidi