인프런 커뮤니티 질문&답변

Hyunuk Seo님의 프로필 이미지
Hyunuk Seo

작성한 질문수

직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피

서식 추출 및 스타일 교정

해결된 질문

작성

·

18

1

안녕하세요 빠른 답변 감사합니다.

 

아래 잠긴 문서 너무 궁굼합니다. ㅠㅠ

[HDMI] 최종화 : 취합문서 스타일 교정

 

저번 질문에서 커서위치 스타일 추출이 없어서 고민 하고 있습니다.

 

그러면 내가 원하는 커서위치의 서식정보를 가지고 와서 스타일을 만들면 어떨까 고민하고 있는데요

저번에 어느 일코님 강이에서 스타일 만드는거는 어렵다고 이야기를 들어서 ^^&

 

  1. 서식정보 추출이 가능한가요!?

  2. 스타일 폰트 크기 자간등 및 개요수전 1단계 이런거 가능할까요!?

 

질문이 많아 죄송합니다.

항상감사합니다.

 

 

답변 2

1

일코님의 프로필 이미지
일코
지식공유자

스타일을 직접 수정하는 액션이 있었네요.

https://forum.developer.hancom.com/t/topic/1552/4?u=ilco

 

파이썬으로 특정 스타일의 글자모양, 문단모양 바꾸기

① 기본적인 예시코드입니다.

# "개요 1" 스타일의 글자모양 중 "크기"를 30pt로,
# 문단모양 중 "줄간격"을 160%로 변경하는 코드
from pyhwpx import Hwp

hwp = Hwp()
# 또는, import win32com.client as win32; hwp = win32.gencache~ 해도 됨.

act = hwp.CreateAction("StyleDirectEdit")
pset = act.CreateSet()
act.GetDefault(pset)
pset.SetItem("NameLocal", "개요 1")
char_shape = pset.CreateItemSet("CharShape", "CharShape")
char_shape.SetItem("Height", hwp.PointToHwpUnit(30))
para_shape = pset.CreateItemSet("ParaShape", "ParaShape")
para_shape.SetItem("LineSpacing", 200)
para_shape.SetItem("LineSpacingType", hwp.LineSpacingMethod("Percent"))
act.Execute(pset)

 

② 위의 코드는 아래의 방식의 코드로도 실행하실 수 있습니다. (스크립트매크로 방식)

# 위 코드는 아래 방법으로도 입력 가능
# 개요 1의 글자크기를 40으로, 줄간격 250%로 변경하기
pset = hwp.HParameterSet.HStyleItem
hwp.HAction.GetDefault("StyleDirectEdit", pset.HSet)
pset.CharShape.Height = hwp.PointToHwpUnit(40)
pset.ParaShape.LineSpacing = 250
pset.ParaShape.LineSpacingType = 0  # "Percent"
pset.NameLocal = "개요 1"  # 변경하고자 하는 스타일 이름
hwp.HAction.Execute("StyleDirectEdit", pset.HSet)

 

③ 마지막으로 커서 위치의 스타일로 바꾸기 코드입니다.

# 개요 1 스타일을 현재커서위치 서식(글자, 문단모양)으로 변경
cur_charshape = hwp.CharShape  # 현재 글자15, 빨갛게 상태
cur_parashape = hwp.ParaShape  # 현재 가운데정렬, 줄간격180% 상태

act = hwp.CreateAction("StyleDirectEdit")
pset = act.CreateSet()
act.GetDefault(pset)
pset.SetItem("NameLocal", "개요 1")
charshape = pset.CreateItemSet("CharShape", "CharShape")
parashape = pset.CreateItemSet("ParaShape", "ParaShape")
charshape.Merge(cur_charshape)
parashape.Merge(cur_parashape)
act.Execute(pset)

마지막 예시만 시연화면을 남겨둡니다.

녹화_2024_12_03_21_16_37_854.gif

 

 

질문 많이 남겨주셔도 괜찮아요!!!!!!!

행복한 하루 되세요^^

 

질문에 남겨주신 "HDMI 최종화"는 작성중에... 너무 분량도 많아지고, 내용도 뒤죽박죽인데다 xml 파싱이나 편집 등 일반인을 대상으로 할 수 없을 내용의 것들이었습니다ㅜ 하등 도움이 되지 않는다고 판단하여 비공개 처리를 했습니다. 포스팅의 주된 내용은 위의 StyleDirectEdit 액션과 StyleItem 파라미터셋을 쓰지 않고 header.xml의 스타일 서식 부분을 부분적으로 조작하는 방법이었습니다. 완결된 포스팅도 아니어서, 비공개로 남겨두려고 합니다. 관련 내용은 다행히 100% 위의 액션으로 훨씬 간편하게 대체할 수 있습니다.

0

안녕하세요, 인프런 AI 인턴입니다. Hyunuk Seo님.

질문하신 내용에 대해 관련된 정보 및 유사한 질문에 대한 답변이 있는 자료를 찾아보았습니다. 아래 내용을 참조하시면 도움이 될 것입니다.

  1. 서식정보 추출 가능 여부:
    파이썬으로 한컴오피스를 자동화하여 문서의 서식 정보를 추출하는 기능은 가능합니다. 서식은 일반적으로 폰트 정보, 문단 모양, 개요 설정 등의 형식을 포함하며, 이를 코드로 접근하여 특정 위치의 서식 정보를 동적으로 불러오는 것이 가능합니다.

질문하신 “커서 위치의 서식 정보 추출”에는 hwp.GetParaShapehwp.GetCharShape 등의 메서드를 활용할 수 있습니다. 이를 통해 문서의 특정 부분에 대한 서식 및 모양 정보를 가져올 수 있습니다. 관련한 내용은 아래 URL에서 더 상세히 다루고 있습니다:
- [스타일 정보 조회가 가능할까요?]

  1. 스타일 및 포맷ting 설정 변경 가능 여부:
    스타일을 새로 만들거나 수정하는 것은 직접적인 자동화 API에서는 다소 복잡한 부분이 있는 것이 사실입니다. 그러나 한컴오피스 API를 통해 문서의 스타일 속성을 접근하고 변경하는 것은 가능합니다. 이때 HParameterSet.HStyle 속성을 활용하여 스타일의 폰트 크기, 자간, 개요 수준 등을 설정하는 코드를 구성할 수 있습니다.

다음은 스타일 속성을 설정하는 코드의 예시입니다:

   hwp.HAction.GetDefault("StyleChangeToCurrentShape", hwp.HParameterSet.HStyleItem.HSet)
   hwp.HParameterSet.HStyleItem.FontHeight = 10000  # 폰트 크기 설정 (예: 10pt)
   hwp.HAction.Execute("StyleChangeToCurrentShape", hwp.HParameterSet.HStyleItem.HSet)

보다 구체적인 구현은 강의 중 관련 부분을 통해 학습하시거나 추가적인 자료를 참고하시기를 추천드립니다.

Hyunuk Seo님께 도움이 되었으면 합니다. 저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

Hyunuk Seo님의 프로필 이미지
Hyunuk Seo

작성한 질문수

질문하기