파이썬으로 변경추적 기능을 끄고 싶습니다.

파이썬으로 HWP 파일을 HML 파일로 저장하고 있습니다.
문서 중에 변경추적 기능이 걸린 파일의 경우 변경추적에 대한 안내창이 뜨고 있어서
번거로움이 상당합니다.

혻기 파이썬으로 해당 변경추적 기능을 끄려면
어떤 API를 어떻게 사용해야 하나요?

확인 부탁 드립니다.

감사합니다.

1개의 좋아요

안녕하세요.

HwpObject 내에 IsTrackChange라는 속성값이 있습니다.
해당 속성값의 true/false로 변경추적 상태 조정이 가능합니다 .

감사합니다.

자꾸 귀찮게 해드려서 죄송합니다.
일단 개발 환경은 PYTHON에서 MFC로 변경된다는 말씀부터 드립니다.

Hwp Automation에서 IsTrackChange속성은 발견은 하였고, 아직 적용은 해보지 않았습니다.
현재 저희 시스템이 HwpCtrl에서 Hwp Automation으로 넘어가는 과도기이기 때문에 HwpCtrl로도 변경 추적을 확인할 필요가 있습니다. 현재는 HwpCtrl이 Hwp Automation보다 안정적으로 동작하기 때문입니다.
HwpCtrl에서는 해당 속성이 발견되지 않았습니다. 매뉴얼(글로벌 소프트웨어의 리더, 한글과컴퓨터)에서 "TrackChange"나 "변경추적"으로 찾아보았지만 발견되지 않았습니다.

매번 귀찮게 해드려서 죄송스럽고 매번 답변 주셔서 감사드립니다.

안녕하세요,
컨트롤과 오토메이션의 경우 유사한 API가 다수있지만 완전히 호환하고 있지는 않습니다.
버전별로 API가 다르게 있는 경우도 있어 매뉴얼에 있는 부분만 모든 버전 호환이 되고 있습니다.
IsTrackChange 속성은 확인해보니 neo 버전 이상만 지원해주고 있습니다.
감사합니다 ^^

한글 오피스2022(neo이상)의 HwpCtrl.ocxC:\Program Files (x86)\Hnc\Office 2022\HOffice120\Bin에서 CHwpCtrl클래스를 끌어왔는데 동일하게 TrackChange가 나오지 않네요.
neo이상에서는 지원한다고 하셨는데 HwpCtrl에서는 아예 지원 안 하는 것으로 판단이 됩니다.
감사합니다.

안녕하세요,
한글 2022(12.0.0.3437 버전 ) 컨트롤의 경우 HwpCtrl.tlb를 통해 인터페이스 생성시 GetIsTrackChange, SetIsTrackChange 생서되는 부분 확인하였습니다.

감사합니다 ^^

MFC 환경이고 HWP Automation으로도 확인 중입니다.
변경추적이 없는 문서와 변경추적이 있는 문서가 모두 get_IsTrackChange값이 0으로 나옵니다.

저는 변경추적이 없는 문서는 0이고, 변경 추적이 있는 문서는 1로 나올 것으로 예상했고,
변경 추적이 있는 문서에서 put_IsTrackChange(0)으로 지정하면 변경 추적이 없어질 것이라고 예상했습니다.

MFC환경이고 HwpCtrl입니다.
동일한 시나리오로 CHwpCtrl클래스를 추가하였는데 저는 왜 해당 속성이 안 나올까요?
(HwpCtrl.tlb를 사용)
우선 순위는 이전에 올린 질문이 더 높습니다.

안녕하세요 ^^
해당 IsTrackChange에서 조정 가능한 상태는 변경추적 상태(기록중, 기록안함)입니다.
image
image

원하시는 변경추적을 모두 없애는 기능은 오토메이션,컨트롤로 어려울것 같습니다.

잠깐잠깐 빠르게 답변 가능한 부분들 먼저 답변 달고있습니다.
이전에 올리신 내용은 저도 확인중에 있으나 저도 내부에서 개발 일정이 급한게 있어서 시일이 걸릴것 같습니다 ^^
양해부탁드립니다. 감사합니다.

예전에 드린 글은 당연히 저도 오래 걸릴 것으로 예상하고 있습니다.
재현 자체가 어렵고, 당연히 해결하기 위한 구현도 복잡할 것이라고 생각합니다.

단지 아예 진행을 안 하실까봐 걱정을 할 뿐입니다. 이전 글에 대해서 결정되는 내용이 있으면 그 해당 글에 언급 부탁드립니다. 항상 친절한 답변에 감사드립니다.

제가 확인하고 있는 문서입니다.

변경 추적이 있는 문서입니다.
20231109_084355

변경 추적이 없는 문서입니다.
20231109_084451

[1] get_IsTrackChange에서 둘 다 0이 반환되고 있는 상황입니다. "변경추적상태"이 다름에도 불구하고 같은 반환값이 나오는 이유를 여쭈어 보는 질문이었습니다.
[2] 조정 가능한 상태는 "변경추적 상태"라고 하셨고, 변경추적을 모두 없애는 기능은 어려울 것 같다고 하셨는데
두 경우가 어떻게 다른 건가요?

변경 추적 기능을 키괴되면 [기록 중] 으로 뜨게 되며 그이후 문서를 편집시 변경 내용을 기록하게 됩니다.
이렇게 기록된 내용은 본문에 변경추적 내용으로 따로 적용이 되며 적용을 하기전까진 변경 내용을 가지고 있게됩니다.

IsTrackChage으 상태값은 아래와 같이 생각하시면 됩니다.
1 : 변경 내용 [기록중]
0: 변경 내용 [기록 중지]

변경 추적을 모두 없앤다는것은 모두 적용을 하거나 모두 적용 취소를 하는것인데. API로는 해당 부분 나와있지 않아 어려울것 같습니다.
감사합니다.

1개의 좋아요

HML로 저장하실 때 변경추적 안내창 때문에 고생하시는 거라면
SetMessageBoxMode를 통해 팝업만 무시하고 저장하셔도 될 것 같습니다.
(변경이력은 HWPML2X로 저장시 자동으로 제거되니까, 신경쓰지 않으셔도^^;)

아래 코드를 참고하시기 바랍니다.

hwp.SetMessageBoxMode(0x10000)
hwp.SaveAs(r"c:/users/user/desktop/asdf.hml", format="HWPML2X", arg="")
hwp.SeMessageBoxMode(0xf0000)

아래는 시연화면입니다.
녹화_2023_11_23_00_46_38_389

3개의 좋아요

변경 추적 중이면
20240104_145812
하단에 "변경 내용[기록 중]"이라고 뜹니다. 이 상태가 get_IsTrackChange라는 함수로 얻을 수 있는 것으로 보입니다.
그런데 "변경 추적"인 상태에서 문서를 수정하면 "변경된 내용"이 이력에 쌓이는데, 이력이 쌓여 있으면 HML파일이나 HTML파일을 만들 때,

20240104_152350
메시지 창이 뜹니다.
이력이 쌓여 있는지 여부를 확인할 수 있는 함수는 없나요?
이력이 쌓여 있을 때만
hwp.SetMessageBoxMode(0x10000)함수를 호출하려고 합니다.
감사합니다.

2개의 좋아요

안녕하세요.

아쉽게도 변경추적이력을 확인할 수 있는 API는 제공되고 있지 않습니다.

다른 궁금한 점 있으시면 언제든지 문의주세요.

2개의 좋아요