현재 문단의 개요 수준은 어떻게 확인가능할까요?

안녕하세요. 너무 기초적의 질문이라 올릴까 말까를 한참 고민하다가… 도저히 비슷한 내용의 글을 찾기 어려워서 글을 써봅니다.

개요기능을 이용하여 매뉴얼을 자주 만드는 편이라, 개요로만 만들어진 매뉴얼이 작게는 30페이지, 크게는 120페이지 까지 가는 경우가 많습니다. 그런데 가끔 개요기능을 적용하지 않은 상태로 텍스트파일을 만들어야 하는 경우가 있어서 고민입니다.

때문에 스크립트를 아래와 같이 작성하려고 하는데요.

  1. 전체 문단의 수 파악
  2. 첫 문단으로 이동
  3. 반복문 시작
    3-1. 현재 문단의 개요 수준 확인 및 변수에 저장
    3-2. 개요 해제 및 스타일1 적용
    3-3. (개요 수준 × 2) × 스페이스바를 문단 앞에 삽입
    3-4. (개요 수준 × 2) × 스페이스바 만큼 내어쓰기 적용

1번과 3-1, 3-2, 3-4를 어떤 코드로 처리해야 할지 모르겠습니다.
관련 코드를 알려주실 수 있으신가요~?

1개의 좋아요

안녕하세요,
1번같은 경우 현재 오토메이션으로는 불가능합니다 ㅠ…!

3-1, 3-2,3-4의 경우는 아래의 소스와 주석 확인 해주시길바랍니다.
감사합니다 :slight_smile:

//3-1. 현재 문단의 개요 수준 확인 및 변수에 저장
var paraset = myHwpObj.ParaShape;
var level = paraset.Item("Level");

//3-2. 개요 해제 및 스타일1 적용
myHwpObj.Run("PutOutlineNumber");
var act = myHwpObj.CreateAction("StyleEx");
var set = myHwpObj.CreateSet("Style");
set.SetItem("Apply", 0);// 스타일 목록의 순서입니다 ..! 0부터 시작입니다. 	
act.Execute(set);

myHwpObj.Run("MoveLineBegin"); // 문단 앞으로 이동 

//3-3. (개요 수준 × 2) × 스페이스바를 문단 앞에 삽입
var act = myHwpObj.CreateAction("InsertText");
var set = myHwpObj.CreateSet("InsertText");
act.GetDefault(set);

var space = " ".repeat(level); // level 만큼 스페이스 생성

set.SetItem("Text", space);// 스페이스 삽입 
act.Execute(set);

//3-4. (개요 수준 × 2) × 스페이스바 만큼 내어쓰기 적용
var i;
for (i = 0; i < level; i++) {
	myHwpObj.Run("ParagraphShapeIndentNegative")//내어쓰기
}```
2개의 좋아요

자세한 설명 감사합니다.
한글스크립트를 써보는게 이번이 처음이라 찬찬히 설명주신 내용을 분석해봐야겠네요.
도움이 많이 되었습니다.

3개의 좋아요

bhjung님 말씀대로, 본문 내의 문단 수를 파악하기는 오토메이션으로는 어렵지만,
줄바꿈의 갯수는 hwp.XHwpDocuments.Item(0).XHwpDocumentInfo.CurrentParagraphCount
확인하실 수 있습니다. (다만, 글자처럼 취급된 표나 이미지 뒤의 줄바꿈도 '문단’으로 간주하므로 오차가 있습니다.

정확히 (표나 이미지 등 글자처럼 취급된 개체의 줄바꿈, 내용 없이 스페이스 또는 줄바꿈만 있는 문단 등을 제외하고)
유효한 문단의 줄바꿈만 카운트하고 싶으시다면 아래와 같이 코드를 작성해볼 수 있겠습니다.

para_count = 0
hwp.InitScan(option=0x00)
while True:
    state, text = hwp.GetText()
    if text.strip():
        para_count += 1
    if state in (0, 1):
        break
print(para_count)

도움이 되었길 바랍니다.

1개의 좋아요