[python] python-docx 페이지 설정 및 레이아웃 지정하기

python-docx는 파이썬에서 Microsoft Word 문서를 생성하고 편집할 수 있는 라이브러리입니다. 이 라이브러리를 사용하여 페이지 설정 및 레이아웃을 지정할 수 있습니다.

페이지 설정하기

python-docx에서 페이지 설정은 document 객체의 sections 속성을 사용하여 설정할 수 있습니다. 아래의 예제 코드를 통해 페이지 크기, 여백 등을 설정하는 방법을 알아보겠습니다.

from docx import Document
from docx.shared import Inches

# 빈 문서 생성
doc = Document()

# 첫 번째 섹션 설정
section = doc.sections[0]

# 페이지 크기 설정
section.page_height = Inches(11)
section.page_width = Inches(8.5)

# 여백 설정
section.left_margin = Inches(1)
section.right_margin = Inches(1)
section.top_margin = Inches(1)
section.bottom_margin = Inches(1)

# 문서 저장
doc.save('page_settings.docx')

위의 예제 코드에서는 Document 객체를 생성한 후 첫 번째 섹션의 속성을 설정하여 페이지 크기를 11인치 x 8.5인치로, 여백을 1인치로 설정하고, 마지막으로 문서를 저장합니다.

레이아웃 지정하기

python-docx를 사용하여 문서의 레이아웃을 지정할 수도 있습니다. 예를 들어, 헤더와 푸터, 쪽번호, 섹션브레이크 등을 설정할 수 있습니다.

아래의 예제 코드는 python-docx를 사용하여 헤더와 푸터를 추가하는 방법을 보여줍니다.

from docx import Document
from docx.shared import Pt
from docx.enum.text import WD_PARAGRAPH_ALIGNMENT
from docx.oxml.ns import nsdecls
from docx.oxml import parse_xml

# 빈 문서 생성
doc = Document()

# 첫 번째 섹션 설정
section = doc.sections[0]

# 헤더 설정
header = section.header
header_paragraph = header.paragraphs[0]
header_paragraph.text = "헤더"

# 헤더 정렬
header_paragraph.alignment = WD_PARAGRAPH_ALIGNMENT.CENTER

# 푸터 설정
footer = section.footer
footer_paragraph = footer.paragraphs[0]
footer_paragraph.text = "푸터"

# 쪽번호 설정
page_number = footer_paragraph.add_run()
page_number.text = "Page {PAGE}"
page_number.font.size = Pt(10)
page_number.font.name = "Arial"
page_number.alignment = WD_PARAGRAPH_ALIGNMENT.RIGHT

# 참고: 쪽번호 XML 수정
xml = '<w:fldSimple %s w:instr="PAGE" />' % nsdecls('w')
r_element = parse_xml(xml)
footer_paragraph._p.insert_element_before(r_element, 'w:pPr')

# 문서 저장
doc.save('layout.docx')

위의 예제 코드에서는 Document 객체를 생성한 후 첫 번째 섹션의 헤더와 푸터를 설정합니다. 헤더와 푸터에는 원하는 내용을 추가하고, 필요에 따라 정렬 및 서식을 지정할 수 있습니다. 또한, 쪽번호를 추가하고 필요한 경우 XML을 수정하여 쪽번호 서식을 변경할 수도 있습니다.

위의 예제 코드를 실행하면 layout.docx라는 파일명으로 문서가 저장됩니다.

python-docx의 다양한 기능과 속성을 사용하여 페이지 설정 및 레이아웃을 자유롭게 지정할 수 있습니다. 자세한 사용법은 python-docx 공식 문서에서 확인할 수 있습니다.