IDHwpAction 기능 동작 질의

이 범주에서는 한글 오토메이션에 대한 다른 사용자의 기술 지원을 제공받을 수 있습니다.

지난 번 (C# 라이브러리 형식 hwp to pdf 개발 - jerry 님의 게시물 #7) 글에서 작성한 소스를 가지고 hwp to pdf 기능을 만들어서 배포하여 사용 중인데 특정 PC에서만 printAction에 각 item을 setting 하고 난 후 printAct를 실행시키는 구문(printAct.Execute)에서 Exception이 발생하지 않았는데 file이 존재하지 않고 로직이 마무리되는 현상이 있습니다.

이 문제는 모든 PC에서 발생하지 않고 특정PC에서만 확인되었습니다.

아래 작성한 소스를 첨부해두었으니 참고 부탁드립니다.
수정이 필요한 부분이 있을까요?

    private static void ConvertHwpToPdf(string inputHwpPath, string outputPdfPath, ref string code)
    {
        try
        {
            HwpObject hwp = new HwpObject();

            hwp.RegisterModule("FilePathCheckDLL", "FilePathCheckerModuleExample");
            bool opend = hwp.Open(inputHwpPath, "", "forceopen:True;suspendpassword:True;versionwarning:False");
            if (!opend)
            {
                Console.WriteLine("한글 파일이 암호화 되어있습니다.");
                code = "3000";
            }
            else
            {
                Console.WriteLine("read hwp file");
                Console.WriteLine("set hwp action");
                IDHwpAction fileAct = (IDHwpAction)hwp.CreateAction("TablePropertyDialog");
                IDHwpParameterSet fileSet = (IDHwpParameterSet)fileAct.CreateSet();
                fileAct.GetDefault(fileSet);
                fileSet.SetItem("TreatAsChar", 1);
                fileSet.SetItem("Shapetype", 1);
                fileAct.Execute(fileSet);
                Console.WriteLine("finish set action");

                Console.WriteLine("set hwp print action");
                IDHwpAction printAct = (IDHwpAction)hwp.CreateAction("Print");
                IDHwpParameterSet printSet = (IDHwpParameterSet)printAct.CreateSet();
                printAct.GetDefault(printSet);
                printSet.SetItem("PrintMethod", "");
                printSet.SetItem("ReverseOrder", false);
                printSet.SetItem("Pause", false);
                printSet.SetItem("FileName", outputPdfPath);
                printSet.SetItem("Device", 3);
                Console.WriteLine("finish set print action");

                bool result = printAct.Execute(printSet);
                Console.WriteLine("sucess convert file");
                FileInfo pdfFile = new FileInfo(outputPdfPath);
                Console.WriteLine("file is created?:" + pdfFile.Exists);
            }
        }
        catch (Exception e)
        {
            Console.WriteLine(e.Message);
            code = "3099";
        }
    }
  1. 한글 오토메이션의 API 사용/연동은 개발 가이드를 참조하세요.
  2. 일반 문의는 한글과컴퓨터 웹사이트의 고객 지원을 이용하세요.
  3. 개인정보가 포함되지 않도록 유의하세요. 게시글 또는 댓글에 개인정보가 포함된 내용이 있을 경우 게시물이 숨김처리 될 수 있습니다.미리 서식이 지정된 텍스트

안녕하세요

TablePropertyDialog 액션을 사용하려면 표 안에 캐럿이 있거나 표가 선택되어야 합니다.
해당 문제가 아닌지 확인 부탁드립니다.

감사합니다.

아 해결 확인은 아직 못하였지만 조언 감사합니다.
한글 파일 중 문서 제목 우측에 [배포용 문서] 과 같이 표시된 파일의 변환이 안되어 시도한 로직이었습니다.

위와 같은 파일도 변환할 수 있는 방법이 있을까요?
Exception은 “개체 참조가 개체의 인스턴스로 설정되지 않았습니다.” 라고 발생합니다.

배포용 문서로는 편집 동작이 안 됩니다.

수동으로 배포용 문서를 해제한 후 사용해야 할 것 같습니다.

편집/인쇄 제한이 설정된 배포용 파일은 설계상 인쇄/저장을 할 수가 없습니다.

감사합니다 혹시 TablePropertyDialog 액션 관련 로직을 제거하여 테스트 진행 시 오류가 발생한다면 따로 메세지를 드려도 괜찮을까요?

감사합니다 원글에 대한 질문이 요점이긴한데 youggilyoun님과 같은 의견이실까요?
사용자 정보에 한글과 컴퓨터 마크가 붙어있어 한번 더 확인코자 여쭤봅니다 ^^
또한 테스트 진행 시 오류 발생한다면 따로 메세지를 드려도 괜찮을까요?

여기에 댓글을 남겨 주시면 답변 드리겠습니다.

위 로직을 모두 지우고 시도 해보았는데도 여전히 result는 false가 나오고 file 또한 생성이 되지 않네요…;;
버전이나 뭐 네트워트 환경(현재 작업하는 곳은 폐쇄망) 등 다른 문제가 있을까요?

편집/인쇄 제한이 설정된 배포용 문서는 아닌가요?

아닙니다 지금 현상이 hwp를 열자마자 꺼지는 현상이 있습니다.
파일은 hwp에서 제공하는 샘플을 그래도 저장해 변환하는 방식을 사용하고 있습니다.
변환이 제대로 동작하는 pc에서 작은 팝업창이 나와 변환 중인 매수를 표시하고 있지만 문제가 있는 pc의 경우 해당 팝업도 나오지 못하고 hwp 작업이 종료되는 현상이 있습니다

추가로 system 제대로 동작하지 못하는 pc에선 system Interrupts 타스크가 동작하는 것 같습니다

@jerry 님, 위에 첨부해주신 코드에는 문제가 발생할 만한 코드는 없습니다.
직접 디버깅을 해보셨을 때 예상되는 위치를 짚어주실 수 있을지요? :sob:
(연동된 한글 버전에 따라 차이는 없는지)

실행 환경에 따라 동작이 다르다고 하니 원인을 찾는데 한계가 있네요.

디버깅에 대한 정보를 확인하기 쉽지 않을 것 같습니다…:cry:
제가 첨부한 로직 중 prinatAct.excute 까지 실행되는 것을 콘솔 로그를 통해 확인하였고
해당 메소드에서 result값이 false가 나오며 바로 프로그램이 종료됩니다.
차라리 오류가 발생했더라면 첨부 코드 중 Exception에 잡혔을 텐대 오류도 발생하지 않고 강제종료되는 것 같습니다.
작업 관리자 화면으로 봤을 때 hwp 실행 파일이 열렸다가 바로 닫힙니다.
(정상 동작하는 경우엔 fontdriver host 서비스, print driver host 서비스가 실행되는데 종료될 땐 이 서비스가 나오기 전에 hwp가 종료됩니다)
제가 확인해볼 수 있는 로그나 다른 참조 가능한 파일이 있을까요?

윈도우 11버전에서 사용 중입니다. 한글은 2020 버전을 사용하고 있습니다.
추가로 원인은 아닐 듯 한데 c#에서 제공하는 cancellationTokenSource 를 사용하여 첨부한 메소드를 호출하고 있습니다.

확인 한번 부탁드립니다…