高速でシンプルなブラウザベースのPDF圧縮・結合ツール。サーバーへのアップロード不要で、すべての処理がブラウザ内で完結します。
- 🚀 完全にブラウザ内で動作 - ファイルのアップロード不要、プライバシー保護
- 🎯 高速処理 - WebWorkerを活用した高速な圧縮処理
- 📄 複数PDF対応 - 複数のPDFファイルを一つに結合
- 🎨 品質調整 - JPEG品質を調整して最適なファイルサイズを実現
- 🔄 ドラッグ&ドロップ - 直感的なファイル操作
- 📱 レスポンシブデザイン - スマートフォンからデスクトップまで対応
- フレームワーク: Vue 3 (Composition API) + TypeScript
- ビルドツール: Vite
- スタイリング: Tailwind CSS
- PDFライブラリ: pdf.js (読み込み), pdf-lib (作成・編集)
- 画像処理: pica (高品質リサイズ)
- テスト: Vitest (単体テスト), Playwright (E2Eテスト)
- https://pdf-compressor.yk.works/ にアクセス
- PDFファイルをドラッグ&ドロップ、またはクリックして選択
- 圧縮品質を調整(0.1〜1.0)
- 「圧縮」ボタンをクリック
- 圧縮されたPDFをダウンロード
- Node.js 22.13.x
- pnpm (パッケージマネージャー)
VSCode + Volar (and disable Vetur).
TypeScript cannot handle type information for .vue imports by default, so we replace the tsc CLI with vue-tsc for type checking. In editors, we need Volar to make the TypeScript language service aware of .vue types.
See Vite Configuration Reference.
pnpm installpnpm devpnpm buildRun Unit Tests with Vitest
pnpm test:unitRun End-to-End Tests with Playwright
# Install browsers for the first run
npx playwright install
# When testing on CI, must build the project first
pnpm build
# Runs the end-to-end tests
pnpm test:e2e
# Runs the tests only on Chromium
pnpm test:e2e --project=chromium
# Runs the tests of a specific file
pnpm test:e2e tests/example.spec.ts
# Runs the tests in debug mode
pnpm test:e2e --debugLint with ESLint
pnpm lintpnpm formatpnpm type-checksrc/
├── components/
│ ├── MainArea.vue # メインUIコンポーネント
│ └── FileList.vue # ファイルリスト管理
├── utils/
│ └── pdf.ts # PDF処理ロジック
│ ├── mergePdfFiles() # PDF結合
│ ├── renderPdfToCanvases() # PDF→Canvas変換
│ └── createCompressedPdfFromImages() # 圧縮処理
└── assets/ # 静的アセット
MIT License
プルリクエストを歓迎します。大きな変更の場合は、まずissueを開いて変更内容について議論してください。
このアプリケーションはすべての処理をブラウザ内で行うため、ファイルがサーバーに送信されることはありません。PDFファイルのプライバシーは完全に保護されます。