해결된 질문
작성
·
130
답변 3
1
현욱님 안녕하세요!
예전 포스팅은 pywin32로 만들어진 거라 너무 코드가 어렵네요ㅜㅜㅜ
고민글에 방금 댓글을 남기고 오긴 했는데,
혹시 다른 분들께도 참고가 되면 좋을 것 같아,여기에 한 번 더 적어둡니다.
내용은 동일합니다.
최근에 pyhwpx 모듈에
hwp.get_style()
과 hwp.set_style()
버그도 고치고,
hwp.shape_copy_paste()
도 추가해 둬서(ver0.40)
구현이 훨씬 간결해졌습니다. (아래와 다르게 실행되거나 오류가 나는 경우 업데이트해주시면 됩니다.)
우선 실행화면을 보여드리면,
(코드실행 후 본문과 셀 전부 바탕글로 변경되었습니다.)
from pyhwpx import Hwp
hwp = Hwp() # 아래아한글 연결
# 본문 초기화
hwp.MoveDocBegin() # 문서 시작으로 이동 후
while True:
hwp.shape_copy_paste() # 모양 복사(선택상태일 때는 붙여넣기가 됨)
hwp.set_style("바탕글") # 스타일 초기화
hwp.MoveSelParaEnd() # 문단 끝까지 선택
hwp.shape_copy_paste() # 복사한 글자,문단모양 붙여넣기(스타일은 제외)
if not hwp.MoveNextParaBegin(): # 다음 문단으로 이동
break # 문서 끝이면 while문 종료
# 본문 외(셀, 글상자 등) 내부 초기화
i = 2 # 본문 외 영역이 있을 때(셀, 글상자, 각주미주, 캡션 등)
while hwp.set_pos(i,0,0): # 해당영역 이동 후
hwp.shape_copy_paste() # 모양 복사
hwp.set_style("바탕글") # 스타일 초기화
hwp.SelectAll() # 셀 전체 선택
hwp.shape_copy_paste() # 스타일 붙여넣기
i += 1 # 다음 영역으로
글자모양 스타일은 무시하였습니다만..
추가하는 게 어렵지는 않습니다.
혹시 필요하시면 댓글로 알려주세요.
하여튼 대략 위와 같은 과정으로 코딩하시면 되겠습니다.
(사실 스타일 없애는 수작업이랑 과정이 동일합니다.)
아래 목록도 (질문과 요청이 여러 번 있어서) pyhwpx에 hwp.set_style() 만들 때 같이 추가해 두었습니다.
① hwp.get_style_dict(as_=dict|list)
: 문서의 스타일 목록을 list[dict]
또는 dict[dict]
로 가져오기
② hwp.delete_style_by_name(src, dst)
: src라는 특정 스타일을 삭제하고, 해당 내용은 dst스타일로 변경
③ hwp.get_style()
: 현재위치 스타일의 번호, 타입(글자/문단), 이름 및 영문이름을 dict로 리턴
④ hwp.goto_style(style)
: 해당 스타일로 이동(스타일인덱스번호나 스타일이름으로 지정 가능)
⑤ hwp.import_style(filepath)
: 스타일파일 불러오기
⑥ hwp.export_style(filepath)
: 스타일을 파일로 저장하기
하여튼 pyhwpx에 스타일 관련한 메서드는 이렇게 준비되어 있습니다.
가끔 엑셀파일 붙여넣기 작업을 오래 하다 보면
xlXX
, td
같은 이름의 스타일이 엄청 많이 생겨 있는 걸 볼 수 있는데요.
이런 경우에 "xl~~"
로 시작하는 스타일과 td
를 전부 삭제하고 싶다면?
for i in hwp.get_style_dict():
if i["name"].startswith("xl"):
print(i["name"])
hwp.delete_style_by_name(i["name"])
hwp.delete_style_by_name("td")
기존에 사용되는 스타일이 삭제되는 경우라면, 해당 구간은 모두 "바탕글"로 변경됩니다.
만약 바탕글이 아닌 다른 스타일로 대체하고 싶으면hwp.delete_style_by_name("지울스타일", "대체할스타일")
이라고 실행하시면 됩니다.
예를 들어hwp.delete_style_by_name("xl66", "표가운데")
처럼요.
쓰다 보니 TMI스러운 이야기를 많이 붙였네요ㅜ
그래도 도움이 되었길 바랍니다.
행복한 하루 되세요!!^^
1
모든 글자에 글자모양, 문단모양 변경없이 스타일 값만 바꿀 수 있... - 인프런 | 커뮤니티 질문&답변 (inflearn.com)
먼저 질문된게 있었네요 감사합니다.
이것만 있어도 일을 많이 줄일수 있을거 같아요
인턴 이거 소개해줘야지!!
0
안녕하세요, 인프런 AI 인턴입니다. Hyunuk Seo님.
한글 문서에서 폰트는 유지하면서 스타일을 모두 제거하는 방법에 대해 설명드리겠습니다. 스타일 정보 없이 글꼴을 유지하는 방법은 직접적인 기능이 한글에서 제공되진 않지만, 프로그래밍을 통해 해결할 수 있는 방법이 있습니다. 이를 통해 문서 내 각 텍스트의 스타일을 제거하면서 글꼴을 유지할 수 있습니다.
모든 스타일 정보를 초기화: 한글에서는 문서의 모든 스타일 정보를 제거하고 기본 스타일(바탕 글)로 설정하는 방법이 있습니다. 하지만 이는 글꼴 정보 역시 초기화할 수 있음을 주의해야 합니다.
텍스트 스타일 제거: 파이썬 등 프로그래밍 언어를 사용하여, 아래한글의 API를 통해서 특정 텍스트의 서식을 개별적으로 탐색하면서 스타일만을 제거하는 스크립트를 작성할 수 있습니다.
스크립트를 이용한 자동화: 프로그래밍적으로는 문서의 각 문단이나 텍스트를 탐색하면서 스타일만 제거하고, 현재 설정된 폰트를 별도로 저장하고 재설정하는 방법을 고려할 수 있습니다.
관련 유사한 문의 예제나 코드가 존재할 수 있으니, 스타일 및 개요 다루기와 같은 포럼 게시물을 참조하여 힌트를 얻을 수 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
항상 많은 도움 받고 있습니다. 감사합니다.