한글(아래아한글)이 깔려 있지 않은 PC·맥·태블릿에서도 .hwp·.hwpx 문서를 페이지 모양 그대로 열어 봅니다. 열고 나면 PDF·텍스트·HWPX·HWP·PNG로 저장할 수 있습니다. 파일은 업로드되지 않습니다 — 해석기를 내려받아 브라우저 안에서만 읽습니다.
PDF 저장은 각 쪽을 2배 해상도 그림으로 찍어 묶으므로 어디서 열어도 모양이 그대로입니다(글자 검색·복사는 안 됨). 인쇄 / 벡터 PDF는 브라우저 인쇄창에서 “PDF로 저장”을 고르는 방식이라 글자가 살아 있어 검색·복사가 되지만 브라우저마다 결과가 조금 다를 수 있습니다.
한글(아래아한글) 문서 .hwp와 .hwpx를 프로그램 설치 없이 브라우저에서 그대로 열어 봅니다. 페이지를 실제 용지 크기대로 그려 주고, 확대·축소와 쪽 이동은 물론 글자 선택·복사와 Ctrl+F 찾기까지 됩니다. 다 본 뒤에는 이미지 PDF·벡터 PDF(인쇄)·텍스트·HWPX·HWP·PNG로 저장할 수 있어 한글이 없는 사람에게 보낼 파일을 바로 만들 수 있습니다. 문서 해석기는 WebAssembly로 된 오픈소스(MIT)이고 파일은 서버로 전송되지 않으므로, 공문·계약서·이력서처럼 남에게 넘기기 곤란한 문서도 안심하고 열어 볼 수 있습니다.
메일로 받은 첨부파일을 눌렀는데 “이 파일을 열 수 있는 앱이 없습니다”라는 문구만 뜬 경험이 있다면, 그 파일은 십중팔구 .hwp였을 것입니다. 관공서·학교·공공기관이 오랫동안 표준 문서 형식으로 써 온 한글 문서는 한국에서만 널리 쓰이는 고유 형식이라, 워드나 페이지스, 구글 문서처럼 세계적으로 쓰이는 프로그램은 기본적으로 이 형식을 알지 못합니다. 확장자를 .doc로 바꿔도 소용이 없습니다. 내용을 담는 규칙 자체가 다르기 때문입니다.
구체적으로 .hwp(한글 5.0 형식)는 마이크로소프트가 만든 복합 문서 컨테이너(OLE Compound File) 안에 여러 개의 스트림을 넣고, 각 스트림을 zlib으로 압축한 이진 파일입니다. 안을 열어 보면 사람이 읽을 수 있는 글자는 거의 없고, 문단·글자 모양·표·그림을 가리키는 레코드가 태그·길이·값 순서로 촘촘히 이어져 있습니다. 문서 전체가 이런 레코드의 나열이라 규칙을 모르면 한 글자도 꺼낼 수 없습니다.
반면 .hwpx는 2010년대에 만들어진 개방형 XML 형식입니다. 파일 자체가 ZIP 묶음이고 그 안에 Contents/section0.xml 같은 XML 파일이 들어 있어, 압축을 풀면 글자와 서식이 사람이 읽을 수 있는 태그로 보입니다. 마이크로소프트 워드의 .docx가 .doc를 대체한 것과 정확히 같은 구도입니다. 공공기관 문서 표준으로 .hwpx가 권장되면서 요즘 내려받는 서식은 .hwpx인 경우가 늘고 있지만, 실무에서 주고받는 파일은 아직도 .hwp가 압도적으로 많습니다.
다행히 두 형식 모두 명세가 공개되어 있습니다. 한글을 만든 회사가 파일 구조 문서를 배포했고, 그 덕분에 회사 밖에서도 문서를 읽는 프로그램을 만들 수 있게 되었습니다. 이 페이지가 쓰는 해석기도 그 공개 명세를 바탕으로 만들어진 오픈소스입니다. “한국 고유 형식이라 못 연다”는 말은 절반만 맞습니다. 정확히는 대부분의 프로그램이 굳이 지원하지 않을 뿐이고, 규칙 자체는 알려져 있습니다.
그래서 상황은 이렇게 정리됩니다. 파일이 이상한 것도, 보낸 사람이 잘못한 것도 아닙니다. 받는 쪽에 그 형식을 읽는 코드가 없을 뿐입니다. 필요한 것은 “변환 서비스”가 아니라 읽는 코드 한 벌이고, 그 코드는 요즘 브라우저 안에서도 충분히 돌아갑니다.
① 한컴오피스 뷰어를 설치한다. 가장 정확한 방법입니다. 만든 회사가 직접 배포하는 무료 뷰어이므로 서식 재현이 완벽에 가깝고, 인쇄도 원본 그대로 나옵니다. 다만 윈도우용이 중심이라 맥에서는 선택지가 좁고, 회사·학교 PC처럼 설치 권한이 없는 환경이나 남의 컴퓨터·태블릿·휴대폰에서는 쓰기 어렵습니다. 한 번 보고 말 문서 하나 때문에 수백 MB짜리 프로그램을 까는 것도 부담입니다.
② 웹 변환 사이트에 올린다. 검색하면 “HWP를 PDF로” 같은 사이트가 많이 나옵니다. 편하지만 원리를 알면 조심스러워집니다. 이런 서비스는 대부분 파일을 서버로 업로드해 서버에서 변환한 뒤 결과를 돌려줍니다. 즉 문서 내용이 남의 컴퓨터를 한 번 거칩니다. 주민등록번호가 들어간 서식, 계약서, 성적표, 인사 서류라면 이 한 번의 왕복이 곧 유출 위험입니다. 보관 정책을 명시하는 곳도 있지만 확인할 방법은 없습니다.
③ 다른 오피스 프로그램에서 연다. 일부 국산 오피스나 오픈소스 오피스가 한글 문서를 부분적으로 읽습니다. 다만 지원 범위가 형식·버전마다 달라 표가 깨지거나 그림이 사라지는 일이 잦고, 역시 설치가 필요합니다.
④ 이 페이지에서 연다. 브라우저가 문서를 직접 읽습니다. 파일을 고르면 그 순간 파일은 브라우저 메모리로만 들어가고, 해석과 그리기가 모두 당신의 기기 CPU에서 일어납니다. 서버로 나가는 것은 처음 한 번 해석기 파일을 내려받는 요청뿐이고, 문서가 담긴 요청은 아예 존재하지 않습니다. 설치가 없으니 회사 PC·도서관 PC·맥·아이패드에서도 똑같이 됩니다.
정리하면 제출용 최종본을 다듬어야 한다면 ①, 내용을 확인하고 PDF·텍스트로 뽑아 쓰는 것이 목적이라면 ④가 맞습니다. ②는 민감한 문서에서는 피하는 편이 좋습니다. 이 페이지는 ①을 대체하려는 것이 아니라, 한글을 깔 수 없는 상황에서 문서를 “읽고 옮기는” 일을 해결하려는 도구입니다.
핵심은 WebAssembly입니다. 브라우저는 자바스크립트만 실행하는 것이 아니라, 미리 기계어에 가깝게 컴파일된 WebAssembly 모듈도 실행할 수 있습니다. 이 페이지는 Rust로 작성된 한글 문서 해석기를 WebAssembly로 컴파일한 파일(약 10MB)을 내려받아 브라우저 안에서 돌립니다. 파일을 처음 열 때만 받고 이후에는 브라우저 캐시에서 바로 꺼내 쓰기 때문에 두 번째부터는 기다림이 거의 없습니다.
동작 순서는 이렇습니다. ① 고른 파일을 바이트 배열로 읽습니다. 여기서 이미 파일은 브라우저 메모리 안에 있고, 네트워크와는 무관합니다. ② 해석기가 그 바이트를 받아 컨테이너를 풀고 레코드를 해석해 문단·글자 모양·표·그림 같은 구조를 만듭니다. ③ 그 구조에 용지 크기·여백·줄간격을 적용해 어느 글자가 몇 쪽 어디에 놓이는지를 계산합니다(조판). ④ 계산된 결과를 쪽마다 SVG(벡터 그림)로 그려 냅니다. ⑤ 브라우저가 그 SVG를 화면에 표시합니다.
③번 조판 단계에서 해석기는 “이 글꼴, 이 크기로 이 글자를 그리면 폭이 얼마인가”를 알아야 줄바꿈 위치를 정할 수 있습니다. 그런데 글꼴의 실제 폭을 아는 것은 브라우저이므로, 이 페이지는 글자 폭을 재 주는 함수를 해석기에 미리 건네줍니다. 해석기가 필요할 때마다 이 함수를 불러 폭을 물어보고, 브라우저는 캔버스의 글자 측정 기능으로 답합니다. 그래서 화면에 실제로 쓰이는 글꼴과 조판에 쓰인 폭이 일치합니다.
④번에서 만들어지는 SVG는 글자를 그림으로 굽지 않고 진짜 글자로 담습니다. 덕분에 화면에서 마우스로 긁어 복사할 수 있고 Ctrl+F도 됩니다. 다만 해석기는 정확한 위치 재현을 위해 글자를 한 자씩 따로 놓기 때문에, 그대로 두면 브라우저가 “까/치/툴”을 서로 다른 조각으로 봐서 “까치툴”을 찾지 못합니다. 그래서 이 페이지는 화면에 올리기 직전에 같은 줄·같은 서식의 글자들을 하나로 합치고, 글자 사이가 벌어진 곳에는 띄어쓰기를 되살립니다. 이때 각 글자의 가로 위치는 그대로 유지하므로 보이는 모양은 한 픽셀도 달라지지 않으면서 검색·복사만 가능해집니다.
쪽 수가 많은 문서에서는 모든 쪽을 한꺼번에 그리지 않습니다. 화면에 보이는 쪽과 그 앞뒤 두 쪽만 실제로 그리고, 나머지는 같은 크기의 빈 자리만 잡아 둡니다. 스크롤을 하면 필요한 쪽이 그려지고 멀어진 쪽은 다시 빈 자리로 돌아갑니다. 이렇게 하면 수백 쪽짜리 문서도 메모리를 크게 쓰지 않고 부드럽게 넘길 수 있습니다.
해석·조판·그리기 라이브러리는 MIT 라이선스로 공개된 오픈소스이고, 이 사이트 안에 원본 그대로 두었습니다. 외부 CDN을 전혀 쓰지 않으므로 개발자 도구의 네트워크 탭을 열어 두고 실행해 보면 이 도메인에서 해석기와 글꼴을 받아 오는 요청만 보입니다.
한글 문서는 글꼴을 이름으로만 가리킵니다. 문서 안에 “이 문단은 함초롬바탕 11포인트”라고 적혀 있을 뿐, 함초롬바탕이라는 글꼴 파일 자체는 문서에 들어 있지 않습니다(글꼴을 포함해 저장한 문서가 아니라면). 그래서 한글이 설치되지 않은 기기에서는 그 이름에 해당하는 글꼴을 찾지 못합니다. 함초롬바탕·함초롬돋움은 한컴오피스와 함께 깔리는 글꼴이고, 한컴바탕·한컴돋움·휴먼명조·HY 계열도 마찬가지입니다.
이럴 때 아무 글꼴이나 쓰면 문서가 엉뚱해 보이므로, 이 페이지는 비슷한 성격의 무료 글꼴로 갈아 끼웁니다. 네모반듯한 고딕(돋움) 계열은 나눔고딕으로, 붓 느낌이 남아 있는 바탕(명조) 계열은 나눔명조로 대체합니다. 둘 다 SIL 오픈 폰트 라이선스로 자유롭게 쓸 수 있는 글꼴입니다. 원본 글꼴이 기기에 이미 설치되어 있으면 그 글꼴을 그대로 쓰고, 없을 때만 나눔 글꼴 파일을 내려받습니다. 그래서 한컴오피스가 깔린 윈도우에서는 추가 다운로드가 거의 일어나지 않습니다.
| 문서에 적힌 글꼴 이름 | 없을 때 대체 |
|---|---|
| 함초롬돋움, 함초롬돋움 확장, HCR Dotum, 한컴돋움, 맑은 고딕(Malgun Gothic), 굴림·굴림체, 돋움·돋움체, HY견고딕, HY중고딕, HY헤드라인M, 한컴 윤고딕 230/240/250, 새굴림 | 나눔고딕 |
| 함초롬바탕, 함초롬바탕 확장·확장B, HCR Batang, 한컴바탕, 바탕·바탕체, 궁서·궁서체, 신명조, 휴먼명조, HY신명조, HY견명조, HY목각파임B, 한컴 윤명조 230/240 | 나눔명조 |
| Arial, Times New Roman 등 영문 글꼴 | 기기의 같은 이름 글꼴 또는 시스템 기본 |
대체가 일어나면 줄바꿈 위치가 조금 달라질 수 있습니다. 글꼴마다 같은 크기라도 글자 폭이 미세하게 다르기 때문에, 원본에서 한 줄에 딱 들어가던 문장이 여기서는 다음 줄로 넘어가고 그 여파로 쪽 수가 한두 장 늘거나 줄 수 있습니다. 표 안의 글자가 칸을 넘치거나, 한 쪽에 겨우 맞춰 둔 문서의 마지막 줄이 다음 쪽으로 밀려나는 것도 같은 이유입니다. 내용은 그대로이니 읽고 확인하는 데는 문제가 없지만, 쪽 수와 줄바꿈이 정확히 같아야 하는 제출용 최종본은 한글 프로그램에서 한 번 확인하시는 편이 안전합니다.
글꼴 파일은 이 뷰어를 실제로 열 때만 내려받습니다. 페이지를 그냥 구경만 하는 동안에는 받지 않고, 문서에 쓰인 글꼴이 고딕 계열뿐이면 나눔명조는 받지 않습니다. 받아 온 글꼴은 브라우저 캐시에 남아 다음 문서부터는 즉시 쓰입니다.
각 쪽을 2배 해상도로 그림으로 찍어 PDF 한 권으로 묶습니다. 용지 크기는 원본 문서의 크기(A4라면 210×297mm)를 그대로 지키므로 인쇄하면 정확히 맞습니다. 그림이라 어느 기기·어느 뷰어에서 열어도 모양이 100% 같고 글꼴이 없어서 깨질 일이 없습니다. 도장·서명·표가 있는 문서를 “보이는 그대로” 넘겨야 할 때 가장 확실합니다. 대신 글자가 그림 안에 있으므로 검색·복사가 되지 않고, 쪽수가 많으면 파일이 커집니다. 텍스트가 필요하면 같은 화면의 .txt 저장을 함께 쓰세요.
브라우저의 인쇄 창을 열어 “대상”을 “PDF로 저장”으로 고르는 방식입니다. 이때는 화면에 그려진 글자가 그대로 PDF 안의 글자로 들어가므로 검색·복사가 되는 PDF가 만들어지고, 확대해도 글자가 깨지지 않으며 파일도 훨씬 작습니다. 다만 결과가 브라우저에 따라 조금씩 다릅니다. 인쇄 창에서 여백 “없음”과 배경 그래픽 켬을 확인하시고, 머리글·바닥글은 꺼 두시는 것이 좋습니다. 이 페이지는 인쇄용 용지 크기를 문서 크기에 맞춰 미리 지정하고 한 쪽에 한 장씩 들어가도록 잡아 둡니다.
둘 중 무엇을 고를지는 간단합니다. 모양이 절대 틀어지면 안 되는 제출·출력용이면 이미지 PDF, 본문을 검색하거나 일부를 복사해 쓸 목적이면 벡터 PDF입니다. 둘 다 만들어 두어도 됩니다.
같은 문서를 다른 한글 형식으로 다시 써 내는 기능입니다. HWP → HWPX는 오래된 이진 형식을 개방형 XML 형식으로 바꾸는 것이라, 공공기관이 요구하는 개방형 포맷으로 제출해야 할 때나 다른 프로그램에서 내용을 뽑아 쓸 때 유용합니다. 반대로 HWPX → HWP는 구버전 한글만 쓰는 곳에 파일을 보내야 할 때 씁니다. 변환은 문서 구조를 다시 써 내는 작업이라 대부분의 서식은 유지되지만, 아주 복잡한 개체나 매크로처럼 한쪽 형식에만 있는 요소는 단순해질 수 있습니다. 중요한 문서라면 변환본을 한글에서 한 번 열어 확인하세요.
전체 텍스트 복사·.txt 저장은 문서에 담긴 글자를 문단 순서대로 뽑아 줍니다. 표는 칸 순서대로 줄을 바꿔 나열되고 그림·도형은 빠집니다. 요약을 만들거나 다른 문서로 옮겨 붙일 때 가장 빠른 길입니다. 현재 쪽 PNG는 보고 있는 한 쪽만 2배 해상도 그림으로 저장합니다. 메신저로 한 장만 보내거나 발표 자료에 붙일 때 편합니다.
본문 글자, 문단 정렬과 들여쓰기, 줄간격, 글자 크기·굵기·색, 표와 칸 테두리, 머리말·꼬리말, 쪽 번호, 각주처럼 문서의 뼈대에 해당하는 서식은 대부분 재현됩니다. 용지 크기와 여백도 원본 값을 그대로 씁니다. 일반적인 공문·보고서·계약서·이력서·안내문이라면 화면에서 본 것과 한글에서 본 것이 사실상 같습니다.
반대로 다음은 다르게 보이거나 빠질 수 있습니다. 수식(한글 고유 수식 개체), 복잡한 그리기 개체(여러 도형을 겹쳐 만든 조직도·차트), 글상자와 본문이 정교하게 얽힌 편집, 워터마크·배경 그림, 양식 개체, 그리고 앞에서 설명한 글꼴 대체에 따른 줄바꿈 차이입니다. 아주 오래된 한글 3.0 형식과 HWPML 형식은 부분적으로만 지원하므로 열리지 않을 수 있는데, 그래도 일단 시도는 해 보고 실패하면 안내를 띄웁니다.
그래서 쓰임새를 이렇게 나누시면 좋습니다. 내용을 읽고, 텍스트를 뽑고, 남에게 보낼 PDF를 만드는 용도에는 충분합니다. 제출 직전의 최종본을 확정하는 용도라면 한글 프로그램이나 한컴 뷰어에서 한 번 더 확인하시길 권합니다. 이 페이지는 문서의 법적·행정적 효력이나 내용의 정확성을 판단하지 않습니다.
네. 이 페이지는 문서를 어디에도 올리지 않습니다. 브라우저 개발자 도구(F12)의 네트워크 탭을 켜고 파일을 열어 보시면, 이 사이트에서 해석기(rhwp.js와 rhwp_bg.wasm)와 필요한 경우 나눔 글꼴 파일을 내려받는 요청만 보입니다. 문서 내용이 담긴 요청은 아예 만들어지지 않습니다. 파일 선택은 브라우저의 파일 읽기 기능만 쓰고, 읽은 바이트는 자바스크립트 변수로만 존재하다가 창을 닫으면 사라집니다.
그래서 공문, 근로계약서, 이력서, 성적증명서, 진단서, 견적서처럼 이름·주민등록번호·연락처·금액이 들어 있는 문서를 변환 사이트에 올리지 않고도 열어 볼 수 있습니다. 암호가 걸린 문서라면 비밀번호를 물어보는데, 그 값도 문서를 푸는 데에만 쓰고 저장하지 않으며 화면을 닫으면 메모리에서 사라집니다.
처음 문서를 열 때만 해석기 약 10MB를 내려받습니다. 이 다운로드는 한 번만 일어나고 이후에는 브라우저 캐시에서 즉시 꺼내 씁니다. 문서가 수백 쪽이면 쪽 계산에 몇 초가 걸릴 수 있고, 스크롤할 때마다 그 쪽을 그리므로 아주 오래된 기기에서는 살짝 끊길 수 있습니다. 파일이 열리지 않고 “지원하지 않는 형식이거나 손상된 파일” 안내가 뜬다면, 확장자만 .hwp인 다른 파일이거나 내려받다 끊긴 파일, 또는 지원 범위 밖의 옛 형식일 가능성이 큽니다. 보낸 사람에게 .hwpx나 PDF로 다시 받아 보시는 것도 방법입니다.
문서 해석·조판·SVG 렌더링은 rhwp(Rust + WebAssembly, MIT 라이선스), PDF 묶기는 pdf-lib(MIT), 대체 글꼴은 나눔고딕·나눔명조(SIL Open Font License 1.1)입니다. 모두 상업적 이용이 허용되며, 원본 파일과 라이선스 전문은 /tools/lib/README.txt가 가리키는 폴더에 그대로 두었습니다.