gastongouron/ironpress
Rust0 / 0
브라우저 없이 HTML·Markdown을 PDF로 바꾸는 순수 Rust 엔진입니다.
TL;DR
ironpress는 HTML·CSS·Markdown을 브라우저나 외부 프로세스 없이 PDF 1.4 바이트로 변환하는 순수 Rust 엔진이며 CLI와 C, Python, Ruby, Node.js, WebAssembly 바인딩을 함께 제공합니다. 입력은 HTML 위생화와 html5ever 파싱을 거쳐 스타일 계단식 처리, 레이아웃 계산, PDF 직렬화로 이어지고 Flexbox, Grid, 표, SVG, LaTeX 수식, 헤더·푸터를 지원합니다. Apple M2 기준 단순 HTML 변환 중앙값은 0.93 ms, Markdown은 7.0 ms였으며, 3,200개 이상의 단위 테스트와 1,664개 parity fixture가 품질 검증에 사용됩니다. 배포 단순성과 서버 내 문서 변환이 중요하면 적합하지만, 브라우저의 전체 CSS 호환성이나 자동 원격 리소스 접근이 필요한 경우에는 지원 범위를 먼저 확인해야 합니다.
핵심 포인트
- ironpress는 Chrome이나 subprocess 없이 HTML·CSS·Markdown을 PDF 바이트로 변환하는 순수 Rust 라이브러리이자 CLI 도구입니다.
- Flexbox·Grid·표·다단 레이아웃·헤더·푸터와 SVG·LaTeX 수식·커스텀 폰트까지 문서 중심 기능을 한 엔진에서 처리합니다.
- Rust 코어를 C ABI, Python, Ruby, Node.js, 브라우저 WebAssembly로 제공해 여러 런타임에서 같은 변환 설정을 재사용합니다.
- 기본 HTML 위생화와 제한된 파일·네트워크 정책을 제공하지만 CJK·emoji 폰트는 필요한 선택 패키지를 별도로 로드해야 합니다.
벤치마크
| 벤치마크 | 지표 | 값 | 비교 |
|---|---|---|---|
| Simple HTML | 대표 중앙값 | 0.93 ms | — |
| Simple HTML | 초당 변환 수 | 1,080 | — |
| Styled HTML | 대표 중앙값 | 3.5 ms | — |
| Styled HTML | 초당 변환 수 | 285 | — |
| Table (5 rows, styled headers) | 대표 중앙값 | 5.9 ms | — |
| Table (5 rows, styled headers) | 초당 변환 수 | 170 | — |
| Markdown (headings, code, lists) | 대표 중앙값 | 7.0 ms | — |
| Markdown (headings, code, lists) | 초당 변환 수 | 143 | — |
| Full report (tables, flex, progress bars) | 대표 중앙값 | 15.9 ms | — |
| Full report (tables, flex, progress bars) | 초당 변환 수 | 63 | — |
| 200 CJK text-emphasis spans | 대표 중앙값 | 310 ms | — |
| 200 CJK text-emphasis spans | 초당 변환 수 | 3.2 | — |
681
Stars
58
Forks
+217
Trending
0
조회수
681 watchers4 open issuesMIT License
관련 토론
아직 관련 토론이 없습니다.
댓글
댓글을 작성하려면 로그인이 필요합니다.