HWP 문서를 마크다운 형식으로 변환하는 함수입니다.
function toMarkdown(data: Buffer, options?: ToMarkdownOptions): ToMarkdownResultdata: Buffer변환할 HWP 파일의 바이트 배열입니다 (Buffer 또는 Uint8Array).
예제:
import { readFileSync } from 'fs';
const fileBuffer = readFileSync('./document.hwp');
const data = new Uint8Array(fileBuffer);options?: ToMarkdownOptions마크다운 변환 옵션입니다 (선택 사항).
interface ToMarkdownOptions {
/** 이미지 형식: 'base64'는 마크다운에 base64 데이터 URI를 직접 포함, 'blob'은 별도 ImageData 배열로 반환 (기본값: 'blob') */
image?: 'base64' | 'blob';
/** HTML 태그 사용 여부 (true인 경우 테이블 등 개행 불가 영역에 <br> 태그 사용) */
useHtml?: boolean;
/** 버전 정보 포함 여부 */
includeVersion?: boolean;
/** 페이지 정보 포함 여부 */
includePageInfo?: boolean;
/** 이미지를 파일로 저장할 디렉토리 경로 (선택) */
imageOutputDir?: string;
}ToMarkdownResult변환된 마크다운 문자열과 이미지 데이터를 포함하는 객체입니다.
Web/Node.js:
interface ToMarkdownResult {
/** 이미지 참조가 포함된 마크다운 문자열 */
markdown: string;
/** 추출된 이미지 데이터 (image: 'blob' 옵션 사용 시) */
images: ImageData[];
}
interface ImageData {
/** 이미지 ID (예: "image-0") */
id: string;
/** 이미지 데이터 (Uint8Array) */
data: Buffer;
/** 이미지 형식 (예: "jpg", "png", "bmp") */
format: string;
}React Native:
interface ToMarkdownResult {
/** 이미지 참조가 포함된 마크다운 문자열 */
markdown: string;
// 주의: React Native에서는 images 필드가 지원되지 않습니다.
// 이미지는 base64 데이터 URI로 마크다운에 직접 포함됩니다.
}:::warning 플랫폼별 차이점:
image: 'blob' 옵션 사용 시 images 배열에 ImageData 객체가 포함됩니다.images 필드가 지원되지 않으며, 이미지는 항상 base64 데이터 URI로 마크다운에 직접 포함됩니다.
:::다음 내용이 포함됩니다:
import { toMarkdown } from '@ohah/hwpjs';
// 파일 입력에서 HWP 파일 읽기
const fileInput = document.querySelector('input[type="file"]');
fileInput.addEventListener('change', async (e) => {
const file = (e.target as HTMLInputElement).files?.[0];
if (!file) return;
const arrayBuffer = await file.arrayBuffer();
const data = new Uint8Array(arrayBuffer);
// 마크다운으로 변환
const result = toMarkdown(data, {
image: 'base64',
useHtml: true,
includeVersion: true,
includePageInfo: false,
});
console.log(result.markdown);
});다음 컨트롤 객체가 감지되고 마크다운으로 변환됩니다:
*[머리말]*, *[꼬리말]**[단 정의]*# HWP 문서
본문 내용이 여기에 표시됩니다.
| 열1 | 열2 | 열3 |
|-----|-----|-----|
| 셀1 | 셀2 | 셀3 |
| 셀4 | 셀5 | 셀6 |

또는 이미지를 별도로 받은 경우:

---
[다음 페이지 내용...]includeVersion: true: 문서 버전 정보가 포함됩니다.includePageInfo: true: 페이지 구분선이 포함됩니다.useHtml: true: 테이블 등 개행 불가 영역에 <br> 태그가 사용됩니다.image: 'base64': 이미지가 마크다운에 base64 데이터 URI로 직접 포함됩니다.image: 'blob': 이미지가 별도 배열로 반환되고, 마크다운에는 참조만 포함됩니다.hwp-core 라이브러리를 사용하여 HWP 파일을 파싱하고 마크다운으로 변환합니다.