Python에서 레이아웃 엔진을 활용하는 방법
Aspose.HTML FOSS for Python의 레이아웃 레이어는 스타일이 적용된 문서에서 기하학을 계산합니다: build_box_tree()는 박스 구조를 도출하고, layout_block_tree()는 블록 조각을 배치하며, paginate_fragments()는 출력을 페이지로 분할합니다. 이 가이드는 스타일이 적용된 문서 — 필수 입력 — 를 준비하고, pip를 사용한 설치를 통해 각 레이아웃 단계들을 설명합니다.
단계별 가이드
1단계: 패키지 설치
git clone https://github.com/aspose-html-foss/Aspose.HTML-FOSS-for-Python.git
cd Aspose.HTML-FOSS-for-Python
pip install -e .2단계: 필요한 클래스 가져오기
from aspose_html.dom import Document
from aspose_html.cssom import CSSStyleSheet3단계: 스타일이 적용된 문서 준비
레이아웃은 계산된 스타일을 사용하므로, 먼저 트리를 구축하고 스타일을 적용하십시오:
doc = Document()
el = doc.create_element("div")
doc.append_child(el)
sheet = CSSStyleSheet()
sheet.replace_sync("div { color: red }")
doc.attach_style_sheet(sheet)
print(el.get_computed_style().get_property_value("color"))단계 4: 박스 트리 도출
build_box_tree()은(는) BoxNode 항목의 BoxRoot을 생성하고, 각 요소의 디스플레이 모델을 Display 열거형에 대한 classify_display()으로 분류합니다; ComputedStyle와 EdgeSizes은(는) 박스별 스타일 및 박스 모델 측정값을 전달합니다.
단계 5: 레이아웃 실행 및 페이지 매김
layout_block_tree()은(는) BlockFragment 기하학의 FragmentRoot을 제공하고; 인라인 콘텐츠는 layout_inline_fragments()를 통해 LineFragment 라인으로 조립됩니다; paginate_fragments()는 BreakHints을 준수하여 결과를 PageFragment 페이지로 분할합니다.
일반적인 문제 및 해결 방법
레이아웃 출력이 비어 있습니다. 입력 트리에 스타일이 적용된 콘텐츠가 없었습니다 — 레이아웃 전에 스타일시트와 콘텐츠를 첨부하십시오.
박스에 예기치 않은 display 분류가 있습니다. Check classify_display() 요소에 대해; 계산된 display 값이 이를 구동합니다.
페이지 구분이 이상한 위치에 배치됩니다. Provide BreakHints to paginate_fragments() 구분 기회를 안내하기 위해.
자주 묻는 질문
박스와 프래그먼트의 차이점은 무엇인가요?
박스(BoxNode)는 스타일에서 파생된 레이아웃 구조를 설명합니다; 프래그먼트(BlockFragment, LineFragment, PageFragment)는 기하학을 가진 배치된 결과입니다.
여백과 패딩은 어디에서 해결되나요?
각 박스의 EdgeSizes에서 — 차원이 예상과 다를 때 가장 먼저 확인해야 할 위치입니다.
엔진이 텍스트를 형태화합니까?
인라인 콘텐츠는 라인 조립 전에 ShapedRun개의 조각으로 형성됩니다.