C# 라이브러리 형식 hwp to pdf 개발

  1. hwp 파일을 여는 문제가 있습니다. 아래 그림처럼 open시 접근 허용관련 팝업 메세지가 나옵니다.
    이것도 setMessageBox 로 제어가 가능한가요? 가능하면 어떤 롱값을 넘겨야 하나요?
    image

  2. pdf 로 변환하는 작업이 가능한지 여쭤보고 싶습니다.
    c# form 관련 개발이 아니고 consolApp 라이브러리 개발이라 event 함수들을 사용할 수 없습니다.

※ HwpObjectClass.fileTranslate 기능이 궁금합니다. 개발 관련 pdf 파일들에서도 찾아 볼 수 가 없습니다…

변환 시도한 소스 첨부하겠습니다.

try
            {
                HwpObjectClass hwp = new HwpObjectClass();
                object format = Type.Missing;
                object arg = Type.Missing;
                hwp.Open(inputHwpPath, format, arg);
                hwp.SetMessageBoxMode(0x00000001);
                hwp.SaveAs(outputPdfPath, "HWPToPDF", arg);
            } catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }

안녕하세요 ^^

  1. 개발 가이드에서 "보안 승인 모듈 " 관련 확인하시면 될것 같습니다 ^^

2.> SaveAs 에서는 HWPToPDF 를 지원하지 않습니다. api 확인해보니 따로 없어 pdf로 프린트 방식으로 저장해야하지 않을까 싶습니다.

감사합니다~!

  1. 개발 가이드에서 보안 승인 모듈은 hwpCtrl로 되어있는데 HwpObjectLib 로도 사용 가능한것인가요?
    만약 사용가능하다면 레지스트리를 hwpAutomation 하위에 만들면 되는 건가요?
    저는 해당 위치에 만들었는데 메세지 박스는 여전히 뜨는 것으로 보입니다…

  2. hwpObjectLib을 사용하여 pdf 프린트 방식으로 저장하는 api는 어느 문서를 참고할 수 있을까요?

1개의 좋아요

안녕하세요,

  1. RegisterModule API로 등록해주시면 됩니다. ^^
    https://github.com/hancom-io/devcenter-archive/raw/main/hwp-automation/보안모듈(Automation).zip

  2. 프린트는 다음 Print 액션을 이용하시면 됩니다. 액션에 사용되는 parameterset은 ParameterSet 문서 참고하시면 될것 같습니다.

보내주신 문서랑 포럼에 있는 다른 소스 참고 하여 작성해 봤는데

public static void Main(Dictionary<string, string> newArgs)
        {
            Console.WriteLine("Convert Hwp to PDF File!");
            string inputHwpPath = newArgs["inputFilePath"];
            string outputPdfPath = newArgs["outputFilePath"];

            try
            {
                HwpObject hwp = new HwpObject();

                object format = Type.Missing;
                object arg = Type.Missing;
                hwp.RegisterModule("FilePathCheckDLL", "FilePathCheckerModuleExample");
                hwp.Open(inputHwpPath, format, arg);
                var act = (HAction)hwp.CreateAction("Print");
                var paramSet = (HParameterSet)hwp.HParameterSet;
                var print = (HPrint)paramSet.HPrint;
                var set = (HSet)print.HSet;
                set.SetItem("PrintToFile", true);
                set.SetItem("Filename", outputPdfPath);
                set.SetItem("Device", 3);
                act.Execute("Print", paramSet);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
            }
            Console.Write("Converted pdf File");
        }

var act = (HAction)hwp.CreateAction(); 부분에서 캐스팅 할 수 없다는 오류가 뜨네요… 해결할 수 있는 방법이 있을까요?

안녕하세요 ^^
IDHwpAction, IDHwpParameterSet 인터페이스 이용해주시면 됩니다.
감사합니다.


  IDHwpAction act = myHwpObj.CreateAction("Print");
  IDHwpParameterSet set = act.CreateSet();
  act.GetDefault(set);

  set.SetItem("PrintDevice", "Printer");

  act.Execute(set);

와 감사합니다.
드디어 프린터 호출이 된것을 확인했습니다.

그런데 ‘인쇄할 쪽 번호가 없습니다.’ 라는 오류창이 뜨는데 이건 어떻게 해결 할 수있나요?
set에 item을 더 추가 해야 하나요? 아니면 hwp 파일이 잘못된것인가요?

=> 해결 방법을 찾아서 수정하였습니다.
print 하는 경우 ‘다른 이름으로 프린터 출력 저장’ 팝업이 나오는데
set.SetItem(“Filename”, output);
위 명령어로 처리가 불가능 한건가요?

=>파라미터가 Filename이 아니고 FileName이었네요 감사했습니다. 도움 주셔서

1개의 좋아요