注釈をフラット化し、PDFファイルにページ番号を追加するElectronアプリケーションです。
- PDFファイルのアップロードと管理: 複数のPDFファイルをセクションとして管理
- ページ番号の自動追加: カスタマイズ可能なフォーマットでページ番号を追加
- セクション間の空白ページ追加: セクション間に空白ページを挿入
- 注釈のフラット化: Ghostscriptを使用してPDFの注釈をフラット化
- レイアウトの強制変換: 縦向き/横向きの強制変換
- リアルタイムプレビュー: 処理結果をリアルタイムでプレビュー
- カスタムフォーマット:
{section}-{page}形式でページ番号をカスタマイズ - 位置調整: 水平・垂直位置を自由に設定
- フォントサイズ: ページ番号のフォントサイズを調整
- 余白設定: ページ番号の余白を調整
- 向きの制御: 自動/縦向き/横向きの選択
- 空白ページ: セクション間の空白ページ追加オプション
- Node.js 18.0.0以上
PDFの注釈をフラット化する機能を使用するには、Ghostscriptをインストールする必要があります。
# Homebrewを使用
brew install ghostscript
# または、MacPortsを使用
sudo port install ghostscript- Ghostscript公式サイトからインストーラーをダウンロード
- インストーラーを実行
- システム環境変数PATHにGhostscriptのbinディレクトリを追加
sudo apt-get update
sudo apt-get install ghostscript# CentOS/RHEL
sudo yum install ghostscript
# Fedora
sudo dnf install ghostscriptpnpm installpnpm devpnpm buildpnpm pack# macOS
pnpm pack:mac
# Windows
pnpm pack:win
# Linux
pnpm pack:linux
# 全プラットフォーム
pnpm pack:all-
PDFファイルをアップロード
- 「ファイルを追加」ボタンをクリック
- 複数のPDFファイルを選択可能
- 各ファイルはセクションとして管理されます
-
設定を調整
- ファイル処理設定
- セクション間に空白ページを追加
- 既存の注釈をフラット化(Ghostscriptが必要)
- レイアウト設定
- 向き: 自動/縦向き/横向き
- ページ番号設定
- フォントサイズ
- フォーマット(例:
{section}-{page}) - 水平・垂直位置
- 余白
- ファイル処理設定
-
変換実行
- 「変換」ボタンをクリック
- 処理の進行状況が表示されます
-
結果の確認とダウンロード
- プレビューで結果を確認
- 処理されたPDFをダウンロード
ページ番号は以下のプレースホルダーを使用してカスタマイズできます:
{section}: セクション番号{page}: ページ番号
例:
{section}-{page}→1-1,1-2,2-1,2-2Section {section} Page {page}→Section 1 Page 1,Section 1 Page 2
- React 19: 最新のReactフレームワーク
- TypeScript: 型安全な開発
- Vite: 高速なビルドツール
- Tailwind CSS: ユーティリティファーストCSS
- Radix UI: アクセシブルなUIコンポーネント
- Lucide React: アイコンライブラリ
- pdf-lib: PDFの作成・編集
- pdfjs-dist: PDFの表示・プレビュー
- react-pdf: PDFビューアーコンポーネント
- Ghostscript: 注釈のフラット化
- Electron: クロスプラットフォームデスクトップアプリケーション
- electron-builder: アプリケーションのパッケージ化
- ESLint: コード品質管理
- pnpm: 高速なパッケージマネージャー
pdf2doc-app/
├── electron/ # Electronメインプロセス
│ ├── main.ts # メインプロセスエントリーポイント
│ ├── preload.ts # プリロードスクリプト
│ └── menu.ts # アプリケーションメニュー
├── src/ # Reactアプリケーション
│ ├── components/ # UIコンポーネント
│ │ ├── ui/ # 基本UIコンポーネント(Radix UI)
│ │ ├── ConfigForm.tsx # 設定フォーム
│ │ ├── FileList.tsx # ファイルリスト
│ │ ├── Preview.tsx # PDFプレビュー
│ │ └── Toolbar.tsx # ツールバー
│ ├── lib/ # ユーティリティ関数
│ │ └── utils.ts # PDF処理・Ghostscript関連
│ ├── types/ # TypeScript型定義
│ │ └── index.ts # アプリケーション型定義
│ ├── App.tsx # メインアプリケーション
│ └── main.tsx # Reactエントリーポイント
├── public/ # 静的ファイル
│ ├── cmaps/ # PDF文字マッピング
│ ├── standard_fonts/ # 標準フォント
│ └── pdf.worker.min.mjs # PDF.jsワーカー
├── electron-builder.json5 # ビルド設定
├── vite.config.ts # Vite設定
└── package.json # プロジェクト設定
- リポジトリをクローン
git clone <repository-url>
cd pdf2doc-app- 依存関係をインストール
pnpm install- 開発サーバーを起動
pnpm dev# リント実行
pnpm lint# 開発用ビルド
pnpm build
# アプリケーションのパッケージ化
pnpm pack- このリポジトリをフォーク
- 機能ブランチを作成 (
git checkout -b feature/amazing-feature) - 変更をコミット (
git commit -m 'Add some amazing feature') - ブランチにプッシュ (
git push origin feature/amazing-feature) - プルリクエストを作成
- TypeScriptの型安全性を保つ
- ESLintルールに従う
- コンポーネントは再利用可能に設計する
- アクセシビリティを考慮する
- Ghostscriptが正しくインストールされているか確認
- システムのPATHにGhostscriptが含まれているか確認
- アプリケーションを再起動
- PDFファイルが破損していないか確認
- ファイルサイズが大きすぎないか確認
- 十分なメモリが利用可能か確認
このプロジェクトはMITライセンスの下で公開されています。
- 初期リリース
- PDFページ番号追加機能
- 注釈フラット化機能
- レイアウト変換機能
- リアルタイムプレビュー機能
