2016-07-15 17 views
1

私はpython-docxを使っていくつかのドキュメントを生成しています。python-docxを使ってdocxドキュメントセクションに行番号を追加するには

文書セクション(OOXML標準以上)に適用できるline numbering propertyが存在することがわかります。

このプロパティはpython-docx APIには存在しません。

基礎となるsectPrフィールドにアクセスしてlnNumTypeタグを追加することは可能ですが、(簡単に)どのような例も見つけることができませんでした。

私の標準は混乱していますか?それとも私の質問はちょっと不明ですか?もしGoogleの場合は、例を見つけることができます'のpython-のdocx回避策関数OxmlElement'

sectPr = section._sectPr 

:あなたはSectionオブジェクトを持っていたら

+0

実装はhttps://github.com/でありますpython-openxml/python-docx/blob/master/docx/oxml/section.py; https://github.com/python-openxml/python-docx/blob/master/docx/oxml/xmlchemy.pyも参照してください。私はアクセサリーを見せていない。 – cxw

答えて

1

することは、あなたがsectPr要素を取得することができます。すべての要素はlxml _Elementから継承し、lxml操作が機能します。 BaseOxmlElementによって追加された便利なメソッドもいくつかあります。基本的な骨子は次のようになります。シーケンスは、ほとんど常に規定されているよう

sectPr = section._sectPr 
lnNumType = OxmlElement('w:lnNumType') 
lnNumType.set('fooAttrib', '42') 
sectPr.append(lnNumType) 

多くのケースでは、正しい順序ですべての新しい子要素を取得するに出席する必要があります。

あなたはここにw:sectPr要素のいくつかの便利な分析を見つけることができます: それはあなたがそれに続く要素が少ないとしてだけで終わりにw:lnNumTypeを追加することができます一目で見えるhttp://python-docx.readthedocs.io/en/latest/dev/analysis/features/sections.html

一般。しかし、あなたはより厳格になりたい場合は、この代わりのsectPr.append()使用することができます

sectPr.insert_element_before(lnNumType, (
    'w:pgNumType', 'w:pgNumType', 'w:cols', 'w:formProt', 'w:vAlign', 
    'w:noEndnote', 'w:titlePg', 'w:textDirection', 'w:bidi', 
    'w:rtlGutter', 'w:docGrid', 'w:printerSettings', 'w:sectPrChange', 
)) 

をあなたはここに.insert_element_before()の実装を見ることができます。セクションの https://github.com/python-openxml/python-docx/blob/master/docx/oxml/xmlchemy.py#L718

関連する問題