hwp 문서 내의 개체를 파일명으로 찾는 방법이 있을까요?
먼저, 강의 감사합니다. 많은 도움이 되고 있습니다!
그림파일로 입력된 원번호를 텍스트 원번호로 교체하고 싶습니다.
문서에 삽입된 그림파일의 파일명(개체 설명문에 나오는)으로 객체를 찾는 방법이 궁금합니다.
답변 2
2
예시코드입니다.
아래와 같은 문서가 있을 때(1.png, 2.png, 3.png, 4.png가 삽입되어 있습니다.)

미리 짜둔 아래 함수를 실행하면

위와 같이 파일명이나 삽입순서로 이미지를 선택할 수 있습니다.
그럼 이번엔
이미지를 지우고 원문자를 삽입하는 작업도 간단히 진행해보겠습니다.

이제 코드 전체를 보여드리겠습니다.
(너무 길다고 놀라지 마시고 차근차근 읽어보시면 좋겠어요ㅎㅎ)
이 중 몇 개는 위 예제에서 사용하지 않은 함수입니다.
import os
import xml.etree.ElementTree as ET
import win32com.client as win32
def hwp_init():
hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject")
hwp.XHwpWindows.Item(0).Visible = True
hwp.RegisterModule("FilePathCheckDLL", "FilePathCheckerModule")
return hwp
def save_as_hml():
hwp.HAction.GetDefault("FileSaveAs_S", hwp.HParameterSet.HFileOpenSave.HSet)
hwp.HParameterSet.HFileOpenSave.filename = hwp.Path.replace("hwpx", "hml")
hwp.HParameterSet.HFileOpenSave.Format = "HWPML2X"
return hwp.HAction.Execute("FileSaveAs_S", hwp.HParameterSet.HFileOpenSave.HSet)
def get_image_dict():
save_as_hml()
tree = ET.parse(hwp.Path.replace(".hwpx", ".hml"))
root = tree.getroot()
total_count = int(list(root.iter("BINDATALIST"))[0].attrib["Count"])
image_dict = {list(root.iter("SHAPECOMMENT"))[i].text.split("\n")[1].split(": ")[1]: i for i in range(total_count)}
os.remove(hwp.Path.replace(".hwpx", ".hml"))
return image_dict
def select_image_by_order(order):
hwp.Run("Cancel")
ctrl = hwp.HeadCtrl
count = 0
while ctrl:
if ctrl.UserDesc == "그림":
if order == count:
hwp.SetPosBySet(ctrl.GetAnchorPos(1))
hwp.FindCtrl()
return
count += 1
ctrl = ctrl.Next
return False
def select_image_by_filename(filename):
hwp.Run("Cancel")
order = image_dict[filename]
ctrl = hwp.HeadCtrl
count = 0
while ctrl:
if ctrl.UserDesc == "그림":
if order == count:
hwp.SetPosBySet(ctrl.GetAnchorPos(1))
hwp.FindCtrl()
return
count += 1
ctrl = ctrl.Next
return False
def get_image_ctrl_dict():
image_ctrl_dict = {}
hwp.Run("Cancel")
ctrl = hwp.HeadCtrl
count = 0
while ctrl:
if ctrl.UserDesc == "그림":
image_ctrl_dict[count] = ctrl
count += 1
ctrl = ctrl.Next
return image_ctrl_dict
def 원문자삽입(num):
hwp.HAction.GetDefault("InsertText", hwp.HParameterSet.HInsertText.HSet)
hwp.HParameterSet.HInsertText.Text = chr(9311 + num)
return hwp.HAction.Execute("InsertText", hwp.HParameterSet.HInsertText.HSet)
if __name__ == "__main__":
hwp = hwp_init()
hwp.Open(r"C:\Users\Administrator\Desktop\이미지명\이미지명으로탐색.hwpx")
image_dict = get_image_dict()
image_ctrl_dict = get_image_ctrl_dict()
for i, j in image_dict.items():
# 파일명이 숫자로만 이뤄져 있으면?
if i.split(".")[0].isdigit():
ctrl = image_ctrl_dict[image_dict[i]]
# 해당 위치로 이동
hwp.SetPosBySet(ctrl.GetAnchorPos(1))
# 이미지 삭제 후
hwp.DeleteCtrl(ctrl)
# 파일명에 따라 원문자 삽입
원문자삽입(int(i.split(".")[0]))
혹시 이해가 잘 안 되는 부분이 있다면
자유롭게 댓글 남겨주세요.
상세하게 설명드리겠습니다.
검토해보시고 추가로 필요하신 부분 알려주세요ㅎ
행복한 하루 되세요^^
1
정진님 안녕하세요?^^
파일명으로 이미지 컨트롤을 찾는 기능은
간단한 함수들의 조합으로 제작 가능합니다.
제가 정진님 질문을 이해하기로는
(예를 들어)
"1.png"가 이미지 원번호 ①이고,
"2.png"가 이미지 원번호 ②인데,
이를 각각 텍스트 원번호 ①과 ②로 교체하시겠다는 말씀 같은데
맞나요?ㅎ
제가 오늘 중으로 예제코드를 짜서 한 번 보여드려보겠습니다.
섹션7과 같은 수학 수식을 백지에서 시작할 때 어떻게 만들 수 있을까요?
0
78
1
hwp 병렬 작업시 클립보드 충돌문제
0
61
1
본문을 각주로 내리는 법
1
93
1
한글 자동화 삽도 삽입!!
1
389
2
한글 표 내부 위치 찾는 코드좀 알려주세요 ㅠㅠ
1
241
2
빈 문서를 새로 열때는 팝업이 안나오는데 기존 문서를 열면 팝업이 나옵니다
1
120
2
사무실 컴퓨터ㅠ
0
99
2
글자입력 여러번 실행기
0
70
1
현재 커서 문단에 아무런 내용이 없는지 확인하기
1
103
1
특정 스타일을 찾아 이동하는 방법
1
167
2
한/글 파일 open 시 '상위 버전에서...' 메세지 안 뜨게 하는 방법?
1
1139
1
win32com 으로 hwp 문자열 검색하기 문의
1
226
2
[응용] 엑셀문서 값을 필드에 입력하기 질
1
124
1
표 병합하기 관련
0
143
0
메타태그 삽입 자동화
0
191
1
스크립트 매크로 초기화 하고 싶습니다.
1
274
2
한글 창이 여러 개 존재할 때 pyhwpx 모듈로 접근하는 방법을 알고 싶습니다.
1
271
1
표안의 특정 필드에 있는 이미지를 복사하여 한글 외부에 저장하기
1
281
2
스타일 싹 다 지우고 바탕글로 통일하는 방법 문의드립니다.
1
286
0
하위의 여러 폴더 중 특정폴더의 사진만 추출하기
1
349
2
한글 수식을 자동으로 넣는 코드를 만들었는데, 수식 사이의 간격이 계속 벌어집니다.
1
684
1
보유 특허 검색 페이지에서 검색이 되지 않습니다.
1
142
1
hwp 페이지별 분할 저장하는 코드 관련 문의
0
454
0
한글 문서에 사용된 폰트명 추출
1
653
1





