2016-03-24 10 views
4

Ich versuche ein Programm in Python zu erstellen, das ein bestimmtes Wort in einer .docx-Datei findet und die Seitennummer zurückgibt, an der es aufgetreten ist. Bisher konnte ich bei der Durchsicht der Python-docx-Dokumentation nicht herausfinden, wie auf die Seitennummer oder sogar auf die Fußzeile zugegriffen werden kann, wo die Nummer gefunden werden würde. Gibt es eine Möglichkeit, dies mit Python-DOCX oder sogar nur Python zu tun? Oder wenn nicht, was wäre der beste Weg, dies zu tun?Seitennummer python-docx

Antwort

3

Kurze Antwort ist nein, weil die Seitenumbrüche von der Rendering-Engine eingefügt werden, nicht von der DOCX-Datei selbst bestimmt.

Bestimmte Clients platzieren jedoch ein <w:lastRenderedPageBreak> Element in der gespeicherten XML-Datei, um anzugeben, wo sie die Seite beim letzten Rendern abgebrochen haben.

Ich weiß nicht, welche dies tun (obwohl ich Word selbst erwarte) und wie zuverlässig es ist, aber das ist die Richtung, die ich empfehlen würde, wenn Sie in Python arbeiten wollten. Sie könnten python-docx verwenden, um einen Verweis auf das gewünschte lxml-Element zu erhalten (wie w:document/w:body) und dann XPath-Befehle oder etwas verwenden, um zu einer bestimmten Seite zu iterieren, aber wenn Sie es ein wenig durchdenken, wird es eine detaillierte Entwicklung sein um dort zu arbeiten.

Wenn Sie in der systemeigenen Windows MS Office API arbeiten, können Sie möglicherweise etwas besseres erhalten, da es tatsächlich die Word-Anwendung ausführt.

Wenn Sie die Dokumente in Python-docx generieren, werden diese Elemente nicht platziert, da sie nicht versuchen, das Dokument zu rendern (was auch nicht wahrscheinlich ist). Wir werden wahrscheinlich nicht in absehbarer Zeit Unterstützung für w: lastRenderedPageBreak hinzufügen. Ich bin mir nicht einmal sicher, wie das aussehen würde.

Wenn Sie nach 'lastRenderedPageBreak' und/oder 'python-docx page break' suchen, sehen Sie hier weitere Fragen/Antworten, die vielleicht ein wenig mehr geben.

+0

danke für die schnelle antwort! – lehast22