Home > Blockchain >  Setting background color of wordx
Setting background color of wordx

Time:11-18

im trying to set a report default background color but it appears black instead of blue, can anyone help?

Why is that? do i need to use another format that is not hex? iv tryied with other format and still nothing.

        docpath="/Users/ricardosimoes/Desktop/DESKTOP/Jira/my_word_file.docx"
        mydoc = docx.Document()
        section_h = mydoc.sections[0]
        header = section_h.header


        styles = mydoc.styles
        style = styles.add_style('Tahoma',WD_STYLE_TYPE.PARAGRAPH)
        style.font.name = 'Tahoma'
        style.font.size = Pt(11)

        shd = OxmlElement('w:background')
        # Add attributes to the xml element
        shd.set(qn('w:color'), '#0000FF')
        shd.set(qn('w:themeColor'), 'text1')
        shd.set(qn('w:themeTint'), 'F2')
        # Add background element at the start of Document.xml using below
        mydoc.element.insert(0, shd)
        # Add displayBackgroundShape element to setting.xml
        shd1 = OxmlElement('w:displayBackgroundShape')
        mydoc.settings.element.insert(0, shd1)

        paragraph_h = header.paragraphs[0]
        runheader = paragraph_h.add_run()
        runheader.add_picture("client_report/report_img/titulo.png", width=docx.shared.Inches(5), height=docx.shared.Inches(1))


        mydoc.add_picture("client_report/report_img/bottom.png", width=docx.shared.Inches(5),
                          height=docx.shared.Inches(1))
        mydoc.save(docpath)

CodePudding user response:

The snippet seems to supply all three of the w:color, w:themeColor and w:themeTint attributes, and the latter two override the first one. The ECMA-376 standard says about the w:color attribute:

If the background specifies the use of a theme color via the themeColor attribute, this value is ignored. [Note: Applications are discouraged from specifying both the color and themeColor attributes on the same parent element. end note]

I haven't tested this, but removing themeColor and themeTint (and dropping the # from 0000FF) should cause the blue color to show up.

  • Related