Ich plane, die bestimmte Überschrift in dem Dokument zu suchen, und dann muss ich den gesamten Inhalt in dieser Überschrift streichen. Das Dokument hat viele Überschriften, jede Überschrift kann Absätze, Tabellen, Bilder insgesamt oder in beliebigen Kombinationen enthalten.Zugriff auf XML-Inhalt <a14: sharpenSoften> für Bild Verwischen mit Python Docx
Ich habe docx installiert, ich war in der Lage, die bestimmte Überschrift zu suchen, streichen Absatz, Tabellen.
Jetzt nächste Aufgabe auf den Zugriff auf die Bilder unter dieser Überschrift und diese Bilder verschwimmen (statt Ausstreichen, planen wir, um das Bild zu verwischen)
Ich bin in der Lage zu bekommen, die Ressource-ID für die Bilder, die unter sind spezifische Heading indem Sie den Code in dem Link mit Bluring the Image which is under specific Heading using Python docx
da es keine direkten API diese Funktionen unterstützt, ich versuche, den XML-Code zu verwenden, wie in https://github.com/python-openxml/python-docx/issues/55#issuecomment-43914055 verwiesen ..
ich habe den XML-Code ohne Unschärfe und mit Unschärfe (durch manuelle Einstellung des Künstlerischen Effekts (fo r Blur) von Image)
XML-Code für das Bild ohne Unschärfen:
<pic:blipFill>
<a:blip r:embed="rId11">
<a:extLst>
<a:ext uri="{28A0092B-C50C-407E-A947-70E740481C1C}">
<a14:useLocalDpi xmlns:a14="http://schemas.microsoft.com/office/drawing/2010/main" val="0"/>
</a:ext>
</a:extLst>
</a:blip>
<a:srcRect/>
<a:stretch>
<a:fillRect/>
</a:stretch>
</pic:blipFill>`
XML-Code für das Bild mit Unschärfe:
<pic:blipFill>
<a:blip r:embed="rId11">
<a:extLst>
<a:ext uri="{BEBA8EAE-BF5A-486C-A8C5-ECC9F3942E4B}">
<a14:imgProps xmlns:a14="http://schemas.microsoft.com/office/drawing/2010/main">
<a14:imgLayer r:embed="rId12">
<a14:imgEffect>
<a14:sharpenSoften amount="-50000"/>
</a14:imgEffect>
</a14:imgLayer>
</a14:imgProps>
</a:ext>
<a:ext uri="{28A0092B-C50C-407E-A947-70E740481C1C}">
<a14:useLocalDpi xmlns:a14="http://schemas.microsoft.com/office/drawing/2010/main" val="0"/>
</a:ext>
</a:extLst>
</a:blip>
<a:srcRect/>
<a:stretch>
<a:fillRect/>
</a:stretch>
</pic:blipFill>
Aus den obigen Codes mit und ohne Unschärfen, es klar ist, dass der folgende Code der einzige Unterschied zwischen ihnen
<a14:imgProps xmlns:a14="http://schemas.microsoft.com/office/drawing/2010/main">
<a14:imgLayer r:embed="rId12">
<a14:imgEffect>
<a14:sharpenSoften amount="-50000"/>
</a14:imgEffect>
</a14:imgLayer>
</a14:imgProps>
ich in der Lage bin zuzugreifen, ist den Tag bis "A: ext", siehe unten Code
trans = r.xpath('.//w:drawing/wp:inline/a:graphic/a:graphicData/'
'pic:pic/pic:blipFill/a:blip/a:extLst/a:ext')
und trans ist der Parameter Rückkehr
<CT_PositiveSize2D '<a:ext>' at 0x4535db8>
Wenn ich Zugriff bin versucht, um die nächste Stufe Stichwort "a14: imgProps" nach "a: ext" ist es den folgenden Fehler
Datei werfen "C: \ Python27 \ Lib \ site-packages \ docx \ OXML \ xmlchemy.py", Linie 751, in XPath xpath_str, Namensräume = nsmap
File " src \ lxml \ etre e.pyx ", Zeile 1589, in lxml.etree._Element.xpath (src \ lxml \ etree.c: 61221)
Datei" src \ lxml \ xpath.pxi ", Zeile 307, in lxml.etree. XPathElementEvaluator. Anruf (src \ lxml \ etree.c: 178760)
Datei "src \ lxml \ xpath.pxi", Linie 227, in lxml.etree._XPathEvaluatorBase._handle_result (src \ lxml \ etree.c: 177712
)XPathEvalError: Nicht definiert Namespacepräfix
Da ich die Parameter "a14: sharpenSoften" dachte Zugriff wird hilfreich sein, um das Bild zu verwischen. Aber ich weiß nicht, wie man auf diesen Parameter zugreift.
Kann mir jemand helfen, auf den Parameter "a14: sharpenSoften" zuzugreifen ODER wenn es eine andere Methode gibt, um das Bild unter bestimmten Überschrift, Absatz oder Tabellen zu verwischen, lassen Sie mich darüber wissen.
Hinweis: Ich verwende Python docx-Modul und Python 2.7
Es ist nicht klar, was Ihre Frage ist. "Wie kann ich auf den Parameter zugreifen?" <- was heißt das überhaupt? Bearbeiten Sie einfach das XML, wenn Sie einen anderen Wert wünschen. –
Wie von @ M.Prokhorov angegeben, ist diese Frage sehr vage, und wir wissen nicht, was Sie erreichen möchten, lesen Sie bitte [wie Sie eine Frage stellen] (https://stackoverflow.com/help/how-to-ask) und bearbeiten Sie Ihre Frage, um das [minimale, vollständige und überprüfbare Beispiel] (https://stackoverflow.com/help/how-to-ask) zu verdeutlichen und einzubeziehen. Dies gibt uns eine bessere Vorstellung davon, was Sie erreichen wollen und was Sie bisher versucht haben. –
Ich habe die Fragen bearbeitet, können Sie es bitte jetzt überprüfen und lassen Sie mich wissen, wenn Sie weitere Informationen benötigen – Ammu