Office 파일을 PDF로 변환하는 최소한의 경량 .NET 라이브러리입니다.
👉 온라인 데모 — 설치 없이 브라우저에서 바로 체험하세요.
⚠️ 브라우저에서 사용할 수 있는 글꼴이 제한되어 있어 렌더링 결과가 최적이 아닐 수 있습니다. 최상의 결과를 위해 로컬 환경에서 테스트해 주세요.
- Excel → PDF 변환 —
.xlsx파일을 PDF로 변환 - Word → PDF 변환 —
.docx파일을 PDF로 변환 - 최소 의존성 — 경량 설계, 거의 .NET 내장 API만 사용
- 서버리스 지원 — COM 불필요, Office 설치 불필요, Adobe Acrobat 불필요 — .NET만 있으면 어디서든 실행
- Native AOT — Windows / Linux / macOS용 사전 컴파일된 독립 실행 바이너리, .NET 런타임 설치 불필요
- 유효한 PDF 1.4 형식 출력
- 100% 오픈소스 & 무료 — Apache 2.0 라이선스, 상업적 사용 자유, 출처 표기만 하면 OK. PR 기여 환영!
- 차트 — 현재 충분히 지원되지 않음
참고: MiniPdf는 현재 기본적인 변환만 처리할 수 있습니다. 복잡하거나 고도로 맞춤 설정된 Office 문서는 완벽하게 변환되지 않을 수 있습니다. 호환성 문제가 발생하면 Issue를 등록하거나 Pull Request를 제출해 주세요. 기여를 환영합니다!
Apache POI+LibreOffice로 소형 참조 모델 훈련- AI 개발에
GitHub Copilot+Claude Code사용
dotnet add package MiniPdfusing MiniSoftware;
// Excel을 PDF로
MiniPdf.ConvertToPdf("data.xlsx", "output.pdf");
// Word를 PDF로
MiniPdf.ConvertToPdf("report.docx", "output.pdf");
// 파일에서 바이트 배열로
byte[] pdfBytes = MiniPdf.ConvertToPdf("data.xlsx");
// 스트림에서 바이트 배열로
using var stream = File.OpenRead("data.xlsx");
byte[] pdfBytes = MiniPdf.ConvertToPdf(stream);시스템 글꼴이 제한된 환경(예: 컨테이너, Blazor WASM)에서는 변환 전에 글꼴을 등록하세요.
using MiniSoftware;
// 앱 시작 시 하나 이상의 글꼴 등록을 권장
MiniPdf.RegisterFont("NotoSansSC", File.ReadAllBytes("Fonts/NotoSansSC-Regular.ttf"));
MiniPdf.RegisterFont("NotoColorEmoji", File.ReadAllBytes("Fonts/NotoColorEmoji.ttf"));
MiniPdf.ConvertToPdf("report.docx", "report.pdf");참고:
- 입력 바이트는 TrueType
.ttf및 TrueType Collection.ttc를 지원합니다. - 중복 등록을 피하려면 시작 시 한 번만 등록하는 것을 권장합니다.
- 등록된 글꼴은 시스템 글꼴보다 우선 적용됩니다.
MiniPdf는 커맨드라인 도구 MiniPdf.Cli도 제공합니다. 코드 작성 없이 빠르게 파일을 변환할 수 있습니다.
dotnet tool install --global MiniPdf.Cli# Excel을 PDF로 변환 (출력: data.pdf)
minipdf data.xlsx
# Word를 PDF로 변환
minipdf report.docx
# 출력 경로 지정
minipdf report.docx -o /path/to/output.pdf
# 사용자 정의 글꼴 등록 (컨테이너/헤드리스 환경용)
minipdf report.docx --fonts ./Fonts| 명령어 | 설명 |
|---|---|
minipdf <file> |
.xlsx / .docx를 PDF로 변환 |
minipdf convert <file> -o <out> |
출력 경로를 지정하여 변환 |
minipdf --version |
버전 표시 |
minipdf --help |
도움말 표시 |
MiniPdf.Cli는 Native AOT(Ahead-of-Time, 사전 컴파일)를 지원합니다 — 빌드 시 C# 코드를 C/C++처럼 네이티브 머신 코드로 직접 컴파일하여 독립 실행 파일을 생성합니다. 실행 시 .NET 런타임이나 JIT 컴파일러가 필요하지 않습니다.
장점:
- 의존성 제로 — 대상 머신에 .NET SDK 또는 런타임 설치 불필요
- 즉시 시작 — 네이티브 머신 코드, JIT 워밍업 없음
- 경량 — 단일 파일 바이너리, 배포 및 전달 용이
- CI/CD 친화적 — 다운로드 후 바로 실행, 파이프라인에 .NET 설치 불필요
다운로드: GitHub Releases 페이지에서 플랫폼에 맞는 바이너리를 다운로드하세요.
| 플랫폼 | 파일 |
|---|---|
| Windows x64 | minipdf-win-x64.zip |
| Windows ARM64 | minipdf-win-arm64.zip |
| Linux x64 | minipdf-linux-x64.tar.gz |
| Linux ARM64 | minipdf-linux-arm64.tar.gz |
| macOS x64 | minipdf-osx-x64.tar.gz |
| macOS ARM64 (Apple Silicon) | minipdf-osx-arm64.tar.gz |
사용 방법 (Linux / macOS 예시):
# 다운로드 및 압축 해제
tar -xzf minipdf-linux-x64.tar.gz
# 변환
./minipdf report.docx -o report.pdf사용 방법 (Windows 예시):
# zip 압축 해제 후 실행
.\minipdf.exe report.docx -o report.pdfMiniPdf 출력은 MiniExcel 및 Office 365를 참조 렌더러로 사용하여 373개 테스트 케이스에서 비교됩니다.
| 리포트 | 케이스 수 | 🟢 우수 (≥90%) | 🟡 허용 (70%–90%) | 🔴 개선 필요 (<70%) | 평균 점수 |
|---|---|---|---|---|---|
| XLSX → PDF | 191 | 175 | 16 | 0 | 96.9% |
| DOCX → PDF | 180 | 178 | 2 | 0 | 97.6% |
| Issue XLSX 파일 | 2 | 1 | 1 | 0 | 83.8% |
| 합계 | 373 | 354 | 19 | 0 | 97.2% |
점수 산정: 텍스트 유사도 40% + 시각 유사도 40% + 페이지 수 20%
- XLSX 벤치마크 보고서 — XLSX 변환 테스트 케이스
- DOCX 벤치마크 보고서 — DOCX 변환 테스트 케이스
- Issue XLSX 파일 보고서 — 실제 Issue 파일 테스트 케이스
- Issue DOCX 파일 보고서 — 실제 Issue 파일 테스트 케이스
모든 테스트 케이스에서 MiniPdf 출력과 MiniExcel / Office 365 참조를 비교합니다. 여러 페이지인 경우 1페이지만 표시합니다.
MiniPdf DOCX 출력은 MiniExcel 및 Office 365를 참조 렌더러로 사용하여 60개 클래식 테스트 케이스에서 비교됩니다.
| 카테고리 | 수량 | 임계값 |
|---|---|---|
| 🟢 우수 | 175 | ≥ 90% |
| 🟡 허용 | 16 | 70% – 90% |
| 🔴 개선 필요 | 0 | < 70% |
전체 평균 점수: 96.9% (텍스트 유사도 40% + 시각 유사도 40% + 페이지 수 20%)
모든 DOCX 테스트 케이스에서 MiniPdf 출력과 MiniExcel / Office 365 참조를 비교합니다. 여러 페이지인 경우 1페이지만 표시합니다.
이 프로젝트는 Apache License 2.0에 따라 라이선스가 부여됩니다.
































































































































































































































































































































































































































































































































































































































































































































































