python-docx 在 2 列布局文档中添加标题
python-docx add title in a 2 column layout document
我一直在浏览 python-docx docs,但找不到在 2 列布局文档中插入标题的方法。
我尝试了几种方法来获得解决方法,其中 none 有效。每当我使用 python-docx 创建 2 列布局并尝试为文档添加标题时,标题不会添加到文档的顶部中心,它实际上被添加到左侧的第一列。
下面是我用来生成文档的代码。
from docx import Document
from docx.shared import Inches
from docx.shared import Pt
from docx.enum.section import WD_SECTION
from docx.oxml.ns import qn
doc = Document()
# Title
title = doc.add_heading('THIS IS THE TITLE')
section = doc.sections[0]
sectPr = section._sectPr
cols = sectPr.xpath('./w:cols')[0]
cols.set(qn('w:num'),'2')
# Left column
par1 = doc.add_paragraph('FIRST PAR IN THE LEFT COLUMN(testingtestingtestingtestingtestingtestingtestingtestingtestingtesting)')
# Right column
current_section = doc.sections[-1]
current_section.start_type
new_section = doc.add_section(WD_SECTION.NEW_COLUMN)
new_section.start_type
par2 = doc.add_paragraph('FIRST PAR IN THE RIGHT COLUMN(testingtestingtestingtestingtestingtestingtestingtestingtestingtesting)')
# Save Doc
doc.save('demo.docx')
下图显示了代码的结果。
有什么方法可以将标题插入文档的顶部中心,或者我需要使用模板才能做到这一点吗?
编辑(解决方案):
Scanny 指出我应该将每个元素隔离在其自己的部分中。请在下面找到生成带有标题的 2 列文档的代码。
from docx import Document
from docx.shared import Inches
from docx.shared import Pt
from docx.enum.section import WD_SECTION
from docx.oxml.ns import qn
import pdf2docx
doc = Document()
# First Section
new_section = doc.add_section(WD_SECTION.CONTINUOUS)
new_section.start_type
p1 = doc.add_heading('This is the title!!!!!!!!!!!!!')
p1.alignment = 1
# Second Section
new_section = doc.add_section(WD_SECTION.CONTINUOUS)
new_section.start_type
section = doc.sections[2]
# Set to 2 column layout
sectPr = section._sectPr
cols = sectPr.xpath('./w:cols')[0]
cols.set(qn('w:num'),'2')
p1 = doc.add_paragraph('This is the 1st para')
p1.alignment = 1
# Third Section
new_section = doc.add_section(WD_SECTION.NEW_COLUMN)
new_section.start_type
p1 = doc.add_paragraph('This is the 2nd para')
p1.alignment = 1
# Save
doc.save('demo.docx')
感谢Scanny!
您需要为 (1-col) 标题和 (2-col) body 单独的部分。节上有一个设置来指定它之前的中断类型,例如 section.start_type = WD_SECTION.CONTINUOUS
。我相信需要继续 second 部分
我一直在浏览 python-docx docs,但找不到在 2 列布局文档中插入标题的方法。
我尝试了几种方法来获得解决方法,其中 none 有效。每当我使用 python-docx 创建 2 列布局并尝试为文档添加标题时,标题不会添加到文档的顶部中心,它实际上被添加到左侧的第一列。
下面是我用来生成文档的代码。
from docx import Document
from docx.shared import Inches
from docx.shared import Pt
from docx.enum.section import WD_SECTION
from docx.oxml.ns import qn
doc = Document()
# Title
title = doc.add_heading('THIS IS THE TITLE')
section = doc.sections[0]
sectPr = section._sectPr
cols = sectPr.xpath('./w:cols')[0]
cols.set(qn('w:num'),'2')
# Left column
par1 = doc.add_paragraph('FIRST PAR IN THE LEFT COLUMN(testingtestingtestingtestingtestingtestingtestingtestingtestingtesting)')
# Right column
current_section = doc.sections[-1]
current_section.start_type
new_section = doc.add_section(WD_SECTION.NEW_COLUMN)
new_section.start_type
par2 = doc.add_paragraph('FIRST PAR IN THE RIGHT COLUMN(testingtestingtestingtestingtestingtestingtestingtestingtestingtesting)')
# Save Doc
doc.save('demo.docx')
下图显示了代码的结果。
有什么方法可以将标题插入文档的顶部中心,或者我需要使用模板才能做到这一点吗?
编辑(解决方案):
Scanny 指出我应该将每个元素隔离在其自己的部分中。请在下面找到生成带有标题的 2 列文档的代码。
from docx import Document
from docx.shared import Inches
from docx.shared import Pt
from docx.enum.section import WD_SECTION
from docx.oxml.ns import qn
import pdf2docx
doc = Document()
# First Section
new_section = doc.add_section(WD_SECTION.CONTINUOUS)
new_section.start_type
p1 = doc.add_heading('This is the title!!!!!!!!!!!!!')
p1.alignment = 1
# Second Section
new_section = doc.add_section(WD_SECTION.CONTINUOUS)
new_section.start_type
section = doc.sections[2]
# Set to 2 column layout
sectPr = section._sectPr
cols = sectPr.xpath('./w:cols')[0]
cols.set(qn('w:num'),'2')
p1 = doc.add_paragraph('This is the 1st para')
p1.alignment = 1
# Third Section
new_section = doc.add_section(WD_SECTION.NEW_COLUMN)
new_section.start_type
p1 = doc.add_paragraph('This is the 2nd para')
p1.alignment = 1
# Save
doc.save('demo.docx')
感谢Scanny!
您需要为 (1-col) 标题和 (2-col) body 单独的部分。节上有一个设置来指定它之前的中断类型,例如 section.start_type = WD_SECTION.CONTINUOUS
。我相信需要继续 second 部分