evince GNOME viwer

Programmierung für GNOME und GTK+, GUI-Erstellung mit Glade.
Antworten
TryToLearn
User
Beiträge: 39
Registriert: Freitag 6. Juni 2014, 13:44

Hi,
ich habe ein Problem mit dem evince Viwer von GNOME.
Ich öffne ein Dokument mit einem Subprocess hier der Aufruf:
process=subprocess.Popen([evince, '-l', 'Suchwort', Dokument.pdf])
So mein Problem ist nun, dass das Dokuemnt zwar geöffnet wird aber die Suche nicht direkt durchgeführt, sonder auf der ersten Seite geöffnet wird.
Sobald ich die Tastenkombination CTRL+F klicke wird die richtige Suche durchgeführt, jedoch kann ich leider kein weiteres Tool installieren um Tastatureingaben zu simulieren.
Mache ich einen Fehler im Aufruf oder gibt mir dieser Kommadozeilenoption nicht die Möglichkeit eine direkte Suche durchzuführen? :K
Vielleicht kennt sich ja jemand mit dem evince viwer aus :D

Oder es gibt die Möglichkeit den Tastaturbefehl CTRL+F an den subprocess zu schicken ohne ein weiteres Tool installieren zu müssen? :? :?:
Zuletzt geändert von TryToLearn am Dienstag 10. Juni 2014, 16:49, insgesamt 1-mal geändert.
BlackJack

@TryToLearn: Also wenn ich das mache dann wird die erste Seite angezeigt auf der das Suchwort gefunden wird. Es wird allerdings visuell nicht hervorgehoben wie bei einer Suche per Strg+F und man kann auch nicht mit den entsprechenden Tasten zu den nächsten Treffern weiter springen.
TryToLearn
User
Beiträge: 39
Registriert: Freitag 6. Juni 2014, 13:44

@BlackJack: hast du exakt meinen Aufruf genommen ??
Also bei mir wird damit das Dokument leider nur auf der Ersten Seite geöffnet hmmm :?:
BlackJack

@TryToLearn: Nein nicht exakt, ich habe beim ersten und letzten Element der Liste Zeichenketten übergeben und statt 'Suchwort' ein Wort was auch tatsächlich in dem PDF vorkommt das ich als letztes Element in der Liste angegeben habe. Und das Suchwort tauchte auch nicht auf der Startseite auf, um sicherzugehen, dass ich auch tatsächlich eine andere als die Startseite angezeigt bekomme.
TryToLearn
User
Beiträge: 39
Registriert: Freitag 6. Juni 2014, 13:44

ja so hab ich es auch gemacht nur nicht als letztes Element übergeben.
Nur dass wir uns richtig verstehen:
aufruf = 'envince'
path = '/mnt/Verzeichnis/Dokument.pdf'
process=subprocess.Popen([aufruf, '-l', path, 'Suchwort'])
meinst du so ? :D
Ich kann es heute leider nichtmehr ausprobieren :cry:
BlackJack

@TryToLearn: Nein, so natürlich nicht. Nach dem '-l' muss das Suchwort stehen.
TryToLearn
User
Beiträge: 39
Registriert: Freitag 6. Juni 2014, 13:44

@BlackJack: sry dass ich mich jetzt erst wieder melde aber hattle viel anderes um die Ohren :(

Also ich habe jetzt nochmal alles ausprobiert aber bei mir wird das Dokument immer auf der ersten Seite geöffnet, doch sobald ich die Suche öffne ist mein Suchwort bereits eingegeben aber die Suche wurde nicht ausgeführt...

Es wäre nett wenn du mir mal deinen gesammten Aufruf schicken könntest.

Ich halte mich eigentlich mit meinem Aufruf nur an diese http://manpages.ubuntu.com/manpages/rar ... nce.1.html Anleitung

Hier nochmal mein Aufruf:

Code: Alles auswählen

evince=r'evince'
full_path= '/mnt/Verzeichnis/Dokument.pdf'
key='Suchwort' #Das Suchwort existiert und befindet sich nicht auf der ersten Seite
process=subprocess.Popen([evince, '-f', '--find=%s'%key, full_path])
BlackJack

@TryToLearn: Hm, der Version die ich gerade auf meinem Laptop installiert habe scheint diese Option auch völlig egal zu sein. Das ist aber kein Python-Problem, denn auch wenn ich das Programm direkt im Terminal ausführe bekomme ich es nicht zum Suchen der Seite. Funktioniert es bei Dir denn direkt?
TryToLearn
User
Beiträge: 39
Registriert: Freitag 6. Juni 2014, 13:44

@BlackJack: Hmm ok danke das wird wohl das Problem sein. Es funktioniert direkt leider auch nicht...
Dann muss ich wohl doch ein Keybord-simulator verwenden...
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@TryToLearn
Falls Du nicht auf eine Anzeige des PDF in einem PDF-Viewer angewiesen bist, wäre auch zu überlegen, ob Du das PDF z. B. mit `pdftotext` aus dem Xpdf Projekt zuerst in ein Textfile konvertierst, das Du dann durchsuchen kannst. Ich habe das jetzt nicht ausprobiert, aber eventuell sind in einem so konvertiertem Textfile ja auch die Seitennummern angegeben, über die Du dann wiederum den PDF-Viewer aufrufen kannst, falls nötig...

Eher ein Hack als 'ne Lösung, aber PDF ist halt auch so 'ne Sache... :)

mutetella

EDIT: Unter Debian oder einem -derivat ist pdftotext innerhalb der `poppler-utils` enthalten...
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
TryToLearn
User
Beiträge: 39
Registriert: Freitag 6. Juni 2014, 13:44

@mutetella: Ja darüber habe ich mir auch schon Gedanken gemacht und auch schon einiges ausprobiert, da ich am Anfang auf die Seite springen wollte und nicht nach Schlüsselwörtern suchen, jedoch bekomme ich die Seitenzahl leider nicht zurück, zumindest nicht mithilfe der Programme die mir generell zur Verfügung stehen.
Sirius3
User
Beiträge: 17711
Registriert: Sonntag 21. Oktober 2012, 17:20

@TryToLearn: pdftotext schreibt Seitenvorschubzeichen in die Text-Datei, die man zum Zählen der Seiten benutzen kann.
TryToLearn
User
Beiträge: 39
Registriert: Freitag 6. Juni 2014, 13:44

@Sirius3: Ah ok vielen Dank, das schau ich mir an sobald ich Zeit habe.
TryToLearn
User
Beiträge: 39
Registriert: Freitag 6. Juni 2014, 13:44

@all:

Also ich habe das Problem jetzt so gelöst:
Ich habe ein Modul gefunden, dass Tastaureingabeb simuliert und leicht einzubinden ist.
Damit kann ich einfach Control + F und den Suchbegriff simulieren.

Nochmal vielen Dank an alle die mir geholfen haben
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@TryToLearn
Wenn Du jetzt noch kurz den Namen/Link des Moduls angibst, wäre damit vielleicht künftigen Threadlesern geholfen... Wobei ich diesen "Tastendruck-Simulations-Lösungen" immer ein wenig skeptisch gegenübersteh'. Da halte ich den Ansatz von Sirius3, über die Seitenvorschubzeichen die Seitenzahl zu ermitteln, für weniger fehleranfällig.

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
TryToLearn
User
Beiträge: 39
Registriert: Freitag 6. Juni 2014, 13:44

@mutetella: Da hast du natürlich völlig recht
Hmm ich hoffe nicht dass es fehleranfällig ist :D , aber die Lösung mit dem Seitenvorschubzeichen ist für mich in diesem Fall leider ungeigent, da ich häufige Änderungen hab und das Modul das Sirius3 vorgeschlagen hat nicht auf allen Systemen, wo mein Tool laufen soll, so funktioniert wie benötigt.

hier das Modul für die keyboardsimulation und auch mousesimulation:
https://github.com/SavinaRoja/PyUserInput
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@TryToLearn
Was ich nicht verstehe: Wie landen die keystrokes bei `evince`? Ich meine, bevor der Tastendruck simuliert wird, muss `evince` ja die aktive Anwendung sein. Konnte dazu in der Beschreibung nichts finden.

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
TryToLearn
User
Beiträge: 39
Registriert: Freitag 6. Juni 2014, 13:44

@mutetella: Ja das ist momentan auch mein Problem...
Unter Windows lese ich einfach den Titel des Programms im Fokus aus und warte solange bis der Titel meinem Pdf-viewer entspricht.
Unter Linux suche ich gerade eine ähnliche Lösung ohne weitere Packete installieren zu müssen, ich kann leider nur Module importieren aber nicht installieren.
mutetella
User
Beiträge: 1695
Registriert: Donnerstag 5. März 2009, 17:10
Kontaktdaten:

@TryToLearn
Um keystrokes an ein bestimmtes Fenster zu senden, musst Du ein wenig tiefer in die Toolkiste greifen. Zuerst einmal benötigst Du die ID des `evince` Fensters. Nehmen wir an, ich habe `evince` so geöffnet:

Code: Alles auswählen

$ evince Biohöfe_Bioverkauf.pdf
Ich suche also nach einem Fenster, das "Biohöfe_Bioverkauf.pdf" im Titel trägt:

Code: Alles auswählen

$ xdotool search --name Biohöfe
33554435
Somit habe ich die ID, an die ich nun eine Tastenfolge schicken kann:

Code: Alles auswählen

$ xvkbd -window $(xdotool search --name Biohöfe) -text "\CfDinkel"
Wie unter anderem Ctrl, Alt etc. Tastenkombinationen definiert sind, kann Du in der man page zu `xvkbd` nachschlagen. `xdotool` lässt sich auch für Tastendruck Simulationen nutzen, läuft aber leider bei `evince` ins Leere, keine Ahnung weshalb.

mutetella
Entspanne dich und wisse, dass es Zeit für alles gibt. (YogiTea Teebeutel Weisheit ;-) )
TryToLearn
User
Beiträge: 39
Registriert: Freitag 6. Juni 2014, 13:44

@mutetella: 'xdotool' müsste ich auch installieren, was ich leider nicht kann.
Ich hab das jetzt so gelöst, dass ich sobald meine Gui den Fokus verliert (ab da hat evince den Fokus) meine Tastatureingabe stattfindet.
Antworten