Skip to content

이미지와 구역

공통 add_picture()는 PNG/JPEG/GIF/BMP 시그니처를 인식하므로 알려진 이미지에서는 image_format을 생략할 수 있습니다. 모르는 형식은 명시해야 하며 포맷 엔진에서 지원하지 않는 형식은 거부될 수 있습니다.

"""Insert PNG bytes using a size explicit for both DOCX and HWPX."""
import base64
from pathlib import Path
from pywpdoc import Document, Mm

PNG = base64.b64decode(
    "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mNk+A8AAQUBAScY42YAAAAASUVORK5CYII="
)


def run(fmt: str, out_dir: Path) -> Path:
    out_dir.mkdir(parents=True, exist_ok=True)
    doc = Document.new(fmt)
    doc.add_paragraph("Image example")
    picture = doc.add_picture(PNG, width=Mm(25.4), height=Mm(12.7))
    assert abs(picture.width.mm - 25.4) < 0.05
    path = out_dir / f"picture.{fmt}"
    doc.save(path)
    assert Document.open(path).pictures
    return path


if __name__ == "__main__":
    import sys
    print(run(sys.argv[1], Path(sys.argv[2])))

실행 예: python examples/manual/pictures.py hwpx ./output (docx도 가능).

이미지 크기를 명시하세요. width=Mm(25.4), height=Mm(12.7)을 주면 두 포맷에서 물리적 크기를 맞출 수 있습니다. 너비 생략 시 DOCX는 이미지 원본 크기를 사용하고 HWPX는 기존 기본 너비 2인치를 사용합니다. DOCX의 현재 그림 삽입 API는 인라인만 지원합니다.

"""Portable section creation: no format-specific options."""
from pathlib import Path
from pywpdoc import Document


def run(fmt: str, out_dir: Path) -> Path:
    out_dir.mkdir(parents=True, exist_ok=True)
    doc = Document.new(fmt)
    doc.add_paragraph("Section one")
    section = doc.add_section()  # portable, default position/start only
    assert section is not None
    doc.add_paragraph("Section two")
    path = out_dir / f"sections.{fmt}"
    doc.save(path)
    return path


if __name__ == "__main__":
    import sys
    print(run(sys.argv[1], Path(sys.argv[2])))

공통 구역 API는 doc.add_section()입니다. DOCX의 start_type과 HWPX의 after는 의미와 시그니처가 다르므로 공통 호출에서 받지 않습니다. 각 포맷별 전용 API가 필요합니다.