한글 파일을 텍스트 파일로 변환하고 싶어요.

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

  1. 한글 오토메이션의 API 사용/연동은 개발 가이드를 참조하세요.
  2. 일반 문의는 한글과컴퓨터 웹사이트의 고객 지원을 이용하세요.
  3. 개인정보가 포함되지 않도록 유의하세요. 게시글 또는 댓글에 개인정보가 포함된 내용이 있을 경우 게시물이 숨김처리 될 수 있습니다.

안녕하세요.
폭설로 피해는 없으셨는지요?
저는 운전하는 경로 주변에 너무 아름다운 광경이 펼쳐져서
가슴이 벅차올라 마구 사진을 찍어댔습니다.ㅎ

제목 그대로 한글 파일을 텍스트 파일, 옵션은 UTF-8로 변환하는 프로그램을 만들려고 합니다.
c#이구요. 버튼 누르면 텍스트박스에 입력된 경로의 한글파일을
일괄 텍스트파일로 변환하려고 합니다.
혹시 도움을 좀 주실 수 있으신지요?

아래처럼 했더니, 보안 경고 메시지 뜨고, 모두 변환 허용 선택했더니, 결과물 파일의 크기가 전부 0이 되네요.ㅠ

using HWPCONTROLLib;
using System;
using System.IO;

using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

using HwpAutomationAppLib;

namespace HwpToTextFile
{
public partial class Form1 : Form
{

    private dynamic hwp; // HWP Automation Object

    public Form1()
    {
        InitializeComponent();

        Type hwpType = Type.GetTypeFromProgID("HWPFrame.HwpObject");
        hwp = Activator.CreateInstance(hwpType); // HWP COM 객체 생성

    }

    private void btnTrans_Click(object sender, EventArgs e)
    {

        string folderPath = txtPath.Text; // 변환할 파일 경로
        if (!Directory.Exists(folderPath))
        {
            MessageBox.Show("유효하지 않은 경로입니다.");
            return;
        }

        string[] hwpFiles = Directory.GetFiles(folderPath, "*.hwp");
        if (hwpFiles.Length == 0)
        {
            MessageBox.Show("HWP 파일이 없습니다.");
            return;
        }

        foreach (string hwpFile in hwpFiles)
        {
            try
            {
                // HWP 파일 열기
                hwp.Open(hwpFile, "HWP", "forceopen:true");

                // 저장 경로 설정
                string textFile = Path.ChangeExtension(hwpFile, ".txt");

                // 텍스트 파일로 저장 (UTF-8 인코딩)
                hwp.SaveAs(textFile, "TEXT", "code:utf8");

                // 파일 닫기
                hwp.Clear(1); // 1: Clear 모든 문서
            }
            catch (Exception ex)
            {
                MessageBox.Show($"파일 변환 중 오류 발생: {hwpFile}\n{ex.Message}");
            }
        }

        MessageBox.Show("변환이 완료되었습니다.");

    }


    private void Form1_FormClosing(object sender, FormClosingEventArgs e)
    {
        if (hwp != null)
        {
            hwp.Quit(); // HWP 종료
            hwp = null;
        }


    }
}

}

안녕하세요.

작성하신 코드에는 문제가 없는 것으로 보입니다.

다만 hwp.Open(hwpFile, “HWP”, “forceopen:true”); 구문에서
파일을 열 때 HWP 포맷으로 명시적으로 지정하셔서 HWP 포맷이 아닌 파일인 경우(예를 들어 .hwpx)에도
HWP 형식으로 열 수 있는 오류가 있을 수 있으니
아래처럼 수정해보면 좋을 것 같습니다.
hwp.Open(hwpFile, “”, “forceopen:true”);

감사합니다.

앗. 그것 하나 수정했는데
신기하게도 결과가 달라지네요.
감사합니다.^^

**
혹시 하나 더 여쭤봐도 될지요.
자꾸 '모두 변환 허용’을 자동으로 선택하게 할 수 있을지요?

아래 링크 참고하셔서 “보안 승인 모듈” 항목을 넣어주시면 될 것 같습니다.

레지스트리 등록 방식은 다른 이용자들에게는 거부감이 있을 수도 있겠네요.
감사합니다.^^