프로그래밍 언어/Python

정기예금 금리 현황표 작성하기 - 보고서 작성하기(레이아웃 설정)

· 코딩마이데이

먼저 페이지 크기 조정, 표준 단락 서식 정의 등 보고서 작성에 필요한 초기 설정을 완료하고, 보고서 제목을 입력해 봅시다. 비주얼 스튜디오 코드에서 새로운 파일을 생성하고, 파일명을 'step_3_1.py'로 지정합니다. 다음 코드를 입력한 후 대화형 창에서 실행하면 'output' 폴더에 'step_3_1docx' 파일이 생성됩니다.

from pathlib import Path
from docx import Document
from docx.enum.text import WD_LINE_SPACING
from docx.oxml.ns import qn
from docx.shared import Mm, Pt, RGBColor
from docx.styles.style import ParagraphStyle
from docx.text.run import Run
from step_1_1 import OUT_DIR  # 이전에 작성한 모듈을 불러옵니다.

OUT_3_1 = OUT_DIR / f"{Path(__file__).stem}.docx"

def apply_font(arg: Run | ParagraphStyle, # 12
               face: str = "Malgun Gothic", size_pt: int | None = None, # 13
               is_bold: bool | None = None, rgb: str | None = None): # 14
    if face is not None:
        arg.font.name = face  # 폰트 설정
        for prop in ["asciiTheme", "cstheme", "eastAsia", # 17
                     "eastAsiaTheme", "hAnsiTheme"]: # 18
            arg.element.rPr.rFonts.set(qn(f"w:{prop}"), face)  # 한글 폰트 설정 # 19
    if size_pt is not None: # 19
        arg.font.size = Pt(size_pt)  # 폰트 크기 설정
    if is_bold is not None:
        arg.font.bold = is_bold  # 폰트 굵기 설정
    if rgb is not None: # 24
        arg.font.color.rgb = RGBColor.from_string(rgb)  # 폰트 색상 설정("FFFFFF" 형식) # 25

def init_docx(): # 27
    doc = Document()  # Document 객체 생성
    section = doc.sections[0]  # 첫 번째 섹션(구역) 반환
    section.page_width, section.page_height = Mm(210), Mm(297)  # A4 페이지 크기 설정 # 30
    section.top_margin = section.bottom_margin = Mm(20)  # 위, 아래 여백 설정
    section.left_margin = section.right_margin = Mm(12.7)  # 왼쪽, 오른쪽 여백 설정 # 32

    style = doc.styles["Normal"]  # 표준("Normal") 단락 서식 설정
    p_format = style.paragraph_format  # 단락 서식 객체 반환 # 35
    p_format.space_before = p_format.space_after = 0  # 단락 앞, 단락 뒤 간격 설정
    p_format.line_spacing_rule = WD_LINE_SPACING.SINGLE  # 줄 간격을 1줄로 설정
    apply_font(style, size_pt=10)  # 폰트 설정 # 38
    doc.save(OUT_3_1)  # 워드 파일로 저장


if __name__ == "__main__":
    init_docx()

 

12~13 폰트를 설정하는 함수 apply_font()를 정의합니다. 매개변수 arg는 문자열(Run) 또는 (Paragraph Style), face에는 size_pt에는 폰트 크기, is_bold에는 굵은 서식 적용 여부, rgb에는 색상을 전달할 수 있습니다.

 

17~19 docx 패키지에서 한글 폰트를 사용하기 위해 필요한 설정입니다.

 

24~25 매개변수 rgb에 저장된 색상을 폰트에 적용합니다.

 

27 새로운 워드 파일을 생성하고 크기, 여백, 단락 서식, 폰트를 설정하는 함수 init_docx()를 정의합니다.

 

30~32 문서 크기를 A4(210X297) 사이즈로 설정하고 상하좌우에 여백을 설정합니다.

 

35~38 단락 서식은 '표준', 단락 앞뒤의 간격 0, 줄 간격은 1로 설정합니다.