이미지 삽입시 워터마크를 적용하면
명도는 70으로 올리고, 채도는 -50으로 낮춰야 하는데,
(한/글 프로그램상에선 잘 적용돼요)
API의 InsertPicture 메서드 사용시 watermark=True를 적용하면
명도가 -50, 채도가 70이 돼서 더 진하고 어둡고 뚜렷한 이미지가 나와버립니다ㅜ
아마 반대로 바인딩돼 있는 것 같아요…
이미지 삽입시 워터마크를 적용하면
명도는 70으로 올리고, 채도는 -50으로 낮춰야 하는데,
(한/글 프로그램상에선 잘 적용돼요)
API의 InsertPicture 메서드 사용시 watermark=True를 적용하면
명도가 -50, 채도가 70이 돼서 더 진하고 어둡고 뚜렷한 이미지가 나와버립니다ㅜ
아마 반대로 바인딩돼 있는 것 같아요…
슨생님 안녕하세요.
수업 잘 듣고 있습니다.
지난번에 여쭤본 내용에 대해 답변을 못 얻어서 ㅠㅠ 아직도 힙겹게?;;;
헐떡이고 있습니다.
우선 제가 작성한 코드는 아래와 같습니다.
import os
import win32com.client as win32
#===================================================
# hwp_file_path & stamp_file_path 정의
#===================================================
cwd = os.getcwd()
# print('cwd: ', cwd)
hwp_file_name = '누름틀필드.hwp'
hwp_file_path = os.path.join(cwd, hwp_file_name)
stamp_file_name = '김운기인.png'
stamp_file_path = os.path.join(cwd, stamp_file_name)
#===================================================
# HWP 파일 열기
#===================================================
hwp = win32.gencache.EnsureDispatch("hwpframe.hwpobject")
hwp.XHwpWindows.Item(0).Visible = True
hwp.RegisterModule("FilePathCheckDLL", "FilePathCheckerModule")
hwp.Open(hwp_file_path)
#===================================================
# 누름틀 : "도장날인" 위치로 이동
#===================================================
hwp.MoveToField("도장날인")
position = hwp.GetPos() # position 은 캐럿의 위치좌표
#===================================================
# 이미지 삽입
#===================================================
hwp.InsertPicture(stamp_file_path, Embedded=True, sizeoption=1, Width=15, Height=15)
hwp.FindCtrl() # 이미지 선택 (커서에서 인접한 개체 선택)
#===================================================
# 이미지 속성 설정
#===================================================
hwp.HAction.GetDefault("ShapeObjDialog", hwp.HParameterSet.HShapeObject.HSet)
hwp.HParameterSet.HShapeObject.TreatAsChar = False # 글자처럼 취급하지 않음
hwp.HParameterSet.HShapeObject.TextWrap = hwp.TextWrapType("InFrontOfText") # 글자 앞에 배치
hwp.HAction.Execute("ShapeObjDialog", hwp.HParameterSet.HShapeObject.HSet) # 액션 실행
#===================================================
# 이미지 위치 설정
#===================================================
# 이후 이곳에서 막혔습니다.
# position = hwp.GetPos() # position 은 캐럿의 위치좌표 에서 획득한 position 의 위치로 이미지를 이동시키고 싶습니다. ㅠㅠ 그런데 못하고 있네요 ㅠㅠ 공식문서 읽는 방법도 잘 몰라서 그런지 저에게는... 마치 벽처럼 느껴지네요
위의 코드를 실행하면 처음에 '이미지 삽입’을 하면 < hwp.MoveToField(“도장날인”) > 위치에 잘 이미지가 삽입이 됩니다. 그러나
#===================================================
#===================================================
단계를 실행하고 난 이후에는 위의 추가된 이미지가 본래의 위치를 상실하고 문서의 왼쪽 시작 지점으로 이동되어 버립니다… ㅠㅠ
그래서 '이미지 위치 설정’해줘야할 필요가 있는데 이게 ㅠㅠ…
방법을 모르겠습니다. ㅠㅠ
안녕하세요.
확인해보니 한글컨트롤, 오토메이션 둘다 밝기와 대비가 반대로 설정되어있네요 ㅠ
확인 감사합니다.
다음 패치 때 반영될 수 있도록 하겠습니다.
안녕하세요?
캐럿(커서) 위치나 글자의 위치를 통해 좌표를 확인하기는 어렵습니다.
문서 내에 도장이 찍히는 위치를 고정하는 등 다른 조치를 하시는 걸 추천드립니다.
(만약 이미지가 삽입되어야 할 위치를 고정하실 수 있다면)
이미지를 특정 위치로 이동하는 명령어는 다소 간단한 편입니다.
ctrl = hwp.HeadCtrl.Next.Next # 이미지 컨트롤
hwp.SetPosBySet(ctrl.GetAnchorPos(1)) # 이미지 조판으로 이동
hwp.FindCtrl() # 해당 이미지 선택
pset = hwp.HParameterSet.HShapeObject # 파라미터셋 생성
hwp.HAction.GetDefault("ShapeObjDialog", pset.HSet) # 파라미터셋 초기화
pset.TreatAsChar = 0 # 글자처럼취급 해제
pset.TextWrap = 3 # InFrontOfText # 이미지가 글자 위로
pset.VertRelTo = 2 # (이미지컨트롤이 삽입된) 문단 기준
pset.VertAlign = 0 # 상단에서부터
pset.HorzRelTo = 3 # (이미지컨트롤이 삽입된) 문단 기준
pset.HorzAlign = 0 # 좌측에서부터
pset.VertOffset = hwp.MiliToHwpUnit(0) # mm
pset.HorzOffset = hwp.MiliToHwpUnit(50) # mm
pset.HSet.SetItem("ShapeType", 1)
hwp.HAction.Execute("ShapeObjDialog", pset.HSet)
시연화면은 아래와 같습니다.
GetPos()가 리턴하는 위치는 (영역, 문단, 글자오프셋) 개념으로,
문서 내 이미지를 이동하는데 활용하기는 어렵습니다.
도움이 되었기를 바랍니다.
선생님 답변 감사합니다.
지난번에도 조언해주신 내용대로
그럼 "테두리가 보이지 않는 표"를 생성하고 해당 표 내부에 이미지를 추가하는 방식으로. 우회하는 수 밖에 없겠네요 ㅠㅠ
정말 늘 감사합니다.