DOCX Reader 사용하기
DOCX Reader와 작업하기
The DocumentReader 클래스는 Office Open XML (.docx) 파일을 읽고 추상화된 데이터 구조인 Light Document Model (LDM)을 생성합니다. 이 구조는 단락, 표, 도형, 이미지 및 서식을 처리하여 콘텐츠를 조작하거나 변환할 수 있도록 제공합니다.
DOCX 파일 읽기
가장 간단한 방법은 Document 생성자를 사용하는 것으로, 이 생성자는 .docx 파일에 대해 자동으로 DocumentReader을 선택합니다:
import aspose.words_foss as aw
doc = aw.Document("input.docx")
print(f"Sections: {len(doc.sections)}")
for para in doc.all_paragraphs:
print(para.text)DocumentReader 아키텍처
DocumentReader은(는) 책임을 분리하기 위해 두 개의 믹스인을 사용합니다:
| Component | Role |
|---|---|
DocumentReader | Main DOCX parser — reads XML parts from the OPC package |
LdmBuilderMixin | Constructs the Light Document Model from parsed data |
ShapeParserMixin | Parses drawing and shape elements embedded in the document |
세 가지 모두 내부에서 함께 작동하며 — 결과는 Document API를 통해 상호 작용합니다.
텍스트 추출
로드된 문서에서 text 속성을 사용하여 파일에 저장하지 않고 일반 텍스트를 추출합니다:
import aspose.words_foss as aw
doc = aw.Document("contract.docx")
text = doc.text
print(text[:500])단락 및 서식 작업
LDM을 통해 단락 수준 속성에 접근합니다:
import aspose.words_foss as aw
doc = aw.Document("styled.docx")
for para in doc.all_paragraphs:
for run in para.runs:
if run.font.bold:
print(f"Bold: {run.text}")각 Run에는 DOCX XML에서 구문 분석된 글꼴 속성(굵게, 기울임, 크기, 색상)이 포함됩니다.
도형 및 이미지 처리
ShapeParserMixin은(는) 구문 분석 중에 드로잉 요소를 추출합니다. 도형은 단락 내용 내에서 ShapeNode 객체로 LDM에 나타납니다:
import aspose.words_foss as aw
doc = aw.Document("with-images.docx")
for para in doc.all_paragraphs:
for node in para.content_sequence:
if hasattr(node, 'shape_type'):
print(f"Shape: {node.shape_type}")팁 및 모범 사례
- 표준 워크플로에는
Document("file.docx")을(를) 사용하십시오 — 이는 리더 선택, 패키지 검증 및 LDM 구성을 자동으로 처리합니다. - 스트림 기반 입력(웹 업로드)의 경우, 파일과 유사한 객체를
Document생성자에 전달하십시오. - 표가 포함된 파일은
doc.tables또는doc.all_tables을 통해 접근하십시오. - 배치 처리에서는 동일한 Python 프로세스를 재사용하여 반복적인 가져오기 오버헤드를 피하십시오.
일반적인 문제
| Issue | Cause | 수정 |
|---|---|---|
| 파일을 로드할 수 없음 (예외) | 손상되었거나 불완전한 ZIP 아카이브 | 파일이 유효한 .docx (ZIP-기반 OPC 패키지)인지 확인하십시오 |
| 출력에 이미지가 누락되었습니다 | 패키지에 이미지 파트가 삽입되지 않음 | DOCX에 삽입된(링크된 것이 아닌) 이미지가 포함되어 있는지 확인하십시오 |
| 출력에 내용이 누락되었습니다 | 필수 XML 파트가 패키지에 누락되었습니다 | 파일이 잘렸을 수 있습니다; 원본 애플리케이션에서 다시 내보내세요 |
FAQ
Light Document Model (LDM)은 무엇입니까?
LDM은 모든 리더가 공유하는 내부 표현입니다. 형식별 세부 사항(OPC XML, OLE2 바이너리)을 추상화하여 섹션, 단락, 실행, 표 및 도형으로 구성된 공통 구조로 변환합니다.
DocumentReader가 DOCM(매크로 사용) 파일을 처리할 수 있나요?
매크로 사용 .docm 파일은 동일한 OPC 구조를 사용합니다. 리더는 문서 내용을 구문 분석할 수 있지만, 매크로는 보존되지 않으며 실행되지 않습니다.
리더는 큰 문서를 어떻게 처리하나요?
리더는 XML 파트를 순차적으로 처리합니다. 메모리 사용량은 문서 크기에 비례합니다. 매우 큰 문서의 경우, 섹션을 개별적으로 처리하는 것을 고려하세요.
API Reference 요약
| 클래스 / 메서드 | 설명 |
|---|---|
DocumentReader | DOCX 문서를 읽고 추상화된 데이터 구조를 생성합니다 |
LdmBuilderMixin | Light Document Model 구축 메서드를 제공하는 믹스인 |
ShapeParserMixin | 그리기/도형 파싱 메서드를 제공하는 Mixin |
Document | Word 문서를 나타냅니다 (LDM 루트) |
create_reader(path) | 파일 확장자에 맞는 올바른 리더를 반환하는 Factory |