GetTextFile을 이용하여 얻은 hml 데이터를 이용하여 별도 HWP파일로 저장 관련 문의

안녕하세요?
HwpObject를 사용하여 GetTextFile 함수를 사용하여 hml 데이터를 메모리로 불러 온 상태에서
hml 데이터를 이용하여 hwp파일로 저장하기 위하여 SetTextFile함수를 사용하여 셋팅을하고 SaveAs함수를 이용하여 HWP파일로 저장을 하고 저장한 HWP파일을 더블 클릭하여 열면 내용이 xml형식으로 보여 지고 있습니다.
그리고 앞쪽에 xml버전 정보가 포함된 태그를 포함한 경우 SetTextFile함수를 사용하면 ‘알 수 없는 오류입니다’ 라는 메시지 창을 보입니다.
xml형식이 아닌 지정한 옵션이 적용된 텍스트를 보이게 할 방법이 없을까요?

[참고로 GetTextFile 함수를 사용하여 얻은 hml 데이터를 hml파일로 저장하고 저장한 hml파일을 Open함수를 이용하여 열고 SaveAs함수를 이용하여 저장하면 텍스트가 제대로 보이더군요.]

안녕하세요. 한컴디벨로퍼입니다.
현재 담당자가 내용을 확인하고 있습니다. 조금만 기다려 주세요.

한컴디벨로퍼를 이용해 주셔서 감사합니다.

안녕하세요.

SaveAs 함수를 사용하실 때 포맷을 잘못 지정해서 발생한 문제로 추측됩니다.
아래는 코멘트하신 동작을 C++ 작성한 코드입니다.
참고 부탁드립니다.

CHwpObject hwpObject;
...

// 현재 문서의 내용을 HML 포맷의 데이터로 추출
VARIANT hmlData = hwpObject.GetTextFile(_T("HWPML2x"), _T(""));
//  HML 포맷의 데이터를 현재 위치에 삽입
hwpObject.SetTextFile(_T("HWPML2X"), _T("insertfile"));
// 현재 문서를 c:\text.hwp 파일로 저장
hwpObject.SaveAs(_T("c:\\tetx.hwp"), COleVariant(_T("HWP")), COleVariant(_T("")));

감사합니다. :grinning:

안녕하세요? 댓글 감사합니다.

hwpObject.SetTextFile함수를 실행 할때 다음과 같은 형식의 예외가 발생하더군요.
처리되지 않은 예외 발생(0xXXXXXXXX, XXXXXX.exe): Microsoft C++ 예외: COleDispatchException, 메모리 위치 0xXXXXXXXX.

SetTextFile함수에 셋팅을 한 메모리의 내용을 파일로 hml파일로 저장하고 그 저장한 파일을 더블클릭 해서 열면 파일의 내용이 제대로 보입니다.

SetTextFile함수에서 왜 이런 예외를 내어 놓을까요?
파일로 저장한 내용이 읽어지지 않는다면 메모리 상의 데이터에 문제가 있는 것이라고 생각 할 수 있겠지만 파일로 저장한 hml파일은 잘 열리고 있습니다.

보내 주신 sample에 하나 더 추가한 것이 있다면 SetTextFile함수를 호출하기 바로 전에 Clear 함수를 호출하는 것을 추가 하였습니다.

예외 정보를 알 수 없어서 정확한 답변을 드릴 수는 없습니다.

SetTextFile 함수는 대용량의 데이터를 처리할 때 메모리 문제가 발생할 수는 있다는 주의 사항이 있습니다.
데이터의 크기를 줄여보면서 테스트를 부탁드립니다.

감사합니다.

그리 대용량의 크기는 아닙니다. 셈플중 하나의 예로 hml파일로 떨구면 약 230k정도의 용량입니다.
굳이 disk에 접근 않고 SetTextFile함수를 쓰려는 이유가 DRM이 치고 들어 오는 것을 회피 하기 위함 때문에 중간에 임시파일을 떨구기에 애로점이 있어서 그러합니다.

혹시 파일을 보내 드리면 원인 파악이 가능 할까요? 마음 같아서는 같이 옆에서 SetTextFile함수 디버깅 해보고 싶습니다만…
ㅠㅠ.

셈플 hml 파일을 원하시면 메일 주소 부탁 드립니다.
고객쪽의 허락이 있으면 보내 주신 메일 주소로 셈플 파일을 보내 드릴 수 있지 않을까 싶습니다.
(셈플 hml파일을 더블클릭해서 열어 보면 딱 1줄인 내용이 다 입니다.)

현재 현상은 DRM 환경에서 재현되는 것일 수 있겠네요.
SetTextFile 함수는 내부 동작 중에 임시 파일을 생성하는 방식이 포함되어 있는데요.
이 과정에서 DRM에서 파일을 암호화시킨 것은 아닌가 의심이 됩니다.

처음 질문한 내용 중에
“SaveAs함수를 이용하여 HWP파일로 저장을 하고 저장한 HWP파일을 더블 클릭하여 열면 내용이 xml형식으로 보여 지고 있습니다.”
이 때 생성된 파일을 첨부해주시면 확인해보겠습니다.

  • 중요한 파일이 아니시면 Upload 파일로 파일을 첨부해주세요.

감사합니다.

ps) 기술 지원이 필요한 사항은 고객지원센터를 이용 부탁드립니다.