CHM을 HTML(및 기타)로 변환하는 방법 GroupDocs.Viewer Java 사용
레거시 도움말 파일을 최신 형식으로 컴파일하는 것은 개발자들에게 흔한 요구입니다. 이 튜토리얼에서는 chm을 html로 변환하고 동일한 CHM 소스를 JPG, PNG로 렌더링하고 chm을 pdf로 변환하는 방법을 GroupDocs.Viewer for Java를 사용하여 배웁니다. 끝까지 진행하면 오래된 매뉴얼을 보관하거나 웹 포털에 도움말 콘텐츠를 노출하는 등 모든 CHM 문서에 적용 가능한 재사용 가능한 패턴을 얻게 됩니다.

GroupDocs.Viewer for Java로 CHM 파일 렌더링
빠른 답변
- CHM 렌더링을 처리하는 라이브러리는 무엇인가요? GroupDocs.Viewer for Java.
- HTML 출력을 단일 파일로 받을 수 있나요? 예,
singlePage옵션을 활성화하면 됩니다. - PDF 변환이 손실 없이 이루어지나요? 라이브러리는 레이아웃, 이미지 및 하이퍼링크를 보존합니다.
- 테스트에 라이선스가 필요합니까? 무료 체험 또는 임시 라이선스로 충분합니다.
- 지원되는 포맷은 무엇인가요? HTML, JPG, PNG, PDF, 그리고 DOCX 및 XLSX와 같은 기타 포맷.
GroupDocs.Viewer for Java란?
GroupDocs.Viewer for Java는 서버 측 API로, CHM을 포함한 70개 이상의 문서 유형을 Microsoft Office나 Adobe Acrobat 없이 웹 친화적인 형식으로 렌더링합니다. Java 8 이상 런타임에서 동작하며 웹, 데스크톱, 마이크로서비스 아키텍처에 통합할 수 있습니다. 자세한 내용은 GroupDocs 문서을 참조하세요.
왜 CHM을 HTML로 변환하나요?
GroupDocs.Viewer는 50개 이상의 입력 및 출력 포맷을 지원하며, 일반적인 2 GHz CPU에서 200페이지 CHM 파일을 2초 미만에 단일 HTML 페이지로 변환하면서 모든 내부 링크를 유지합니다. 이러한 속도와 포맷 다양성은 레거시 도움말 시스템을 최신 웹 포털로 마이그레이션하는 데 이상적입니다.
사전 요구 사항
- GroupDocs.Viewer Java 라이브러리 (버전 25.2 이상).
- Maven 호환 프로젝트 (IntelliJ IDEA, Eclipse 등).
- Java와 Maven 의존성 관리에 대한 기본 지식.
GroupDocs.Viewer for Java 설정
Java 프로젝트에서 GroupDocs.Viewer를 사용하려면 Maven 의존성을 추가하세요:
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-viewer</artifactId>
<version>25.2</version>
</dependency>
라이선스 획득
GroupDocs는 무료 체험, 평가용 임시 라이선스, 상업적 사용을 위한 구매 옵션을 제공합니다. 옵션을 확인하려면 구매 페이지 또는 임시 라이선스 섹션를 방문하세요.
라이브러리를 설정한 후, 간단한 Java 애플리케이션에서 초기화해 보겠습니다:
Viewer viewer = new Viewer("path/to/your/file.chm", new ViewerConfig());
구현 가이드
CHM을 HTML로 변환하는 방법?
CHM 파일을 로드하고 출력 폴더를 정의한 뒤 HTML 렌더링 옵션을 호출합니다. API는 임베디드 리소스(CSS, 이미지)를 자동으로 추출하고 모든 내용을 단일 페이지로 병합할 수 있습니다.
String outputDir = "output/html";
HtmlViewOptions options = HtmlViewOptions.forEmbeddedResources(outputDir);
options.setSinglePage(true); // single‑page output
viewer.view(options);
HtmlViewOptions 클래스는 뷰어에게 HTML을 생성하는 방법을 알려주는 구성 객체입니다. singlePage를 true로 설정하면 모든 챕터가 하나의 HTML 파일로 통합되어 빠른 탐색에 적합합니다.
CHM을 JPG로 변환하는 방법?
CHM 페이지를 이미지로 렌더링하면 썸네일이나 시각적 미리보기에 유용합니다. 렌더링할 페이지를 지정하여 대용량 문서의 처리 시간을 줄일 수 있습니다.
String outputDir = "output/jpg";
JpgViewOptions options = JpgViewOptions.forDirectory(outputDir);
options.setPageNumbers(new int[]{1, 2}); // render only first two pages
viewer.view(options);
JpgViewOptions 클래스를 사용하면 이미지 품질, DPI, 페이지 선택을 제어할 수 있습니다. 필요한 페이지만 렌더링하면 메모리와 CPU 사이클을 절약합니다.
CHM을 PNG로 변환하는 방법?
PNG 출력은 무손실 품질을 유지하고 투명도를 지원하므로 도움말 주제의 고해상도 스크린샷에 이상적입니다.
String outputDir = "output/png";
PngViewOptions options = PngViewOptions.forDirectory(outputDir);
options.setPageNumbers(new int[]{1}); // render the first page as PNG
viewer.view(options);
PngViewOptions 클래스는 JPG 대응 클래스와 유사하게 동작하지만 정확한 시각적 충실도를 유지하는 PNG 파일을 생성합니다.
CHM을 PDF로 변환하는 방법?
PDF는 배포에 가장 포터블한 포맷입니다. 뷰어는 단일 호출로 전체 CHM 콘텐츠를 하나의 PDF 문서로 병합할 수 있습니다.
String outputPath = "output/chm-document.pdf";
PdfViewOptions options = PdfViewOptions.forFile(outputPath);
viewer.view(options);
PdfViewOptions 클래스는 페이지 매김, 폰트 임베딩, 하이퍼링크 보존을 자동으로 처리합니다.
실용적인 적용 사례
- 보관: 레거시 CHM 파일을 현대 포맷으로 변환하여 더 쉽게 접근하고 장기 보존합니다.
- 웹 포털: 내부 기업 인트라넷에 CHM 문서를 HTML 페이지로 게시합니다.
- 모바일 앱: Android 또는 iOS 애플리케이션에 도움말 파일의 PDF 버전을 번들링하여 오프라인으로 읽을 수 있게 합니다.
성능 고려 사항
대용량 또는 다수의 문서 변환을 처리할 때:
- 메모리 관리: PNG 또는 고해상도 JPG로 렌더링하면 메모리를 많이 사용할 수 있으므로 JVM 힙을 모니터링하고 대량 배치에는
-Xmx2g를 고려하세요. - 병렬 처리: Java의
ExecutorService를 사용해 여러 CHM 파일을 동시에 변환하되, CPU 과부하를 방지하기 위해 스레드 수를 제한하세요. - 배치 크기: 대규모 아카이브의 경우 파일을 10‑20개씩 그룹으로 처리하여 리소스 사용량을 예측 가능하게 유지하세요.
일반적인 문제와 해결책
- 이미지 누락:
HtmlViewOptions.forEmbeddedResources를 사용하여 이미지가 HTML과 함께 추출되도록 하세요. - 잘못된 페이지 순서: CHM 파일의 내부 TOC가 손상되지 않았는지 확인하세요; 뷰어는 원래 네비게이션 구조를 유지합니다.
- Out‑of‑Memory 오류: JVM 힙 크기를 늘리거나 최신 API 버전에서 사용 가능한 경우
viewer.view(options, new Stream())와 같은 스트리밍 모드로 전환하세요.
자주 묻는 질문
Q: CHM 파일 전체 디렉터리를 한 번에 변환할 수 있나요?
A: 예, Java의 Files.list API로 폴더를 순회하면서 각 파일에 동일한 렌더링 코드를 호출하면 됩니다.
Q: 대용량 문서를 메모리 부족 없이 처리하려면 어떻게 해야 하나요?
A: JVM 힙(-Xmx)을 늘리거나 낮은 DPI의 이미지 포맷으로 렌더링하세요; 또한 CHM을 섹션으로 나누어 개별적으로 처리할 수도 있습니다.
Q: 출력 형식을 더 맞춤화할 수 있나요?
A: 예, GroupDocs.Viewer는 CSS 삽입, 페이지 크기, 이미지 품질 등에 대한 광범위한 옵션을 제공합니다. 자세한 설정은 API 레퍼런스를 확인하세요.
Q: 라이브러리가 PDF로 변환할 때 하이퍼링크를 보존하나요?
A: 물론입니다. 모든 내부 CHM 링크가 클릭 가능한 PDF 주석으로 변환됩니다.
Q: CHM 챕터 중 일부만 렌더링할 수 있나요?
A: 뷰 옵션의 setPageNumbers 메서드를 사용하여 필요한 정확한 페이지 또는 챕터를 지정하세요.
결론
이제 chm을 html로 변환, chm을 pdf로 변환하고 GroupDocs.Viewer for Java를 사용해 이미지 표현을 생성하는 완전하고 프로덕션 준비된 워크플로우를 갖추었습니다. 이러한 기술을 통해 레거시 도움말 시스템을 현대화하고 접근성을 향상시키며 Java 기반 솔루션에 문서를 통합할 수 있습니다.
다음 단계가 준비되셨나요? 사용자 정의 CSS 삽입, 워터마크, 다중 스레드 배치 처리와 같은 고급 커스터마이징을 위해 공식 GroupDocs 문서를 확인하세요.
마지막 업데이트: 2026-06-30
테스트 환경: GroupDocs.Viewer Java 25.2
작성자: GroupDocs
<repositories>
<repository>
<id>repository.groupdocs.com</id>
<name>GroupDocs Repository</name>
<url>https://releases.groupdocs.com/viewer/java/</url>
</repository>
</repositories>
<dependencies>
<dependency>
<groupId>com.groupdocs</groupId>
<artifactId>groupdocs-viewer</artifactId>
<version>25.2</version>
</dependency>
</dependencies>
import com.groupdocs.viewer.Viewer;
public class ViewerSetup {
public static void main(String[] args) {
try (Viewer viewer = new Viewer("path/to/your/document.chm")) {
// Your document viewing and rendering logic goes here.
}
}
}
import java.nio.file.Path;
Path outputDirectory = TestFiles.getOutputDirectoryPath("RenderingChmFiles");
Path pageFilePathFormat = outputDirectory.resolve("chm_result_{0}.html");
import com.groupdocs.viewer.Viewer;
import com.groupdocs.viewer.options.HtmlViewOptions;
try (Viewer viewer = new Viewer(TestFiles.SAMPLE_CHM)) {
HtmlViewOptions options = HtmlViewOptions.forEmbeddedResources(pageFilePathFormat);
options.setRenderToSinglePage(true); // Optional: render into a single HTML page
viewer.view(options);
}
Path pageFilePathFormat = outputDirectory.resolve("chm_result_{0}.jpg");
import com.groupdocs.viewer.options.JpgViewOptions;
try (Viewer viewer = new Viewer(TestFiles.SAMPLE_CHM)) {
JpgViewOptions options = new JpgViewOptions(pageFilePathFormat);
viewer.view(options, 1, 2, 3); // Converts pages 1 to 3 into JPG format
}
Path pageFilePathFormat = outputDirectory.resolve("chm_result_{0}.png");
import com.groupdocs.viewer.options.PngViewOptions;
try (Viewer viewer = new Viewer(TestFiles.SAMPLE_CHM)) {
PngViewOptions options = new PngViewOptions(pageFilePathFormat);
viewer.view(options, 1, 2, 3); // Converts specified pages to PNG format
}
Path pageFilePathFormat = outputDirectory.resolve("chm_result.pdf");
import com.groupdocs.viewer.options.PdfViewOptions;
try (Viewer viewer = new Viewer(TestFiles.SAMPLE_CHM)) {
PdfViewOptions options = new PdfViewOptions(pageFilePathFormat);
viewer.view(options); // Generates a single PDF document from the CHM file
}