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 形式で出力
- 完全オープンソース&無料 — 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;
// アプリ起動時に1つ以上のフォントを登録することを推奨
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 をリファレンスレンダラーとして 180 件のクラシックテストケースで比較されています。
| カテゴリ | 件数 | しきい値 |
|---|---|---|
| 🟢 優秀 | 175 | ≥ 90% |
| 🟡 許容範囲 | 16 | 70% – 90% |
| 🔴 要改善 | 0 | < 70% |
総合平均スコア: 96.9%(テキスト類似度 40% + 視覚類似度 40% + ページ数 20%)
全 DOCX テストケースの MiniPdf 出力と MiniExcel / Office 365 リファレンスの比較。複数ページの場合は1ページ目を表示。
このプロジェクトは Apache License 2.0 でライセンスされています。
































































































































































































































































































































































































































































































































































































































































































































































