SaveAs PDF 시, 문서가 제대로 변환되지 않습니다.

한글 2024에서 특정 문서를 PDF 로 변환 저장하면, 백지 1장만 나오네요.

한글 2024를 열어서 저장하면 잘저장되는데, HwpObject 를 사용해서 저장하면 제대로 저장이 되지 않아 문의를 드립니다.

샘플파일 링크

코드는 아래와 같습니다.


// HwpObject 방식Type hwpType = Type.GetTypeFromProgID(“HWPFrame.HwpObject”);dynamic hwp = Activator.CreateInstance(hwpType);

try{hwp.XHwpWindows.Active_XHwpWindow.Visible = 1;//hwp.XHwpWindows.Item(0).Visible =  0; // Visuable false
var status = hwp.RegisterModule(“FilePathCheckDLL”, Path.GetFileNameWithoutExtension(_fileChecker));
hwp.SetMessageBoxMode(0x00214411);

//versionwarning:false 의 경우, 상위버전 문서 메시지를 차단함
hwp.Open(source, extension.ToUpper(), "lock:false;forceopen:true;versionwarning:false;");
target = Path.ChangeExtension(target, "pdf");

// 옵션
//hwp.Run("FileSaveAsPDF", "PDFSaveOption:EmbedAllFonts=false,UsePassword=false");

// https://forum.developer.hancom.com/t/saveas/660
// 되는 변환 : TEXT, HTML, HWP, PDF, HWPX, HWPML2X, UNICODE, HWP30, HTML+ (레이아웃 형태로 추출)
// 안되는 변환: HWP20 HWP21 HWP15 HWPML1X(Open만 가능) RTF DBF HUNMIN MSWORD DOCRTF OOXML HANA ARIRANG WPS DOCIMG SWF
var convResult = hwp.SaveAs(target, "PDF", "");
if (!convResult)
    Console.WriteLine("변환 실패");
}catch{throw;}
finally{
hwp?.Clear(1);
hwp?.Quit();
Marshal.ReleaseComObject(hwp);}

안녕하세요.

전달주신 샘플 파일들은 확장자는 HWP이지만, 실제로는 HWPML 포맷 파일입니다.
그래서 문서를 여는 API에서 실패를 합니다.

아래 Open API에서 2번째 인자를 주면 1번째 인자로 전달된 파일을 지정한 포맷으로 열기 때문에
실제 HWPML 포맷을 “HWP” 포맷으로 열도록 강제해서 실패를 하게 됩니다.

hwp.Open(source, extension.ToUpper(), "lock:false;forceopen:true;versionwarning:false;");

전달한 파일의 문서 포맷을 알 수 없다면 2번재 인자를 빈 값으로 전달하도록 코드 수정을 하면 됩니다.
그러면 한글에서는 자체적으로 파일 포맷 디텍팅해서 열게 됩니다.
(2번재 포맷 인자를 명시적으로 전달하면 여는 속도는 미세하지만 더 빠름)

hwp.Open(source, "", "lock:false;forceopen:true;versionwarning:false;");

감사합니다.