Torsten Decker: Textstellen in einem PDF mit Javascript markieren

Hallo liebe Leute,

ich habe da ein kleines PDF-Javascript-Problem, bei dem ich mit meinen nur sehr rudimentär ausgebildeten Javascript-Kenntnissen nicht weiter komme. Und auch die Suche einer Lösung über Google hat mich nicht wirklich voran gebracht, da sich die meisten Einträge und Lösungsvorschläge auf Javascript in einer HTML-Umgebung beziehen.

Folgende Lage: Ich habe eine Anzahl von vereinfacht gezeichneten Ortsplänen und ein Straßenverzeichnis in einem PDF mit dem schönen Namen "Einsatzordner". Die Straßennamen auf den Ortsplänen bestehen aus Text, lassen sich also mit dem Textbearbeitungswerkzeug des Acrobat auswählen. In dem Straßenverzeichnis liegt über jedem Straßennamen eine aktive Fläche. Wunsch ist es, durch einen Klick auf den Straßennamen im Straßennamenverzeichnis auf den entsprechenden Ortsplan zu springen und dort den betreffenden Straßennamen zu markieren.

Sprung zur Seite ist über "Eigenschaften>Aktionen" kein Problem. Das Markieren des Textes läuft im Moment über ein Javascript mit "search.query("Straßenname", "ActiveDoc");" Funktioniert zwar leidlich, ist aber sehr langsam, weil es das gesamte Dokument (ca. 300 Seiten) durchsucht, ehe etwas angezeigt wird und man muss das Suchfenster der Acrobat-Suchfunktion manuel wegklicken, was für den Betrieb im Einsatz zu umständlich ist. Wäre auch schön, wenn die Hinterlegung des gewählten Straßennamens im Straßenplan nicht in zartblau sondern in rot geschähe (wäre aber nur "nice to have").

Von daher die Frage: Wie muss ein Javascript lauten, um auf einer Seite in einem PDF eine bestimmte Textstelle farblich hervorzuheben? Habe schon mit "this.select()" herumexperimentiert, aber ohne Erfolg. Wäre nett, wenn mir armen Javascript-Dau jemand helfen könnte.

Viele Grüße & besten Dank

Torsten Decker

  1. Tach,

    Funktioniert zwar leidlich, ist aber sehr langsam,

    du kannst die Suche beschleunigen, indem du dem PDF einen Such-Index hinzufügst.

    Wie muss ein Javascript lauten, um auf einer Seite in einem PDF eine bestimmte Textstelle farblich hervorzuheben?

    Wenn ich die API richtig verstehe, müsstest du dir ein span-Objekt besorgen und kannst dann dessen Eigenschaften anpassen; da die search-Methode, die du nutzt aber eigentlich nur nachbildet, was der User auch über das Suchfeld seines PDF-Viewers tut, wird das so nicht funktionieren; soweit ich das sehe, markiert das nur den text und liefert dir nix zurück und ich habe spontan nix gefunden, um auf markierten Text zuzugreifen (vielleicht über die Events selEnd und selStart?). Du könntest alle Straßennamen als passende Objekte ablegen, die du über eine ID ansprechen kannst, aber ich weiß nicht, was da in PDFs passend wäre, Fields sahen zuerst so aus, aber die scheinen zu Formularen zu gehören.

    mfg
    Woodfighter

    1. Guten Morgen Woodfighter,

      der Tipp mit dem Index hat schon mal funktioniert und die Suche etwas beschleunigt.

      mfG & bestem Dank Torsten Decker