mirror of
https://github.com/alam00000/bentopdf.git
synced 2026-11-12 01:33:36 +01:00
feat: translate all pages, UI messages and docs and fix SEO redirects and indexing
This commit is contained in:
1 parent
5e019de5ae
commit
4edb1718cc
3344 files changed
+415643
-4759
No files matched your search
@@ -0,0 +1,136 @@
|
||||
# コントリビュート
|
||||
|
||||
BentoPDFへのコントリビュートにご関心をお寄せいただきありがとうございます。このガイドで始め方を説明します。
|
||||
|
||||
## はじめに
|
||||
|
||||
### 前提条件
|
||||
|
||||
- Node.js 18+
|
||||
- npm 9+
|
||||
- Git
|
||||
|
||||
### セットアップ
|
||||
|
||||
```bash
|
||||
# Fork and clone the repository
|
||||
git clone https://github.com/YOUR_USERNAME/bentopdf.git
|
||||
cd bentopdf
|
||||
|
||||
# Install dependencies
|
||||
npm install
|
||||
|
||||
# Start development server
|
||||
npm run dev
|
||||
```
|
||||
|
||||
## プロジェクト構成
|
||||
|
||||
```
|
||||
bentopdf/
|
||||
├── src/
|
||||
│ ├── js/
|
||||
│ │ ├── config/ # Tool definitions
|
||||
│ │ ├── logic/ # Tool page logic
|
||||
│ │ ├── utils/ # Shared utilities
|
||||
│ │ └── ui.ts # UI helpers
|
||||
│ ├── pages/ # Tool HTML pages
|
||||
│ └── css/ # Styles
|
||||
├── public/
|
||||
│ ├── locales/ # Translations
|
||||
│ └── pymupdf-wasm/ # WASM modules
|
||||
├── docs/ # Documentation (VitePress)
|
||||
└── scripts/ # Build scripts
|
||||
```
|
||||
|
||||
## 新しいツールの追加
|
||||
|
||||
### ステップ1:ロジックファイルを作成する
|
||||
|
||||
`src/js/logic/your-tool-page.ts` を作成します。
|
||||
|
||||
```typescript
|
||||
import { showLoader, hideLoader, showAlert } from '../ui.js';
|
||||
import { state } from '../state.js';
|
||||
|
||||
document.addEventListener('DOMContentLoaded', () => {
|
||||
// Your tool logic here
|
||||
});
|
||||
```
|
||||
|
||||
### ステップ2:HTMLページを作成する
|
||||
|
||||
既存のツールテンプレートに倣って `src/pages/your-tool.html` を作成します。
|
||||
|
||||
### ステップ3:ツールを登録する
|
||||
|
||||
`src/js/config/tools.ts` に次を追加します。
|
||||
|
||||
```typescript
|
||||
{
|
||||
href: import.meta.env.BASE_URL + 'your-tool.html',
|
||||
name: 'Your Tool',
|
||||
icon: 'ph-icon-name',
|
||||
subtitle: 'Description of your tool.',
|
||||
}
|
||||
```
|
||||
|
||||
### ステップ4:ビルド設定に追加する
|
||||
|
||||
`vite.config.ts` にページを追加します。
|
||||
|
||||
```typescript
|
||||
'your-tool': resolve(__dirname, 'src/pages/your-tool.html'),
|
||||
```
|
||||
|
||||
### ステップ5:翻訳を追加する
|
||||
|
||||
`public/locales/` 内のすべてのロケールファイルにエントリを追加します。
|
||||
|
||||
```json
|
||||
{
|
||||
"yourTool": {
|
||||
"name": "Your Tool",
|
||||
"subtitle": "Description"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## コードスタイル
|
||||
|
||||
- 新しいコードにはすべてTypeScriptを使用する
|
||||
- 一貫性のため既存のパターンに従う
|
||||
- コミット前に `npm run format` を実行する
|
||||
- 本番コードにコメントは書かない(コメントはビルド時に削除されます)
|
||||
|
||||
## プルリクエストの手順
|
||||
|
||||
1. 機能ブランチを作成します:`git checkout -b feature/your-feature`
|
||||
2. 変更を加えます
|
||||
3. 十分にテストします:`npm run build`
|
||||
4. 内容が明確にわかる説明を添えてPRを送信します
|
||||
|
||||
## 翻訳
|
||||
|
||||
新しい言語の追加については [TRANSLATION.md](https://github.com/alam00000/bentopdf/blob/main/TRANSLATION.md) を参照してください。
|
||||
|
||||
## コントリビューターライセンス契約
|
||||
|
||||
PRをマージする前に、CLAへの署名が必要です。
|
||||
|
||||
- [個人向けCLA(ICLA)](https://github.com/alam00000/bentopdf/blob/main/ICLA.md)
|
||||
- [法人向けCLA(CCLA)](https://github.com/alam00000/bentopdf/blob/main/CCLA.md)
|
||||
|
||||
## ヘルプ
|
||||
|
||||
- [GitHub Issues](https://github.com/alam00000/bentopdf/issues)
|
||||
- [Discordコミュニティ](https://discord.gg/Bgq3Ay3f2w)
|
||||
|
||||
## ライセンス
|
||||
|
||||
BentoPDFはデュアルライセンスです。
|
||||
|
||||
- **AGPL-3.0**:ソースコード全体を公開するオープンソースプロジェクト向け
|
||||
- **商用ライセンス**:プロプライエタリ/クローズドソースのアプリケーション向け - [$79で永久ライセンスを購入](https://buy.polar.sh/polar_cl_ThDfffbl733x7oAodcIryCzhlO57ZtcWPq6HJ1qMChd)
|
||||
|
||||
コントリビュートすることで、あなたの貢献がこれらの条件でライセンスされることに同意したものとみなされます。
|
||||
@@ -0,0 +1,80 @@
|
||||
# はじめに
|
||||
|
||||
BentoPDFへようこそ。このガイドですぐに使い始められます。
|
||||
|
||||
## BentoPDFとは?
|
||||
|
||||
BentoPDFは、無料でオープンソースの、プライバシーを第一に考えたPDFツールキットで、**すべてブラウザ内で**動作します。ファイルがデバイスの外に出ることはなく、処理はすべてWebAssembly(WASM)技術を使ってローカルで行われます。
|
||||
|
||||
## クイックスタート
|
||||
|
||||
### オプション1:ホスト版を使う
|
||||
|
||||
[bentopdf.com](https://www.bentopdf.com) にアクセスすればすぐに使えます。インストールは不要です。
|
||||
|
||||
### オプション2:Dockerでセルフホストする
|
||||
|
||||
> [!IMPORTANT]
|
||||
> Officeファイルの変換には `SharedArrayBuffer` が必要で、次の両方が求められます。
|
||||
>
|
||||
> - `Cross-Origin-Opener-Policy: same-origin`
|
||||
> - `Cross-Origin-Embedder-Policy: require-corp`
|
||||
> - セキュアコンテキスト
|
||||
>
|
||||
> ブラウザはループバックを信頼できるものとして扱うため、ローカルでのテストでは `http://localhost` が使えます。`http://192.168.x.x` などのLAN IPは通常これに該当しないため、ネットワーク内の他のデバイスからアクセスする場合、Word/Excel/PowerPointの変換にはHTTPSが必要になります。
|
||||
|
||||
```bash
|
||||
# Pull and run the Docker image (self-hosted build)
|
||||
docker run -d -p 3000:8080 ghcr.io/alam00000/bentopdf-simple:latest
|
||||
|
||||
# Or use Docker Compose
|
||||
curl -O https://raw.githubusercontent.com/alam00000/bentopdf/main/docker-compose.yml
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
> [!TIP]
|
||||
> BentoPDFには2つのビルドがあります。社内・チーム・組織向けのデプロイ用の**セルフホスト版ビルド**(`bentopdf-simple`、上で使用)と、bentopdf.com自体や、公開向けにデプロイする商用ライセンス保持者が使う**商用版ビルド**(`bentopdf:latest`)です。どちらも同じPDFツールを備えており、商用版ビルドにはbentopdf.comのヒーロー、FAQ、お客様の声、フッターが加わります。迷ったらセルフホスト版ビルドを使ってください。
|
||||
|
||||
その後、ブラウザで `http://localhost:3000` を開きます。
|
||||
|
||||
> [!NOTE]
|
||||
> エアギャップ環境でOCRをデプロイする場合は、Tesseractのワーカー、コアランタイム、traineddataファイルに加えて、OCRテキストレイヤー用フォントも社内でホストする必要があります。`VITE_OCR_FONT_BASE_URL` や同梱の `ocr-fonts/` ディレクトリを含む完全な手順は[セルフホスティング](/ja/self-hosting/)に記載されています。
|
||||
|
||||
### オプション3:ソースからビルドする
|
||||
|
||||
```bash
|
||||
# Clone the repository
|
||||
git clone https://github.com/alam00000/bentopdf.git
|
||||
cd bentopdf
|
||||
|
||||
# Install dependencies
|
||||
npm install
|
||||
|
||||
# Start development server
|
||||
npm run dev
|
||||
```
|
||||
|
||||
## 機能一覧
|
||||
|
||||
| カテゴリ | ツール |
|
||||
| ---------------- | ------------------------------------------------------- |
|
||||
| **PDFに変換** | Word、Excel、PowerPoint、画像、Markdown、EPUB、MOBIなど |
|
||||
| **PDFから変換** | JPG、PNG、テキスト、Excel、SVGなど |
|
||||
| **編集と注釈** | 署名、ハイライト、墨消し、フォーム入力、スタンプ追加 |
|
||||
| **整理** | 結合、分割、回転、ページ削除、並べ替え |
|
||||
| **最適化** | 圧縮、修復、フラット化、OCR |
|
||||
| **セキュリティ** | 暗号化、復号、制限の解除 |
|
||||
|
||||
## 対応ブラウザ
|
||||
|
||||
BentoPDFは最新のブラウザで最適に動作します。
|
||||
|
||||
- ✅ Chrome/Edge 90+
|
||||
- ✅ Firefox 90+
|
||||
- ✅ Safari 15+
|
||||
|
||||
## 次のステップ
|
||||
|
||||
- [すべてのツールを見る](/ja/tools/)
|
||||
- [BentoPDFをセルフホストする](/ja/self-hosting/)
|
||||
- [プロジェクトにコントリビュートする](/ja/contributing)
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
# https://vitepress.dev/reference/default-theme-home-page
|
||||
layout: home
|
||||
|
||||
hero:
|
||||
name: 'BentoPDF'
|
||||
text: '無料のオープンソースPDFツール'
|
||||
tagline: PDFの処理はすべてブラウザ内で。アップロードなし。サーバーなし。完全なプライバシー。
|
||||
actions:
|
||||
- theme: brand
|
||||
text: はじめに
|
||||
link: /ja/getting-started
|
||||
- theme: alt
|
||||
text: ツールを見る
|
||||
link: /ja/tools/
|
||||
- theme: alt
|
||||
text: セルフホスト
|
||||
link: /ja/self-hosting/
|
||||
- theme: alt
|
||||
text: 商用ライセンス
|
||||
link: /ja/licensing
|
||||
|
||||
features:
|
||||
- icon: 🔒
|
||||
title: 100%プライベート
|
||||
details: ファイルがデバイスの外に出ることはありません。処理はすべてWebAssemblyを使ってブラウザ内でローカルに行われます。
|
||||
- icon: ⚡
|
||||
title: 高速で無料
|
||||
details: 登録不要、制限なし、透かしなし。無制限のPDF処理をずっと無料で。
|
||||
- icon: 🛠️
|
||||
title: 50以上のツール
|
||||
details: 変換、編集、結合、分割、圧縮、署名、OCRなど。必要なものがすべて1か所に。
|
||||
|
||||
- icon: 🌐
|
||||
title: セルフホスト可能
|
||||
details: 自社のインフラにデプロイできます。Docker、Vercel、Netlify、AWS、さらにセルフホストのOCRワーカー、言語データ、テキストレイヤー用フォントを備えた完全エアギャップ環境にも対応。
|
||||
---
|
||||
|
||||
## オフラインOCR
|
||||
|
||||
エアギャップ環境やオフライン環境にBentoPDFをセルフホストする場合、OCRにはTesseractのワーカーとtraineddataファイルだけでなく、検索可能なPDFの出力に必要なOCRテキストレイヤー用フォントも社内で配信する必要があります。
|
||||
`VITE_OCR_FONT_BASE_URL`、同梱の `ocr-fonts/` ディレクトリ、更新されたエアギャップ向けワークフローを含む完全な手順は[セルフホスティング](/ja/self-hosting/)を参照してください。
|
||||
@@ -0,0 +1,92 @@
|
||||
# Commercial License
|
||||
|
||||
BentoPDF is dual-licensed under **AGPL-3.0** (for open-source projects) and a **Commercial License** (for proprietary/closed-source applications).
|
||||
|
||||
::: tip Full Details
|
||||
For complete licensing information, delivery details, AGPL component notices, and invoicing, visit our [Licensing Page](https://www.bentopdf.com/licensing).
|
||||
:::
|
||||
|
||||
## Get a Commercial License
|
||||
|
||||
**[Get Lifetime License for $79](https://buy.polar.sh/polar_cl_ThDfffbl733x7oAodcIryCzhlO57ZtcWPq6HJ1qMChd)**. A one-time purchase that includes all future updates forever.
|
||||
|
||||
## When Do You Need a Commercial License?
|
||||
|
||||
| Use Case | License Required |
|
||||
| ------------------------------------------- | ---------------------- |
|
||||
| Open-source project with public source code | AGPL-3.0 (Free) |
|
||||
| Internal company tool (not distributed) | AGPL-3.0 (Free) |
|
||||
| Proprietary/closed-source application | **Commercial License** |
|
||||
| SaaS product without source code disclosure | **Commercial License** |
|
||||
| Redistributing without AGPL compliance | **Commercial License** |
|
||||
|
||||
## Delivery & Licensing Model
|
||||
|
||||
- **No license key is required or provided.** BentoPDF intentionally does not use license keys to streamline deployment and reduce operational friction for users.
|
||||
- Upon purchase, users receive a ZIP archive containing the complete BentoPDF source code and binaries.
|
||||
- The source code provided is identical to the code published in our public open-source repository.
|
||||
|
||||
**GitHub Repository:** [github.com/alam00000/bentopdf](https://github.com/alam00000/bentopdf)
|
||||
|
||||
## Important Notice on Third-Party Components
|
||||
|
||||
::: info AGPL Components — Pre-configured via CDN
|
||||
BentoPDF **does not bundle** AGPL-licensed processing libraries in its source code. These components are loaded at runtime from CDN URLs that are **pre-configured by default** — all features work out of the box with zero setup.
|
||||
|
||||
| Component | License | Status |
|
||||
| --------------- | -------- | ---------------------- |
|
||||
| **PyMuPDF** | AGPL-3.0 | Pre-configured via CDN |
|
||||
| **Ghostscript** | AGPL-3.0 | Pre-configured via CDN |
|
||||
| **CoherentPDF** | AGPL-3.0 | Pre-configured via CDN |
|
||||
|
||||
WASM module URLs are configured via environment variables at build time (`.env.production`). The defaults point to jsDelivr CDN. For custom deployments (air-gapped, self-hosted), you can override via environment variables, Docker build args, or per-user via **Advanced Settings** in the UI.
|
||||
|
||||
See [Self-Hosting > WASM Configuration](/ja/self-hosting/#wasm-の設定-agpl-コンポーネント) for details.
|
||||
|
||||
This approach ensures:
|
||||
|
||||
- BentoPDF's core code remains under its dual-license (AGPL-3.0 / Commercial)
|
||||
- WASM binaries are loaded at runtime, not included in the source
|
||||
- Clear compliance boundaries for commercial users
|
||||
:::
|
||||
|
||||
::: tip Commercial License & AGPL Features
|
||||
The commercial license covers BentoPDF's own code. If you configure and use AGPL components (PyMuPDF, Ghostscript, CoherentPDF), you must still comply with their respective AGPL-3.0 license terms, which may require source code disclosure if you distribute modified versions.
|
||||
:::
|
||||
|
||||
## Invoicing
|
||||
|
||||
- Payments are handled by [Polar](https://polar.sh), which automatically emails an invoice after purchase.
|
||||
- Polar handles VAT invoices for businesses in applicable regions. Select **"I'm purchasing as a business"** at checkout and enter your billing address and Tax/VAT number.
|
||||
|
||||
**Questions?** Contact [contact@bentopdf.com](mailto:contact@bentopdf.com) with your purchase details.
|
||||
|
||||
## What's Included
|
||||
|
||||
| Feature | Included |
|
||||
| ----------------------------- | -------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
|
||||
## FAQ
|
||||
|
||||
### Do I need a license key to use BentoPDF?
|
||||
|
||||
No. BentoPDF does not use license keys. The commercial license grants you legal rights to use the software in proprietary applications.
|
||||
|
||||
### Can I use BentoPDF in my SaaS product?
|
||||
|
||||
Yes, with a commercial license. Without it, you must comply with AGPL-3.0, which requires you to make your full source code available to users.
|
||||
|
||||
### What about the AGPL components?
|
||||
|
||||
Components like CoherentPDF are licensed under AGPL v3 and remain under that license. The commercial license covers BentoPDF's own code but does not override third-party AGPL obligations.
|
||||
|
||||
### How do I get an invoice?
|
||||
|
||||
Polar emails your invoice automatically after purchase. For a VAT invoice, select "I'm purchasing as a business" at checkout. If you need anything else, email [contact@bentopdf.com](mailto:contact@bentopdf.com) with your purchase details.
|
||||
@@ -0,0 +1,275 @@
|
||||
# Apacheでデプロイする
|
||||
|
||||
Apache HTTP Serverを使ってBentoPDFをホストします。
|
||||
|
||||
## 前提条件
|
||||
|
||||
- Apache 2.4+
|
||||
- mod_rewriteが有効
|
||||
- SSL証明書(推奨)
|
||||
|
||||
## ステップ1:プロジェクトをビルドする
|
||||
|
||||
```bash
|
||||
git clone https://github.com/alam00000/bentopdf.git
|
||||
cd bentopdf
|
||||
npm install
|
||||
npm run build
|
||||
```
|
||||
|
||||
ブランディングをカスタマイズするには、ビルド前に環境変数を設定します。
|
||||
|
||||
```bash
|
||||
VITE_BRAND_NAME="AcmePDF" VITE_BRAND_LOGO="images/acme-logo.svg" npm run build
|
||||
```
|
||||
|
||||
## ステップ2:ファイルをコピーする
|
||||
|
||||
```bash
|
||||
sudo mkdir -p /var/www/bentopdf
|
||||
sudo cp -r dist/* /var/www/bentopdf/
|
||||
sudo chown -R www-data:www-data /var/www/bentopdf
|
||||
```
|
||||
|
||||
## ステップ3:Apacheの設定
|
||||
|
||||
`/etc/apache2/sites-available/bentopdf.conf` を作成します。
|
||||
|
||||
```apache
|
||||
<VirtualHost *:80>
|
||||
ServerName your-domain.com
|
||||
Redirect permanent / https://your-domain.com/
|
||||
</VirtualHost>
|
||||
|
||||
<VirtualHost *:443>
|
||||
ServerName your-domain.com
|
||||
DocumentRoot /var/www/bentopdf
|
||||
|
||||
SSLEngine on
|
||||
SSLCertificateFile /etc/letsencrypt/live/your-domain.com/fullchain.pem
|
||||
SSLCertificateKeyFile /etc/letsencrypt/live/your-domain.com/privkey.pem
|
||||
|
||||
<Directory /var/www/bentopdf>
|
||||
Options -Indexes +FollowSymLinks
|
||||
AllowOverride All
|
||||
Require all granted
|
||||
</Directory>
|
||||
|
||||
# WASM MIME type
|
||||
AddType application/wasm .wasm
|
||||
|
||||
# Prevent double-compression of pre-compressed files
|
||||
SetEnvIfNoCase Request_URI "\.gz$" no-gzip
|
||||
|
||||
# Compression
|
||||
<IfModule mod_deflate.c>
|
||||
AddOutputFilterByType DEFLATE text/html text/plain text/css application/javascript application/json application/wasm
|
||||
</IfModule>
|
||||
|
||||
# Cache headers
|
||||
<IfModule mod_expires.c>
|
||||
ExpiresActive On
|
||||
ExpiresByType application/javascript "access plus 1 year"
|
||||
ExpiresByType text/css "access plus 1 year"
|
||||
ExpiresByType application/wasm "access plus 1 year"
|
||||
ExpiresByType image/png "access plus 1 year"
|
||||
ExpiresByType image/svg+xml "access plus 1 year"
|
||||
</IfModule>
|
||||
|
||||
# Required headers for SharedArrayBuffer (LibreOffice WASM)
|
||||
Header always set Cross-Origin-Embedder-Policy "require-corp"
|
||||
Header always set Cross-Origin-Opener-Policy "same-origin"
|
||||
Header always set Cross-Origin-Resource-Policy "cross-origin"
|
||||
|
||||
# Security headers
|
||||
Header always set X-Frame-Options "SAMEORIGIN"
|
||||
Header always set X-Content-Type-Options "nosniff"
|
||||
|
||||
# Pre-compressed LibreOffice WASM files
|
||||
<FilesMatch "soffice\.wasm\.gz$">
|
||||
ForceType application/wasm
|
||||
Header set Content-Encoding "gzip"
|
||||
</FilesMatch>
|
||||
<FilesMatch "soffice\.data\.gz$">
|
||||
ForceType application/octet-stream
|
||||
Header set Content-Encoding "gzip"
|
||||
</FilesMatch>
|
||||
</VirtualHost>
|
||||
```
|
||||
|
||||
## ステップ4:ルーティング用の.htaccess
|
||||
|
||||
`/var/www/bentopdf/.htaccess` を作成します。
|
||||
|
||||
```apache
|
||||
RewriteEngine On
|
||||
RewriteBase /
|
||||
|
||||
# Existing files/dirs - serve directly
|
||||
RewriteCond %{REQUEST_FILENAME} -f [OR]
|
||||
RewriteCond %{REQUEST_FILENAME} -d
|
||||
RewriteRule ^ - [L]
|
||||
|
||||
# ============================================
|
||||
# LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root
|
||||
RewriteRule ^en/?$ / [R=301,L]
|
||||
RewriteRule ^en/(.+)$ /$1 [R=301,L]
|
||||
|
||||
# Language prefix root (e.g., /de/ -> /de/index.html)
|
||||
RewriteCond %{DOCUMENT_ROOT}/$1/index.html -f
|
||||
RewriteRule ^(de|es|zh|zh-TW|vi|it|id|tr|fr|pt)/?$ /$1/index.html [L]
|
||||
|
||||
# Language prefix with path (e.g., /de/merge-pdf -> /de/merge-pdf.html)
|
||||
RewriteCond %{DOCUMENT_ROOT}/$1/$2.html -f
|
||||
RewriteRule ^(de|es|zh|zh-TW|vi|it|id|tr|fr|pt)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# ADD .HTML EXTENSION (ROOT LEVEL)
|
||||
# ============================================
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
RewriteRule ^([^/]+)$ $1.html [L]
|
||||
|
||||
ErrorDocument 404 /404.html
|
||||
```
|
||||
|
||||
## ステップ5:必要なモジュールを有効にする
|
||||
|
||||
```bash
|
||||
sudo a2enmod rewrite
|
||||
sudo a2enmod ssl
|
||||
sudo a2enmod headers
|
||||
sudo a2enmod expires
|
||||
sudo a2enmod deflate
|
||||
```
|
||||
|
||||
## ステップ6:サイトを有効にする
|
||||
|
||||
```bash
|
||||
sudo a2ensite bentopdf.conf
|
||||
sudo apache2ctl configtest
|
||||
sudo systemctl reload apache2
|
||||
```
|
||||
|
||||
## サブディレクトリへのデプロイ
|
||||
|
||||
`/pdf/` でホストするには:
|
||||
|
||||
1. ベースURLを指定してビルドします。
|
||||
|
||||
```bash
|
||||
BASE_URL=/pdf/ npm run build
|
||||
```
|
||||
|
||||
2. `.htaccess` を更新します。
|
||||
|
||||
```apache
|
||||
RewriteEngine On
|
||||
RewriteBase /pdf/
|
||||
|
||||
# Existing files/dirs - serve directly
|
||||
RewriteCond %{REQUEST_FILENAME} -f [OR]
|
||||
RewriteCond %{REQUEST_FILENAME} -d
|
||||
RewriteRule ^ - [L]
|
||||
|
||||
# Language routes
|
||||
RewriteRule ^en/?$ /pdf/ [R=301,L]
|
||||
RewriteRule ^en/(.+)$ /pdf/$1 [R=301,L]
|
||||
|
||||
RewriteCond %{DOCUMENT_ROOT}/pdf/$1/index.html -f
|
||||
RewriteRule ^(de|es|zh|zh-TW|vi|it|id|tr|fr|pt)/?$ /pdf/$1/index.html [L]
|
||||
|
||||
RewriteCond %{DOCUMENT_ROOT}/pdf/$1/$2.html -f
|
||||
RewriteRule ^(de|es|zh|zh-TW|vi|it|id|tr|fr|pt)/([^/]+)/?$ /pdf/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
RewriteRule ^([^/]+)$ $1.html [L]
|
||||
|
||||
ErrorDocument 404 /pdf/404.html
|
||||
```
|
||||
|
||||
## トラブルシューティング
|
||||
|
||||
### WASMの404エラー
|
||||
|
||||
MIMEタイプが設定されていることを確認してください。
|
||||
|
||||
```apache
|
||||
AddType application/wasm .wasm
|
||||
```
|
||||
|
||||
### PDFへ署名またはフォーム入力で空白のビューアが表示される(`.mjs` のMIMEエラー)
|
||||
|
||||
ブラウザのコンソールに次のように表示される場合:
|
||||
|
||||
```
|
||||
Failed to load module script: The server responded with a non-JavaScript
|
||||
MIME type of "application/octet-stream". Strict MIME type checking is
|
||||
enforced for module scripts per HTML spec.
|
||||
```
|
||||
|
||||
…かつ失敗しているリクエストが `.mjs` で終わる場合、Apacheの設定に `.mjs → application/javascript` の対応付けがありません。同梱のPDFビューアは拡張子 `.mjs` のESモジュールファイルを配布していますが、Apache標準の `mime.types` にはデフォルトで含まれていません。
|
||||
|
||||
VirtualHostまたは `.htaccess` に追加します。
|
||||
|
||||
```apache
|
||||
AddType application/javascript .mjs
|
||||
```
|
||||
|
||||
続いてApacheをリロードします。
|
||||
|
||||
```bash
|
||||
sudo apache2ctl configtest && sudo systemctl reload apache2
|
||||
```
|
||||
|
||||
確認するには、ブラウザのDevToolsの「Network」タブで失敗している `.mjs` のリクエストを探し、レスポンスヘッダー `Content-Type` を確認します。`application/octet-stream` ではなく `application/javascript` になっているはずです。
|
||||
|
||||
### リライトが動作しない
|
||||
|
||||
mod_rewriteが有効になっているか確認してください。
|
||||
|
||||
```bash
|
||||
sudo a2enmod rewrite
|
||||
```
|
||||
|
||||
### Word/ODT/ExcelからPDFへの変換が動作しない
|
||||
|
||||
LibreOffice WASMには `SharedArrayBuffer` が必要で、次のヘッダーが求められます。
|
||||
|
||||
```apache
|
||||
Header always set Cross-Origin-Embedder-Policy "require-corp"
|
||||
Header always set Cross-Origin-Opener-Policy "same-origin"
|
||||
```
|
||||
|
||||
セキュアコンテキストも必要です。ローカルでのテストでは `http://localhost` が使えますが、`http://192.168.x.x` などのLAN IPでは通常HTTPSが必要です。ヘッダーが設定されているのに `window.crossOriginIsolated` が `false` のままの場合は、ループバック以外のオリジンでページがプレーンなHTTPで開かれていないか確認してください。
|
||||
|
||||
事前圧縮された `.wasm.gz` と `.data.gz` ファイルにも、正しい `Content-Encoding` が必要です。
|
||||
|
||||
```apache
|
||||
<FilesMatch "soffice\.wasm\.gz$">
|
||||
ForceType application/wasm
|
||||
Header set Content-Encoding "gzip"
|
||||
</FilesMatch>
|
||||
<FilesMatch "soffice\.data\.gz$">
|
||||
ForceType application/octet-stream
|
||||
Header set Content-Encoding "gzip"
|
||||
</FilesMatch>
|
||||
```
|
||||
|
||||
`mod_headers` が有効になっていることを確認してください:`sudo a2enmod headers`
|
||||
|
||||
### パーミッションエラー
|
||||
|
||||
```bash
|
||||
sudo chown -R www-data:www-data /var/www/bentopdf
|
||||
sudo chmod -R 755 /var/www/bentopdf
|
||||
```
|
||||
@@ -0,0 +1,200 @@
|
||||
# AWS S3 + CloudFrontにデプロイする
|
||||
|
||||
最大限の制御とスケーラビリティを求めて、AWS上にBentoPDFをホストします。
|
||||
|
||||
## アーキテクチャ
|
||||
|
||||
```
|
||||
User → CloudFront (CDN) → S3 (Static Files)
|
||||
```
|
||||
|
||||
## ステップ1:S3バケットを作成する
|
||||
|
||||
```bash
|
||||
# Create bucket
|
||||
aws s3 mb s3://your-bentopdf-bucket --region us-east-1
|
||||
|
||||
# Enable static website hosting
|
||||
aws s3 website s3://your-bentopdf-bucket \
|
||||
--index-document index.html \
|
||||
--error-document index.html
|
||||
```
|
||||
|
||||
## ステップ2:ビルドしてアップロードする
|
||||
|
||||
```bash
|
||||
# Build the project (optionally with custom branding)
|
||||
# VITE_BRAND_NAME="AcmePDF" VITE_BRAND_LOGO="images/acme-logo.svg" npm run build
|
||||
npm run build
|
||||
|
||||
# Sync to S3
|
||||
aws s3 sync dist/ s3://your-bentopdf-bucket \
|
||||
--delete \
|
||||
--cache-control "max-age=31536000"
|
||||
|
||||
# Set correct MIME types for WASM
|
||||
aws s3 cp s3://your-bentopdf-bucket/ s3://your-bentopdf-bucket/ \
|
||||
--recursive \
|
||||
--exclude "*" \
|
||||
--include "*.wasm" \
|
||||
--content-type "application/wasm" \
|
||||
--metadata-directive REPLACE
|
||||
|
||||
# Set correct MIME type for ES module files (.mjs)
|
||||
# S3 defaults .mjs to application/octet-stream, which browsers refuse to
|
||||
# execute as ES modules. The bundled PDF viewer (Sign PDF, Form Filler)
|
||||
# ships ES modules with .mjs extensions and will fail without this step.
|
||||
aws s3 cp s3://your-bentopdf-bucket/ s3://your-bentopdf-bucket/ \
|
||||
--recursive \
|
||||
--exclude "*" \
|
||||
--include "*.mjs" \
|
||||
--content-type "application/javascript" \
|
||||
--metadata-directive REPLACE
|
||||
```
|
||||
|
||||
## ステップ3:CloudFrontディストリビューションを作成する
|
||||
|
||||
```bash
|
||||
aws cloudfront create-distribution \
|
||||
--origin-domain-name your-bentopdf-bucket.s3.amazonaws.com \
|
||||
--default-root-object index.html
|
||||
```
|
||||
|
||||
またはAWSコンソールを使います。
|
||||
|
||||
1. CloudFront → ディストリビューションを作成 に移動します
|
||||
2. オリジンドメイン:S3バケットを選択します
|
||||
3. 「Origin Access Control」を有効にします
|
||||
4. デフォルトルートオブジェクト:`index.html`
|
||||
5. ディストリビューションを作成します
|
||||
|
||||
## ステップ3b:レスポンスヘッダーポリシー(LibreOffice WASMに必須)
|
||||
|
||||
LibreOfficeベースの変換(Word、Excel、PowerPointからPDFへ)には `SharedArrayBuffer` が必要で、特定のレスポンスヘッダーが求められます。CloudFrontのレスポンスヘッダーポリシーを作成します。
|
||||
|
||||
1. CloudFront → ポリシー → レスポンスヘッダー に移動します
|
||||
2. 次のヘッダーでカスタムポリシーを作成します。
|
||||
|
||||
| ヘッダー | 値 |
|
||||
| ------------------------------ | -------------- |
|
||||
| `Cross-Origin-Embedder-Policy` | `require-corp` |
|
||||
| `Cross-Origin-Opener-Policy` | `same-origin` |
|
||||
| `Cross-Origin-Resource-Policy` | `cross-origin` |
|
||||
|
||||
3. ポリシーをディストリビューションのデフォルトキャッシュビヘイビアにアタッチします
|
||||
|
||||
CLIを使う場合:
|
||||
|
||||
```bash
|
||||
aws cloudfront create-response-headers-policy \
|
||||
--response-headers-policy-config '{
|
||||
"Name": "BentoPDF-COEP-COOP",
|
||||
"CustomHeadersConfig": {
|
||||
"Quantity": 3,
|
||||
"Items": [
|
||||
{"Header": "Cross-Origin-Embedder-Policy", "Value": "require-corp", "Override": true},
|
||||
{"Header": "Cross-Origin-Opener-Policy", "Value": "same-origin", "Override": true},
|
||||
{"Header": "Cross-Origin-Resource-Policy", "Value": "cross-origin", "Override": true}
|
||||
]
|
||||
}
|
||||
}'
|
||||
```
|
||||
|
||||
## ステップ3c:事前圧縮されたWASMファイルのS3メタデータ
|
||||
|
||||
LibreOffice WASMファイルは事前圧縮されています(`.wasm.gz`、`.data.gz`)。ブラウザが展開できるように、正しいContent-TypeとContent-Encodingを設定します。
|
||||
|
||||
```bash
|
||||
# Set correct headers for soffice.wasm.gz
|
||||
aws s3 cp s3://your-bentopdf-bucket/libreoffice-wasm/soffice.wasm.gz \
|
||||
s3://your-bentopdf-bucket/libreoffice-wasm/soffice.wasm.gz \
|
||||
--content-type "application/wasm" \
|
||||
--content-encoding "gzip" \
|
||||
--metadata-directive REPLACE
|
||||
|
||||
# Set correct headers for soffice.data.gz
|
||||
aws s3 cp s3://your-bentopdf-bucket/libreoffice-wasm/soffice.data.gz \
|
||||
s3://your-bentopdf-bucket/libreoffice-wasm/soffice.data.gz \
|
||||
--content-type "application/octet-stream" \
|
||||
--content-encoding "gzip" \
|
||||
--metadata-directive REPLACE
|
||||
```
|
||||
|
||||
::: warning 重要
|
||||
レスポンスヘッダーポリシーがないと `SharedArrayBuffer` が使えず、LibreOffice WASMの変換は約55%で止まります。`.gz` ファイルに正しいContent-Encodingがないと、ブラウザは生のgzipバイトを受け取り、WASMのコンパイルに失敗します。
|
||||
:::
|
||||
|
||||
## ステップ4:S3バケットポリシー
|
||||
|
||||
CloudFrontがバケットにアクセスできるようにします。
|
||||
|
||||
```json
|
||||
{
|
||||
"Version": "2012-10-17",
|
||||
"Statement": [
|
||||
{
|
||||
"Sid": "AllowCloudFrontAccess",
|
||||
"Effect": "Allow",
|
||||
"Principal": {
|
||||
"Service": "cloudfront.amazonaws.com"
|
||||
},
|
||||
"Action": "s3:GetObject",
|
||||
"Resource": "arn:aws:s3:::your-bentopdf-bucket/*",
|
||||
"Condition": {
|
||||
"StringEquals": {
|
||||
"AWS:SourceArn": "arn:aws:cloudfront::ACCOUNT_ID:distribution/DISTRIBUTION_ID"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## ステップ5:カスタムエラーページ
|
||||
|
||||
SPAのルーティングのため、404で `index.html` を返すように設定します。
|
||||
|
||||
1. CloudFront → エラーページ
|
||||
2. カスタムエラーレスポンスを作成します。
|
||||
- HTTPエラーコード:404
|
||||
- レスポンスページのパス:`/index.html`
|
||||
- HTTPレスポンスコード:200
|
||||
|
||||
## コストの目安
|
||||
|
||||
| リソース | 概算コスト |
|
||||
| ----------------------- | ---------- |
|
||||
| S3ストレージ(約500MB) | 約$0.01/月 |
|
||||
| CloudFront(1TB転送) | 約$85/月 |
|
||||
| CloudFront(10GB転送) | 約$0.85/月 |
|
||||
|
||||
::: tip
|
||||
アクセス頻度の低いファイルには、S3 Intelligent-Tieringを使うとコストを最適化できます。
|
||||
:::
|
||||
|
||||
## Terraformによる自動化
|
||||
|
||||
```hcl
|
||||
# main.tf
|
||||
resource "aws_s3_bucket" "bentopdf" {
|
||||
bucket = "your-bentopdf-bucket"
|
||||
}
|
||||
|
||||
resource "aws_cloudfront_distribution" "bentopdf" {
|
||||
origin {
|
||||
domain_name = aws_s3_bucket.bentopdf.bucket_regional_domain_name
|
||||
origin_id = "S3Origin"
|
||||
}
|
||||
|
||||
enabled = true
|
||||
default_root_object = "index.html"
|
||||
|
||||
default_cache_behavior {
|
||||
allowed_methods = ["GET", "HEAD"]
|
||||
cached_methods = ["GET", "HEAD"]
|
||||
target_origin_id = "S3Origin"
|
||||
|
||||
viewer_protocol_policy = "redirect-to-https"
|
||||
}
|
||||
}
|
||||
```
|
||||
@@ -0,0 +1,154 @@
|
||||
# Cloudflare Pagesにデプロイする
|
||||
|
||||
[Cloudflare Pages](https://pages.cloudflare.com)は、帯域幅無制限で高速なグローバル静的サイトホスティングを提供します。
|
||||
|
||||
## クイックデプロイ
|
||||
|
||||
1. [Cloudflare Pages](https://dash.cloudflare.com/?to=/:account/pages)に移動します
|
||||
2. 「Create a project」をクリックします
|
||||
3. GitHubリポジトリを接続します
|
||||
|
||||
## ビルド設定
|
||||
|
||||
| 設定 | 値 |
|
||||
| ------------------------ | --------------- |
|
||||
| フレームワークプリセット | None |
|
||||
| ビルドコマンド | `npm run build` |
|
||||
| ビルド出力ディレクトリ | `dist` |
|
||||
| ルートディレクトリ | `/` |
|
||||
|
||||
## 環境変数
|
||||
|
||||
設定 → 環境変数 で次を追加します。
|
||||
|
||||
| 変数 | 値 |
|
||||
| ----------------------- | ------------------------------------------ |
|
||||
| `NODE_VERSION` | `18` |
|
||||
| `SIMPLE_MODE` | `false`(任意) |
|
||||
| `VITE_BRAND_NAME` | カスタムブランド名(任意) |
|
||||
| `VITE_BRAND_LOGO` | `public/` からの相対ロゴパス(任意) |
|
||||
| `VITE_FOOTER_TEXT` | カスタムのフッター/著作権テキスト(任意) |
|
||||
| `VITE_DEFAULT_LANGUAGE` | デフォルトのUI言語、例:`fr`(任意) |
|
||||
|
||||
## 設定ファイル
|
||||
|
||||
`public` フォルダに `_headers` を作成します。
|
||||
|
||||
```
|
||||
# Required security headers for SharedArrayBuffer (used by LibreOffice WASM)
|
||||
/*
|
||||
Cross-Origin-Embedder-Policy: require-corp
|
||||
Cross-Origin-Opener-Policy: same-origin
|
||||
Cross-Origin-Resource-Policy: cross-origin
|
||||
|
||||
# Pre-compressed LibreOffice WASM binary
|
||||
/libreoffice-wasm/soffice.wasm.gz
|
||||
Content-Type: application/wasm
|
||||
Content-Encoding: gzip
|
||||
Cache-Control: public, max-age=31536000, immutable
|
||||
|
||||
# Pre-compressed LibreOffice WASM data
|
||||
/libreoffice-wasm/soffice.data.gz
|
||||
Content-Type: application/octet-stream
|
||||
Content-Encoding: gzip
|
||||
Cache-Control: public, max-age=31536000, immutable
|
||||
|
||||
# Cache WASM files aggressively
|
||||
/*.wasm
|
||||
Cache-Control: public, max-age=31536000, immutable
|
||||
Content-Type: application/wasm
|
||||
|
||||
# Service worker
|
||||
/sw.js
|
||||
Cache-Control: no-cache
|
||||
```
|
||||
|
||||
::: warning 重要
|
||||
Word/ODT/Excel/PowerPointからPDFへの変換には、`Cross-Origin-Embedder-Policy` ヘッダーと `Cross-Origin-Opener-Policy` ヘッダーが必要です。これらがないと `SharedArrayBuffer` が使えず、LibreOffice WASMエンジンの初期化に失敗します。
|
||||
:::
|
||||
|
||||
SPAのルーティング用に `_redirects` を作成します。
|
||||
|
||||
```
|
||||
/* /index.html 200
|
||||
```
|
||||
|
||||
## カスタムドメイン
|
||||
|
||||
1. Pagesプロジェクトに移動します
|
||||
2. 「Custom domains」をクリックします
|
||||
3. ドメインを追加します
|
||||
4. ドメインがCloudflareにある場合、CloudflareがDNSを自動設定します
|
||||
|
||||
## メリット
|
||||
|
||||
- **帯域幅無制限で無料**
|
||||
- 300以上のエッジロケーションを持つ**グローバルCDN**
|
||||
- **自動HTTPS**
|
||||
- プルリクエストの**プレビューデプロイ**
|
||||
- **高速なビルド**
|
||||
|
||||
## トラブルシューティング
|
||||
|
||||
### 大きなファイルのアップロード
|
||||
|
||||
Cloudflare Pagesは最大25 MBのファイルに対応しています。WASMモジュールは問題ないはずですが、上限に達した場合は次を検討してください。
|
||||
|
||||
```bash
|
||||
# Split large files during build
|
||||
npm run build
|
||||
```
|
||||
|
||||
### Workerのサイズ制限
|
||||
|
||||
高度なルーティングにCloudflare Workersを使う場合は、無料プランでは1 MBの制限がある点に注意してください。
|
||||
|
||||
## CORSプロキシWorker(デジタル署名用)
|
||||
|
||||
デジタル署名ツールが証明書チェーンを取得するには、CORSプロキシが必要です。同梱のWorkerをデプロイします。
|
||||
|
||||
```bash
|
||||
cd cloudflare
|
||||
npx wrangler login
|
||||
npx wrangler deploy
|
||||
```
|
||||
|
||||
### セキュリティ機能
|
||||
|
||||
| 機能 | 説明 |
|
||||
| ---------------------------- | ------------------------------ |
|
||||
| **URL制限** | 証明書のURLのみ許可 |
|
||||
| **ファイルサイズ制限** | 1リクエストあたり最大10MB |
|
||||
| **レート制限** | 60リクエスト/IP/分(KVが必要) |
|
||||
| **プライベートIPのブロック** | localhostと内部IPをブロック |
|
||||
|
||||
### レート制限を有効にする
|
||||
|
||||
```bash
|
||||
# Create KV namespace
|
||||
npx wrangler kv namespace create "RATE_LIMIT_KV"
|
||||
|
||||
# Add to wrangler.toml with returned ID:
|
||||
# [[kv_namespaces]]
|
||||
# binding = "RATE_LIMIT_KV"
|
||||
# id = "YOUR_ID"
|
||||
|
||||
npx wrangler deploy
|
||||
```
|
||||
|
||||
### プロキシURLを指定してビルドする
|
||||
|
||||
```bash
|
||||
VITE_CORS_PROXY_URL=https://your-worker.workers.dev npm run build
|
||||
```
|
||||
|
||||
Dockerを使う場合:
|
||||
|
||||
```bash
|
||||
export VITE_CORS_PROXY_URL="https://your-worker.workers.dev"
|
||||
DOCKER_BUILDKIT=1 docker build \
|
||||
--secret id=VITE_CORS_PROXY_URL,env=VITE_CORS_PROXY_URL \
|
||||
-t your-bentopdf .
|
||||
```
|
||||
|
||||
> **注:** HMAC署名の設定については[README](https://github.com/alam00000/bentopdf#digital-signature-cors-proxy-required)を参照してください。
|
||||
@@ -0,0 +1,180 @@
|
||||
# 証明書取得用のCORSプロキシ
|
||||
|
||||
デジタル署名ツールは、外部の認証局(CA)から発行者証明書を取得するためにCORSプロキシを使います。多くのCAサーバーはレスポンスにCORSヘッダーを含めないため、ブラウザから直接取得することができません。
|
||||
|
||||
さらに、多くのCAサーバーはプレーンなHTTPで証明書を提供しています。BentoPDFのインスタンスをHTTPSでホストしている場合、ブラウザはこれらのHTTPリクエストをブロックします(混合コンテンツポリシー)。CORSプロキシは、適切なヘッダーを付けたHTTPSエンドポイント経由でリクエストを中継することで、この2つの問題を解決します。
|
||||
|
||||
## 仕組み
|
||||
|
||||
証明書でPDFに署名するとき:
|
||||
|
||||
1. `zgapdfsigner` ライブラリが完全な証明書チェーンの構築を試みます
|
||||
2. 証明書のAIA(Authority Information Access)拡張に埋め込まれたURLから、発行者証明書を取得します
|
||||
3. これらのリクエストは、必要な `Access-Control-Allow-Origin` ヘッダーを追加するCORSプロキシ経由で送られます
|
||||
4. プロキシが証明書データをブラウザに返します
|
||||
|
||||
## CORSプロキシのセルフホスト
|
||||
|
||||
BentoPDFをセルフホストしている場合、チェーンの取得が必要な証明書でデジタル署名を使うには、独自のCORSプロキシをデプロイする必要があります。
|
||||
|
||||
### オプション1:Cloudflare Workers(推奨)
|
||||
|
||||
1. **Wrangler CLIをインストールする**:
|
||||
|
||||
```bash
|
||||
npm install -g wrangler
|
||||
```
|
||||
|
||||
2. **Cloudflareにログインする**:
|
||||
|
||||
```bash
|
||||
wrangler login
|
||||
```
|
||||
|
||||
3. **BentoPDFをクローンし、許可するオリジンを更新する**:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/alam00000/bentopdf.git
|
||||
cd bentopdf/cloudflare
|
||||
```
|
||||
|
||||
`cors-proxy-worker.js` を開き、`ALLOWED_ORIGINS` 配列を自分のドメインに変更します。
|
||||
|
||||
```js
|
||||
const ALLOWED_ORIGINS = [
|
||||
'https://your-domain.com',
|
||||
'https://www.your-domain.com',
|
||||
];
|
||||
```
|
||||
|
||||
::: warning 重要
|
||||
この変更をしないと、プロキシはサイトからのすべてのリクエストを **403 Forbidden** エラーで拒否します。デフォルトでは `bentopdf.com` からのリクエストのみ許可されています。
|
||||
:::
|
||||
|
||||
4. **プロキシをデプロイする**:
|
||||
|
||||
```bash
|
||||
wrangler deploy
|
||||
```
|
||||
|
||||
WorkerのURL(例:`https://bentopdf-cors-proxy.your-subdomain.workers.dev`)を控えておきます。
|
||||
|
||||
5. **プロキシURLを指定してBentoPDFを再ビルドする**:
|
||||
|
||||
Dockerを使う場合:
|
||||
|
||||
```bash
|
||||
export VITE_CORS_PROXY_URL="https://your-worker.workers.dev"
|
||||
DOCKER_BUILDKIT=1 docker build \
|
||||
--secret id=VITE_CORS_PROXY_URL,env=VITE_CORS_PROXY_URL \
|
||||
-t your-bentopdf .
|
||||
```
|
||||
|
||||
ソースからビルドする場合:
|
||||
|
||||
```bash
|
||||
VITE_CORS_PROXY_URL=https://your-worker.workers.dev npm run build
|
||||
```
|
||||
|
||||
### オプション2:独自のバックエンドプロキシ
|
||||
|
||||
独自のプロキシエンドポイントを作ることもできます。要件は次のとおりです。
|
||||
|
||||
1. `url` クエリパラメータ付きのGETリクエストを受け付ける
|
||||
2. サーバーからそのURLを取得する(サーバー側ではCORSの制限はありません)
|
||||
3. 次のヘッダーを付けてレスポンスを返す:
|
||||
- `Access-Control-Allow-Origin: https://your-domain.com`
|
||||
- `Access-Control-Allow-Methods: GET, OPTIONS`
|
||||
- `X-Content-Type-Options: nosniff`
|
||||
|
||||
Express.jsでの実装例:
|
||||
|
||||
```javascript
|
||||
app.get('/api/cert-proxy', async (req, res) => {
|
||||
const targetUrl = req.query.url;
|
||||
|
||||
// Validate it's a certificate URL
|
||||
if (!isValidCertUrl(targetUrl)) {
|
||||
return res.status(400).json({ error: 'Invalid URL' });
|
||||
}
|
||||
|
||||
try {
|
||||
const response = await fetch(targetUrl);
|
||||
const data = await response.arrayBuffer();
|
||||
|
||||
res.set('Access-Control-Allow-Origin', 'https://your-domain.com');
|
||||
res.set('Content-Type', 'application/octet-stream');
|
||||
res.set('X-Content-Type-Options', 'nosniff');
|
||||
res.send(Buffer.from(data));
|
||||
} catch (error) {
|
||||
res.status(500).json({ error: 'Proxy error' });
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
## セキュリティ上の考慮事項
|
||||
|
||||
同梱のCloudflare Workerには、いくつかのセキュリティ対策があります。
|
||||
|
||||
| 機能 | 説明 |
|
||||
| ---------------------------- | ------------------------------------------------------------------------------------------------- |
|
||||
| **オリジン検証** | `ALLOWED_ORIGINS` に記載されたドメインからのリクエストのみ許可 |
|
||||
| **URL制限** | 証明書のURL(`.crt`、`.cer`、`.pem`、`/certs/`、`/ocsp`、`/crl`)のみ許可 |
|
||||
| **プライベートIPのブロック** | IPv4/IPv6のプライベート範囲、リンクローカル、ループバック、10進数IP、クラウドメタデータをブロック |
|
||||
| **Content-Typeの安全性** | 安全な証明書のMIMEタイプのみ返し、上流のcontent-typeインジェクションをブロック |
|
||||
| **ファイルサイズ制限** | レスポンスを10MBの上限でストリーミングし、超過するとダウンロード途中で中断 |
|
||||
| **レート制限** | IPまたはIPv6 /64ごとに1分あたり60リクエスト(KVが必要、KVエラー時はフェイルオープン) |
|
||||
| **HMAC署名** | 任意のクライアント側署名(気軽な悪用の抑止) |
|
||||
|
||||
### DNSリバインディング(Cloudflare以外でのセルフホスト)
|
||||
|
||||
このWorkerは、プライベートまたは内部のIPに解決されるURLをすべて拒否します。証明書チェーンのURLは、その証明書を発行したCA(FNMT、企業のCAなど)を指すため、ホストの固定許可リストは使えず、宛先を事前に把握できません。そのため、リバインディングの小さな隙が残ります。自分のドメインのDNSを運用する人が、安全性チェックには公開IPを、その直後の実際のリクエストにはプライベートIPを返す可能性があります。
|
||||
|
||||
Cloudflare上では、WorkersがプライベートIPや `169.254.169.254` のメタデータエンドポイントに到達できないため、悪用はできません。リバインドしても何にも届きません。ただし、Workerに侵入経路を与えないでください。Tunnel、Service、プライベートネットワークのバインディングはアタッチしないでください(必要なのは `RATE_LIMIT_KV` だけです)。
|
||||
|
||||
VPC内でCloudflare以外(workerdやNodeなど)で実行する場合、ランタイムは内部IPに到達*できてしまいます*。前段にエグレスファイアウォールを置き、プライベート範囲(`10.0.0.0/8`、`172.16.0.0/12`、`192.168.0.0/16`、`127.0.0.0/8`、`169.254.0.0/16`、およびそのIPv6相当)をブロックしてください。Cloudflareを離れると、アプリケーションコードではこれを強制できません。
|
||||
|
||||
## プロキシを無効にする
|
||||
|
||||
CORSプロキシを使いたくない場合は、環境変数を空文字列に設定します。
|
||||
|
||||
```
|
||||
VITE_CORS_PROXY_URL=
|
||||
```
|
||||
|
||||
**注**:プロキシがないと、外部からのチェーン取得が必要な証明書(FNMTや一部の企業CAなど)での署名は、「Failed to fetch」エラーで失敗します。
|
||||
|
||||
## トラブルシューティング
|
||||
|
||||
### 「Signing error: TypeError: Failed to fetch」
|
||||
|
||||
通常は、次のいずれかを意味します。
|
||||
|
||||
1. **CORSプロキシが未設定**:`VITE_CORS_PROXY_URL` を設定して再ビルドしてください
|
||||
2. **混合コンテンツがブロックされている**:サイトはHTTPSですが、証明書の発行者URLはHTTPです。CORSプロキシで解決できます。
|
||||
3. **CORSプロキシがオリジンを拒否している**:`cors-proxy-worker.js` の `ALLOWED_ORIGINS` 配列にドメインが含まれているか確認してください
|
||||
|
||||
### プロキシからの「403 Forbidden」
|
||||
|
||||
ドメインが `ALLOWED_ORIGINS` リストに含まれていません。`cors-proxy-worker.js` を編集します。
|
||||
|
||||
```js
|
||||
const ALLOWED_ORIGINS = ['https://your-domain.com'];
|
||||
```
|
||||
|
||||
その後、再デプロイします:`npx wrangler deploy`
|
||||
|
||||
### プロキシのテスト
|
||||
|
||||
```bash
|
||||
curl -H "Origin: https://your-domain.com" \
|
||||
"https://your-proxy.workers.dev?url=http://www.cert.fnmt.es/certs/ACUSU.crt"
|
||||
```
|
||||
|
||||
### プロキシなしで動作する証明書
|
||||
|
||||
一部の証明書はP12/PFXファイルに完全なチェーンを含んでおり、外部からの取得を必要としません。
|
||||
|
||||
- 自己署名証明書
|
||||
- 中間証明書をバンドルしている一部の商用CA
|
||||
- 完全なチェーンを手動で組み立てた証明書
|
||||
@@ -0,0 +1,622 @@
|
||||
# Docker / Podmanでデプロイする
|
||||
|
||||
本番環境でBentoPDFをセルフホストする最も簡単な方法です。
|
||||
|
||||
> [!IMPORTANT]
|
||||
> **Officeファイル変換に必要なヘッダー**
|
||||
>
|
||||
> LibreOfficeベースのツール(Word、Excel、PowerPointの変換)が `SharedArrayBuffer` を使うには、次のHTTPヘッダーが必要です。
|
||||
>
|
||||
> - `Cross-Origin-Opener-Policy: same-origin`
|
||||
> - `Cross-Origin-Embedder-Policy: require-corp`
|
||||
>
|
||||
> ページはセキュアコンテキストから配信される必要もあります。ローカルでのテストでは `http://localhost` が使えますが、`http://192.168.x.x` などのLAN IPは通常これに該当しないため、ヘッダーが設定されていてもプレーンなHTTPではOffice変換が失敗します。
|
||||
>
|
||||
> 公式のコンテナイメージにはこれらのヘッダーが含まれています。リバースプロキシ(Traefik、Caddyなど)を使う場合は、これらのヘッダーが保持されるか追加されるようにし、ループバック以外からのアクセスにはHTTPSを使ってください。
|
||||
|
||||
> [!TIP]
|
||||
> **Podmanユーザー:** すべての `docker` コマンドは、`docker` を `podman` に、`docker-compose` を `podman-compose` に置き換えればPodmanでも動作します。
|
||||
|
||||
## クイックスタート
|
||||
|
||||
> [!TIP]
|
||||
> BentoPDFには2つのビルドがあります。
|
||||
>
|
||||
> - **セルフホスト版ビルド**:`ghcr.io/alam00000/bentopdf-simple:latest`。マーケティング用の要素(ヒーロー、FAQ、お客様の声、フッター)**なし**で、すべてのPDFツールを備えています。社内・チーム・組織向けのデプロイに使います。機能を減らした「ライト」版では**ありません**。
|
||||
> - **商用版ビルド**:`ghcr.io/alam00000/bentopdf:latest`。マーケティングサイト全体を含み、bentopdf.com自体や、公開向けにデプロイする商用ライセンス保持者が使います。
|
||||
>
|
||||
> 迷ったらセルフホスト版ビルドを取得してください。
|
||||
|
||||
```bash
|
||||
# Docker
|
||||
docker run -d \
|
||||
--name bentopdf \
|
||||
-p 3000:8080 \
|
||||
--restart unless-stopped \
|
||||
ghcr.io/alam00000/bentopdf-simple:latest
|
||||
|
||||
# Podman
|
||||
podman run -d \
|
||||
--name bentopdf \
|
||||
-p 3000:8080 \
|
||||
ghcr.io/alam00000/bentopdf-simple:latest
|
||||
```
|
||||
|
||||
## Docker Compose / Podman Compose
|
||||
|
||||
`docker-compose.yml` を作成します。
|
||||
|
||||
```yaml
|
||||
services:
|
||||
bentopdf:
|
||||
image: ghcr.io/alam00000/bentopdf-simple:latest
|
||||
container_name: bentopdf
|
||||
ports:
|
||||
- '3000:8080'
|
||||
restart: unless-stopped
|
||||
healthcheck:
|
||||
test: ['CMD', 'wget', '--spider', '-q', 'http://localhost:8080']
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 3
|
||||
```
|
||||
|
||||
実行します。
|
||||
|
||||
```bash
|
||||
# Docker Compose
|
||||
docker compose up -d
|
||||
|
||||
# Podman Compose
|
||||
podman-compose up -d
|
||||
```
|
||||
|
||||
## 独自イメージをビルドする
|
||||
|
||||
```dockerfile
|
||||
# Dockerfile
|
||||
FROM node:20-alpine AS builder
|
||||
WORKDIR /app
|
||||
COPY package*.json ./
|
||||
RUN npm ci
|
||||
COPY . .
|
||||
RUN npm run build
|
||||
|
||||
FROM nginxinc/nginx-unprivileged:alpine
|
||||
COPY --from=builder /app/dist /usr/share/nginx/html
|
||||
COPY nginx.conf /etc/nginx/nginx.conf
|
||||
EXPOSE 8080
|
||||
CMD ["nginx", "-g", "daemon off;"]
|
||||
```
|
||||
|
||||
ビルドして実行します。
|
||||
|
||||
```bash
|
||||
docker build -t bentopdf:custom .
|
||||
docker run -d -p 3000:8080 bentopdf:custom
|
||||
```
|
||||
|
||||
## 環境変数
|
||||
|
||||
| 変数 | 説明 | デフォルト |
|
||||
| ------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
|
||||
| `SIMPLE_MODE` | セルフホスト版をビルドします(bentopdf.com のマーケティング要素であるヒーロー、FAQ、お客様の声、フッターを非表示にします)。すべてのPDFツールは残ります。 | `false` |
|
||||
| `BASE_URL` | サブディレクトリへのデプロイ | `/` |
|
||||
| `VITE_WASM_PYMUPDF_URL` | PyMuPDF WASMモジュールのURL | `https://cdn.jsdelivr.net/npm/@bentopdf/pymupdf-wasm@0.11.16/` |
|
||||
| `VITE_WASM_GS_URL` | Ghostscript WASMモジュールのURL | `https://cdn.jsdelivr.net/npm/@bentopdf/gs-wasm@0.1.1/assets/` |
|
||||
| `VITE_WASM_CPDF_URL` | CoherentPDF WASMモジュールのURL | `https://cdn.jsdelivr.net/npm/coherentpdf@2.5.5/dist/` |
|
||||
| `VITE_TESSERACT_WORKER_URL` | OCRワーカースクリプトのURL | _(空。Tesseract.jsのデフォルトCDNを使用)_ |
|
||||
| `VITE_TESSERACT_CORE_URL` | OCRコアランタイムのディレクトリ | _(空。Tesseract.jsのデフォルトCDNを使用)_ |
|
||||
| `VITE_TESSERACT_LANG_URL` | OCR traineddataのディレクトリ | _(空。Tesseract.jsのデフォルトCDNを使用)_ |
|
||||
| `VITE_TESSERACT_AVAILABLE_LANGUAGES` | UIに表示するOCR言語(カンマ区切り) | _(空。全カタログを表示)_ |
|
||||
| `VITE_OCR_FONT_BASE_URL` | OCRテキストレイヤー用フォントのディレクトリ | _(空。リモートのNotoフォントURLを使用)_ |
|
||||
| `VITE_DEFAULT_LANGUAGE` | デフォルトのUI言語 | `en` |
|
||||
| `VITE_BRAND_NAME` | カスタムブランド名 | `BentoPDF` |
|
||||
| `VITE_BRAND_LOGO` | `public/` からの相対ロゴパス | `images/favicon-no-bg.svg` |
|
||||
| `VITE_FOOTER_TEXT` | カスタムのフッター/著作権テキスト | `© 2026 BentoPDF. All rights reserved.` |
|
||||
| `DISABLE_TOOLS` | 非表示にするツールID(カンマ区切り) | _(空。すべてのツールが有効)_ |
|
||||
| `DISABLE_GITHUB_STARS` | ページ読み込み時のGitHubスター数の取得をスキップし、CSPから `api.github.com` を除外します。Simple Modeのビルドでは常にスキップされます。 | `false` |
|
||||
| `SITE_URL` | canonical、hreflang、サイトマップのリンクに書き込まれる公開URL。検索エンジンにデプロイ先を独立したサイトとして扱わせたい場合を除き、デフォルトのままにしてください。 | `https://www.bentopdf.com` |
|
||||
| `ALLOW_INDEXING` | カスタムの `SITE_URL` を使う場合、検索結果でbentopdf.comと競合しないよう、すべてのページが `noindex` になります。検索エンジンにインデックスさせるには `true` に設定します。 | `false` |
|
||||
|
||||
WASMモジュールのURLには、CDNのデフォルトがあらかじめ設定されているため、高度な機能はすべてそのまま動作します。エアギャップ環境やセルフホスト環境では、これらを上書きしてください。
|
||||
|
||||
### 検索エンジン
|
||||
|
||||
デフォルトでは、すべてのページが元のページとしてbentopdf.comを検索エンジンに示すため、デプロイ先が重複ページとして表示されることはありません。プライベートな環境や社内のインスタンスでは、何も変更する必要はありません。
|
||||
|
||||
- **インスタンスを検索結果にまったく表示させない:** コンテナを `-e ROBOTS_NOINDEX=true` で実行します。再起動だけで済み、再ビルドは不要です。
|
||||
- **インスタンスを検索結果で独立したサイトにする:** `--build-arg SITE_URL=https://your-domain.example --build-arg ALLOW_INDEXING=true` を付けてビルドします。`ALLOW_INDEXING=true` がないと、カスタムの `SITE_URL` ではすべてのページが `noindex` になります。
|
||||
|
||||
### Content-Security-Policy
|
||||
|
||||
nginxイメージには、強制モードの `Content-Security-Policy` ヘッダーが含まれています。CSPの `script-src`、`connect-src`、`font-src` ディレクティブは、上記の `VITE_*` URL変数から**ビルド時に生成**されます。`--build-arg` で渡したホストは自動的にポリシーに追加されます。
|
||||
|
||||
そのため:
|
||||
|
||||
- ビルド時に `VITE_CORS_PROXY_URL` や `VITE_WASM_*_URL` を上書きすると、CSPがそれらのオリジンを自動的に許可します。追加の設定は不要です。
|
||||
- `cdn.jsdelivr.net` 上のURLでは、`script-src` はCDN全体ではなく、バージョンまで含む正確なパッケージフォルダ(例:`https://cdn.jsdelivr.net/npm/@bentopdf/pymupdf-wasm@0.11.16/`)だけを許可します。jsDelivrは公開されているあらゆるnpmパッケージやGitHubリポジトリを配信するため、ホスト全体を許可すると、そのどれもがインスタンス上で実行できてしまうからです。それ以外のホスト上のURLは、オリジン単位で許可されます。
|
||||
- アプリ内の詳細設定ページで、_実行時_ にカスタムのWASM URLを設定した場合、それらのオリジンはCSPに含まれないため、ブラウザはそれらへのフェッチをブロックします。ビルド時に設定したバージョンのみが許可されるため、`cdn.jsdelivr.net` 上の同じパッケージの別バージョンにも当てはまります。実行時の設定は試験用です。恒久的なカスタムURLには、対応する `VITE_*` のビルド引数を設定してください。
|
||||
- 3つの `VITE_WASM_*_URL` をすべて上書きしたエアギャップ環境のデプロイでは、それらの `cdn.jsdelivr.net` パッケージフォルダもCSPから削除されます(各デフォルトは追加ではなく置換されます)。`cdn.jsdelivr.net` 上のTesseract OCRのデフォルトは、3つの `VITE_TESSERACT_*` も設定するまでポリシーに残ります。同様に、`VITE_CORS_PROXY_URL` を設定すると、公開の `bentopdf-cors-proxy.bentopdf.workers.dev` というデフォルトが置き換えられます。
|
||||
|
||||
CSPの `script-src` に `'unsafe-eval'` が含まれているのは、LibreOffice WASMランタイム(Word/Excel/PowerPoint変換ツールで使用)とwasm-vips画像ライブラリ(PDFからTIFFで使用)が、`new Function()` で内部のディスパッチコードをコンパイルするためです。これを削除するとそれらのツールが動作しなくなります。`SIMPLE_MODE`(LibreOfficeなし)でビルドし、PDFからTIFFが不要な場合は、生成された `security-headers.conf` を手動で編集して `'unsafe-eval'` を外すことで、より厳格なポリシーにできます。
|
||||
|
||||
OCRでは、`VITE_TESSERACT_*` 変数を空のままにするとデフォルトのオンラインアセットを使い、セルフホスト/オフラインのOCRでは3つすべてを一緒に設定します。ワーカー、コアランタイム、traineddataディレクトリは対応している必要があるため、一部だけの上書きは拒否されます。完全オフラインで検索可能なPDFを出力するには、`VITE_OCR_FONT_BASE_URL` も設定して、OCRテキストレイヤー用フォントを公開のNotoフォントURLではなく社内サーバーから読み込むようにします。
|
||||
|
||||
`VITE_DEFAULT_LANGUAGE` は、初めて訪れたユーザーのUI言語を設定します。サポートされる値:`en`、`ar`、`be`、`fr`、`de`、`es`、`zh`、`zh-TW`、`vi`、`tr`、`id`、`it`、`pt`、`nl`、`da`。ユーザーは引き続き言語を切り替えられ、これは既定値を変えるだけです。
|
||||
|
||||
例:
|
||||
|
||||
```bash
|
||||
# Build with French as the default language
|
||||
docker build --build-arg VITE_DEFAULT_LANGUAGE=fr -t bentopdf .
|
||||
docker run -d -p 3000:8080 bentopdf
|
||||
```
|
||||
|
||||
### カスタムブランディング
|
||||
|
||||
デフォルトのBentoPDFのロゴ、名前、フッターテキストを独自のものに置き換えます。ロゴファイルを `public/` フォルダに置く(または既存の画像を使う)、ビルド時にブランディング用の変数を渡します。
|
||||
|
||||
```bash
|
||||
docker build \
|
||||
--build-arg VITE_BRAND_NAME="AcmePDF" \
|
||||
--build-arg VITE_BRAND_LOGO="images/acme-logo.svg" \
|
||||
--build-arg VITE_FOOTER_TEXT="© 2026 Acme Corp. Internal use only." \
|
||||
-t acmepdf .
|
||||
```
|
||||
|
||||
ブランディングはフルモードとSimple Modeの両方で動作し、他のすべてのビルド時オプションと組み合わせられます。
|
||||
|
||||
### 特定のツールを無効にする
|
||||
|
||||
コンプライアンスやセキュリティ要件に応じて、UIからツールを非表示にします。無効にしたツールは、ホームページ、検索結果、キーボードショートカット、ワークフロービルダーから削除されます。URLに直接アクセスすると「ツールは利用できません」ページが表示されます。
|
||||
|
||||
ツールIDは、ページURLから `.html` を除いたものです。たとえばツールが `bentopdf.com/edit-pdf.html` にある場合、IDは `edit-pdf` です。
|
||||
|
||||
#### ツールIDの調べ方
|
||||
|
||||
最も簡単な方法:BentoPDFで任意のツールを開き、URLを見ます。パスの最後の部分(`.html` を除く)がツールIDです。
|
||||
|
||||
<details>
|
||||
<summary>ツールIDの完全な一覧</summary>
|
||||
|
||||
**編集と注釈:** `edit-pdf`, `bookmark`, `table-of-contents`, `page-numbers`, `add-page-labels`, `bates-numbering`, `add-watermark`, `header-footer`, `invert-colors`, `scanner-effect`, `adjust-colors`, `background-color`, `text-color`, `sign-pdf`, `add-stamps`, `remove-annotations`, `crop-pdf`, `form-filler`, `form-creator`, `remove-blank-pages`
|
||||
|
||||
**PDFに変換:** `image-to-pdf`, `jpg-to-pdf`, `png-to-pdf`, `webp-to-pdf`, `svg-to-pdf`, `bmp-to-pdf`, `heic-to-pdf`, `tiff-to-pdf`, `txt-to-pdf`, `markdown-to-pdf`, `json-to-pdf`, `csv-to-pdf`, `rtf-to-pdf`, `odt-to-pdf`, `word-to-pdf`, `excel-to-pdf`, `powerpoint-to-pdf`, `xps-to-pdf`, `mobi-to-pdf`, `epub-to-pdf`, `fb2-to-pdf`, `cbz-to-pdf`, `wpd-to-pdf`, `wps-to-pdf`, `xml-to-pdf`, `pages-to-pdf`, `odg-to-pdf`, `ods-to-pdf`, `odp-to-pdf`, `pub-to-pdf`, `vsd-to-pdf`, `psd-to-pdf`, `email-to-pdf`
|
||||
|
||||
**PDFから変換:** `pdf-to-jpg`, `pdf-to-png`, `pdf-to-webp`, `pdf-to-bmp`, `pdf-to-tiff`, `pdf-to-cbz`, `pdf-to-svg`, `pdf-to-csv`, `pdf-to-excel`, `pdf-to-greyscale`, `pdf-to-json`, `pdf-to-docx`, `extract-images`, `pdf-to-markdown`, `prepare-pdf-for-ai`, `pdf-to-text`
|
||||
|
||||
**整理と管理:** `ocr-pdf`, `merge-pdf`, `alternate-merge`, `organize-pdf`, `add-attachments`, `extract-attachments`, `edit-attachments`, `pdf-multi-tool`, `pdf-layers`, `extract-tables`, `split-pdf`, `divide-pages`, `extract-pages`, `delete-pages`, `add-blank-page`, `reverse-pages`, `rotate-pdf`, `rotate-custom`, `n-up-pdf`, `pdf-booklet`, `combine-single-page`, `view-metadata`, `edit-metadata`, `pdf-to-zip`, `compare-pdfs`, `posterize-pdf`, `page-dimensions`
|
||||
|
||||
**最適化と修復:** `compress-pdf`, `pdf-to-pdfa`, `fix-page-size`, `linearize-pdf`, `remove-restrictions`, `repair-pdf`, `rasterize-pdf`, `deskew-pdf`, `font-to-outline`
|
||||
|
||||
**セキュリティ:** `encrypt-pdf`, `sanitize-pdf`, `decrypt-pdf`, `flatten-pdf`, `remove-metadata`, `change-permissions`, `digital-sign-pdf`, `validate-signature-pdf`, `timestamp-pdf`
|
||||
|
||||
</details>
|
||||
|
||||
#### オプション1:ビルド時(Dockerのビルド引数)
|
||||
|
||||
```bash
|
||||
docker build \
|
||||
--build-arg DISABLE_TOOLS="edit-pdf,sign-pdf,encrypt-pdf" \
|
||||
-t bentopdf .
|
||||
```
|
||||
|
||||
これにより、無効化リストがJavaScriptバンドルに組み込まれます。変更するには再ビルドが必要です。
|
||||
|
||||
#### オプション2:実行時(config.json)
|
||||
|
||||
`config.json` ファイルを配信ディレクトリにマウントします。再ビルドは不要です。
|
||||
|
||||
```json
|
||||
{
|
||||
"disabledTools": ["edit-pdf", "sign-pdf", "encrypt-pdf"]
|
||||
}
|
||||
```
|
||||
|
||||
```bash
|
||||
docker run -d \
|
||||
-p 3000:8080 \
|
||||
-v ./config.json:/usr/share/nginx/html/config.json:ro \
|
||||
ghcr.io/alam00000/bentopdf-simple:latest
|
||||
```
|
||||
|
||||
Docker Composeを使う場合:
|
||||
|
||||
```yaml
|
||||
services:
|
||||
bentopdf:
|
||||
image: ghcr.io/alam00000/bentopdf-simple:latest
|
||||
ports:
|
||||
- '3000:8080'
|
||||
volumes:
|
||||
- ./config.json:/usr/share/nginx/html/config.json:ro
|
||||
```
|
||||
|
||||
両方の方法を組み合わせることもでき、その場合はリストが統合されます。どちらかに含まれるツールは無効になります。
|
||||
|
||||
#### エディタ機能を無効にする
|
||||
|
||||
エディタツール全体を無効にせずに、PDFエディタ内の特定の機能(墨消し、注釈、フォームなど)だけを無効にすることもできます。`config.json` に `editorDisabledCategories` を追加します。
|
||||
|
||||
```json
|
||||
{
|
||||
"editorDisabledCategories": ["redaction", "annotation-stamp"]
|
||||
}
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>エディタカテゴリの完全な一覧</summary>
|
||||
|
||||
**ズーム:** `zoom`, `zoom-in`, `zoom-out`, `zoom-fit-page`, `zoom-fit-width`, `zoom-marquee`, `zoom-level`
|
||||
|
||||
**注釈:** `annotation`, `annotation-markup`, `annotation-highlight`, `annotation-underline`, `annotation-strikeout`, `annotation-squiggly`, `annotation-ink`, `annotation-text`, `annotation-stamp`
|
||||
|
||||
**図形:** `annotation-shape`, `annotation-rectangle`, `annotation-circle`, `annotation-line`, `annotation-arrow`, `annotation-polygon`, `annotation-polyline`
|
||||
|
||||
**フォーム:** `form`, `form-textfield`, `form-checkbox`, `form-radio`, `form-select`, `form-listbox`, `form-fill-mode`
|
||||
|
||||
**墨消し:** `redaction`, `redaction-area`, `redaction-text`, `redaction-apply`, `redaction-clear`
|
||||
|
||||
**ドキュメント:** `document`, `document-open`, `document-close`, `document-print`, `document-capture`, `document-export`, `document-fullscreen`, `document-protect`
|
||||
|
||||
**ページ:** `page`, `spread`, `rotate`, `scroll`, `navigation`
|
||||
|
||||
**パネル:** `panel`, `panel-sidebar`, `panel-search`, `panel-comment`
|
||||
|
||||
**ツール:** `tools`, `pan`, `pointer`, `capture`
|
||||
|
||||
**選択:** `selection`, `selection-copy`
|
||||
|
||||
**履歴:** `history`, `history-undo`, `history-redo`
|
||||
|
||||
</details>
|
||||
|
||||
カテゴリは階層構造になっており、親(例:`annotation`)を無効にすると、その子もすべて無効になります。
|
||||
|
||||
### GitHubスターカウンターを無効にする
|
||||
|
||||
ナビゲーションバーには、ページ読み込み時に `api.github.com` から取得するGitHubスター数のライブ表示があります。これはPDF機能とは無関係な、唯一の外部リクエストです。ビルド時に無効にすると、フェッチのコードがバンドルから取り除かれ、Content-Security-Policyから `api.github.com` も除外されます。
|
||||
|
||||
```bash
|
||||
docker build --build-arg DISABLE_GITHUB_STARS=true -t bentopdf .
|
||||
```
|
||||
|
||||
Simple Modeのビルド(`bentopdf-simple`)では常にスターカウンターをスキップします。このフラグが必要なのは、商用版ビルドまたはカスタムのフルビルドの場合だけです。
|
||||
|
||||
### カスタムWASM URL(エアギャップ/セルフホスト)
|
||||
|
||||
> [!IMPORTANT]
|
||||
> WASMのURLは**ビルド時**にJavaScriptへ組み込まれます。WASMファイルは実行時に**ユーザーのブラウザ**がダウンロードするもので、Dockerはビルド中にダウンロードしません。エアギャップのネットワークでは、ブラウザから到達できる社内サーバーでWASMファイルをホストする必要があります。
|
||||
|
||||
**エアギャップ環境の完全なワークフロー:**
|
||||
|
||||
```bash
|
||||
# 1. On a machine WITH internet — download WASM packages
|
||||
bash scripts/prepare-airgap.sh --list-ocr-languages
|
||||
bash scripts/prepare-airgap.sh --search-ocr-language german
|
||||
|
||||
# 2. Download WASM/OCR packages
|
||||
npm pack @bentopdf/pymupdf-wasm@0.11.14
|
||||
npm pack @bentopdf/gs-wasm
|
||||
npm pack coherentpdf
|
||||
npm pack tesseract.js@7.0.0
|
||||
npm pack tesseract.js-core@7.0.0
|
||||
mkdir -p tesseract-langdata
|
||||
curl -fsSL https://cdn.jsdelivr.net/npm/@tesseract.js-data/eng/4.0.0_best_int/eng.traineddata.gz -o tesseract-langdata/eng.traineddata.gz
|
||||
mkdir -p ocr-fonts
|
||||
curl -fsSL https://raw.githack.com/googlefonts/noto-fonts/main/hinted/ttf/NotoSans/NotoSans-Regular.ttf -o ocr-fonts/NotoSans-Regular.ttf
|
||||
|
||||
# 3. Build the image with your internal server URLs
|
||||
docker build \
|
||||
--build-arg VITE_WASM_PYMUPDF_URL=https://internal-server.example.com/wasm/pymupdf/ \
|
||||
--build-arg VITE_WASM_GS_URL=https://internal-server.example.com/wasm/gs/ \
|
||||
--build-arg VITE_WASM_CPDF_URL=https://internal-server.example.com/wasm/cpdf/ \
|
||||
--build-arg VITE_TESSERACT_WORKER_URL=https://internal-server.example.com/wasm/ocr/worker.min.js \
|
||||
--build-arg VITE_TESSERACT_CORE_URL=https://internal-server.example.com/wasm/ocr/core \
|
||||
--build-arg VITE_TESSERACT_LANG_URL=https://internal-server.example.com/wasm/ocr/lang-data \
|
||||
--build-arg VITE_TESSERACT_AVAILABLE_LANGUAGES=eng,deu \
|
||||
--build-arg VITE_OCR_FONT_BASE_URL=https://internal-server.example.com/wasm/ocr/fonts \
|
||||
-t bentopdf .
|
||||
|
||||
# 4. Export the image
|
||||
docker save bentopdf -o bentopdf.tar
|
||||
|
||||
# 5. Transfer bentopdf.tar + the .tgz packages + tesseract-langdata/ + ocr-fonts/ into the air-gapped network
|
||||
|
||||
# 6. Inside the air-gapped network — load and run
|
||||
docker load -i bentopdf.tar
|
||||
|
||||
# Extract WASM packages to your internal web server
|
||||
mkdir -p /var/www/wasm/pymupdf /var/www/wasm/gs /var/www/wasm/cpdf /var/www/wasm/ocr/core /var/www/wasm/ocr/lang-data /var/www/wasm/ocr/fonts
|
||||
tar xzf bentopdf-pymupdf-wasm-0.11.14.tgz -C /var/www/wasm/pymupdf --strip-components=1
|
||||
tar xzf bentopdf-gs-wasm-*.tgz -C /var/www/wasm/gs --strip-components=1
|
||||
tar xzf coherentpdf-*.tgz -C /var/www/wasm/cpdf --strip-components=1
|
||||
TEMP_TESS=$(mktemp -d)
|
||||
tar xzf tesseract.js-7.0.0.tgz -C "$TEMP_TESS"
|
||||
cp "$TEMP_TESS/package/dist/worker.min.js" /var/www/wasm/ocr/worker.min.js
|
||||
rm -rf "$TEMP_TESS"
|
||||
tar xzf tesseract.js-core-7.0.0.tgz -C /var/www/wasm/ocr/core --strip-components=1
|
||||
cp ./tesseract-langdata/*.traineddata.gz /var/www/wasm/ocr/lang-data/
|
||||
cp ./ocr-fonts/* /var/www/wasm/ocr/fonts/
|
||||
|
||||
# Run BentoPDF
|
||||
docker run -d -p 3000:8080 --restart unless-stopped bentopdf
|
||||
```
|
||||
|
||||
`bash scripts/prepare-airgap.sh --list-ocr-languages` で表示されるコード、または `bash scripts/prepare-airgap.sh --search-ocr-language <term>` で名前から検索したコードを、`--ocr-languages` に使います。OCR言語のサブセットを制限してビルドする場合は、同じコードを `VITE_TESSERACT_AVAILABLE_LANGUAGES` に渡し、アプリにバンドルされた言語だけが表示されるようにします。完全オフラインのOCR出力には、同梱の `ocr-fonts/` ディレクトリもホストし、`VITE_OCR_FONT_BASE_URL` をそこに向けてください。
|
||||
|
||||
変数を空文字列に設定すると、そのモジュールが無効になります(ユーザーは詳細設定から手動で設定する必要があります)。
|
||||
|
||||
## カスタムポート
|
||||
|
||||
デフォルトでは、BentoPDFはコンテナ内のポート `8080` で待ち受けます。変更するには、実行時に `PORT` 環境変数を設定します。
|
||||
|
||||
```bash
|
||||
docker run -p 3000:9090 -e PORT=9090 ghcr.io/alam00000/bentopdf-simple:latest
|
||||
```
|
||||
|
||||
| 変数 | 説明 | デフォルト |
|
||||
| ------ | --------------------------------- | ---------- |
|
||||
| `PORT` | コンテナ内のNginxの待ち受けポート | `8080` |
|
||||
|
||||
これは標準のDockerfileとnonrootのDockerfileの両方で動作します。
|
||||
|
||||
## カスタムユーザーID(PUID/PGID)
|
||||
|
||||
特定の非rootユーザーでの実行が必要な環境(NASデバイス、セキュリティコンテキストを使うKubernetes、組織のポリシーなど)向けに、BentoPDFはLSIO形式のPUID/PGIDに対応した別のDockerfileを提供しています。
|
||||
|
||||
### ビルドと実行
|
||||
|
||||
```bash
|
||||
# Build the non-root image
|
||||
docker build -f Dockerfile.nonroot -t bentopdf-nonroot .
|
||||
|
||||
# Run with custom UID/GID
|
||||
docker run -d \
|
||||
--name bentopdf \
|
||||
-p 3000:8080 \
|
||||
-e PUID=1000 \
|
||||
-e PGID=1000 \
|
||||
--restart unless-stopped \
|
||||
bentopdf-nonroot
|
||||
```
|
||||
|
||||
### 環境変数
|
||||
|
||||
| 変数 | 説明 | デフォルト |
|
||||
| -------------- | ------------------------ | ---------- |
|
||||
| `PUID` | 実行するユーザーID | `1000` |
|
||||
| `PGID` | 実行するグループID | `1000` |
|
||||
| `PORT` | Nginxの待ち受けポート | `8080` |
|
||||
| `DISABLE_IPV6` | IPv6リスナーを無効にする | `false` |
|
||||
|
||||
### Docker Compose
|
||||
|
||||
```yaml
|
||||
services:
|
||||
bentopdf:
|
||||
build:
|
||||
context: .
|
||||
dockerfile: Dockerfile.nonroot
|
||||
container_name: bentopdf
|
||||
ports:
|
||||
- '3000:8080'
|
||||
environment:
|
||||
- PUID=1000
|
||||
- PGID=1000
|
||||
restart: unless-stopped
|
||||
```
|
||||
|
||||
### 仕組み
|
||||
|
||||
コンテナはrootで起動し、指定されたPUID/PGIDでユーザーを作成して、書き込み可能なすべてのディレクトリの所有権を調整し、`su-exec` で権限を落とします。nginxプロセスは、指定したユーザーとして完全に実行されます。
|
||||
|
||||
> [!NOTE]
|
||||
> 標準の `Dockerfile` は `nginx-unprivileged`(UID 101)を使い、ほとんどのデプロイで推奨されます。`Dockerfile.nonroot` は、特定のUID/GIDが必要な場合にのみ使ってください。
|
||||
|
||||
> [!WARNING]
|
||||
> PUID/PGIDは `0`(root)にできません。エントリポイントが入力を検証し、無効な値の場合はエラーで終了します。
|
||||
|
||||
## Traefik(リバースプロキシ)との併用
|
||||
|
||||
```yaml
|
||||
services:
|
||||
traefik:
|
||||
image: traefik:v2.10
|
||||
command:
|
||||
- '--providers.docker=true'
|
||||
- '--entrypoints.web.address=:80'
|
||||
- '--entrypoints.websecure.address=:443'
|
||||
- '--certificatesresolvers.letsencrypt.acme.email=you@example.com'
|
||||
- '--certificatesresolvers.letsencrypt.acme.storage=/letsencrypt/acme.json'
|
||||
- '--certificatesresolvers.letsencrypt.acme.httpchallenge.entrypoint=web'
|
||||
ports:
|
||||
- '80:80'
|
||||
- '443:443'
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
- ./letsencrypt:/letsencrypt
|
||||
|
||||
bentopdf:
|
||||
image: ghcr.io/alam00000/bentopdf-simple:latest
|
||||
labels:
|
||||
- 'traefik.enable=true'
|
||||
- 'traefik.http.routers.bentopdf.rule=Host(`pdf.example.com`)'
|
||||
- 'traefik.http.routers.bentopdf.entrypoints=websecure'
|
||||
- 'traefik.http.routers.bentopdf.tls.certresolver=letsencrypt'
|
||||
- 'traefik.http.services.bentopdf.loadbalancer.server.port=8080'
|
||||
# Required headers for SharedArrayBuffer (LibreOffice WASM)
|
||||
- 'traefik.http.routers.bentopdf.middlewares=bentopdf-headers'
|
||||
- 'traefik.http.middlewares.bentopdf-headers.headers.customresponseheaders.Cross-Origin-Opener-Policy=same-origin'
|
||||
- 'traefik.http.middlewares.bentopdf-headers.headers.customresponseheaders.Cross-Origin-Embedder-Policy=require-corp'
|
||||
restart: unless-stopped
|
||||
```
|
||||
|
||||
## Caddy(リバースプロキシ)との併用
|
||||
|
||||
```yaml
|
||||
services:
|
||||
caddy:
|
||||
image: caddy:2
|
||||
ports:
|
||||
- '80:80'
|
||||
- '443:443'
|
||||
volumes:
|
||||
- ./Caddyfile:/etc/caddy/Caddyfile
|
||||
- caddy_data:/data
|
||||
|
||||
bentopdf:
|
||||
image: ghcr.io/alam00000/bentopdf-simple:latest
|
||||
restart: unless-stopped
|
||||
|
||||
volumes:
|
||||
caddy_data:
|
||||
```
|
||||
|
||||
Caddyfile:
|
||||
|
||||
```
|
||||
pdf.example.com {
|
||||
reverse_proxy bentopdf:8080
|
||||
header Cross-Origin-Opener-Policy "same-origin"
|
||||
header Cross-Origin-Embedder-Policy "require-corp"
|
||||
}
|
||||
```
|
||||
|
||||
## リソース制限
|
||||
|
||||
```yaml
|
||||
services:
|
||||
bentopdf:
|
||||
image: ghcr.io/alam00000/bentopdf-simple:latest
|
||||
deploy:
|
||||
resources:
|
||||
limits:
|
||||
cpus: '1'
|
||||
memory: 512M
|
||||
reservations:
|
||||
cpus: '0.25'
|
||||
memory: 128M
|
||||
```
|
||||
|
||||
## Podman Quadlet(Systemd連携)
|
||||
|
||||
[Quadlet](https://docs.podman.io/en/latest/markdown/podman-systemd.unit.5.html)を使うと、Podmanコンテナをsystemdサービスとして実行できます。Linuxシステムでの本番デプロイに最適です。
|
||||
|
||||
### 基本的なQuadletのセットアップ
|
||||
|
||||
コンテナユニットファイルを `~/.config/containers/systemd/bentopdf.container`(ユーザー)または `/etc/containers/systemd/bentopdf.container`(システム)に作成します。
|
||||
|
||||
```ini
|
||||
[Unit]
|
||||
Description=BentoPDF - Privacy-first PDF toolkit
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Container]
|
||||
Image=ghcr.io/alam00000/bentopdf-simple:latest
|
||||
ContainerName=bentopdf
|
||||
PublishPort=3000:8080
|
||||
AutoUpdate=registry
|
||||
|
||||
[Service]
|
||||
Restart=always
|
||||
TimeoutStartSec=300
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
```
|
||||
|
||||
### 有効化と起動
|
||||
|
||||
```bash
|
||||
# Reload systemd to detect new unit
|
||||
systemctl --user daemon-reload
|
||||
|
||||
# Start the service
|
||||
systemctl --user start bentopdf
|
||||
|
||||
# Enable on boot
|
||||
systemctl --user enable bentopdf
|
||||
|
||||
# Check status
|
||||
systemctl --user status bentopdf
|
||||
|
||||
# View logs
|
||||
journalctl --user -u bentopdf -f
|
||||
```
|
||||
|
||||
> [!TIP]
|
||||
> システム全体にデプロイする場合は、`--user` フラグなしで `systemctl` を使い、ファイルを `/etc/containers/systemd/` に置いてください。
|
||||
|
||||
### ヘルスチェック付きのQuadlet
|
||||
|
||||
```ini
|
||||
[Unit]
|
||||
Description=BentoPDF with health monitoring
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Container]
|
||||
Image=ghcr.io/alam00000/bentopdf-simple:latest
|
||||
ContainerName=bentopdf
|
||||
PublishPort=3000:8080
|
||||
AutoUpdate=registry
|
||||
HealthCmd=wget --spider -q http://localhost:8080 || exit 1
|
||||
HealthInterval=30s
|
||||
HealthTimeout=10s
|
||||
HealthRetries=3
|
||||
|
||||
[Service]
|
||||
Restart=always
|
||||
TimeoutStartSec=300
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
```
|
||||
|
||||
### Quadletによる自動更新
|
||||
|
||||
Podmanは、新しいイメージが利用可能になると、コンテナを自動的に更新できます。
|
||||
|
||||
```bash
|
||||
# Enable auto-update timer
|
||||
systemctl --user enable --now podman-auto-update.timer
|
||||
|
||||
# Check for updates manually
|
||||
podman auto-update
|
||||
|
||||
# Dry run (check without updating)
|
||||
podman auto-update --dry-run
|
||||
```
|
||||
|
||||
### Quadletのネットワーク設定
|
||||
|
||||
カスタムのネットワーク設定には、ネットワークファイル `bentopdf.network` を作成します。
|
||||
|
||||
```ini
|
||||
[Network]
|
||||
Subnet=10.89.0.0/24
|
||||
Gateway=10.89.0.1
|
||||
```
|
||||
|
||||
続いて、コンテナファイルでそれを参照します。
|
||||
|
||||
```ini
|
||||
[Container]
|
||||
Image=ghcr.io/alam00000/bentopdf-simple:latest
|
||||
ContainerName=bentopdf
|
||||
PublishPort=3000:8080
|
||||
Network=bentopdf.network
|
||||
```
|
||||
|
||||
## 更新
|
||||
|
||||
```bash
|
||||
# Pull latest image
|
||||
docker compose pull
|
||||
|
||||
# Recreate container
|
||||
docker compose up -d
|
||||
```
|
||||
@@ -0,0 +1,266 @@
|
||||
# Hostingerにデプロイする
|
||||
|
||||
[Hostinger](https://hostinger.com)は人気のある共有ホスティングプロバイダーです。このガイドでは、Hostingerの共有ホスティングにBentoPDFをデプロイする方法を説明します。
|
||||
|
||||
## 前提条件
|
||||
|
||||
- ファイルマネージャーにアクセスできるHostingerのホスティングプラン
|
||||
- ビルド用にローカルにインストールされたNode.js
|
||||
|
||||
## ステップ1:プロジェクトをビルドする
|
||||
|
||||
```bash
|
||||
git clone https://github.com/alam00000/bentopdf.git
|
||||
cd bentopdf
|
||||
npm install
|
||||
npm run build
|
||||
```
|
||||
|
||||
ビルドされたファイルは `dist` フォルダに出力されます。
|
||||
|
||||
## ステップ2:Hostingerにアップロードする
|
||||
|
||||
### ルートドメインへのデプロイ
|
||||
|
||||
1. Hostingerのアカウントにログインします
|
||||
2. **ファイルマネージャー** → **public_html** に移動します
|
||||
3. 既存のファイルをすべて**削除**します(必要ならバックアップしてください)
|
||||
4. ローカルの `dist` フォルダの中身をすべて `public_html` に**アップロード**します
|
||||
|
||||
### サブディレクトリへのデプロイ
|
||||
|
||||
サブディレクトリ(例:`yourdomain.com/pdf-tools/`)にデプロイする場合:
|
||||
|
||||
1. 正しいベースURLを指定してビルドします。
|
||||
|
||||
```bash
|
||||
BASE_URL=/pdf-tools/ npm run build
|
||||
```
|
||||
|
||||
2. Hostingerにフォルダを作成します。
|
||||
- **ファイルマネージャー** → **public_html** に移動します
|
||||
- 新しいフォルダ `pdf-tools` を作成します
|
||||
3. `dist` の中身をすべて `public_html/pdf-tools/` にアップロードします
|
||||
|
||||
## ステップ3:.htaccessファイルを作成する
|
||||
|
||||
デプロイ先フォルダのルート(`public_html` または `public_html/pdf-tools/`)に `.htaccess` ファイルを作成します。
|
||||
|
||||
::: warning 重要
|
||||
サブディレクトリにデプロイする場合は、`RewriteBase /` を `RewriteBase /pdf-tools/`(またはフォルダ名)に変更してください。
|
||||
:::
|
||||
|
||||
```apache
|
||||
RewriteEngine On
|
||||
RewriteBase /
|
||||
|
||||
# ============================================
|
||||
# 1. SECURITY HEADERS (CRITICAL FOR WASM)
|
||||
# ============================================
|
||||
<IfModule mod_headers.c>
|
||||
Header always set X-Frame-Options "SAMEORIGIN"
|
||||
Header always set X-Content-Type-Options "nosniff"
|
||||
Header always set X-XSS-Protection "1; mode=block"
|
||||
Header always set Referrer-Policy "strict-origin-when-cross-origin"
|
||||
Header always set Permissions-Policy "geolocation=(), microphone=(), camera=()"
|
||||
|
||||
# REQUIRED for soffice.js (SharedArrayBuffer)
|
||||
Header always set Cross-Origin-Opener-Policy "same-origin"
|
||||
Header always set Cross-Origin-Embedder-Policy "require-corp"
|
||||
</IfModule>
|
||||
|
||||
# ============================================
|
||||
# 2. BROWSER CACHING
|
||||
# ============================================
|
||||
<IfModule mod_expires.c>
|
||||
ExpiresActive On
|
||||
ExpiresByType image/jpeg "access plus 1 year"
|
||||
ExpiresByType image/png "access plus 1 year"
|
||||
ExpiresByType image/gif "access plus 1 year"
|
||||
ExpiresByType image/webp "access plus 1 year"
|
||||
ExpiresByType image/svg+xml "access plus 1 year"
|
||||
ExpiresByType image/x-icon "access plus 1 year"
|
||||
ExpiresByType font/woff2 "access plus 1 year"
|
||||
ExpiresByType font/woff "access plus 1 year"
|
||||
ExpiresByType font/ttf "access plus 1 year"
|
||||
ExpiresByType text/css "access plus 1 month"
|
||||
ExpiresByType application/javascript "access plus 1 month"
|
||||
ExpiresByType application/wasm "access plus 1 year"
|
||||
ExpiresByType application/gzip "access plus 1 year"
|
||||
ExpiresByType text/html "access plus 0 seconds"
|
||||
</IfModule>
|
||||
|
||||
# ============================================
|
||||
# 3. COMPRESSION (STANDARD)
|
||||
# ============================================
|
||||
# Prevent server from double-compressing files
|
||||
SetEnvIfNoCase Request_URI "\.gz$" no-gzip
|
||||
SetEnvIfNoCase Request_URI "\.br$" no-gzip
|
||||
SetEnvIfNoCase Request_URI "\.wasm$" no-gzip
|
||||
|
||||
<IfModule mod_deflate.c>
|
||||
AddOutputFilterByType DEFLATE text/plain
|
||||
AddOutputFilterByType DEFLATE text/html
|
||||
AddOutputFilterByType DEFLATE text/xml
|
||||
AddOutputFilterByType DEFLATE text/css
|
||||
AddOutputFilterByType DEFLATE application/xml
|
||||
AddOutputFilterByType DEFLATE application/xhtml+xml
|
||||
AddOutputFilterByType DEFLATE application/rss+xml
|
||||
AddOutputFilterByType DEFLATE application/javascript
|
||||
AddOutputFilterByType DEFLATE application/x-javascript
|
||||
AddOutputFilterByType DEFLATE application/json
|
||||
AddOutputFilterByType DEFLATE image/svg+xml
|
||||
AddOutputFilterByType DEFLATE font/woff
|
||||
AddOutputFilterByType DEFLATE font/ttf
|
||||
</IfModule>
|
||||
|
||||
# ============================================
|
||||
# 4. MIME TYPES & SPECIAL FILE HANDLING
|
||||
# ============================================
|
||||
AddType application/javascript .js .mjs
|
||||
AddType application/wasm .wasm
|
||||
AddType font/woff2 .woff2
|
||||
AddType font/woff .woff
|
||||
AddType image/webp .webp
|
||||
|
||||
# Handle soffice.wasm.gz correctly
|
||||
<FilesMatch "soffice\.wasm\.gz$">
|
||||
ForceType application/wasm
|
||||
Header set Content-Encoding "gzip"
|
||||
Header set Cross-Origin-Resource-Policy "cross-origin"
|
||||
Header append Vary Accept-Encoding
|
||||
</FilesMatch>
|
||||
|
||||
# Handle data.gz
|
||||
<FilesMatch "soffice\.data\.gz$">
|
||||
ForceType application/octet-stream
|
||||
Header set Content-Encoding "gzip"
|
||||
Header append Vary Accept-Encoding
|
||||
</FilesMatch>
|
||||
|
||||
# ============================================
|
||||
# 5. REDIRECTS & ROUTING
|
||||
# ============================================
|
||||
# Canonical WWW (update domain as needed)
|
||||
RewriteCond %{HTTP_HOST} ^bentopdf\.com [NC]
|
||||
RewriteRule ^(.*)$ https://www.bentopdf.com/$1 [L,R=301]
|
||||
|
||||
# Force HTTPS
|
||||
RewriteCond %{HTTPS} off
|
||||
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
|
||||
|
||||
# Remove trailing slash (except for language root directories)
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteCond %{REQUEST_URI} !^/(de|es|zh|zh-TW|vi|it|id|tr|fr|pt)/$
|
||||
RewriteCond %{REQUEST_URI} (.+)/$
|
||||
RewriteRule ^ %1 [R=301,L]
|
||||
|
||||
# Existing files/dirs - serve directly
|
||||
RewriteCond %{REQUEST_FILENAME} -f [OR]
|
||||
RewriteCond %{REQUEST_FILENAME} -d
|
||||
RewriteRule ^ - [L]
|
||||
|
||||
# ============================================
|
||||
# 5.1. LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root (for SEO consistency)
|
||||
RewriteRule ^en/?$ / [R=301,L]
|
||||
RewriteRule ^en/(.+)$ /$1 [R=301,L]
|
||||
|
||||
# Language prefix root (e.g., /de/ -> /de/index.html)
|
||||
RewriteCond %{DOCUMENT_ROOT}/$1/index.html -f
|
||||
RewriteRule ^(de|es|zh|zh-TW|vi|it|id|tr|fr|pt)/?$ /$1/index.html [L]
|
||||
|
||||
# Language prefix with path (e.g., /de/merge-pdf -> /de/merge-pdf.html)
|
||||
RewriteCond %{DOCUMENT_ROOT}/$1/$2.html -f
|
||||
RewriteRule ^(de|es|zh|zh-TW|vi|it|id|tr|fr|pt)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# 5.5. DOCS ROUTING (VitePress)
|
||||
# ============================================
|
||||
RewriteCond %{REQUEST_URI} ^/docs
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME}\.html -f
|
||||
RewriteRule ^(.*)$ $1.html [L]
|
||||
|
||||
# ============================================
|
||||
# 6. ADD .HTML EXTENSION IF FILE EXISTS (ROOT LEVEL ONLY)
|
||||
# ============================================
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
RewriteRule ^([^/]+)$ $1.html [L]
|
||||
|
||||
# ============================================
|
||||
# 7. ERROR PAGES
|
||||
# ============================================
|
||||
ErrorDocument 404 /404.html
|
||||
```
|
||||
|
||||
## サブディレクトリ用の.htaccessの例
|
||||
|
||||
`yourdomain.com/pdf-tools/` の場合は、次の行を更新します。
|
||||
|
||||
```apache
|
||||
RewriteBase /pdf-tools/
|
||||
|
||||
# ... (same content as above, but update paths) ...
|
||||
|
||||
# Language prefix root
|
||||
RewriteCond %{DOCUMENT_ROOT}/pdf-tools/$1/index.html -f
|
||||
RewriteRule ^(de|es|zh|zh-TW|vi|it|id|tr|fr|pt)/?$ /pdf-tools/$1/index.html [L]
|
||||
|
||||
# Language prefix with path
|
||||
RewriteCond %{DOCUMENT_ROOT}/pdf-tools/$1/$2.html -f
|
||||
RewriteRule ^(de|es|zh|zh-TW|vi|it|id|tr|fr|pt)/([^/]+)/?$ /pdf-tools/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
RewriteRule ^([^/]+)$ $1.html [L]
|
||||
|
||||
ErrorDocument 404 /pdf-tools/404.html
|
||||
```
|
||||
|
||||
## トラブルシューティング
|
||||
|
||||
### WASMファイルが読み込まれない
|
||||
|
||||
`.htaccess` でMIMEタイプが正しく設定されていることを確認してください。
|
||||
|
||||
```apache
|
||||
AddType application/wasm .wasm
|
||||
```
|
||||
|
||||
### LibreOfficeツールが動作しない
|
||||
|
||||
SharedArrayBufferにはセキュリティヘッダーが不可欠です。
|
||||
|
||||
```apache
|
||||
Header always set Cross-Origin-Opener-Policy "same-origin"
|
||||
Header always set Cross-Origin-Embedder-Policy "require-corp"
|
||||
```
|
||||
|
||||
ヘッダーが適用されない場合は、Hostingerのサポートに連絡して `mod_headers` を有効にしてもらってください。
|
||||
|
||||
### ページを更新すると404エラーになる
|
||||
|
||||
`.html` 拡張子のルールと言語ルートが正しく設定されていることを確認してください。BentoPDFはSPAのルーティングではなく、静的なHTMLファイルを使います。
|
||||
|
||||
```apache
|
||||
# Language routes serve actual files from language directories
|
||||
RewriteCond %{DOCUMENT_ROOT}/$1/$2.html -f
|
||||
RewriteRule ^(de|es|zh|zh-TW|vi|it|id|tr|fr|pt)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# Root level pages
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
RewriteRule ^([^/]+)$ $1.html [L]
|
||||
```
|
||||
|
||||
### ファイルアップロードの上限
|
||||
|
||||
Hostingerにはファイルサイズの上限がある場合があります。一括アップロードに失敗する場合は、WASMファイルを別途アップロードしてください。
|
||||
@@ -0,0 +1,538 @@
|
||||
# セルフホスティングガイド
|
||||
|
||||
BentoPDF は、自分のインフラでセルフホストできます。このガイドでは、さまざまなデプロイ方法を紹介します。
|
||||
|
||||
## Docker / Podman でクイックスタート
|
||||
|
||||
BentoPDF をセルフホストする最も手早い方法です。
|
||||
|
||||
> [!TIP]
|
||||
> BentoPDF には 2 種類のビルドがあります。
|
||||
>
|
||||
> - **セルフホスト版ビルド**: `ghcr.io/alam00000/bentopdf-simple:latest`。マーケティング用の要素(ヒーロー、FAQ、お客様の声、フッター)**なし**で、すべての PDF ツールを利用できます。社内、チーム、組織向けのデプロイにはこちらを使ってください。機能を削減した「ライト」版では**ありません**。
|
||||
> - **商用版ビルド**: `ghcr.io/alam00000/bentopdf:latest`。マーケティングサイト全体を含み、bentopdf.com 自体や、一般公開向けのデプロイを行う商用ライセンス保有者が使用します。
|
||||
>
|
||||
> 迷った場合は、セルフホスト版ビルドを取得してください。
|
||||
|
||||
> [!IMPORTANT]
|
||||
> Office ファイルの変換には `SharedArrayBuffer` が必要です。そのため、アプリはクロスオリジン分離され、かつセキュアコンテキストから配信される必要があります。公式イメージは必要な COOP/COEP ヘッダーをすでに送信していますが、`http://192.168.x.x` のようなプレーン HTTP のローカルネットワークオリジンでは、ブラウザーが `SharedArrayBuffer` を無効にします。
|
||||
>
|
||||
> `http://localhost` は、同じデバイス上でのテストにのみ使用してください。ユーザーが LAN の IP やホスト名で BentoPDF にアクセスする場合は、HTTPS で終端してください。
|
||||
|
||||
```bash
|
||||
# Docker
|
||||
docker run -d -p 3000:8080 ghcr.io/alam00000/bentopdf-simple:latest
|
||||
|
||||
# Podman
|
||||
podman run -d -p 3000:8080 ghcr.io/alam00000/bentopdf-simple:latest
|
||||
```
|
||||
|
||||
または、Docker Compose / Podman Compose を使います。
|
||||
|
||||
```yaml
|
||||
# docker-compose.yml
|
||||
services:
|
||||
bentopdf:
|
||||
image: ghcr.io/alam00000/bentopdf-simple:latest
|
||||
ports:
|
||||
- '3000:8080'
|
||||
restart: unless-stopped
|
||||
```
|
||||
|
||||
```bash
|
||||
# Docker Compose
|
||||
docker compose up -d
|
||||
|
||||
# Podman Compose
|
||||
podman-compose up -d
|
||||
```
|
||||
|
||||
## Podman Quadlet(Linux Systemd)
|
||||
|
||||
BentoPDF を systemd サービスとして実行します。`~/.config/containers/systemd/bentopdf.container` を作成します。
|
||||
|
||||
```ini
|
||||
[Container]
|
||||
Image=ghcr.io/alam00000/bentopdf-simple:latest
|
||||
ContainerName=bentopdf
|
||||
PublishPort=3000:8080
|
||||
AutoUpdate=registry
|
||||
|
||||
[Service]
|
||||
Restart=always
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
```
|
||||
|
||||
```bash
|
||||
systemctl --user daemon-reload
|
||||
systemctl --user enable --now bentopdf
|
||||
```
|
||||
|
||||
Quadlet の詳しいドキュメントは、[Docker デプロイガイド](/ja/self-hosting/docker)を参照してください。
|
||||
|
||||
## ソースからビルドする
|
||||
|
||||
```bash
|
||||
# Clone and build
|
||||
git clone https://github.com/alam00000/bentopdf.git
|
||||
cd bentopdf
|
||||
npm install
|
||||
npm run build
|
||||
|
||||
# The built files are in the `dist` folder
|
||||
```
|
||||
|
||||
## 設定オプション
|
||||
|
||||
### セルフホスト版ビルド(シンプルモード)
|
||||
|
||||
セルフホスト版ビルド(`bentopdf-simple` イメージ。シンプルモードとも呼ばれます)は、商用版ビルドと**機能的に同一**です。すべての PDF ツールが含まれ、同じように動作します。bentopdf.com 自体や、商用の一般公開向けデプロイでのみ意味を持つマーケティング用の要素を非表示にしているだけです。**機能を削減した「ライト」版ではありません。**
|
||||
|
||||
**セルフホスト版ビルドで非表示になるもの**(見た目のみで、PDF 機能は削除されません):
|
||||
|
||||
- ナビゲーションバー、ヒーローセクション、機能セクション、FAQ、お客様の声、フッター
|
||||
- ページタイトルが「PDFツール」に更新されます
|
||||
|
||||
**セルフホスト版ビルドで維持されるもの**(実際に PDF の処理を行うすべて):
|
||||
|
||||
- すべての PDF ツール(結合、分割、編集、署名、OCR、Office 変換など)
|
||||
- カスタムブランディングのサポート、すべてのビルド時および実行時の設定
|
||||
|
||||
商用版ビルド(`ghcr.io/alam00000/bentopdf:latest`)は bentopdf.com 自体を動かしているもので、一般公開向けのデプロイを行う商用ライセンス保有者が使用します。社内ツールでは意味をなさない、ヒーロー、FAQ、お客様の声、フッターが追加されています。
|
||||
|
||||
チーム、組織、または社内ツールとして BentoPDF をセルフホストする場合は、セルフホスト版ビルドを取得してください。
|
||||
|
||||
```bash
|
||||
# Use the pre-built image (recommended)
|
||||
docker run -p 3000:8080 ghcr.io/alam00000/bentopdf-simple:latest
|
||||
|
||||
# Or build it yourself
|
||||
SIMPLE_MODE=true npm run build
|
||||
```
|
||||
|
||||
詳細は [SIMPLE_MODE.md](https://github.com/alam00000/bentopdf/blob/main/SIMPLE_MODE.md) を参照してください。
|
||||
|
||||
### 商用版ビルド(独自ブランドでの一般公開向けデプロイ)
|
||||
|
||||
商用版ビルド(`bentopdf` イメージ。`-simple` サフィックスなし)は、bentopdf.com 自体を動かしているものです。すべての PDF ツールに加えて、マーケティングサイト全体(ヒーロー、機能、FAQ、お客様の声、フッター)が含まれます。**BentoPDF を独自ブランドの一般公開向け PDF サービスとしてデプロイ**したい場合に、このビルドを使用します。たとえば次のようなケースです。
|
||||
|
||||
- 自分のドメインで、エンドユーザー向けのホスト型 SaaS として BentoPDF を運用する
|
||||
- ツールだけでなく、ランディングページの体験(マーケティングセクション + ツール)が欲しい
|
||||
- 商用ライセンス保有者として、商用製品に BentoPDF を組み込む
|
||||
|
||||
**そのまま実行する**(BentoPDF のブランディングのまま。ビルドのプレビューに便利です):
|
||||
|
||||
```bash
|
||||
docker run -p 3000:8080 ghcr.io/alam00000/bentopdf:latest
|
||||
```
|
||||
|
||||
**独自のブランドでビルドする**(典型的な商用ワークフロー):
|
||||
|
||||
```bash
|
||||
docker build \
|
||||
--build-arg VITE_BRAND_NAME="AcmePDF" \
|
||||
--build-arg VITE_BRAND_LOGO="images/acme-logo.svg" \
|
||||
--build-arg VITE_FOOTER_TEXT="© 2026 Acme Corp. All rights reserved." \
|
||||
-t acmepdf .
|
||||
|
||||
docker run -p 3000:8080 acmepdf
|
||||
```
|
||||
|
||||
その他のビルド時オプション(`BASE_URL`、`VITE_DEFAULT_LANGUAGE`、`DISABLE_TOOLS`、WASM URL の上書きなど)も、セルフホスト版ビルドと同じように使えます。
|
||||
|
||||
::: warning ライセンス
|
||||
商用版ビルドの実行は、BentoPDF の 2 つのライセンスオプションのどちらでも許可されています。
|
||||
|
||||
- **AGPL-3.0**(無料): ブランディングの変更や周辺のビジネスロジックを含め、デプロイのソースコード全体を AGPL の下で公開する場合に許可されます。
|
||||
- **商用ライセンス**($79 の買い切り): ブランディングのフォークやビジネスコードをオープンソース化しない、クローズドソース/プロプライエタリなデプロイに必要です。
|
||||
|
||||
詳しい比較は[ライセンスのページ](https://www.bentopdf.com/licensing)を参照してください。AGPL ライセンスの WASM モジュール(PyMuPDF、Ghostscript、CoherentPDF)は実行時に CDN から読み込まれるため、イメージには含まれず、ライセンス上の立場も変わりません。
|
||||
:::
|
||||
|
||||
### ベース URL
|
||||
|
||||
サブディレクトリにデプロイします。
|
||||
|
||||
```bash
|
||||
BASE_URL=/pdf-tools/ npm run build
|
||||
```
|
||||
|
||||
### カスタムブランディング
|
||||
|
||||
デフォルトの BentoPDF のロゴ、名前、フッターテキストを、ビルド時に独自のものへ置き換えます。
|
||||
|
||||
| 変数 | 説明 | デフォルト |
|
||||
| ------------------ | ---------------------------------------- | --------------------------------------- |
|
||||
| `VITE_BRAND_NAME` | ヘッダーとフッターに表示されるブランド名 | `BentoPDF` |
|
||||
| `VITE_BRAND_LOGO` | `public/` からの相対ロゴパス | `images/favicon-no-bg.svg` |
|
||||
| `VITE_FOOTER_TEXT` | カスタムのフッター/著作権テキスト | `© 2026 BentoPDF. All rights reserved.` |
|
||||
|
||||
```bash
|
||||
# Place your logo in public/, then build
|
||||
VITE_BRAND_NAME="AcmePDF" \
|
||||
VITE_BRAND_LOGO="images/acme-logo.svg" \
|
||||
VITE_FOOTER_TEXT="© 2026 Acme Corp. Internal use only." \
|
||||
npm run build
|
||||
```
|
||||
|
||||
または Docker を使います。
|
||||
|
||||
```bash
|
||||
docker build \
|
||||
--build-arg VITE_BRAND_NAME="AcmePDF" \
|
||||
--build-arg VITE_BRAND_LOGO="images/acme-logo.svg" \
|
||||
--build-arg VITE_FOOTER_TEXT="© 2026 Acme Corp. Internal use only." \
|
||||
-t acmepdf .
|
||||
```
|
||||
|
||||
ブランディングはフルモードとシンプルモードの両方で機能し、他のすべてのビルド時オプション(`BASE_URL`、`SIMPLE_MODE`、`VITE_DEFAULT_LANGUAGE`)と組み合わせられます。
|
||||
|
||||
### 特定のツールを無効にする
|
||||
|
||||
コンプライアンスやセキュリティのために、個別のツールを非表示にします。無効にしたツールは、ホームページ、検索、ショートカット、ワークフロービルダー、直接の URL アクセスから削除されます。
|
||||
|
||||
ツール ID は、`.html` を除いたページの URL です。任意のツールを開いて URL を確認してください(例: `edit-pdf`、`sign-pdf`、`encrypt-pdf`)。
|
||||
|
||||
**ビルド時**(バンドルに組み込まれます):
|
||||
|
||||
```bash
|
||||
DISABLE_TOOLS="edit-pdf,sign-pdf" npm run build
|
||||
```
|
||||
|
||||
**実行時**(再ビルド不要。`config.json` をマウントします):
|
||||
|
||||
```json
|
||||
{
|
||||
"disabledTools": ["edit-pdf", "sign-pdf"]
|
||||
}
|
||||
```
|
||||
|
||||
```bash
|
||||
docker run -d -p 3000:8080 \
|
||||
-v ./config.json:/usr/share/nginx/html/config.json:ro \
|
||||
ghcr.io/alam00000/bentopdf-simple:latest
|
||||
```
|
||||
|
||||
両方の方法を組み合わせることもできます。リストはマージされます。
|
||||
|
||||
PDF エディタ内の特定の機能(例: 墨消し)だけを、ツール全体を無効にせずに無効にすることもできます。`config.json` に `editorDisabledCategories` を追加します。カテゴリーの一覧は [Docker ガイド](/ja/self-hosting/docker#エディタ機能を無効にする)を参照してください。
|
||||
|
||||
## デプロイガイド
|
||||
|
||||
プラットフォームを選んでください。
|
||||
|
||||
- [Vercel](/ja/self-hosting/vercel)
|
||||
- [Netlify](/ja/self-hosting/netlify)
|
||||
- [Cloudflare Pages](/ja/self-hosting/cloudflare)
|
||||
- [AWS S3 + CloudFront](/ja/self-hosting/aws)
|
||||
- [Hostinger](/ja/self-hosting/hostinger)
|
||||
- [Nginx](/ja/self-hosting/nginx)
|
||||
- [Apache](/ja/self-hosting/apache)
|
||||
- [Docker](/ja/self-hosting/docker)
|
||||
- [Kubernetes](/ja/self-hosting/kubernetes)
|
||||
- [CORS Proxy](/ja/self-hosting/cors-proxy) - デジタル署名に必要です
|
||||
|
||||
## よくある問題
|
||||
|
||||
### Word / ODT / Excel / PowerPoint から PDF への変換がハングする(SharedArrayBuffer が利用できない)
|
||||
|
||||
**症状**: LibreOffice ベースの文書変換(Word、ODT、Excel、PowerPoint から PDF)が約 55% で止まる、または開始できません。ブラウザーのコンソールに次のように表示されることがあります。
|
||||
|
||||
> `ReferenceError: SharedArrayBuffer is not defined`
|
||||
|
||||
…または、`window.crossOriginIsolated` が `false` を返す、あるいは WASM のコンパイルで `expected magic word 00 61 73 6d, found 1f 8b 08 08` と報告されます。
|
||||
|
||||
**原因**: LibreOffice WASM には `SharedArrayBuffer` が必要で、ブラウザーはページが**クロスオリジン分離**され、かつ**セキュアコンテキスト**から配信されている場合にのみ、これを有効にします。つまり、次の 2 つの条件を満たす必要があります。
|
||||
|
||||
1. すべてのレスポンスに、次の両方のヘッダーが含まれていること。
|
||||
- `Cross-Origin-Embedder-Policy: require-corp`
|
||||
- `Cross-Origin-Opener-Policy: same-origin`
|
||||
2. ページが `https://...` または `http://localhost` から配信されていること。LAN IP(例: `http://192.168.x.x`)上のプレーン HTTP はセキュアとは見なされず、ブラウザーはそこで `SharedArrayBuffer` を無効にします。
|
||||
|
||||
`00 61 73 6d / 1f 8b 08 08` の不一致は別のサブ症状です。事前圧縮された `.wasm.gz` / `.data.gz` ファイルに `Content-Encoding: gzip` レスポンスヘッダーがないため、ブラウザーは展開された WASM ではなく、生の gzip バイト列を受け取っています。
|
||||
|
||||
**対処法**: 正確な設定は、各プラットフォームのデプロイガイドを参照してください。
|
||||
|
||||
- [Nginx →](/ja/self-hosting/nginx#word-odt-excel-から-pdf-への変換が動作しない)
|
||||
- [Apache →](/ja/self-hosting/apache#word-odt-excelからpdfへの変換が動作しない)
|
||||
- [AWS S3 + CloudFront →](/ja/self-hosting/aws#ステップ3b-レスポンスヘッダーポリシー-libreoffice-wasmに必須)
|
||||
- [Cloudflare Pages →](/ja/self-hosting/cloudflare#設定ファイル)(`_headers` ファイル)
|
||||
- [Netlify →](/ja/self-hosting/netlify#word-odt-excel-から-pdf-への変換が-55-で止まる)(`netlify.toml`)
|
||||
- [Vercel →](/ja/self-hosting/vercel#word-odt-excel-から-pdf-への変換が動作しない)(`vercel.json`)
|
||||
- [Hostinger →](/ja/self-hosting/hostinger#libreofficeツールが動作しない)(`.htaccess`)
|
||||
- [Kubernetes →](/ja/self-hosting/kubernetes#sharedarraybuffer-ヘッダーが引き続き機能することを確認する-ingress-gateway)
|
||||
- **Docker**: 同梱の nginx 設定によって自動的に処理されるため、操作は不要です。
|
||||
|
||||
**確認**: 任意の BentoPDF ページで DevTools のコンソールを開き、次を実行します。
|
||||
|
||||
```js
|
||||
console.log(window.crossOriginIsolated); // should be true
|
||||
console.log(typeof SharedArrayBuffer); // should be "function"
|
||||
```
|
||||
|
||||
ページが HTTPS または `http://localhost` で、かつすべてのレスポンスに COEP/COOP ヘッダーが含まれていれば、両方のチェックに合格します。`http://192.168.x.x` などのループバック以外の HTTP オリジンを使っている場合は、HTTPS で終端してください。ヘッダーだけで解決する方法はありません。
|
||||
|
||||
### `.mjs` ファイルが `application/octet-stream` として配信される
|
||||
|
||||
**症状**: PDFへ署名 / Form Filler など一部のツールで、ビューアが空白になる、または読み込みに失敗します。ブラウザーのコンソールに次のように表示されます。
|
||||
|
||||
> `Failed to load module script: The server responded with a non-JavaScript MIME type of "application/octet-stream". Strict MIME type checking is enforced for module scripts per HTML spec.`
|
||||
|
||||
**原因**: Web サーバーまたはリバースプロキシに、`.mjs` ファイル(内蔵の PDF ビューアは、この拡張子で ES モジュールを同梱しています)の MIME タイプのマッピングがありません。多くの標準的なサーバー設定では、認識できない拡張子はデフォルトで `application/octet-stream` になり、ブラウザーはそれを ES モジュールとして実行することを拒否します。
|
||||
|
||||
**対処法**: 正確なスニペットは、各プラットフォームのデプロイガイドを参照してください。
|
||||
|
||||
- [Nginx →](/ja/self-hosting/nginx#pdfへ署名-または-form-filler-で空白のビューアが表示される-mjs-の-mime-エラー)
|
||||
- [Apache →](/ja/self-hosting/apache#pdfへ署名またはフォーム入力で空白のビューアが表示される-mjs-のmimeエラー)
|
||||
- [AWS S3 + CloudFront →](/ja/self-hosting/aws#ステップ2-ビルドしてアップロードする)(`aws s3 cp ... --include "*.mjs"` を参照)
|
||||
- [Kubernetes →](/ja/self-hosting/kubernetes#mjs-の-mime-タイプエラー-pdfへ署名-form-filler-の-iframe-が空白になる)
|
||||
- **Docker、Vercel、Netlify、Cloudflare Pages、Hostinger**: 自動的に処理されるため、操作は不要です。
|
||||
|
||||
**確認**: DevTools → Network タブを開き、失敗している `.mjs` リクエストを見つけて、`Content-Type` レスポンスヘッダーを確認します。`application/javascript` になっているはずです。それでも `application/octet-stream` の場合は、外側のリバースプロキシや CDN がタイプを再判定している可能性があります。配信経路の各層を確認してください。
|
||||
|
||||
## WASM の設定(AGPL コンポーネント)
|
||||
|
||||
BentoPDF は、AGPL ライセンスの処理ライブラリをソースコードに**同梱していません**が、すべての機能がそのまま動作するよう、CDN の URL を**あらかじめ設定**しています。手動での設定は不要です。
|
||||
|
||||
::: tip デフォルトでゼロコンフィグ
|
||||
v2.0.0 以降、WASM モジュールは環境変数によって jsDelivr CDN から読み込まれるようあらかじめ設定されています。すべての高度な機能は、ユーザーが何も設定しなくてもすぐに使えます。
|
||||
:::
|
||||
|
||||
| コンポーネント | ライセンス | 機能 |
|
||||
| --------------- | ---------- | ---------------------------------------------- |
|
||||
| **PyMuPDF** | AGPL-3.0 | EPUB/MOBI/FB2/XPS の変換、画像の抽出、表の抽出 |
|
||||
| **Ghostscript** | AGPL-3.0 | PDF/A 変換、圧縮、傾き補正、ラスタライズ |
|
||||
| **CoherentPDF** | AGPL-3.0 | 目次、添付ファイル、しおり付きの PDF 結合 |
|
||||
|
||||
### デフォルトの環境変数
|
||||
|
||||
これらは `.env.production` に設定され、ビルドに組み込まれます。
|
||||
|
||||
```bash
|
||||
VITE_WASM_PYMUPDF_URL=https://cdn.jsdelivr.net/npm/@bentopdf/pymupdf-wasm@0.11.16/
|
||||
VITE_WASM_GS_URL=https://cdn.jsdelivr.net/npm/@bentopdf/gs-wasm@0.1.1/assets/
|
||||
VITE_WASM_CPDF_URL=https://cdn.jsdelivr.net/npm/coherentpdf@2.5.5/dist/
|
||||
VITE_TESSERACT_WORKER_URL=
|
||||
VITE_TESSERACT_CORE_URL=
|
||||
VITE_TESSERACT_LANG_URL=
|
||||
VITE_TESSERACT_AVAILABLE_LANGUAGES=
|
||||
VITE_OCR_FONT_BASE_URL=
|
||||
```
|
||||
|
||||
### WASM URL を上書きする
|
||||
|
||||
カスタムデプロイでは、ビルド時にデフォルトを上書きできます。
|
||||
|
||||
```bash
|
||||
# Via Docker build args
|
||||
docker build \
|
||||
--build-arg VITE_WASM_PYMUPDF_URL=https://your-server.com/pymupdf/ \
|
||||
--build-arg VITE_WASM_GS_URL=https://your-server.com/gs/ \
|
||||
--build-arg VITE_WASM_CPDF_URL=https://your-server.com/cpdf/ \
|
||||
--build-arg VITE_TESSERACT_WORKER_URL=https://your-server.com/ocr/worker.min.js \
|
||||
--build-arg VITE_TESSERACT_CORE_URL=https://your-server.com/ocr/core \
|
||||
--build-arg VITE_TESSERACT_LANG_URL=https://your-server.com/ocr/lang-data \
|
||||
--build-arg VITE_TESSERACT_AVAILABLE_LANGUAGES=eng,deu \
|
||||
--build-arg VITE_OCR_FONT_BASE_URL=https://your-server.com/ocr/fonts \
|
||||
-t bentopdf .
|
||||
|
||||
# Or via .env.production before building from source
|
||||
VITE_WASM_PYMUPDF_URL=https://your-server.com/pymupdf/ npm run build
|
||||
```
|
||||
|
||||
モジュールを完全に無効にするには(詳細設定からユーザーが手動で設定する必要があります)、その変数を空文字列に設定します。
|
||||
|
||||
OCR の場合は、すべての `VITE_TESSERACT_*` 変数を空のままにしてデフォルトのオンラインアセットを使うか、セルフホスト/オフライン OCR 用に worker/core/lang の URL をまとめて設定します。特定の OCR 言語のみをバンドルする場合は、`VITE_TESSERACT_AVAILABLE_LANGUAGES` にも同じカンマ区切りのコードを設定してください。これにより、UI にはインストール済みの言語のみが表示され、サポートされていない選択は説明付きのエラーで失敗します。完全オフラインで検索可能な PDF を出力するには、バンドルされた OCR フォントを配信する社内ディレクトリを `VITE_OCR_FONT_BASE_URL` にも設定してください。
|
||||
|
||||
ユーザーは、UI の **詳細設定** からいつでもこれらのデフォルトを上書きできます。ブラウザーに保存されたユーザーの上書き設定は、環境のデフォルトより優先されます。
|
||||
|
||||
### エアギャップ / オフラインデプロイ
|
||||
|
||||
インターネットにアクセスできないネットワーク(政府、医療、金融など)向けです。WASM の URL は**ビルド時に** JavaScript へ組み込まれ、実際の WASM ファイルは実行時に**ユーザーのブラウザー**がダウンロードします。そのため、インターネットに接続できるマシンですべてを準備してから、隔離されたネットワークへ転送する必要があります。
|
||||
|
||||
#### 自動化スクリプト(推奨)
|
||||
|
||||
付属の `prepare-airgap.sh` スクリプトが、WASM パッケージのダウンロード、Docker イメージのビルド、セットアップスクリプト付きの自己完結型バンドルの作成まで、プロセス全体を自動化します。
|
||||
|
||||
```bash
|
||||
git clone https://github.com/alam00000/bentopdf.git
|
||||
cd bentopdf
|
||||
|
||||
# Show supported OCR language codes (for --ocr-languages)
|
||||
bash scripts/prepare-airgap.sh --list-ocr-languages
|
||||
|
||||
# Search OCR language codes by name or abbreviation
|
||||
bash scripts/prepare-airgap.sh --search-ocr-language german
|
||||
|
||||
# Interactive mode — prompts for all options
|
||||
bash scripts/prepare-airgap.sh
|
||||
|
||||
# Or fully automated
|
||||
bash scripts/prepare-airgap.sh --wasm-base-url https://internal.example.com/wasm
|
||||
```
|
||||
|
||||
これにより、次のバンドルディレクトリが作成されます。
|
||||
|
||||
```
|
||||
bentopdf-airgap-bundle/
|
||||
bentopdf.tar # Docker image
|
||||
*.tgz # WASM packages (PyMuPDF, Ghostscript, CoherentPDF, Tesseract)
|
||||
tesseract-langdata/ # OCR traineddata files
|
||||
ocr-fonts/ # OCR text-layer font files
|
||||
setup.sh # Setup script for the air-gapped side
|
||||
README.md # Instructions
|
||||
```
|
||||
|
||||
USB、社内のアーティファクトリポジトリ、または承認された方法で、バンドルをエアギャップネットワークに転送します。その後、付属のセットアップスクリプトを実行します。
|
||||
|
||||
```bash
|
||||
cd bentopdf-airgap-bundle
|
||||
bash setup.sh
|
||||
```
|
||||
|
||||
セットアップスクリプトは、Docker イメージの読み込み、WASM ファイルの展開を行い、必要に応じてコンテナーを起動します。
|
||||
|
||||
**スクリプトのオプション:**
|
||||
|
||||
| フラグ | 説明 | デフォルト |
|
||||
| ------------------------------ | ------------------------------------------------------------------- | ---------------------------------------------- |
|
||||
| `--wasm-base-url <url>` | WASM を社内でホストする場所 | _(必須。指定がない場合は入力を求められます)_ |
|
||||
| `--image-name <name>` | Docker イメージのタグ | `bentopdf` |
|
||||
| `--output-dir <path>` | 出力するバンドルのディレクトリ | `./bentopdf-airgap-bundle` |
|
||||
| `--simple-mode` | シンプルモードを有効にする | オフ |
|
||||
| `--base-url <path>` | サブディレクトリのベース URL(例: `/pdf/`) | `/` |
|
||||
| `--language <code>` | デフォルトの UI 言語(例: `fr`、`de`) | _(なし)_ |
|
||||
| `--brand-name <name>` | カスタムのブランド名 | _(なし)_ |
|
||||
| `--brand-logo <path>` | `public/` からの相対ロゴパス | _(なし)_ |
|
||||
| `--footer-text <text>` | カスタムのフッターテキスト | _(なし)_ |
|
||||
| `--ocr-languages <list>` | バンドルする OCR 言語(カンマ区切り) | `eng` |
|
||||
| `--list-ocr-languages` | サポートされている OCR コードと名前を表示して終了する | オフ |
|
||||
| `--search-ocr-language <term>` | 名前または略称で OCR コードを検索する | オフ |
|
||||
| `--dockerfile <path>` | 使用する Dockerfile | `Dockerfile` |
|
||||
| `--skip-docker` | Docker のビルドとエクスポートをスキップする | オフ |
|
||||
| `--skip-wasm` | WASM のダウンロードをスキップする(既存の `.tgz` ファイルを再利用) | オフ |
|
||||
|
||||
対話式のプロンプトでは `list` と入力すると、サポートされているすべての Tesseract コードの一覧を表示でき、`search <term>` で一致するコードを検索できます(例: `search german`、`search chi`)。
|
||||
|
||||
::: warning 同一オリジンの要件
|
||||
WASM ファイルは、BentoPDF アプリと**同じオリジン**から配信する必要があります。Web ワーカーは `importScripts()` を使用しますが、これはスクリプトをクロスオリジンで読み込めません。たとえば、BentoPDF が `https://internal.example.com` で動作している場合、WASM のベース URL も `https://internal.example.com/wasm` にする必要があります。
|
||||
:::
|
||||
|
||||
#### 手動の手順
|
||||
|
||||
<details>
|
||||
<summary>スクリプトを使わずに手動で行う場合</summary>
|
||||
|
||||
**ステップ 1: WASM と OCR のパッケージをダウンロードする**(インターネットに接続できるマシンで)
|
||||
|
||||
```bash
|
||||
npm pack @bentopdf/pymupdf-wasm@0.11.14
|
||||
npm pack @bentopdf/gs-wasm
|
||||
npm pack coherentpdf
|
||||
npm pack tesseract.js@7.0.0
|
||||
npm pack tesseract.js-core@7.0.0
|
||||
mkdir -p tesseract-langdata
|
||||
curl -fsSL https://cdn.jsdelivr.net/npm/@tesseract.js-data/eng/4.0.0_best_int/eng.traineddata.gz -o tesseract-langdata/eng.traineddata.gz
|
||||
mkdir -p ocr-fonts
|
||||
curl -fsSL https://raw.githack.com/googlefonts/noto-fonts/main/hinted/ttf/NotoSans/NotoSans-Regular.ttf -o ocr-fonts/NotoSans-Regular.ttf
|
||||
```
|
||||
|
||||
**ステップ 2: 社内 URL を指定して Docker イメージをビルドする**
|
||||
|
||||
```bash
|
||||
git clone https://github.com/alam00000/bentopdf.git
|
||||
cd bentopdf
|
||||
|
||||
docker build \
|
||||
--build-arg VITE_WASM_PYMUPDF_URL=https://internal-server.example.com/wasm/pymupdf/ \
|
||||
--build-arg VITE_WASM_GS_URL=https://internal-server.example.com/wasm/gs/ \
|
||||
--build-arg VITE_WASM_CPDF_URL=https://internal-server.example.com/wasm/cpdf/ \
|
||||
--build-arg VITE_TESSERACT_WORKER_URL=https://internal-server.example.com/wasm/ocr/worker.min.js \
|
||||
--build-arg VITE_TESSERACT_CORE_URL=https://internal-server.example.com/wasm/ocr/core \
|
||||
--build-arg VITE_TESSERACT_LANG_URL=https://internal-server.example.com/wasm/ocr/lang-data \
|
||||
--build-arg VITE_OCR_FONT_BASE_URL=https://internal-server.example.com/wasm/ocr/fonts \
|
||||
-t bentopdf .
|
||||
```
|
||||
|
||||
**ステップ 3: Docker イメージをエクスポートする**
|
||||
|
||||
```bash
|
||||
docker save bentopdf -o bentopdf.tar
|
||||
```
|
||||
|
||||
**ステップ 4: エアギャップネットワークへ転送する**
|
||||
|
||||
USB、社内のアーティファクトリポジトリ、または承認された転送方法でコピーします。
|
||||
|
||||
- `bentopdf.tar`: Docker イメージ
|
||||
- ステップ 1 の 5 つの `.tgz` WASM/OCR パッケージ
|
||||
- ステップ 1 の `tesseract-langdata/` ディレクトリ
|
||||
- ステップ 1 の `ocr-fonts/` ディレクトリ
|
||||
|
||||
**ステップ 5: エアギャップネットワーク内でセットアップする**
|
||||
|
||||
```bash
|
||||
# Load the Docker image
|
||||
docker load -i bentopdf.tar
|
||||
|
||||
# Extract WASM packages
|
||||
mkdir -p ./wasm/pymupdf ./wasm/gs ./wasm/cpdf ./wasm/ocr/core ./wasm/ocr/lang-data ./wasm/ocr/fonts
|
||||
tar xzf bentopdf-pymupdf-wasm-0.11.14.tgz -C ./wasm/pymupdf --strip-components=1
|
||||
tar xzf bentopdf-gs-wasm-*.tgz -C ./wasm/gs --strip-components=1
|
||||
tar xzf coherentpdf-*.tgz -C ./wasm/cpdf --strip-components=1
|
||||
TEMP_TESS=$(mktemp -d)
|
||||
tar xzf tesseract.js-7.0.0.tgz -C "$TEMP_TESS"
|
||||
cp "$TEMP_TESS/package/dist/worker.min.js" ./wasm/ocr/worker.min.js
|
||||
rm -rf "$TEMP_TESS"
|
||||
tar xzf tesseract.js-core-7.0.0.tgz -C ./wasm/ocr/core --strip-components=1
|
||||
cp ./tesseract-langdata/*.traineddata.gz ./wasm/ocr/lang-data/
|
||||
cp ./ocr-fonts/* ./wasm/ocr/fonts/
|
||||
|
||||
# Run BentoPDF
|
||||
docker run -d -p 3000:8080 --restart unless-stopped bentopdf
|
||||
```
|
||||
|
||||
ステップ 2 で設定した URL でファイルにアクセスできることを確認してください。`.../ocr/worker.min.js`、`.../ocr/core`、`.../ocr/lang-data`、`.../ocr/fonts` も含まれます。
|
||||
|
||||
</details>
|
||||
|
||||
::: info Docker ではなくソースからビルドする場合
|
||||
`npm run build` を実行する前に、`.env.production` に変数を設定します。
|
||||
|
||||
```bash
|
||||
VITE_WASM_PYMUPDF_URL=https://internal-server.example.com/wasm/pymupdf/
|
||||
VITE_WASM_GS_URL=https://internal-server.example.com/wasm/gs/
|
||||
VITE_WASM_CPDF_URL=https://internal-server.example.com/wasm/cpdf/
|
||||
VITE_TESSERACT_WORKER_URL=https://internal-server.example.com/wasm/ocr/worker.min.js
|
||||
VITE_TESSERACT_CORE_URL=https://internal-server.example.com/wasm/ocr/core
|
||||
VITE_TESSERACT_LANG_URL=https://internal-server.example.com/wasm/ocr/lang-data
|
||||
VITE_OCR_FONT_BASE_URL=https://internal-server.example.com/wasm/ocr/fonts
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
### 独自の WASM プロキシをホストする
|
||||
|
||||
AGPL の WASM ファイルを適切な CORS ヘッダー付きで配信する必要がある場合は、シンプルなプロキシをデプロイできます。実装例は [Cloudflare WASM Proxy ガイド](https://github.com/alam00000/bentopdf/blob/main/cloudflare/WASM-PROXY.md)を参照してください。
|
||||
|
||||
::: tip なぜ分離しているのか
|
||||
この分離により、次のことが保証されます。
|
||||
|
||||
- 商用ユーザーにとって明確な法令遵守
|
||||
- BentoPDF のコアがデュアルライセンス(AGPL-3.0 / 商用)のまま維持されること
|
||||
- WASM ファイルはソースにバンドルされるのではなく、実行時に読み込まれること
|
||||
:::
|
||||
|
||||
## システム要件
|
||||
|
||||
| 要件 | 最小 |
|
||||
| ---------- | -------------------------------------- |
|
||||
| ストレージ | 約 100 MB(AGPL モジュールを除くコア) |
|
||||
| RAM | 512 MB |
|
||||
| CPU | 最近のプロセッサー |
|
||||
|
||||
::: tip
|
||||
BentoPDF は静的サイトです。データベースやバックエンドサーバーは不要です!
|
||||
:::
|
||||
@@ -0,0 +1,211 @@
|
||||
# Kubernetes でデプロイする
|
||||
|
||||
静的サイトに Kubernetes は大げさかもしれませんが、すでに Helm + GitOps で標準化している場合には最適な選択肢になり得ます。
|
||||
|
||||
> [!IMPORTANT]
|
||||
> **Office ファイル変換に必要なヘッダー**
|
||||
>
|
||||
> LibreOffice ベースのツール(Word、Excel、PowerPoint の変換)には、`SharedArrayBuffer` を使うために次の HTTP ヘッダーが必要です。
|
||||
>
|
||||
> - `Cross-Origin-Opener-Policy: same-origin`
|
||||
> - `Cross-Origin-Embedder-Policy: require-corp`
|
||||
>
|
||||
> 公式の BentoPDF nginx イメージにはこれらのヘッダーが含まれています。Kubernetes では **Ingress/Gateway コントローラーもリバースプロキシ**であるため、これらのヘッダーが保持されるようにするか、エッジで追加してください。
|
||||
|
||||
## 前提条件
|
||||
|
||||
- Kubernetes クラスター
|
||||
- Helm v3
|
||||
- **ポート 8080** で配信する BentoPDF の nginx イメージ(例: `ghcr.io/alam00000/bentopdf:<tag>`)
|
||||
|
||||
## Helm でデプロイする
|
||||
|
||||
### このリポジトリからインストールする(ローカルチャート)
|
||||
|
||||
```bash
|
||||
kubectl create namespace bentopdf
|
||||
|
||||
helm upgrade --install bentopdf /path/to/bentopdf/chart \
|
||||
--namespace bentopdf \
|
||||
--set image.repository=ghcr.io/alam00000/bentopdf \
|
||||
--set image.tag=latest
|
||||
```
|
||||
|
||||
### GHCR からインストールする(OCI チャート)
|
||||
|
||||
チャートが OCI アーティファクトとして GHCR に公開されている場合:
|
||||
|
||||
```bash
|
||||
export GHCR_USERNAME="<github-org-or-user>"
|
||||
|
||||
helm upgrade --install bentopdf oci://ghcr.io/$GHCR_USERNAME/charts/bentopdf \
|
||||
--namespace bentopdf \
|
||||
--create-namespace \
|
||||
--version 0.1.0 \
|
||||
--set image.repository=ghcr.io/alam00000/bentopdf \
|
||||
--set image.tag=latest
|
||||
```
|
||||
|
||||
## 公開する
|
||||
|
||||
### ポートフォワード(簡易テスト)
|
||||
|
||||
```bash
|
||||
kubectl -n bentopdf port-forward deploy/bentopdf 8080:8080
|
||||
```
|
||||
|
||||
### Ingress(任意)
|
||||
|
||||
Ingress を有効にします(nginx-ingress の例)。
|
||||
|
||||
```yaml
|
||||
ingress:
|
||||
enabled: true
|
||||
className: nginx
|
||||
hosts:
|
||||
- host: pdf.example.com
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
```
|
||||
|
||||
### Gateway API(任意)
|
||||
|
||||
このチャートは、Gateway API の `Gateway` と `HTTPRoute` に対応しています。
|
||||
|
||||
例(Cloudflare Gateway API operator):
|
||||
|
||||
```yaml
|
||||
gateway:
|
||||
enabled: true
|
||||
name: bento-tunnel
|
||||
namespace: bentopdf
|
||||
gatewayClassName: cloudflare
|
||||
|
||||
httpRoute:
|
||||
enabled: true
|
||||
parentRefs:
|
||||
- name: bento-tunnel
|
||||
namespace: bentopdf
|
||||
sectionName: http
|
||||
hostnames:
|
||||
- pdfs.example.com
|
||||
```
|
||||
|
||||
## SharedArrayBuffer ヘッダーが引き続き機能することを確認する(Ingress/Gateway)
|
||||
|
||||
### 本来の動作
|
||||
|
||||
BentoPDF の nginx 設定が、必要なレスポンスヘッダーを設定します。ほとんどの Ingress/Gateway コントローラーは、**アップストリームのレスポンスヘッダーをそのまま通過させます**。
|
||||
|
||||
### 動作しなくなる原因
|
||||
|
||||
- レスポンスヘッダーを**上書き**または**削除**するコントローラー/エッジのポリシー
|
||||
- 異なる COOP/COEP の値を設定する「セキュリティヘッダー」ミドルウェア
|
||||
|
||||
### 確認方法
|
||||
|
||||
公開エンドポイントに対して次を実行します。
|
||||
|
||||
```bash
|
||||
curl -I https://pdf.example.com/ | egrep -i 'cross-origin-opener-policy|cross-origin-embedder-policy'
|
||||
```
|
||||
|
||||
次のように表示されるはずです。
|
||||
|
||||
- `Cross-Origin-Opener-Policy: same-origin`
|
||||
- `Cross-Origin-Embedder-Policy: require-corp`
|
||||
|
||||
### Ingress コントローラーがヘッダーを保持しない場合
|
||||
|
||||
エッジ(コントローラー固有の方法)でヘッダーを追加します。**nginx-ingress** の例:
|
||||
|
||||
```yaml
|
||||
ingress:
|
||||
enabled: true
|
||||
className: nginx
|
||||
annotations:
|
||||
nginx.ingress.kubernetes.io/configuration-snippet: |
|
||||
add_header Cross-Origin-Opener-Policy "same-origin" always;
|
||||
add_header Cross-Origin-Embedder-Policy "require-corp" always;
|
||||
```
|
||||
|
||||
## `.mjs` の MIME タイプエラー(PDFへ署名 / Form Filler の iframe が空白になる)
|
||||
|
||||
ブラウザーのコンソールに、`.mjs` リクエストに対して `Failed to load module script: ... non-JavaScript MIME type "application/octet-stream"` と表示される場合、BentoPDF の nginx の前段にある Ingress/Gateway コントローラーが、アップストリームの `Content-Type` ヘッダーを `application/octet-stream` に置き換えています。
|
||||
|
||||
BentoPDF イメージの nginx は、すでに `.mjs` を `application/javascript` として配信しています。修正方法は、コントローラーによる削除や置き換えを止めることです。nginx-ingress の場合:
|
||||
|
||||
```yaml
|
||||
ingress:
|
||||
annotations:
|
||||
nginx.ingress.kubernetes.io/configuration-snippet: |
|
||||
location ~* \.mjs$ {
|
||||
types {} default_type application/javascript;
|
||||
}
|
||||
```
|
||||
|
||||
または、Gateway API の `ResponseHeaderModifier` フィルターを使って、`.mjs` パスに `Content-Type: application/javascript` を設定します。DevTools → Network タブで確認してください。失敗していた `.mjs` リクエストに `content-type: application/javascript` と表示されるはずです。
|
||||
|
||||
### Gateway API を使っていて、ヘッダーを強制的に追加したい場合
|
||||
|
||||
Gateway API は `ResponseHeaderModifier` フィルターに対応しています。`httpRoute.rules[*].filters` に追加できます。
|
||||
|
||||
```yaml
|
||||
httpRoute:
|
||||
enabled: true
|
||||
hostnames: [pdf.example.com]
|
||||
parentRefs:
|
||||
- name: bento-tunnel
|
||||
namespace: misc
|
||||
sectionName: http
|
||||
rules:
|
||||
- matches:
|
||||
- path: { type: PathPrefix, value: / }
|
||||
filters:
|
||||
- type: ResponseHeaderModifier
|
||||
responseHeaderModifier:
|
||||
set:
|
||||
- name: Cross-Origin-Opener-Policy
|
||||
value: same-origin
|
||||
- name: Cross-Origin-Embedder-Policy
|
||||
value: require-corp
|
||||
```
|
||||
|
||||
対応するフィルターは Gateway コントローラーによって異なります。フィルターが無視される場合は、代わりにエッジ/コントローラー層でヘッダーを追加してください。
|
||||
|
||||
## 特定のツールを無効にする
|
||||
|
||||
ConfigMap を使うと、イメージを再ビルドせずに、実行時にツールを無効にできます。
|
||||
|
||||
```yaml
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: bentopdf-config
|
||||
namespace: bentopdf
|
||||
data:
|
||||
config.json: |
|
||||
{
|
||||
"disabledTools": ["edit-pdf", "sign-pdf", "encrypt-pdf"]
|
||||
}
|
||||
```
|
||||
|
||||
配信されるディレクトリにマウントします。
|
||||
|
||||
```yaml
|
||||
spec:
|
||||
containers:
|
||||
- name: bentopdf
|
||||
volumeMounts:
|
||||
- name: config
|
||||
mountPath: /usr/share/nginx/html/config.json
|
||||
subPath: config.json
|
||||
readOnly: true
|
||||
volumes:
|
||||
- name: config
|
||||
configMap:
|
||||
name: bentopdf-config
|
||||
```
|
||||
|
||||
ツール ID は、`.html` を除いたページの URL です。任意のツールを開いて URL を確認してください(例: `edit-pdf`、`merge-pdf`、`compress-pdf`)。無効にしたツールは、ホームページ、検索、ショートカット、ワークフロービルダー、直接の URL アクセスから非表示になります。すべてのオプションについては、[Docker ガイド](/ja/self-hosting/docker#特定のツールを無効にする)を参照してください。
|
||||
@@ -0,0 +1,139 @@
|
||||
# Netlify にデプロイする
|
||||
|
||||
[Netlify](https://netlify.com) は、手厚い無料枠を備えた優れた静的サイトホスティングを提供しています。
|
||||
|
||||
## ワンクリックデプロイ
|
||||
|
||||
[](https://app.netlify.com/start/deploy?repository=https://github.com/alam00000/bentopdf)
|
||||
|
||||
## 手動デプロイ
|
||||
|
||||
### ステップ 1: リポジトリを接続する
|
||||
|
||||
1. [Netlify](https://app.netlify.com) にログインします
|
||||
2. 「Add new site」→「Import an existing project」をクリックします
|
||||
3. GitHub アカウントを接続します
|
||||
4. BentoPDF のフォークを選択します
|
||||
|
||||
### ステップ 2: ビルド設定を行う
|
||||
|
||||
| 設定 | 値 |
|
||||
| ----------------- | --------------- |
|
||||
| Build command | `npm run build` |
|
||||
| Publish directory | `dist` |
|
||||
| Node version | 18+ |
|
||||
|
||||
### ステップ 3: デプロイする
|
||||
|
||||
「Deploy site」をクリックして、ビルドが完了するのを待ちます。
|
||||
|
||||
## 設定ファイル
|
||||
|
||||
プロジェクトのルートに `netlify.toml` を作成します。
|
||||
|
||||
```toml
|
||||
[build]
|
||||
command = "npm run build"
|
||||
publish = "dist"
|
||||
|
||||
[build.environment]
|
||||
NODE_VERSION = "18"
|
||||
|
||||
# Required security headers for SharedArrayBuffer (used by LibreOffice WASM)
|
||||
[[headers]]
|
||||
for = "/*"
|
||||
[headers.values]
|
||||
Cross-Origin-Embedder-Policy = "require-corp"
|
||||
Cross-Origin-Opener-Policy = "same-origin"
|
||||
Cross-Origin-Resource-Policy = "cross-origin"
|
||||
|
||||
# Pre-compressed LibreOffice WASM binary - must be served with Content-Encoding
|
||||
[[headers]]
|
||||
for = "/libreoffice-wasm/soffice.wasm.gz"
|
||||
[headers.values]
|
||||
Content-Type = "application/wasm"
|
||||
Content-Encoding = "gzip"
|
||||
Cache-Control = "public, max-age=31536000, immutable"
|
||||
|
||||
# Pre-compressed LibreOffice WASM data - must be served with Content-Encoding
|
||||
[[headers]]
|
||||
for = "/libreoffice-wasm/soffice.data.gz"
|
||||
[headers.values]
|
||||
Content-Type = "application/octet-stream"
|
||||
Content-Encoding = "gzip"
|
||||
Cache-Control = "public, max-age=31536000, immutable"
|
||||
|
||||
# Cache other WASM files
|
||||
[[headers]]
|
||||
for = "*.wasm"
|
||||
[headers.values]
|
||||
Cache-Control = "public, max-age=31536000, immutable"
|
||||
Content-Type = "application/wasm"
|
||||
|
||||
# SPA routing
|
||||
[[redirects]]
|
||||
from = "/*"
|
||||
to = "/index.html"
|
||||
status = 200
|
||||
```
|
||||
|
||||
::: warning 重要
|
||||
Word/ODT/Excel/PowerPoint から PDF への変換には、`Cross-Origin-Embedder-Policy` と `Cross-Origin-Opener-Policy` ヘッダーが必要です。これらがないと `SharedArrayBuffer` が使えず、LibreOffice WASM エンジンの初期化に失敗します。
|
||||
|
||||
`.wasm.gz` と `.data.gz` ファイルの `Content-Encoding: gzip` ヘッダーは、ブラウザーにそれらを自動的に展開させるためのものです。これがないと、ブラウザーは生の gzip バイト列を受け取り、WASM のコンパイルに失敗します。
|
||||
:::
|
||||
|
||||
## 環境変数
|
||||
|
||||
Site settings → Environment variables で設定します。
|
||||
|
||||
| 変数 | 説明 |
|
||||
| ----------------------- | -------------------------------------------------------- |
|
||||
| `SIMPLE_MODE` | 最小構成のビルドにするには `true` を設定します |
|
||||
| `VITE_BRAND_NAME` | カスタムブランド名("BentoPDF" を置き換えます) |
|
||||
| `VITE_BRAND_LOGO` | `public/` からの相対ロゴパス(例: `images/my-logo.svg`) |
|
||||
| `VITE_FOOTER_TEXT` | カスタムのフッター/著作権テキスト |
|
||||
| `VITE_DEFAULT_LANGUAGE` | デフォルトの UI 言語(例: `fr`、`de`、`es`) |
|
||||
|
||||
## カスタムドメイン
|
||||
|
||||
1. Site settings → Domain management に移動します
|
||||
2. 「Add custom domain」をクリックします
|
||||
3. 表示される DNS の設定手順に従います
|
||||
|
||||
## ラージメディア
|
||||
|
||||
大きな WASM ファイルには、[Netlify Large Media](https://docs.netlify.com/large-media/overview/) の有効化を検討してください。
|
||||
|
||||
```bash
|
||||
netlify lm:setup
|
||||
git lfs track "*.wasm"
|
||||
```
|
||||
|
||||
## トラブルシューティング
|
||||
|
||||
### Word/ODT/Excel から PDF への変換が 55% で止まる
|
||||
|
||||
文書の変換が 55% で止まる場合は、DevTools のコンソールを開いて次を確認します。
|
||||
|
||||
```js
|
||||
console.log(window.crossOriginIsolated); // should be true
|
||||
console.log(typeof SharedArrayBuffer); // should be "function"
|
||||
```
|
||||
|
||||
`crossOriginIsolated` が `false` の場合、`netlify.toml` の COEP/COOP ヘッダーが適用されていません。ファイルがプロジェクトのルートにあることを確認して、再デプロイしてください。
|
||||
|
||||
コンソールに `expected magic word 00 61 73 6d, found 1f 8b 08 08` と表示される場合は、`.wasm.gz` ファイルに `Content-Encoding: gzip` ヘッダーがありません。`soffice.wasm.gz` と `soffice.data.gz` 用の `[[headers]]` ブロックが `netlify.toml` に含まれていることを確認してください。
|
||||
|
||||
### ビルドが失敗する
|
||||
|
||||
Node のバージョンの互換性を確認します。
|
||||
|
||||
```toml
|
||||
[build.environment]
|
||||
NODE_VERSION = "20"
|
||||
```
|
||||
|
||||
### 初回の読み込みが遅い
|
||||
|
||||
Site settings → Build & deploy → Asset optimization で、アセットの最適化を有効にします。
|
||||
@@ -0,0 +1,232 @@
|
||||
# Nginx でデプロイする
|
||||
|
||||
Nginx を使って、BentoPDF を自分のサーバーでホストします。
|
||||
|
||||
## 前提条件
|
||||
|
||||
- Ubuntu/Debian サーバー
|
||||
- Nginx がインストール済みであること
|
||||
- SSL 証明書(推奨: Let's Encrypt)
|
||||
|
||||
## ステップ 1: プロジェクトをビルドする
|
||||
|
||||
```bash
|
||||
git clone https://github.com/alam00000/bentopdf.git
|
||||
cd bentopdf
|
||||
npm install
|
||||
npm run build
|
||||
```
|
||||
|
||||
ブランディングをカスタマイズするには、ビルド前に環境変数を設定します。
|
||||
|
||||
```bash
|
||||
VITE_BRAND_NAME="AcmePDF" VITE_BRAND_LOGO="images/acme-logo.svg" npm run build
|
||||
```
|
||||
|
||||
## ステップ 2: ファイルをコピーする
|
||||
|
||||
```bash
|
||||
sudo mkdir -p /var/www/bentopdf
|
||||
sudo cp -r dist/* /var/www/bentopdf/
|
||||
sudo chown -R www-data:www-data /var/www/bentopdf
|
||||
```
|
||||
|
||||
## ステップ 3: Nginx の設定
|
||||
|
||||
`/etc/nginx/sites-available/bentopdf` を作成します。
|
||||
|
||||
```nginx
|
||||
server {
|
||||
listen 80;
|
||||
server_name your-domain.com;
|
||||
return 301 https://$server_name$request_uri;
|
||||
}
|
||||
|
||||
server {
|
||||
listen 443 ssl http2;
|
||||
server_name your-domain.com;
|
||||
|
||||
# SSL Configuration
|
||||
ssl_certificate /etc/letsencrypt/live/your-domain.com/fullchain.pem;
|
||||
ssl_certificate_key /etc/letsencrypt/live/your-domain.com/privkey.pem;
|
||||
|
||||
root /var/www/bentopdf;
|
||||
index index.html;
|
||||
|
||||
# Gzip compression
|
||||
gzip on;
|
||||
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/wasm;
|
||||
gzip_min_length 1000;
|
||||
|
||||
# WASM MIME type
|
||||
types {
|
||||
application/wasm wasm;
|
||||
}
|
||||
|
||||
# Required headers for SharedArrayBuffer (LibreOffice WASM)
|
||||
# These must be on every response - especially HTML pages
|
||||
add_header Cross-Origin-Embedder-Policy "require-corp" always;
|
||||
add_header Cross-Origin-Opener-Policy "same-origin" always;
|
||||
add_header Cross-Origin-Resource-Policy "cross-origin" always;
|
||||
|
||||
# Security headers
|
||||
add_header X-Frame-Options "SAMEORIGIN" always;
|
||||
add_header X-Content-Type-Options "nosniff" always;
|
||||
add_header X-XSS-Protection "1; mode=block" always;
|
||||
|
||||
# Pre-compressed LibreOffice WASM binary
|
||||
location ~* /libreoffice-wasm/soffice\.wasm\.gz$ {
|
||||
gzip off;
|
||||
types {} default_type application/wasm;
|
||||
add_header Content-Encoding gzip;
|
||||
add_header Cache-Control "public, immutable";
|
||||
add_header Cross-Origin-Embedder-Policy "require-corp" always;
|
||||
add_header Cross-Origin-Opener-Policy "same-origin" always;
|
||||
}
|
||||
|
||||
# Pre-compressed LibreOffice WASM data
|
||||
location ~* /libreoffice-wasm/soffice\.data\.gz$ {
|
||||
gzip off;
|
||||
types {} default_type application/octet-stream;
|
||||
add_header Content-Encoding gzip;
|
||||
add_header Cache-Control "public, immutable";
|
||||
add_header Cross-Origin-Embedder-Policy "require-corp" always;
|
||||
add_header Cross-Origin-Opener-Policy "same-origin" always;
|
||||
}
|
||||
|
||||
# Cache static assets
|
||||
location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|wasm)$ {
|
||||
expires 1y;
|
||||
add_header Cache-Control "public, immutable";
|
||||
add_header Cross-Origin-Embedder-Policy "require-corp" always;
|
||||
add_header Cross-Origin-Opener-Policy "same-origin" always;
|
||||
}
|
||||
|
||||
# SPA routing - serve index.html for all routes
|
||||
location / {
|
||||
try_files $uri $uri/ /index.html;
|
||||
add_header Cross-Origin-Embedder-Policy "require-corp" always;
|
||||
add_header Cross-Origin-Opener-Policy "same-origin" always;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## ステップ 4: サイトを有効にする
|
||||
|
||||
```bash
|
||||
sudo ln -s /etc/nginx/sites-available/bentopdf /etc/nginx/sites-enabled/
|
||||
sudo nginx -t
|
||||
sudo systemctl reload nginx
|
||||
```
|
||||
|
||||
## ステップ 5: Let's Encrypt による SSL
|
||||
|
||||
```bash
|
||||
sudo apt install certbot python3-certbot-nginx
|
||||
sudo certbot --nginx -d your-domain.com
|
||||
```
|
||||
|
||||
## サブディレクトリへのデプロイ
|
||||
|
||||
`/pdf/` でホストするには、次のようにします。
|
||||
|
||||
```nginx
|
||||
location /pdf/ {
|
||||
alias /var/www/bentopdf/;
|
||||
try_files $uri $uri/ /pdf/index.html;
|
||||
}
|
||||
```
|
||||
|
||||
ビルドは次のコマンドで行います。
|
||||
|
||||
```bash
|
||||
BASE_URL=/pdf/ npm run build
|
||||
```
|
||||
|
||||
## パフォーマンスチューニング
|
||||
|
||||
`nginx.conf` に追加します。
|
||||
|
||||
```nginx
|
||||
http {
|
||||
# Enable sendfile
|
||||
sendfile on;
|
||||
tcp_nopush on;
|
||||
tcp_nodelay on;
|
||||
|
||||
# Increase buffer sizes
|
||||
client_max_body_size 100M;
|
||||
|
||||
# Worker connections
|
||||
worker_connections 2048;
|
||||
}
|
||||
```
|
||||
|
||||
## トラブルシューティング
|
||||
|
||||
### WASM が読み込まれない
|
||||
|
||||
MIME タイプが設定されていることを確認します。
|
||||
|
||||
```nginx
|
||||
types {
|
||||
application/wasm wasm;
|
||||
}
|
||||
```
|
||||
|
||||
### PDFへ署名 または Form Filler で空白のビューアが表示される(`.mjs` の MIME エラー)
|
||||
|
||||
ブラウザーのコンソールに次のように表示される場合:
|
||||
|
||||
```
|
||||
Failed to load module script: The server responded with a non-JavaScript
|
||||
MIME type of "application/octet-stream". Strict MIME type checking is
|
||||
enforced for module scripts per HTML spec.
|
||||
```
|
||||
|
||||
…かつ失敗しているリクエストが `.mjs` で終わっている場合、お使いの nginx に `.mjs → application/javascript` のマッピングがありません。内蔵の PDF ビューア(PDFへ署名、Form Filler、その他いくつかのツールで使用)は `.mjs` 拡張子の ES モジュールファイルを同梱していますが、nginx の標準の `mime.types` にはデフォルトで含まれていません。
|
||||
|
||||
`/etc/nginx/mime.types` にある既存の `application/javascript` の行に `mjs` を追加して修正します。
|
||||
|
||||
```nginx
|
||||
application/javascript js mjs;
|
||||
```
|
||||
|
||||
> `application/javascript` の行を*もう 1 行*追加しないでください。nginx は `mime.types` を 1 行ずつ解析し、拡張子との対応付けは 1 つの型につき 1 つしか有効にならないため、バージョンによっては 2 行目が黙って無視されます。既存の行を編集して、`js` の隣に `mjs` を追加してください。
|
||||
|
||||
または、server ブロック内でローカルに上書きします(グローバルなファイルの編集は不要です)。
|
||||
|
||||
```nginx
|
||||
types {
|
||||
application/javascript js mjs;
|
||||
application/wasm wasm;
|
||||
}
|
||||
```
|
||||
|
||||
変更後に nginx をリロードします。
|
||||
|
||||
```bash
|
||||
sudo nginx -t && sudo systemctl reload nginx
|
||||
```
|
||||
|
||||
確認するには、ブラウザーの DevTools → Network タブで失敗している `.mjs` リクエストを見つけ、`Content-Type` レスポンスヘッダーを確認します。`application/octet-stream` ではなく `application/javascript` になっているはずです。
|
||||
|
||||
### Word/ODT/Excel から PDF への変換が動作しない
|
||||
|
||||
LibreOffice WASM には `SharedArrayBuffer` が必要で、そのためには `Cross-Origin-Embedder-Policy` と `Cross-Origin-Opener-Policy` ヘッダーが必要です。セキュアコンテキストも必要なため、`http://localhost` はローカルでのテストには使えますが、`http://192.168.x.x` などの LAN IP では通常 HTTPS が必要です。なお、`location` ブロック内の nginx の `add_header` ディレクティブは、server レベルの `add_header` ディレクティブを**上書き**します。マージはされません。独自の `add_header` を持つすべての `location` ブロックに、COEP/COOP ヘッダーを含める必要があります。
|
||||
|
||||
次のコマンドで確認します。
|
||||
|
||||
```bash
|
||||
curl -I https://your-domain.com/ | grep -i cross-origin
|
||||
```
|
||||
|
||||
nginx の前段にリバースプロキシがある場合は、それらのヘッダーが保持されていることを確認してください。
|
||||
|
||||
### 502 Bad Gateway
|
||||
|
||||
Nginx のエラーログを確認します。
|
||||
|
||||
```bash
|
||||
sudo tail -f /var/log/nginx/error.log
|
||||
```
|
||||
@@ -0,0 +1,122 @@
|
||||
# Vercel にデプロイする
|
||||
|
||||
[Vercel](https://vercel.com) は、静的サイトを最も簡単にデプロイできるサービスです。
|
||||
|
||||
## ワンクリックデプロイ
|
||||
|
||||
[](https://vercel.com/new/clone?repository-url=https://github.com/alam00000/bentopdf)
|
||||
|
||||
## 手動デプロイ
|
||||
|
||||
### ステップ 1: リポジトリをフォークする
|
||||
|
||||
[bentopdf/bentopdf](https://github.com/alam00000/bentopdf) を自分の GitHub アカウントにフォークします。
|
||||
|
||||
### ステップ 2: Vercel にインポートする
|
||||
|
||||
1. [vercel.com/new](https://vercel.com/new) にアクセスします
|
||||
2. フォークしたリポジトリを選択します
|
||||
3. プロジェクトを設定します。
|
||||
|
||||
| 設定 | 値 |
|
||||
| ---------------- | --------------- |
|
||||
| Framework Preset | Vite |
|
||||
| Build Command | `npm run build` |
|
||||
| Output Directory | `dist` |
|
||||
| Install Command | `npm install` |
|
||||
|
||||
### ステップ 3: 環境変数(任意)
|
||||
|
||||
必要に応じて、次の変数を追加します。
|
||||
|
||||
| 変数 | 説明 |
|
||||
| ----------------------- | -------------------------------------------------------- |
|
||||
| `SIMPLE_MODE` | 最小限の UI にするには `true` を設定します |
|
||||
| `VITE_BRAND_NAME` | カスタムブランド名("BentoPDF" を置き換えます) |
|
||||
| `VITE_BRAND_LOGO` | `public/` からの相対ロゴパス(例: `images/my-logo.svg`) |
|
||||
| `VITE_FOOTER_TEXT` | カスタムのフッター/著作権テキスト |
|
||||
| `VITE_DEFAULT_LANGUAGE` | デフォルトの UI 言語(例: `fr`、`de`、`es`) |
|
||||
|
||||
### ステップ 4: デプロイする
|
||||
|
||||
「Deploy」をクリックして、ビルドが完了するのを待ちます。
|
||||
|
||||
## カスタムドメイン
|
||||
|
||||
1. プロジェクトの設定を開きます
|
||||
2. 「Domains」に移動します
|
||||
3. カスタムドメインを追加します
|
||||
4. 指示に従って DNS を設定します
|
||||
|
||||
## 制限事項
|
||||
|
||||
::: warning 大きなファイル
|
||||
Vercel のサーバーレス関数には 50MB の制限があります。BentoPDF は静的サイトなので影響はないはずですが、WASM モジュールは大きく(合計で約 100MB)、`/public` フォルダーから配信されるようにしてください。
|
||||
:::
|
||||
|
||||
## トラブルシューティング
|
||||
|
||||
### ビルドのタイムアウト
|
||||
|
||||
ビルドがタイムアウトする場合は、次を試してください。
|
||||
|
||||
```json
|
||||
// vercel.json
|
||||
{
|
||||
"buildCommand": "npm run build",
|
||||
"outputDirectory": "dist"
|
||||
}
|
||||
```
|
||||
|
||||
### 更新すると 404 になる
|
||||
|
||||
SPA のルーティング用に `vercel.json` を追加します。
|
||||
|
||||
```json
|
||||
{
|
||||
"rewrites": [{ "source": "/(.*)", "destination": "/index.html" }]
|
||||
}
|
||||
```
|
||||
|
||||
### Word/ODT/Excel から PDF への変換が動作しない
|
||||
|
||||
LibreOffice WASM による変換には `SharedArrayBuffer` が必要で、すべてのページで次のレスポンスヘッダーが必要です。
|
||||
|
||||
- `Cross-Origin-Embedder-Policy: require-corp`
|
||||
- `Cross-Origin-Opener-Policy: same-origin`
|
||||
|
||||
事前圧縮された `.wasm.gz` と `.data.gz` ファイルにも、ブラウザーが展開できるよう `Content-Encoding: gzip` が必要です。
|
||||
|
||||
これらを `vercel.json` に追加します。
|
||||
|
||||
```json
|
||||
{
|
||||
"rewrites": [{ "source": "/(.*)", "destination": "/index.html" }],
|
||||
"headers": [
|
||||
{
|
||||
"source": "/(.*)",
|
||||
"headers": [
|
||||
{ "key": "Cross-Origin-Embedder-Policy", "value": "require-corp" },
|
||||
{ "key": "Cross-Origin-Opener-Policy", "value": "same-origin" },
|
||||
{ "key": "Cross-Origin-Resource-Policy", "value": "cross-origin" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"source": "/libreoffice-wasm/soffice.wasm.gz",
|
||||
"headers": [
|
||||
{ "key": "Content-Type", "value": "application/wasm" },
|
||||
{ "key": "Content-Encoding", "value": "gzip" }
|
||||
]
|
||||
},
|
||||
{
|
||||
"source": "/libreoffice-wasm/soffice.data.gz",
|
||||
"headers": [
|
||||
{ "key": "Content-Type", "value": "application/octet-stream" },
|
||||
{ "key": "Content-Encoding", "value": "gzip" }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
確認するには、DevTools のコンソールを開いて `console.log(window.crossOriginIsolated)` を実行します。`true` が返れば正常です。
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
title: 添付ファイルの追加
|
||||
description: あらゆる種類のファイルを、文書レベルまたは特定のページに紐づけて PDF に埋め込みます。
|
||||
---
|
||||
|
||||
# 添付ファイルの追加
|
||||
|
||||
1 つまたは複数のファイルを PDF 文書の中に直接埋め込みます。添付ファイルは文書レベル(あらゆる PDF リーダーの添付ファイルパネルに表示されます)で追加することも、特定のページに紐づけることもできます。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. ファイルを添付したい PDF をアップロードします。
|
||||
2. 添付ファイルのドロップゾーンで、埋め込みたいファイル(どんな種類でも可)を選択します。
|
||||
3. 添付レベルを選択します。**文書**(デフォルト)または**ページ**です。
|
||||
4. ページレベルを選んだ場合は、ページ範囲(例: `1-3` や `5`)を入力します。
|
||||
5. 処理ボタンをクリックします。ファイルが埋め込まれた PDF がダウンロードされます。
|
||||
|
||||
## 機能
|
||||
|
||||
- あらゆる種類のファイルを添付可能。画像、スプレッドシート、アーカイブ、実行ファイルなど何でも対応
|
||||
- 文書レベルまたはページレベルで添付位置を指定
|
||||
- 1 回の操作で複数のファイルを添付可能
|
||||
- 選択したすべての添付ファイルのファイル名とサイズを表示
|
||||
- 出力では元の PDF の内容を保持したまま、埋め込みファイルを追加
|
||||
|
||||
## オプション
|
||||
|
||||
| オプション | 説明 |
|
||||
| ---------------- | ---------------------------------------------------------------------- |
|
||||
| **文書レベル** | PDF 全体にファイルを添付します。添付ファイルパネルからアクセスできます |
|
||||
| **ページレベル** | ページ範囲の入力で指定した特定のページにファイルを添付します |
|
||||
|
||||
## ユースケース
|
||||
|
||||
- PDF レポートにソースデータ(Excel ファイルや CSV)を同梱する
|
||||
- 写真ポートフォリオ PDF に元の画像ファイルを添付する
|
||||
- 契約書や提案書に関連書類を埋め込む
|
||||
- 研修マニュアルの特定のページに補足資料を追加する
|
||||
|
||||
## ヒント
|
||||
|
||||
- 文書レベルの添付ファイルは、PDF リーダー全般で最も広くサポートされています。ページレベルの添付ファイルは、すべてのビューアで表示されるとは限りません。
|
||||
- 添付ファイルのサイズに上限はありませんが、非常に大きなファイルを埋め込むと、それに比例して PDF のサイズも大きくなります。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [添付ファイルの抽出](./extract-attachments)
|
||||
- [添付ファイルの編集](./edit-attachments)
|
||||
- [PDFの結合](./merge-pdf)
|
||||
@@ -0,0 +1,40 @@
|
||||
---
|
||||
title: 空白ページの追加
|
||||
description: PDF 文書の任意の位置に、1 ページ以上の空白ページを挿入します。
|
||||
---
|
||||
|
||||
# 空白ページの追加
|
||||
|
||||
指定した位置に空のページを PDF へ挿入します。空白ページを入れる場所と枚数を自由に指定できます。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. PDF ファイルをアップロードします。ツールにページ数が表示されます。
|
||||
2. 空白ページを挿入する**位置**を入力します。先頭に挿入するには `0`、末尾に追加するには総ページ数を指定します。
|
||||
3. 追加する空白ページの**枚数**を入力します(デフォルトは 1)。
|
||||
4. 処理ボタンをクリックします。空白ページが挿入された PDF がダウンロードされます。
|
||||
|
||||
## 機能
|
||||
|
||||
- 先頭、途中、末尾など、任意の位置に挿入可能
|
||||
- 1 回の操作で複数の空白ページを追加可能
|
||||
- アップロードした PDF のページ数に応じて、位置のヒントが動的に更新
|
||||
- 標準的な A4 サイズの空白ページ
|
||||
|
||||
## ユースケース
|
||||
|
||||
- まとめた文書のセクション間に、区切り用の空白ページを追加する
|
||||
- 両面印刷の位置合わせのために空白ページを挿入する
|
||||
- 印刷した学習ガイドに手書きメモ用のスペースを追加する
|
||||
- 最低ページ数の要件を満たすために文書のページ数を調整する
|
||||
|
||||
## ヒント
|
||||
|
||||
- 位置 `0` は最初のページの前に挿入します。総ページ数と同じ位置を指定すると、最後のページの後ろに追加されます。
|
||||
- 空白ではなく内容のあるページを特定の位置に挿入したい場合は、[PDFマルチツール](./pdf-multi-tool) を使って、指定したページの後ろに別の PDF を挿入してください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [Organize & Duplicate](./organize-pdf)
|
||||
- [PDFマルチツール](./pdf-multi-tool)
|
||||
- [PDFの結合](./merge-pdf)
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
title: ページラベルの追加
|
||||
description: ローマ数字、英字のプレフィックス、カスタム番号付けに対応し、1 つの文書に複数のルールを設定できる PDF ページラベルを追加します。
|
||||
---
|
||||
|
||||
# ページラベルの追加
|
||||
|
||||
ページラベルは、PDF ビューアでのページ番号の表示方法を決めるものです(ツールバーに表示される番号であり、ページ上には印刷されません)。このツールでは、ページ範囲ごとに異なるラベル方式を割り当てられます。たとえば、前付にはローマ数字、本文には算用数字、付録にはアルファベットといった設定ができます。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. PDF ファイルをアップロードします。
|
||||
2. オプションパネルが表示され、デフォルトで 1 つのラベルルールが用意されています。
|
||||
3. 各ルールにページ範囲、スタイル、任意のプレフィックス、開始値を設定します。
|
||||
4. **ルールを追加**をクリックすると、別のセクション用のルールを追加できます。
|
||||
5. **ページラベルを追加**をクリックして、すべてのルールを適用し、結果をダウンロードします。
|
||||
|
||||
## オプション
|
||||
|
||||
各ラベルルールには次の設定があります。
|
||||
|
||||
- **ページ範囲** -- ルールを適用するページです。空欄にするとすべてのページが対象になります。`1-4`、`7`、`odd`、`1-9,30-40` などの指定に対応しています。
|
||||
- **ラベルスタイル** -- 算用数字、小文字のローマ数字(i, ii, iii)、大文字のローマ数字(I, II, III)、小文字の英字(a, b, c)、大文字の英字(A, B, C)、ラベルなし(プレフィックスのみ)から選べます。
|
||||
- **ラベルプレフィックス** -- 各ラベルの先頭に付ける任意のテキストです。たとえば "A-" を指定すると、A-1、A-2、A-3 のようなラベルになります。
|
||||
- **開始値** -- 数え始める数字です。デフォルトは 1 です。0 から始める番号付けにしたい場合は 0 を設定します。
|
||||
- **離れた範囲でも番号を継続する** -- ルールの対象が連続しないページ(`1-9,30-40` や `odd` など)で、番号を連続させたい場合に有効にします。
|
||||
- **既存のページラベルを削除** -- デフォルトでオンです。新しいルールを適用する前に、以前のラベルをすべて消去します。
|
||||
|
||||
## 機能
|
||||
|
||||
- 複雑な番号付けスキームに対応する、1 つの文書内の複数のラベルルール
|
||||
- あらゆる標準的な番号体系をカバーする 6 種類のラベルスタイル
|
||||
- セクションごとのラベル付けに使えるカスタムプレフィックス
|
||||
- 離れた範囲に対応し、番号を連続させることが可能
|
||||
- 既存のラベルを残すか削除するかを選択可能
|
||||
|
||||
## ユースケース
|
||||
|
||||
- 書籍の序文にはローマ数字(i, ii, iii)、本文には算用数字のラベルを設定する
|
||||
- 付録ページに "A-1"、"A-2"、"B-1"、"B-2" のようなアルファベットのプレフィックスを付ける
|
||||
- 実際のページ番号と PDF のページ順が一致しないスキャン文書のページラベルを修正する
|
||||
- 技術文書向けに 0 から始まる番号付けを追加する
|
||||
|
||||
## ヒント
|
||||
|
||||
- ページラベルは、PDF ビューアのナビゲーションツールバーに表示されるメタデータです。実際のページには印刷されません。目に見える番号が必要な場合は、[ページ番号](./page-numbers) を使用してください。
|
||||
- このツールを使うには、WASM 設定で CoherentPDF (CPDF) を設定しておく必要があります。未設定の場合は、設定を促すメッセージが表示されます。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [ページ番号](./page-numbers)
|
||||
- [通し番号付け](./bates-numbering)
|
||||
- [しおりの編集](./bookmark)
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
title: スタンプの追加
|
||||
description: ユーザー名による帰属表示に対応した統合アノテーションツールバーを使って、PDF のページに画像スタンプを追加します。
|
||||
---
|
||||
|
||||
# スタンプの追加
|
||||
|
||||
スタンプ用アノテーションツールバーを備えた埋め込みビューアを使って、PDF のページに画像スタンプを配置します。スタンプには自分の名前を含めて帰属を示せるため、承認ワークフロー、レビュー作業、文書への押印に便利です。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. **スタンプのユーザー名**欄に名前を入力します。この名前は、作成するスタンプに表示されます。
|
||||
2. PDF ファイルをクリックするか、ドロップゾーンにドラッグしてアップロードします。
|
||||
3. 文書がビューアに読み込まれた状態で、スタンプエディタが開きます。
|
||||
4. ツールバーの画像スタンプツールを使って、任意のページにスタンプを選択して配置します。
|
||||
5. 必要に応じて、スタンプの位置とサイズを調整します。
|
||||
6. **スタンプ済み PDF を保存**をクリックして、結果をダウンロードします。
|
||||
|
||||
## 機能
|
||||
|
||||
- スタンプ専用のアノテーションツールバーを備えた統合 PDF ビューア
|
||||
- 作成したスタンプにユーザー名を表示
|
||||
- 任意のページに画像スタンプを配置可能
|
||||
- ドラッグ&ドロップによる位置調整とサイズ変更
|
||||
- ページの縦横比に応じたビューアの自動サイズ調整
|
||||
- ファイル名とサイズ情報の表示
|
||||
|
||||
## ユースケース
|
||||
|
||||
- レビューワークフローで、文書に「承認済み」や「確認済み」の画像スタンプを追加する
|
||||
- 公式文書に会社の社印や公証人の印影画像を配置する
|
||||
- 確認者の名前入りの「受領」スタンプをページに押す
|
||||
- 検査報告書に品質管理スタンプを追加する
|
||||
|
||||
## ヒント
|
||||
|
||||
- PDF をアップロードする前に、スタンプのユーザー名を設定してください。ユーザー名はスタンプのメタデータに埋め込まれます。
|
||||
- ビューアの高さは、PDF の最初のページの縦横比に合わせて調整され、見やすい表示になります。
|
||||
- 画像スタンプではなく、テキストベースの透かしを入れたい場合は、[透かしの追加](./add-watermark) ツールを使用してください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFへ署名](./sign-pdf)
|
||||
- [透かしの追加](./add-watermark)
|
||||
- [PDFエディター](./edit-pdf)
|
||||
@@ -0,0 +1,79 @@
|
||||
---
|
||||
title: 透かしの追加
|
||||
description: ビジュアルなドラッグ&ドロップエディタとライブプレビューで、PDF のページにテキストまたは画像の透かしを入れます。
|
||||
---
|
||||
|
||||
# 透かしの追加
|
||||
|
||||
ビジュアルエディタを使って、PDF のページにテキストまたは画像の透かしを追加します。プレビュー上で透かしを直接ドラッグして位置を決め、角のハンドルでサイズを変更し、不透明度、回転、フォント、色を設定できます。ページごとに透かしの位置を変えることも、すべてのページに同じ透かしを一括で適用することもできます。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. PDF ファイルをアップロードします。
|
||||
2. 最初のページのライブプレビューと、ドラッグ可能な透かしのオーバーレイが表示されたエディタが開きます。
|
||||
3. 切り替えボタンで、**テキスト**または**画像**の透かしモードを選びます。
|
||||
4. サイドバーのパネルで透かしの設定を行います。
|
||||
5. プレビュー上で透かしをドラッグして、好みの位置に正確に配置します。サイズを変えるには、角のハンドルを使います。
|
||||
6. ページを移動してページごとの透かしを設定するか、**すべてのページに適用**をオンのままにします。
|
||||
7. **透かしを追加**をクリックして、処理とダウンロードを行います。
|
||||
|
||||
## オプション
|
||||
|
||||
**テキスト透かしの設定:**
|
||||
|
||||
- **テキスト** -- 透かしの文字列です(例: "CONFIDENTIAL"、"DRAFT")。
|
||||
- **フォントサイズ** -- 10 ~ 200 ポイントです。デフォルトは 72 です。
|
||||
- **色** -- カラーピッカーで好きな色を選べます。
|
||||
- **不透明度** -- 完全な透明から完全な不透明まで、透明度を調整できます。
|
||||
- **回転** -- 透かしの文字を -180 度から 180 度の範囲で回転できます。
|
||||
|
||||
**画像透かしの設定:**
|
||||
|
||||
- **画像のアップロード** -- 透かしとして使う PNG、JPG などの画像ファイルをアップロードします。
|
||||
- **不透明度** -- 画像の透明度を調整します。
|
||||
- **スケール** -- 画像透かしのサイズを変更します。
|
||||
|
||||
**レイアウトの設定:**
|
||||
|
||||
- **単一** -- 1 ページに透かしを 1 つ配置します。ドラッグするか、位置のプリセットで位置を決めます。
|
||||
- **タイル** -- 回転角度に沿った斜めのグリッド状に、ページ全体へ透かしを繰り返し配置します。これにより、透かしが文書の端から端までを覆います。
|
||||
- **水平方向の間隔** -- 文字方向に沿ったタイル間の間隔です。透かしの幅に対する割合(パーセント)で指定します(タイルモードのみ)。
|
||||
- **垂直方向の間隔** -- タイルの行間の間隔です。透かしの高さに対する割合(パーセント)で指定します(タイルモードのみ)。
|
||||
|
||||
**一般設定:**
|
||||
|
||||
- **すべてのページに適用** -- オンにすると、すべてのページに同じ透かしが適用されます。オフにすると、ページごとに個別の透かしを設定できます。
|
||||
- **ページ範囲** -- 透かしを入れるページを指定します(例: "1-3, 5, 7-9" や "all")。
|
||||
|
||||
## 機能
|
||||
|
||||
- ライブ PDF プレビュー上での、ビジュアルなドラッグ&ドロップによる位置決め
|
||||
- 角のハンドルでサイズ変更できる透かし
|
||||
- テキストと画像の透かしモード
|
||||
- 間隔を調整できる、単一配置またはページ全体のタイル(繰り返し)レイアウト
|
||||
- ページごと、または全体への透かしの適用
|
||||
- プレビューでのページ単位の移動
|
||||
- 不透明度と回転のコントロール
|
||||
- ページ範囲によるフィルタリング
|
||||
|
||||
## ユースケース
|
||||
|
||||
- レビュー用に回覧する前に、下書き文書へ "DRAFT" の透かしを入れる
|
||||
- 機密性の高い財務レポートに "CONFIDENTIAL" の透かしを追加する
|
||||
- 会社のロゴ画像の透かしで文書にブランドを付ける
|
||||
- 見込み客と共有する製品ドキュメントに "SAMPLE" と押印する
|
||||
- 配布する PDF 資料に著作権表示を追加する
|
||||
|
||||
## ヒント
|
||||
|
||||
- ページを斜めに横切る透かしにするには、回転を約 45 度に設定し、フォントサイズを大きくします。
|
||||
- タイルモードにすると、トリミングしても透かしが何十個も残るため、文書の再利用がはるかに難しくなります。タイルにする場合は、下の文字が読めるように不透明度を下げてください。
|
||||
- 背景が透明な画像透かし(PNG 形式)は、文書の内容とより自然になじみます。
|
||||
- ページごとに異なる透かしテキストが必要な場合は、「すべてのページに適用」をオフにして、ページごとに移動しながら設定してください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [ヘッダーとフッター](./header-footer)
|
||||
- [スタンプの追加](./add-stamps)
|
||||
- [通し番号付け](./bates-numbering)
|
||||
- [PDFへ署名](./sign-pdf)
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
title: 色の調整
|
||||
description: PDF の明るさ、コントラスト、彩度、色相、色温度、色合い、ガンマ、セピアを細かく調整します。
|
||||
---
|
||||
|
||||
# 色の調整
|
||||
|
||||
PDF 向けの本格的なカラーグレーディングツールキットです。明るさ、コントラスト、彩度、色相シフト、色温度、色合い、ガンマ、セピアの 8 つのパラメータを独立して調整でき、スライダーを動かすたびにライブプレビューが更新されます。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. PDF ファイルをアップロードします。
|
||||
2. 最初のページのプレビューと色設定パネルが表示されたエディタが開きます。
|
||||
3. スライダーを動かして、各カラーパラメータを調整します。プレビューはリアルタイムで更新されます。
|
||||
4. **リセット**をクリックすると、すべてのスライダーがデフォルトの位置に戻ります。
|
||||
5. **適用**をクリックすると、すべてのページを処理して、調整後の PDF をダウンロードします。
|
||||
|
||||
## オプション
|
||||
|
||||
- **明るさ** -- ページ全体を明るくまたは暗くします(-100 ~ +100)。
|
||||
- **コントラスト** -- 明るい部分と暗い部分の差を大きくまたは小さくします(-100 ~ +100)。
|
||||
- **彩度** -- 色の鮮やかさを上げ下げします(-100 ~ +100)。-100 にするとグレースケールになります。
|
||||
- **色相シフト** -- 色相環を回転させて、すべての色を一様にずらします。
|
||||
- **色温度** -- 色を暖色系(黄色やオレンジ)または寒色系(青)にずらします。
|
||||
- **色合い** -- 緑またはマゼンタの色かぶりを加えます。
|
||||
- **ガンマ** -- ガンマカーブを使って中間調の明るさを調整します。1.0 未満の値では中間調が暗くなり、1.0 を超える値では明るくなります。
|
||||
- **セピア** -- クラシックなセピア調の効果を適用します。値が大きいほど、茶色の色味が強くなります。
|
||||
|
||||
## 機能
|
||||
|
||||
- 独立して調整できる 8 つのカラーパラメータ
|
||||
- スライダーの変更に即座に反応するライブプレビュー
|
||||
- すぐにデフォルトへ戻せるリセットボタン
|
||||
- 文書内のすべてのページを処理
|
||||
- あらゆる PDF の内容(テキスト、画像、グラフィック)に対応
|
||||
|
||||
## ユースケース
|
||||
|
||||
- 暗いスキャンを明るくしたり、露出オーバーのページを補正したりする
|
||||
- カラフルな文書の彩度を下げて、印刷時のインク使用量を減らす
|
||||
- セピア調を適用して、証明書や賞状にアンティークな雰囲気を出す
|
||||
- PDF に埋め込まれた写真の色温度を補正する
|
||||
- 色あせたスキャン文書や低品質なスキャン文書のコントラストを上げる
|
||||
|
||||
## ヒント
|
||||
|
||||
- 手早くグレースケールに変換するには、彩度のスライダーを -100 まで動かします。
|
||||
- ガンマのスライダーは、中間調が暗すぎる、または明るすぎるスキャン文書の読みやすさを改善するのに特に役立ちます。
|
||||
- 他の画像エフェクト系ツールと同様に、このツールは各ページをラスタライズします。出力は画像ベースになるため、テキストは選択できなくなります。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [色の反転](./invert-colors)
|
||||
- [スキャナー効果](./scanner-effect)
|
||||
- [背景色](./background-color)
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: ページの交互結合と混合
|
||||
description: 各ファイルのページを交互に差し込んで PDF を結合し、しおりも保持します。
|
||||
---
|
||||
|
||||
# ページの交互結合と混合
|
||||
|
||||
複数の PDF ファイルのページを交互に差し込んで、文書間でページが入れ替わるようにします。通常の結合ではファイルが単に端から端へつながるだけですが、ファイル A の 1 ページ目、ファイル B の 1 ページ目、ファイル A の 2 ページ目、というように並べたいときに使うツールです。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. ドロップゾーンを使って、2 つ以上の PDF ファイルをアップロードします。
|
||||
2. ツールに、各ファイルのページ数とファイルサイズが表示されます。
|
||||
3. グリップハンドルをドラッグして、差し込みの順序でどのファイルのページを先に置くかを並べ替えます。
|
||||
4. **ページを混合**をクリックして、交互に差し込んだ出力を作成します。
|
||||
5. 結果は `alternated-mixed.pdf` としてダウンロードされます。
|
||||
|
||||
## 機能
|
||||
|
||||
- 任意の数の PDF(最低 2 つ)にわたってページを交互に差し込み
|
||||
- ファイルをドラッグ&ドロップで並べ替えて、差し込みの優先順位を制御
|
||||
- 元の文書のしおりを保持
|
||||
- アップロードした各ファイルのページ数とファイルサイズを表示
|
||||
- 専用の Web ワーカーで処理するため、UI の応答性を維持
|
||||
|
||||
## ユースケース
|
||||
|
||||
- 奇数ページと偶数ページを別々にスキャンした両面スキャンを組み直す
|
||||
- 問題用紙と解答集を組み合わせて、各問題の直後に解答が来るようにする
|
||||
- 2 言語の文書をページごとに結合する(例: 片面に英語、次の面に翻訳)
|
||||
- 片面スキャナーで読み取った表と裏のスキャンを交互に差し込む
|
||||
|
||||
## ヒント
|
||||
|
||||
- 元の PDF のページ数が異なる場合は、短い文書のページが先になくなり、長い文書の残りのページは末尾にまとめて配置されます。
|
||||
- ファイルの順序は重要です。リストの先頭のファイルが、出力の最初のページになります。必要に応じてドラッグして並べ替えてください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFの結合](./merge-pdf)
|
||||
- [Organize & Duplicate](./organize-pdf)
|
||||
- [PDFの分割](./split-pdf)
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
title: 背景色
|
||||
description: PDF のすべてのページの背景色を、上にある内容をそのまま保ったまま変更します。
|
||||
---
|
||||
|
||||
# 背景色
|
||||
|
||||
PDF の既存の内容の背後に、単色の背景色を設定します。このツールは各ページに色付きの長方形を作成し、その上に元の内容を重ねるため、テキスト、画像、グラフィックは新しい背景の上でもすべてはっきり見えます。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. PDF ファイルをアップロードします。
|
||||
2. カラーセレクターで背景色を選びます。デフォルトは明るい黄色(#FFFFCC)です。
|
||||
3. **背景色を変更**をクリックして処理します。
|
||||
4. 更新された PDF が自動的にダウンロードされます。
|
||||
|
||||
## オプション
|
||||
|
||||
- **背景色** -- 好きな単色を選べる標準のカラーピッカーです。デフォルトは明るい黄色です。
|
||||
|
||||
## 機能
|
||||
|
||||
- すべてのページに均一な背景色を適用
|
||||
- 元の内容(テキスト、画像、ベクターグラフィック)を色付きレイヤーの上にすべて保持
|
||||
- 元のページサイズを維持
|
||||
- ページ数に関係なく利用可能
|
||||
|
||||
## ユースケース
|
||||
|
||||
- 明るいクリーム色やアイボリーの背景を付けて、文書に紙のような柔らかい印象を与える
|
||||
- カテゴリーごとに異なる背景色を適用して、文書セットを色分けする
|
||||
- 同じ文書を、読者に応じて見た目の異なるバージョンにする
|
||||
- 文書を画面に映すときに、明るい背景の色味を加えて読みやすくする
|
||||
|
||||
## ヒント
|
||||
|
||||
- 明るく落ち着いた色が最適です。テキストがすでに明るい色でない限り、非常に暗い背景ではテキストが読みにくくなることがあります。
|
||||
- 背景色とテキストの色の両方を変えたい場合は、先に背景色を適用してから、その結果に対して [テキストの色の変更](./text-color) を使用してください。
|
||||
- このツールは PDF の構造レベルで動作し(ラスタライズではありません)、出力でもテキストを選択、検索できます。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [テキストの色の変更](./text-color)
|
||||
- [色の反転](./invert-colors)
|
||||
- [色の調整](./adjust-colors)
|
||||
@@ -0,0 +1,62 @@
|
||||
---
|
||||
title: 通し番号付け
|
||||
description: カスタマイズ可能なテンプレート、桁数、フォント、位置を使って、1 つまたは複数の PDF にベイツ番号を付けます。
|
||||
---
|
||||
|
||||
# 通し番号付け
|
||||
|
||||
ベイツ番号は、PDF のすべてのページに連続した識別子を押印する方式です。法的手続き、監査、コンプライアンス業務で文書にラベルを付ける際の標準的な方法です。このツールは複数のファイル、カスタマイズ可能なテンプレートに対応し、個別に番号を付けた PDF、または 1 つの ZIP アーカイブとして出力します。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. 1 つ以上の PDF ファイルをアップロードします。複数のファイルを一度にドラッグできます。
|
||||
2. スタイルのプリセットを選ぶか、カスタムテンプレートを作成します。
|
||||
3. 位置、フォント、サイズ、色、開始番号を設定します。
|
||||
4. **ベイツ番号を適用**をクリックして処理します。
|
||||
5. ファイルが 1 つの場合は直接ダウンロードされます。複数のファイルは ZIP アーカイブとしてダウンロードされます。
|
||||
|
||||
## オプション
|
||||
|
||||
- **スタイルプリセット** -- 組み込みの形式から選択します。
|
||||
- 証拠 + 事件 + ベイツ + ページ(例: "Exhibit 1 Case XYZ 000001 Page 1")
|
||||
- 証拠 + 事件 + ベイツ(ページ番号なし)
|
||||
- 事件 + ベイツ
|
||||
- ベイツ番号のみ(例: "000001")
|
||||
- カスタム(独自のテンプレートを作成)
|
||||
- **スタイルのカスタマイズ** -- プレースホルダー `[BATES]`、`[PAGE]`、`[FILE]`、`[FILENAME]` を使ったテンプレート文字列です。
|
||||
- **ベイツ番号の桁数** -- ゼロ埋めするベイツ番号の桁数(3 ~ 6)です。カスタムモードでのみ表示されます。
|
||||
- **位置** -- ヘッダーまたはフッター、左、中央、右から選びます。
|
||||
- **ベイツ開始番号** -- 最初のベイツ番号です。デフォルトは 1 です。番号はファイルをまたいで続きます。
|
||||
- **ファイルカウンターの開始番号** -- `[FILE]` プレースホルダーの開始番号です。
|
||||
- **フォント** -- Helvetica、Times New Roman、Courier から選びます。
|
||||
- **フォントサイズ** -- 押印するテキストのサイズです。
|
||||
- **色** -- ベイツ番号のテキストの色を選ぶカラーピッカーです。
|
||||
|
||||
## 機能
|
||||
|
||||
- アップロードしたすべてのファイルでベイツ番号がどう表示されるかを確認できるライブプレビュー
|
||||
- 文書をまたいで連続した番号を付けられる複数ファイル対応
|
||||
- ファイルをドラッグ&ドロップで並べ替えて、番号付けの順序を制御
|
||||
- 6 通りの位置指定(ヘッダー/フッター、左/中央/右)
|
||||
- ページサイズの違いに対応する、適応型の余白計算
|
||||
- 複数ファイルのバッチ向け ZIP 出力
|
||||
- 高い柔軟性を実現するテンプレートプレースホルダー
|
||||
|
||||
## ユースケース
|
||||
|
||||
- 訴訟の証拠開示文書に、連続した証拠番号を押印する
|
||||
- 数十のファイルにまたがる監査証拠パッケージに番号を付ける
|
||||
- コンプライアンス文書に規制の参照番号を付与する
|
||||
- 特許出願の添付資料に、事件固有の識別子を付ける
|
||||
|
||||
## ヒント
|
||||
|
||||
- 処理する前に、ファイルリストでファイルをドラッグして並べ替えてください。ベイツ番号の順序は、この並び順に従います。
|
||||
- `[FILENAME]` プレースホルダーを使うと、元のファイル名を押印に含められるため、ページを元の文書までたどりやすくなります。
|
||||
- プレビューボックスは設定を変更するとリアルタイムで更新されるので、処理する前に形式を確認できます。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [ページ番号](./page-numbers)
|
||||
- [ページラベルの追加](./add-page-labels)
|
||||
- [ヘッダーとフッター](./header-footer)
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: BMPからPDF
|
||||
description: BMP ビットマップ画像を、サーバーにアップロードすることなく、ブラウザ上で直接 PDF 形式に変換します。
|
||||
---
|
||||
|
||||
# BMPからPDF
|
||||
|
||||
Windows ビットマップ(BMP)ファイルを PDF に変換します。BMP は非圧縮の画像形式で、レガシーシステム、医用画像、産業用スキャナーなどで今も使われています。このツールなら、何もインストールせずに PDF へ変換できます。
|
||||
|
||||
## 対応形式
|
||||
|
||||
| 形式 | 拡張子 |
|
||||
| :--- | :----- |
|
||||
| BMP | `.bmp` |
|
||||
|
||||
## 使い方
|
||||
|
||||
1. アップロード領域をクリックするか、BMP ファイルをドラッグ&ドロップします。
|
||||
2. ファイルリストを確認します。ファイルを追加したり、不要なファイルを削除したりできます。
|
||||
3. **PDF に変換**をクリックします。出力は `from_bmps.pdf` としてダウンロードされます。
|
||||
|
||||
各 BMP はキャンバスに描画されて PNG として書き出され、その後 pdf-lib を使って PDF に埋め込まれます。ページサイズは元の画像のサイズと一致します。
|
||||
|
||||
## オプション
|
||||
|
||||
このツールには、追加の品質設定はありません。画像は元の解像度のまま、ロスレスの PNG として PDF に埋め込まれます。
|
||||
|
||||
## ユースケース
|
||||
|
||||
- BMP で保存されたレガシーなスキャン文書を、アーカイブ用の PDF に変換する
|
||||
- 古い Windows アプリケーションの BMP スクリーンショットを、共有しやすい文書にする
|
||||
- 既定で BMP を出力する医療用や産業用のスキャナーの出力を処理する
|
||||
- 古い画像アーカイブを、より持ち運びやすい形式へ移行する
|
||||
|
||||
## ヒント
|
||||
|
||||
- BMP ファイルは非圧縮のため、サイズが大きくなりがちです。画像は内部で PNG に再エンコードされるため、できあがる PDF は大幅に小さくなります。
|
||||
- BMP ファイルと他の画像形式が混在している場合は、[画像からPDF](./image-to-pdf) ツールを使えば、すべてを 1 回のバッチで変換できます。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [画像からPDF](./image-to-pdf)
|
||||
- [PNGからPDF](./png-to-pdf)
|
||||
- [TIFFからPDF](./tiff-to-pdf)
|
||||
@@ -0,0 +1,57 @@
|
||||
---
|
||||
title: しおりの編集
|
||||
description: ビジュアルエディターとCSV/JSON対応で、PDFのしおりを追加、編集、インポート、エクスポート、削除できます。
|
||||
---
|
||||
|
||||
# しおりの編集
|
||||
|
||||
しおりエディターを使えば、PDFのナビゲーション用しおり(アウトラインとも呼ばれます)を自在に管理できます。新しいしおりの追加、既存のしおりの編集、階層の整理、CSVやJSON形式でのしおりデータのインポートとエクスポートができます。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. クリックするか、ドロップゾーンにファイルをドラッグしてPDFをアップロードします。
|
||||
2. 必要に応じて **既存のしおりを自動抽出** にチェックを入れると、文書にある現在のしおりツリーを読み込みます。
|
||||
3. エディターが分割表示で開きます。左にPDFビューアー、右にしおりパネルが表示されます。
|
||||
4. しおりのタイトルを入力し、**ページに追加** をクリックすると、現在のページを指す新しいしおりが作成されます。
|
||||
5. ツールバーのボタンでしおりの並べ替え、スタイル設定、削除ができます。
|
||||
6. **しおり付きでPDFを保存** をクリックして、更新したファイルをダウンロードします。
|
||||
|
||||
## 機能
|
||||
|
||||
- ページ移動、ズーム操作、ページ指定入力を備えたビジュアルPDFビューアー
|
||||
- ワンクリックで任意のページにしおりを追加
|
||||
- PDF上を直接クリックして、しおりの移動先を正確に指定(ピックモード)
|
||||
- ドラッグ&ドロップで並べ替えできる階層構造のしおり
|
||||
- 一括操作:複数のしおりを選択して、色やスタイルの変更、削除をまとめて実行
|
||||
- 大きなツリーでもすばやく見つけられるしおり検索
|
||||
- すべての変更に対応した元に戻す、やり直す
|
||||
- CSV(タイトル、ページ、レベル)またはJSONファイルからしおりをインポート
|
||||
- 外部での編集用に、しおりをCSVまたはJSONでエクスポート
|
||||
- しおりのスタイル設定:色(赤、青、緑、黄、紫)とフォントスタイル(太字、斜体、太字斜体)
|
||||
- クイックナビゲーション:Page Up/Page Downキーでページをスクロール
|
||||
|
||||
## オプション
|
||||
|
||||
- **既存のしおりを自動抽出**: チェックすると、読み込み時にPDFの現在のしおりを読み取って表示します。
|
||||
- **一括モード**: 切り替えて複数のしおりを選択し、色、スタイル、削除をまとめて適用します。
|
||||
- **すべて展開/折りたたむ**: 入れ子になった子しおりをすばやく表示または非表示にします。
|
||||
|
||||
## 活用例
|
||||
|
||||
- しおりのない教科書やマニュアルに目次を追加する
|
||||
- OCR処理後のスキャン文書でしおりの構成を整える
|
||||
- しおりをCSVにエクスポートし、表計算ソフトで編集してから再インポートする
|
||||
- ページ参照が間違っている自動生成のしおりを修正する
|
||||
- 法律文書の重要な箇所に色付きのしおりを付ける
|
||||
|
||||
## ヒント
|
||||
|
||||
- 大量のしおりを作るにはCSVインポートが便利です。形式は簡単で、`title,page,level` と書き、レベル1が最上位です。
|
||||
- ピックモードでは、PDFページ上の正確な位置をクリックして移動先を指定できるため、ページ番号だけを指定するより精密です。
|
||||
- 大きな変更を行う前に、バックアップとしてしおりをエクスポートしておきましょう。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [目次](./table-of-contents)
|
||||
- [PDFエディター](./edit-pdf)
|
||||
- [ページラベルの追加](./add-page-labels)
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
title: CBZからPDF
|
||||
description: CBZおよびCBRのコミックアーカイブをブラウザでPDFに変換します。無料、プライベート、アップロード不要。
|
||||
---
|
||||
|
||||
# CBZからPDF
|
||||
|
||||
コミックアーカイブファイルをPDFに変換します。CBZとCBRはデジタルコミックの標準形式で、実体は画像を詰め込んだZIPまたはRARアーカイブです。このツールは各ページを取り出し、読む順番を保ったまま、すべての画像を原寸大のページにしたすっきりしたPDFを作成します。
|
||||
|
||||
## 対応形式
|
||||
|
||||
| 形式 | 拡張子 | 備考 |
|
||||
| :--- | :----- | :----------------------------------------------------- |
|
||||
| CBZ | `.cbz` | ZIPベースのコミックアーカイブ(pdf-libでローカル処理) |
|
||||
| CBR | `.cbr` | RARベースのコミックアーカイブ(PyMuPDFエンジンで処理) |
|
||||
|
||||
CBZコンバーターは、アーカイブ内のJPEG、PNG、GIF、BMP、WebP、AVIF、TIFF、HEIC、JXL画像を認識します。標準外の形式は、埋め込む前に自動でPNGに変換されます。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. アップロード領域をクリックするか、CBZまたはCBRファイルをドラッグ&ドロップします。両方の形式を1回のバッチに混在させることもできます。
|
||||
2. 一覧に表示されたファイルを確認します。不要なものは削除し、**ファイルを追加** をクリックしてさらに追加できます。
|
||||
3. **PDFに変換** をクリックします。CBZファイルの場合、ツールはアーカイブを展開し、画像ファイルを名前の自然順で並べ、各画像の実際の形式を判定して、pdf-libでPDFに埋め込みます。CBRファイルは代わりにPyMuPDFエンジンで処理されます。
|
||||
4. 1ファイルの場合はPDFとしてダウンロードされます。複数ファイルの場合は `comic-converted.zip` という名前のZIPアーカイブになります。
|
||||
|
||||
## オプション
|
||||
|
||||
設定は不要です。各画像は元のサイズに合わせたページになるため、見開きは横長のまま、単ページは縦長のままになります。
|
||||
|
||||
## 活用例
|
||||
|
||||
- PDFには対応していてもCBZ/CBRには対応していないタブレットやスマートフォンのアプリでコミックを読む
|
||||
- デジタルコミックの特定のページを印刷する
|
||||
- コミックのコレクションを、どのファイルビューアーでも開ける形式で保管する
|
||||
- 専用のコミックリーダーを持っていない人にコミックを共有する
|
||||
|
||||
## ヒント
|
||||
|
||||
- アーカイブ内の画像は自然順で並べ替えられます(そのため `page2.jpg` は `page10.jpg` より前になります)。正しいページ順にするため、ファイル名には一貫した番号を付けてください。
|
||||
- コンバーターは、ファイル拡張子ではなくバイナリシグネチャで画像形式を判定します。誤って `.jpg` と名付けられたPNGでも正しく埋め込まれます。
|
||||
- CBZファイルはPyMuPDFエンジンを読み込まずにブラウザ内ですべて処理されるため、CBRファイルより高速に変換できます。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [EPUBからPDF](./epub-to-pdf)
|
||||
- [MOBIからPDFへの変換](./mobi-to-pdf)
|
||||
- [画像からPDF](./image-to-pdf)
|
||||
@@ -0,0 +1,61 @@
|
||||
---
|
||||
title: 権限の変更
|
||||
description: 印刷、コピー、編集、注釈に関するPDFの利用権限を設定または変更します。256ビットAES暗号化を使用します。
|
||||
---
|
||||
|
||||
# 権限の変更
|
||||
|
||||
受け取った人がPDFで何をできるかを細かく調整します。ファイルをパスワードで保護するだけの基本的な暗号化とは異なり、このツールでは、印刷、コピー、編集、注釈、フォーム入力、文書の組み立て、ページの抽出を個別に許可または禁止でき、そのすべてが256ビットAES暗号化によって適用されます。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. PDFファイルをアップロードします。
|
||||
2. PDFがすでに暗号化されている場合は、**現在のパスワード** を入力します。
|
||||
3. **新しいユーザーパスワード**(開くために必要)や **新しいオーナーパスワード**(権限を管理)を設定します。
|
||||
4. チェックボックスで、個々の権限のオンとオフを切り替えます。
|
||||
5. **権限の変更** をクリックします。
|
||||
6. 更新されたPDFをダウンロードします。
|
||||
|
||||
新しいパスワード欄を両方とも空にすると、ツールはPDFを完全に復号し、すべての暗号化と制限を解除します。
|
||||
|
||||
## 権限の設定項目
|
||||
|
||||
| 権限 | 制御する内容 |
|
||||
| ------------------------ | -------------------------------------------------------- |
|
||||
| **印刷を許可** | 文書を印刷できるかどうか |
|
||||
| **コピーを許可** | テキストや画像を選択してコピーできるかどうか |
|
||||
| **変更を許可** | 文書の内容を編集できるかどうか |
|
||||
| **注釈を許可** | コメント、ハイライト、スタンプを追加できるかどうか |
|
||||
| **フォーム入力を許可** | インタラクティブなフォームフィールドに入力できるかどうか |
|
||||
| **文書の組み立てを許可** | ページの挿入、削除、回転ができるかどうか |
|
||||
| **ページの抽出を許可** | 個々のページを抽出できるかどうか |
|
||||
|
||||
すべての権限は、適用するためにオーナーパスワードが必要です。オーナーパスワードがないと、権限フラグはほとんどのPDFリーダーで無視されます。
|
||||
|
||||
## PDFにおける権限のしくみ
|
||||
|
||||
PDFの権限は暗号化仕様の一部です。暗号化辞書にビットフラグとして保存され、準拠したPDFリーダーによって適用されます。重要な違いは次のとおりです。
|
||||
|
||||
- **ユーザーパスワード**: ファイルを開くために必要です。
|
||||
- **オーナーパスワード**: 権限の変更や制限の解除に必要です。これがない場合、権限フラグによってユーザーが実行できる操作が制御されます。
|
||||
|
||||
オーナーパスワードだけを設定した場合(ユーザーパスワードなし)、誰でもファイルを開けますが、許可された操作に制限されます。両方を設定した場合は、開くのにパスワードが必要で、認証後も制限が適用されます。
|
||||
|
||||
## 活用例
|
||||
|
||||
- 閲覧と印刷はできても、編集やコピーはできないレポートを配布する
|
||||
- 受け取った人が記入はできても変更はできない契約書テンプレートを共有する
|
||||
- 画像のコピーを無効にしたPDFカタログを公開する
|
||||
- 構造の変更は防ぎつつ、レビュー用の下書きには注釈を許可する
|
||||
|
||||
## ヒント
|
||||
|
||||
- 効果を出すには、必ずオーナーパスワードを設定してください。オーナーパスワードのない権限は強制できません。
|
||||
- 一部のサードパーティ製PDFツールは権限フラグを無視します。より強力に保護したい場合は、PDFを画像化するか、DRMの利用を検討してください。
|
||||
- このツールを使うと、古いRC4暗号化のPDFをAES-256にアップグレードできます。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFの暗号化](./protect-pdf): 細かな権限設定を伴わない、シンプルなパスワード保護
|
||||
- [PDFの復号化](./unlock-pdf): 暗号化を完全に解除
|
||||
- [制限の解除](./remove-restrictions): オーナーパスワードがある場合に、すべての制限を取り除く
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
title: 単一ページに結合
|
||||
description: PDFのすべてのページを、1つの連続した縦または横のスクロールページにつなぎ合わせます。
|
||||
---
|
||||
|
||||
# 単一ページに結合
|
||||
|
||||
PDFのすべてのページを、1枚の長いページに結合します。ページは縦(スクロールのよう)または横(並べて)につなぎ合わされ、出力は連続した1ページになります。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. PDFファイルをアップロードします。
|
||||
2. レイアウトの方向を選びます。**縦**(ページを上から下に積み重ねる)または **横**(ページを横に並べる)です。
|
||||
3. ページ間の間隔をポイント単位で設定します。
|
||||
4. ページ間の隙間の背景色を選びます。
|
||||
5. 必要に応じて、区切り線(ページ間の細い線)を有効にし、太さと色を設定します。
|
||||
6. 処理ボタンをクリックします。出力は1ページのPDFになります。
|
||||
|
||||
## 機能
|
||||
|
||||
- ページを縦または横につなぎ合わせ
|
||||
- ページ間隔を設定可能
|
||||
- 隙間部分の背景色ピッカー
|
||||
- 太さと色を調整できる区切り線(任意)
|
||||
- 元の各ページを、結合したキャンバスに原寸の解像度で描画
|
||||
|
||||
## オプション
|
||||
|
||||
| オプション | 説明 |
|
||||
| ------------------ | -------------------------------- |
|
||||
| **向き** | 縦(積み重ね)または横(並べる) |
|
||||
| **ページ間隔** | ページ間の隙間(ポイント単位) |
|
||||
| **背景色** | ページ間の領域の色 |
|
||||
| **区切り線を追加** | ページ間の細い線のオン/オフ |
|
||||
| **区切り線の太さ** | 線の太さ(ポイント単位) |
|
||||
| **区切り線の色** | 区切り線の色 |
|
||||
|
||||
## 活用例
|
||||
|
||||
- 複数ページのワイヤーフレームやデザインモックアップから、1枚の長い画像を作る
|
||||
- Webへの埋め込み用に、文書を連続してスクロールできる表示にする
|
||||
- 複数ページのコミックやストーリーボードを1本の帯につなぎ合わせる
|
||||
- 連続したページを、レビュー用にパノラマ表示にする
|
||||
|
||||
## ヒント
|
||||
|
||||
- 縦向きは縦長ページの文書に最適です。横向きは横長のコンテンツに向いています。
|
||||
- ページ数の多い文書は、非常に縦長または横長の出力になります。極端に大きな単一ページは、一部のPDFビューアーでは扱いにくい場合があります。
|
||||
- コントラストのある色の区切り線を追加すると、元のページの終わりと次のページの始まりがわかりやすくなります。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [N-Up PDF](./n-up-pdf)
|
||||
- [PDFの結合](./merge-pdf)
|
||||
- [ページの分割](./divide-pages)
|
||||
@@ -0,0 +1,60 @@
|
||||
---
|
||||
title: PDFの比較
|
||||
description: 2つのPDF文書を、並べて表示またはオーバーレイモードで比較し、変更を詳細に検出して分類します。
|
||||
---
|
||||
|
||||
# PDFの比較
|
||||
|
||||
2つのPDFをアップロードすると、その間で何が変わったのかが正確にわかります。このツールはページを賢く対応付け、テキスト、画像、注釈、ヘッダー、書式の違いを検出して、並べて表示またはオーバーレイ表示で示します。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. 2つのPDFファイルをアップロードします。元のファイル(左)と改訂版(右)です。
|
||||
2. ツールが、内容のシグネチャを使って文書間のページを対応付けます。
|
||||
3. 表示モードを選びます。**並べて表示** または **オーバーレイ** です。
|
||||
4. ページネーションのコントロールで、ページの組を移動します。
|
||||
5. 違いはハイライトされ、分類されます。フィルターパネルを使って、特定の変更タイプに絞り込めます。
|
||||
6. 必要に応じて、比較結果をPDFレポートとしてエクスポートします。
|
||||
|
||||
## 機能
|
||||
|
||||
- 内容の類似度に基づく自動ページ対応付け
|
||||
- 並べて表示とオーバーレイの比較ビュー
|
||||
- 変更の分類:テキスト、画像、ヘッダー/フッター、注釈、書式、背景
|
||||
- カテゴリごとのフィルター切り替えで、特定の変更タイプを表示または非表示
|
||||
- クエリで絞り込めるテキスト変更の検索
|
||||
- スキャン文書を比較するためのOCR対応
|
||||
- 詳細確認用のズーム操作
|
||||
- 並べて表示モードでのパネル間の同期スクロール
|
||||
- 比較結果をPDFとしてエクスポート
|
||||
|
||||
## オプション
|
||||
|
||||
| オプション | 説明 |
|
||||
| ---------------------- | --------------------------------------------------------------------------- |
|
||||
| **表示モード** | 並べて表示またはオーバーレイ |
|
||||
| **OCR** | スキャン文書の比較用にOCRを有効/無効にする |
|
||||
| **OCR言語** | OCRによるテキスト抽出の言語 |
|
||||
| **カテゴリフィルター** | テキスト、画像、ヘッダー/フッター、注釈、書式、背景の変更の表示を切り替える |
|
||||
| **変更の範囲** | オーバーレイモードで、すべての変更とコンテンツのみを切り替える |
|
||||
| **ズーム** | 詳細確認のための拡大率を調整する |
|
||||
|
||||
## 活用例
|
||||
|
||||
- 契約書の改訂版を確認し、版の間で何が変わったかを正確に見つける
|
||||
- デザインのモックアップを比較し、PDFへのエクスポート結果が期待どおりか確認する
|
||||
- すべての編集を追跡する必要がある規制対象の業界で、文書の変更を監査する
|
||||
- PDFの変換処理で、元の内容が正確に保たれたかを検証する
|
||||
- 翻訳文書を原文と照らし合わせ、レイアウトの変化を確認する
|
||||
|
||||
## ヒント
|
||||
|
||||
- オーバーレイ表示は、2つの文書を重ねて表示するため、位置のずれや画像のサイズ変更といった空間的な違いがすぐにわかります。
|
||||
- テキストレイヤーのないスキャン文書を比較するときは、OCRを有効にしてください。比較エンジンがページ画像からテキストを抽出します。
|
||||
- カテゴリフィルターで重要なものに集中しましょう。たとえば、テキスト内容の違いだけが気になるときは、書式の変更を非表示にします。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [メタデータの表示](./view-metadata)
|
||||
- [OCR PDF](./ocr-pdf)
|
||||
- [PDFの結合](./merge-pdf)
|
||||
@@ -0,0 +1,73 @@
|
||||
---
|
||||
title: PDFの圧縮
|
||||
description: Hyper Compressエンジンで、PDFのファイルサイズを最大90%削減します。目標ファイルサイズ、バッチ処理、カスタム品質設定に対応。
|
||||
---
|
||||
|
||||
# PDFの圧縮
|
||||
|
||||
PDFファイルを壊さずに小さくします。PDFの圧縮は、BentoPDF独自の圧縮エンジンである [Hyper Compress](https://www.bentopdf.com/hyper-compress) を使用しています。画像の再圧縮、フォントのサブセット化と統合、埋め込みサムネイルやアプリケーション固有の非公開データなど不要なデータの削除を行います。PDFの機能は完全に保たれ、テキストは選択でき、リンクやフォームフィールドも動作します。
|
||||
|
||||
Hyper CompressはWebAssemblyにコンパイルされてBentoPDFに同梱されているため、追加のセットアップなしで、オフラインやエアギャップ環境でも圧縮できます。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. ドロップゾーンをクリックするか、ファイルをドラッグして、1つ以上のPDFをアップロードします。
|
||||
2. **圧縮レベル** を選びます。低、中、高、ロスレスのいずれかです。
|
||||
3. 必要に応じて **目標ファイルサイズ** を入力するか、**詳細設定** を開いて、**グレースケールに変換** を含むきめ細かな設定をします。
|
||||
4. **PDFを圧縮** をクリックします。複数のファイルの場合は、1つのZIPとしてダウンロードされます。
|
||||
|
||||
## 特殊な文書
|
||||
|
||||
- **デジタル署名付きPDF** は、変更すると署名が無効になるため、そのまま返されます。詳細設定で **コンテンツ保護を上書き** をオンにすると、署名が削除されて圧縮されます。見える署名はページに残りますが、ファイルは署名済みではなくなります。
|
||||
- **PDF/Aファイル** は、圧縮後にPDF/Aのラベルを失います。これは、もはや満たしていない準拠を主張しないようにするためです。代わりにファイルの準拠を保ちたい場合は、詳細設定で **PDF/Aを維持** をオンにします。
|
||||
- **パスワード保護されたPDF** には、ファイルカードにパスワード欄が表示されます。そこにパスワードを入力すると、Hyper Compressがファイルを自分で開くため、別途ロック解除の手順は不要です。ロックされたファイルが2つ以上ある場合は、同じパスワードを使うすべてのファイルを、共有の1つの欄でロック解除できます。圧縮後のコピーにはパスワードがありません。再度設定するには [PDFの暗号化](./protect-pdf) を使用してください。
|
||||
- **テキストレイヤーのないスキャン** は、詳細設定の **ページを画像化** を使うと、さらに小さくできます。これは各ページを1枚の最適化された画像に置き換えます。OCR済みのスキャンを含め、選択可能なテキストを持つ文書では、**コンテンツ保護を上書き** がオンでない限りスキップされます。オンにした場合は、テキストのページも画像になるため、テキストは選択できなくなり、リンクも動作しなくなります。
|
||||
|
||||
## 圧縮レベル
|
||||
|
||||
| レベル | 画像品質 | 最大解像度 | 最適な用途 |
|
||||
| ------------ | -------------- | ---------- | --------------------------------- |
|
||||
| **低** | 80 | 200 DPI | 見た目の品質を保ちたいとき |
|
||||
| **中** | 50 | 150 DPI | 日常的な文書 |
|
||||
| **高** | 20 | 72 DPI | メールの添付、Webへのアップロード |
|
||||
| **ロスレス** | 画像はそのまま | 変更なし | アーカイブ用のコピー |
|
||||
|
||||
高では、標準の14種類のPDFフォントに加え、安全な場合はArialなどの類似フォントも埋め込みを解除します。
|
||||
|
||||
## 目標ファイルサイズ
|
||||
|
||||
KBまたはMBでサイズを入力すると、Hyper Compressは、選んだレベルから始めて、そのサイズに収まる最良の画像品質を探します。文書がそこまで小さくならない場合は、作成できる最小のバージョンが出力され、その旨のメッセージが表示されます。[PDFを1MBに圧縮](https://www.bentopdf.com/compress-pdf-to-1mb) のような専用ページは、目標があらかじめ入力された状態で開きます。
|
||||
|
||||
## 詳細設定
|
||||
|
||||
詳細設定パネルを開くと、Hyper Compressを直接調整できます。圧縮レベルを選ぶと、これらはそのレベルの値にリセットされ、どれかを編集すると、レベルはカスタムに切り替わります。
|
||||
|
||||
- **コンテンツ保護を上書き**: デフォルトでは、Hyper Compressは署名付きPDFには手を加えず、テキストのあるページを画像化しません。これをオンにすると、その両方を回避します。レベルを変更してもオンのままです。
|
||||
|
||||
- **画像**: 画像品質、最大解像度、強制的な再サンプリング、色の削減、見えない画像領域のクリッピング、代替画像の削除、カラープロファイルの簡素化、JPEG 2000、ロスレスモード
|
||||
- **フォント**: サブセット化、重複の統合、標準フォントとその類似フォントの埋め込み解除
|
||||
- **コンテンツ**: 注釈、フォームフィールド、リンクの平坦化
|
||||
- **クリーンアップ**: サムネイル、アプリケーションデータ、記事スレッド、Webキャプチャ情報、構造ツリー、出力インテントの削除
|
||||
- **画像化**: 画像のみのスキャンで、ページを画像に置き換える。選択可能なテキストがある文書ではスキップ
|
||||
- **出力**: PDF/Aを維持、およびBrotli圧縮に対応するPDF 2.0リーダー向けのBrotli圧縮
|
||||
|
||||
## 活用例
|
||||
|
||||
- 50 MBのレポートを、メールの添付ファイルの上限以下にする
|
||||
- 目標ファイルサイズを使って、スキャンをポータルの厳しいアップロード上限以下にする
|
||||
- マーケティング用PDFを最適化して、Webサイトでのダウンロードを速くする
|
||||
- ストレージコストが問題になる大量の文書セットをアーカイブする
|
||||
- メッセージアプリでPDFを共有するときのモバイルデータ使用量を減らす
|
||||
|
||||
## ヒント
|
||||
|
||||
- まずは中から始めましょう。それでも大きすぎる場合は、目標ファイルサイズを設定するか、高に上げてください。
|
||||
- テキストレイヤーのないスキャンには、詳細設定の「ページを画像化」をオンにします。
|
||||
- 詳細設定の「グレースケールに変換」は、カラーが多い文書のファイルサイズを減らせます。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFの線形化](./linearize-pdf): 圧縮したPDFをWebでの高速表示向けに最適化
|
||||
- [PDFの画像化](./rasterize-pdf): テキストのあるページを含め、特定のDPIでページを画像に変換
|
||||
- [PDFの修復](./repair-pdf): 他の場所での圧縮で壊れたPDFを修復
|
||||
- [メタデータの削除](./remove-metadata): プライバシーのために隠れたデータを削除
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: PDFのトリミング
|
||||
description: Cropper.jsを使ったエディターで、各ページにトリミング領域を描いて、PDFのページを視覚的にトリミングします。
|
||||
---
|
||||
|
||||
# PDFのトリミング
|
||||
|
||||
視覚的なトリミング画面で、PDFページの余白を切り取ります。各ページ上に直接トリミング用の長方形を描き、結果をプレビューして、トリミングを適用します。ページごとに異なるトリミング領域を設定することも、文書全体に同じトリミングを適用することもできます。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. PDFファイルをアップロードします。
|
||||
2. トリミングエディターが開き、ドラッグできるトリミングのオーバーレイが付いた最初のページが表示されます。
|
||||
3. 辺や角をドラッグして、トリミングの長方形を調整します。
|
||||
4. ページ移動ボタンでページを切り替え、それぞれのトリミング領域を設定します。
|
||||
5. **トリミング** をクリックして適用し、結果をダウンロードします。
|
||||
|
||||
## 機能
|
||||
|
||||
- 精密な調整用のハンドルを備えた、Cropper.js搭載のビジュアルトリミングエディター
|
||||
- ページごとに移動して、個別のトリミング領域を設定
|
||||
- トリミング設定をページごとに保存するため、ページによって異なるトリミングを定義可能
|
||||
- 選択したトリミング領域のライブプレビュー
|
||||
- あらゆるページサイズや向きのPDFに対応
|
||||
|
||||
## 活用例
|
||||
|
||||
- スキャン文書の広い余白を取り除いて、内容の領域に集中させる
|
||||
- プリプレス用PDFから、プリンターのトンボや見当マークを切り取る
|
||||
- 講義スライドから、発表者ノートの領域を取り除く
|
||||
- 文書の抜粋を共有する前に、すべてのページからヘッダーやフッターを取り除く
|
||||
- 特定の画面や印刷レイアウトに合わせて、ページのサイズを変更する
|
||||
|
||||
## ヒント
|
||||
|
||||
- トリミングのオーバーレイは、自由にサイズ変更や移動ができます。角をドラッグすると縦横比を保ったまま、辺をドラッグすると1方向だけ調整できます。
|
||||
- すべてのページに同じトリミングが必要な文書では、最初のページで設定してください。ページを移動しても、ツールがトリミング領域を記憶しています。
|
||||
- 視覚的にトリミングするのではなく、ページサイズを統一したい場合は、ページサイズを固定ツールのほうが適していることがあります。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFエディター](./edit-pdf)
|
||||
- [ページ番号](./page-numbers)
|
||||
- [空白ページの削除](./remove-blank-pages)
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
title: CSVからPDF
|
||||
description: CSVの表計算ファイルを、ブラウザ上で書式の整ったPDFの表に直接変換します。
|
||||
---
|
||||
|
||||
# CSVからPDF
|
||||
|
||||
CSVファイルを、すっきりとした書式のPDF文書に変換します。各CSVは解析され、出力PDFの中で表として描画されます。受け取る人が表計算ソフトを持っていなくても、表形式のデータを印刷したり共有したりしたいときに便利です。
|
||||
|
||||
## 対応形式
|
||||
|
||||
| 形式 | 拡張子 |
|
||||
| :--- | :----- |
|
||||
| CSV | `.csv` |
|
||||
|
||||
## 使い方
|
||||
|
||||
1. アップロード領域をクリックするか、1つ以上のCSVファイルをドラッグ&ドロップします。
|
||||
2. ファイル一覧を確認します。ファイルを追加したり、不要なものを削除したりできます。
|
||||
3. **PDFに変換** をクリックします。進行状況インジケーターが変換の状態を示します。
|
||||
4. 1ファイルの場合は、PDFとして直接ダウンロードされます。複数ファイルの場合は `csv-converted.zip` にまとめられます。
|
||||
|
||||
## オプション
|
||||
|
||||
このツールに追加の設定はありません。CSVは自動的に解析され、表として整形されます。
|
||||
|
||||
## 出力
|
||||
|
||||
| 入力数 | 出力 |
|
||||
| :------------ | :------------------------------------------------------------------- |
|
||||
| 1ファイル | 単一のPDFをダウンロード(例: `data.pdf`) |
|
||||
| 2ファイル以上 | ZIPアーカイブ(`csv-converted.zip`)に、ファイルごとに1つのPDFを格納 |
|
||||
|
||||
## 活用例
|
||||
|
||||
- エクスポートしたデータベースのレポートを、印刷できるPDFの表に変換する
|
||||
- Excelを持っていない人に、財務データや在庫リストを共有する
|
||||
- コンプライアンス文書用に、CSVのログファイルのPDF版を作成する
|
||||
- CSVで保存されている住所録、成績表、その他の表形式データを印刷する
|
||||
|
||||
## ヒント
|
||||
|
||||
- 最良の結果を得るには、CSVが標準的なカンマ区切りであることを確認してください。ツールは一般的なCSVの解析規則に従います。
|
||||
- CSVの列が多い場合、表はページの幅に収まるように圧縮されることがあります。幅の広いデータセットは、複数のファイルに分割することを検討してください。
|
||||
- Excelファイル(`.xls`、`.xlsx`)には、表計算の書式や複数のシートを保持する [ExcelからPDF](./excel-to-pdf) ツールを使ってください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [ExcelからPDF](./excel-to-pdf)
|
||||
- [テキストからPDF](./txt-to-pdf)
|
||||
- [JSONからPDF](./json-to-pdf)
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: ページの削除
|
||||
description: ページ番号、範囲、またはサムネイルの視覚的な選択で、PDFから特定のページを削除します。
|
||||
---
|
||||
|
||||
# ページの削除
|
||||
|
||||
PDF文書から不要なページを削除します。削除するページは、ページ番号や範囲を入力して指定するか、ページのサムネイルを直接クリックして削除対象に設定します。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. PDFファイルをアップロードします。ツールがすべてのページのサムネイルプレビューを表示します。
|
||||
2. テキスト欄に、範囲の構文(例: `2, 5-8`)で削除するページを入力するか、サムネイルをクリックして切り替えます。
|
||||
3. 選択したページはハイライト表示されるので、選択内容を確認できます。
|
||||
4. 処理ボタンをクリックします。選択したページを取り除いた新しいPDFが作成されます。
|
||||
|
||||
## 機能
|
||||
|
||||
- 範囲の構文(`2, 5-8, 12`)によるテキストでのページ選択
|
||||
- クリックで選択して削除できる、ビジュアルなサムネイルグリッド
|
||||
- 削除対象のページをリアルタイムでハイライトするプレビュー
|
||||
- 実際のページ数に対する入力の検証
|
||||
- 削除しなかったすべてのページを元の順序で保持
|
||||
|
||||
## 活用例
|
||||
|
||||
- スキャン文書から、白紙や穴埋め用のページを削除する
|
||||
- 文書を共有する前に、表紙や付録を取り除く
|
||||
- 最終版のPDFに誤って残った下書きのページを整理する
|
||||
- 配布前に、機密情報を含むページを削除する
|
||||
|
||||
## ヒント
|
||||
|
||||
- ページを削除しても、残りのページの内容や書式には影響しません。出力は、削除したページを除いた元の文書の忠実なコピーです。
|
||||
- 特定のページを削除するのではなく、特定のページだけを残したい場合は、[ページの抽出](./extract-pages) のほうが適しています。
|
||||
- サムネイル表示は遅延読み込みされるため、大きな文書でも操作が軽快です。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [ページの抽出](./extract-pages)
|
||||
- [複製と整理](./organize-pdf)
|
||||
- [PDFの分割](./split-pdf)
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
title: PDFの傾き補正
|
||||
description: OpenCVの傾き検出を使って、スキャンしたPDFの傾いたページを自動で補正します。しきい値とDPIを調整できます。
|
||||
---
|
||||
|
||||
# PDFの傾き補正
|
||||
|
||||
スキャンした文書が完全にまっすぐなことはまれです。わずかな傾きでも、OCRの精度が下がり、印刷の見た目も雑になります。このツールはOpenCVの画像処理アルゴリズムを使って各ページの傾きの角度を検出し、水平に戻すよう回転させます。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. スキャンしたPDFを1つ以上アップロードします。
|
||||
2. **傾きのしきい値** を設定します。検出された傾きがこの値を下回るページには、手を加えません。
|
||||
3. **処理品質(DPI)** を選びます。DPIが高いほど検出精度は上がりますが、時間がかかります。
|
||||
4. **PDFの傾き補正** をクリックします。
|
||||
5. 処理が終わると、結果パネルに各ページの検出された角度と、補正されたかどうかが表示されます。
|
||||
|
||||
## オプション
|
||||
|
||||
| 設定 | 値 | デフォルト |
|
||||
| ------------------ | -------------------- | ---------- |
|
||||
| **傾きのしきい値** | 0.1、0.5、1.0、2.0度 | 0.5 |
|
||||
| **処理DPI** | 100、150、200、300 | 150 |
|
||||
|
||||
## 傾き検出のしくみ
|
||||
|
||||
ツールは各ページを選択したDPIで画像に描画し、OpenCVを使ってコンテンツ内の主要な線の角度を検出します。検出された傾きがしきい値を超える場合、ページは逆の角度で回転されてまっすぐになります。しきい値を下回るページは、そのまま通過します。
|
||||
|
||||
## 活用例
|
||||
|
||||
- 一括スキャンした契約書や法的文書を整える
|
||||
- スキャンしたレシートや請求書を、OCR処理用に準備する
|
||||
- 紙の置き方が一定でないフラットベッドスキャナーのページをまっすぐにする
|
||||
- デジタル化した資料の見た目の品質を向上させる
|
||||
|
||||
## ヒント
|
||||
|
||||
- OCR向けにピクセル単位の正確な位置合わせが必要な場合は、しきい値を0.1度に下げてください。
|
||||
- 150 DPIは、ほとんどの文書で高速かつ正確です。非常に小さな文字や細部の多いページには、300 DPIを使ってください。
|
||||
- 傾き補正は、はっきりした水平のテキスト行がある文書で最もよく機能します。ほとんどが画像のページや、斜めのデザイン要素があるページでは、うまくいかないことがあります。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFの画像化](./rasterize-pdf): 傾きを補正した出力を、平坦な画像ベースのPDFに変換
|
||||
- [PDFの圧縮](./compress-pdf): 傾き補正後にファイルサイズを削減
|
||||
- [PDFの修復](./repair-pdf): スキャンしたPDFの構造上の問題を修復
|
||||
@@ -0,0 +1,65 @@
|
||||
---
|
||||
title: 電子署名
|
||||
description: X.509証明書を使って、PDFに暗号化による電子署名を追加します。PKCS#12とPEM形式、可視署名オプションに対応。
|
||||
---
|
||||
|
||||
# 電子署名
|
||||
|
||||
電子署名は、特定の人物が文書に署名したこと、そして署名後に文書が改変されていないことの、暗号による証明です。手書きの署名(単なる画像)とは異なり、電子署名はX.509証明書とPKCS#7標準を使って、検証可能な真正性と完全性を提供します。
|
||||
|
||||
BentoPDFは電子署名をすべてブラウザ内で適用します。秘密鍵がお使いのデバイスから出ることはありません。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. PDFファイルをアップロードします。
|
||||
2. 証明書ファイル(.pfx、.p12、または.pem)をアップロードします。
|
||||
3. 証明書のパスワードを入力してロックを解除します。ツールに、証明書のサブジェクト、発行者、有効期間が表示されます。
|
||||
4. 必要に応じて、署名のメタデータ(理由、場所、連絡先)を設定します。
|
||||
5. 必要に応じて、位置、サイズ、画像、テキストをカスタマイズできる **可視署名** を有効にします。
|
||||
6. **PDFに署名** をクリックします。
|
||||
|
||||
## 対応する証明書形式
|
||||
|
||||
| 形式 | 拡張子 | 説明 |
|
||||
| ----------- | ---------- | ------------------------------------------------------------------------------------------------------------- |
|
||||
| **PKCS#12** | .pfx、.p12 | 秘密鍵と証明書チェーンを含む、業界標準のバンドル。最も一般的な形式。 |
|
||||
| **PEM** | .pem | テキストベースの形式。証明書と秘密鍵の両方を1つのファイルに含める必要があります。暗号化された秘密鍵にも対応。 |
|
||||
|
||||
## 可視署名のオプション
|
||||
|
||||
有効にすると、PDFのページに可視の署名ブロックが描画されます。
|
||||
|
||||
- **位置**: X/Y座標と、幅/高さ(ポイント単位)
|
||||
- **ページ**: 最初のページ、最後のページ、すべてのページ、または特定のページ番号
|
||||
- **画像**: PNG、JPG、WebPの画像をアップロード(手書きの署名、社印など)
|
||||
- **テキスト**: 色とフォントサイズを設定できるカスタムテキスト。画像もテキストも指定しない場合、ツールは証明書のコモンネームと現在の日付からテキストを自動生成します。
|
||||
|
||||
## 署名のメタデータ
|
||||
|
||||
- **理由**: 文書に署名した理由(例: 「承認済み」、「確認済み」)
|
||||
- **場所**: 署名を行った場所(例: 「New York, NY」)
|
||||
- **連絡先**: 署名者への連絡方法(例: メールアドレス)
|
||||
|
||||
## インターネット接続について
|
||||
|
||||
署名にはインターネット接続が必要な場合があります。署名ライブラリは、証明書の認証局情報アクセス(AIA)拡張に埋め込まれたURLから、証明書チェーンを取得します。それらのサーバーに到達できない場合、チェーンの検証が必要な証明書では署名に失敗します。
|
||||
|
||||
## 活用例
|
||||
|
||||
- 契約書、提案書、合意書に、法的拘束力のある電子署名で署名する
|
||||
- PKIベースの認証が必要なワークフローで、公式文書を認証する
|
||||
- 規制対応のためにPDFの請求書に署名する(EU諸国の多くが、電子署名付きの電子請求書を求めています)
|
||||
- 設計図や品質文書に、組織としての承認を加える
|
||||
|
||||
## ヒント
|
||||
|
||||
- 自己署名証明書はテストには使えますが、Adobe Readerでは警告が表示されます。本番の文書には、信頼できる認証局の証明書を使ってください。
|
||||
- 可視署名は見た目だけのものです。暗号署名は、可視ブロックを有効にしているかどうかにかかわらず埋め込まれます。
|
||||
- 署名済みPDFを署名の検証ツールで確認し、署名が損なわれていないことを確かめましょう。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDF署名を検証する](./validate-signature-pdf): 署名済みPDFの電子署名を検証
|
||||
- [PDFの平坦化](./flatten-pdf): 署名前にフォームを平坦化して、改変を防止
|
||||
- [PDFの暗号化](./protect-pdf): 電子署名に加えてパスワード保護を追加
|
||||
- [メタデータの削除](./remove-metadata): 署名前にメタデータを削除
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: ページの分割
|
||||
description: PDFのページを、横または縦に、より小さなサブページに分割します。
|
||||
---
|
||||
|
||||
# ページの分割
|
||||
|
||||
PDFの各ページを、横または縦に分割して半分に切ります。1ページに入っている内容を別々のページに分けたいときに便利です。たとえば、2段組みのレイアウトを1枚の横長ページとしてスキャンした場合などです。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. PDFファイルをアップロードします。
|
||||
2. 分割の方向を選びます。**縦**(左右の半分)または **横**(上下の半分)です。
|
||||
3. 必要に応じて、分割するページを限定するページ範囲を指定します。空欄にすると、すべてのページが分割されます。
|
||||
4. 処理ボタンをクリックして、分割したPDFを生成します。
|
||||
|
||||
## 機能
|
||||
|
||||
- 縦の分割:各ページを左右の半分に分割
|
||||
- 横の分割:各ページを上下の半分に分割
|
||||
- 特定のページだけを分割するページ範囲フィルター
|
||||
- 対象外のページは、そのまま通過
|
||||
- 再描画せずに、内容の品質を保持
|
||||
|
||||
## 活用例
|
||||
|
||||
- 2ページ分を1枚にスキャンしたページを分ける(例: 1枚に左右のページが写った本のスキャン)
|
||||
- 内容が左右に並んだ横向きのPDFを、個別の縦向きページに分割する
|
||||
- 縦長のインフォグラフィックやポスターを、上下の別々のセクションに分割する
|
||||
- 大判の文書を、標準サイズの用紙に印刷できるよう準備する
|
||||
|
||||
## ヒント
|
||||
|
||||
- ページ内の内容の配分が偏っていても、分割は正確に中央で行われます。左右非対称に分割したい場合は、代わりに [PDFのトリミング](./crop-pdf) を検討してください。
|
||||
- 分割の前後でページの回転が必要な場合は、このツールを [PDFの回転](./rotate-pdf) と組み合わせてください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFの分割](./split-pdf)
|
||||
- [PDFのトリミング](./crop-pdf)
|
||||
- [N-Up PDF](./n-up-pdf)
|
||||
- [PDFのポスタライズ](./posterize-pdf)
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
title: 両面スキャンの並べ替え
|
||||
description: 表面のページと裏面のページが別々のブロックに分かれた両面スキャンのPDFを、正しい表裏の順序に並べ替えます。
|
||||
---
|
||||
|
||||
# 両面スキャンの並べ替え
|
||||
|
||||
両面スキャンの並べ替えは、1つのPDFに2つのページブロックが含まれるADFスキャンのワークフロー向けに作られています。
|
||||
|
||||
- 最初にすべての表面
|
||||
- 次にすべての裏面
|
||||
|
||||
手作業で分割して組み直す代わりに、このツールは2つのブロックを自然な読み順に交互に並べます。表1、裏1、表2、裏2、というようにです。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. 両面の束をスキャンして作成した、1つのPDFをアップロードします。
|
||||
2. 表面のブロックが終わる分割位置を設定します。
|
||||
3. 裏面のブロックの扱いを選びます。
|
||||
- **裏面ブロックを反転**(裏面をスキャンする前に束をひっくり返した場合に一般的)
|
||||
- **裏面ブロックをそのまま維持**
|
||||
4. **PDFを並べ替え** をクリックして、並べ替えた結果をダウンロードします。
|
||||
|
||||
## オプション
|
||||
|
||||
- **分割位置を自動検出(半分)**: 分割位置を `ceil(totalPages / 2)` に設定します。
|
||||
- **奇数ページの警告**: 総ページ数が奇数の場合に警告します(スキャンの不一致であることが多いです)。
|
||||
- **ブロックサイズ不一致の確認**: 表面と裏面のブロックのサイズが異なる場合に、確認を求めます。
|
||||
- **グループ別エクスポート**: 並べ替えた出力を、元の文書のページ数に基づいて個別のPDFに分割し、ZIPとしてダウンロードします。
|
||||
|
||||
## 出力の動作
|
||||
|
||||
- **デフォルト**: 1つの出力PDF(入力PDF1つに対して、出力PDF1つ)。
|
||||
- **グループモード**: 出力は、指定した文書あたりのページ数で分割されます。複数のまとまりができた場合は1つのZIPとして、そうでない場合は単一のPDFとしてダウンロードされます。
|
||||
|
||||
ブロックのサイズが揃っていない場合は、対になるページが先に並べ替えられ、残った対のないページは最後に追加されます。
|
||||
|
||||
## よくある活用例
|
||||
|
||||
- 両面印刷のフォームの束を2回に分けてスキャンした後、順序を元に戻す
|
||||
- すべての表面の後にすべての裏面を出力するオフィス用スキャナーから、表裏のセットを組み直す
|
||||
- アーカイブ用のスキャンを、文書ごとのファイルに分割する前に後処理する
|
||||
|
||||
## ヒント
|
||||
|
||||
- ほとんどの両面バッチでは、総ページ数は偶数になるはずです。
|
||||
- 裏面の向きが逆に見える場合は、**裏面ブロックを反転** と **裏面ブロックをそのまま維持** を切り替えてください。
|
||||
- 2ページの原本(表と裏)には、文書あたり `2` ページでグループ別エクスポートを使用します。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [代替ページと混合ページ](./alternate-merge)
|
||||
- [PDFの分割](./split-pdf)
|
||||
- [PDFの結合](./merge-pdf)
|
||||
- [複製と整理](./organize-pdf)
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: 添付ファイルの編集
|
||||
description: PDF文書に埋め込まれたファイル添付を表示し、選択して削除します。
|
||||
---
|
||||
|
||||
# 添付ファイルの編集
|
||||
|
||||
PDF内のファイル添付を調べて管理します。このツールは、埋め込まれたすべてのファイルを、名前と添付レベルとともに一覧表示し、個々の添付ファイルを削除対象にするか、すべてをまとめて取り除くことができます。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. PDFファイルをアップロードします。
|
||||
2. ツールが自動的に添付ファイルをスキャンし、一覧に表示します。
|
||||
3. 各添付ファイルには、ファイル名と、文書レベルかページレベルの添付かが表示されます。
|
||||
4. 添付ファイルの横にあるゴミ箱アイコンをクリックすると、削除対象になります(もう一度クリックすると解除されます)。
|
||||
5. **すべての添付ファイルを削除** ボタンですべてを一度に選択するか、**すべて選択解除** で選択を解除します。
|
||||
6. 処理ボタンをクリックして、選択した添付ファイルを取り除いた新しいPDFを保存します。
|
||||
|
||||
## 機能
|
||||
|
||||
- 文書レベルとページレベルのすべての添付ファイルを一覧表示
|
||||
- 個別または一括での添付ファイルの削除
|
||||
- 確定する前に、選択のオンとオフを切り替え可能
|
||||
- 削除対象の項目に、取り消し線と不透明度の変化を視覚的に表示
|
||||
- 選択した添付ファイルを取り除いた、変更後のPDFをダウンロード
|
||||
|
||||
## 活用例
|
||||
|
||||
- 再配布の前に、文書に埋め込まれた古い、または誤ったファイルを削除する
|
||||
- 共有の前に、PDFから機密性の高い添付ファイル(財務データ、個人情報)を取り除く
|
||||
- 不要になった大きな埋め込みファイルを削除して、PDFのファイルサイズを減らす
|
||||
- 埋め込まれたコンテンツを監査し、アーカイブの前に文書を整理する
|
||||
|
||||
## ヒント
|
||||
|
||||
- 削除対象の添付ファイルは、取り消し線付きで表示されます。気が変わった場合は、処理の前に元に戻せます。
|
||||
- 添付ファイルが見つからない場合、ツールは「添付ファイルが見つかりません」というメッセージを表示します。そのPDFには埋め込みファイルが含まれていないということです。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [添付ファイルの追加](./add-attachments)
|
||||
- [添付ファイルの抽出](./extract-attachments)
|
||||
- [メタデータの表示](./view-metadata)
|
||||
@@ -0,0 +1,58 @@
|
||||
---
|
||||
title: メタデータの編集
|
||||
description: タイトル、作成者、キーワード、日付、カスタムプロパティなど、PDFのメタデータフィールドを表示して変更します。
|
||||
---
|
||||
|
||||
# メタデータの編集
|
||||
|
||||
PDFファイルに埋め込まれたメタデータを編集します。ツールは、文書の既存のメタデータをフォームにあらかじめ入力し、任意のフィールドを変更でき、変更を新しいPDFに保存します。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. PDFファイルをアップロードします。ツールが現在のメタデータを読み取り、フォームに入力します。
|
||||
2. 標準フィールド(タイトル、作成者、サブジェクト、キーワード、作成アプリケーション、PDF変換)を編集します。
|
||||
3. 日時ピッカーで、作成日と更新日を調整します。
|
||||
4. 追加ボタンをクリックし、キーと値のペアを入力して、カスタムメタデータフィールドを追加します。
|
||||
5. 処理ボタンをクリックして、変更したPDFを保存します。
|
||||
|
||||
## 機能
|
||||
|
||||
- アップロードしたPDFの既存のメタデータをすべて自動入力
|
||||
- 標準フィールド:タイトル、作成者、サブジェクト、キーワード、作成アプリケーション、PDF変換
|
||||
- 作成日と更新日の日時ピッカー
|
||||
- 任意のプロパティのための、キーと値によるカスタムメタデータフィールド
|
||||
- 変更をPDFの文書情報辞書に直接保存
|
||||
|
||||
## 編集できるフィールド
|
||||
|
||||
| フィールド | 説明 |
|
||||
| ------------------------ | ------------------------------------------ |
|
||||
| **タイトル** | PDFリーダーに表示される文書のタイトル |
|
||||
| **作成者** | 文書を作成した個人または組織 |
|
||||
| **サブジェクト** | 文書のトピックの簡単な説明 |
|
||||
| **キーワード** | 検索や分類のための、カンマ区切りの用語 |
|
||||
| **作成アプリケーション** | コンテンツを最初に作成したアプリケーション |
|
||||
| **PDF変換** | PDFを生成したアプリケーション |
|
||||
| **作成日** | 文書が最初に作成された日時 |
|
||||
| **更新日** | 文書が最後に変更された日時 |
|
||||
| **カスタムフィールド** | 独自に定義する追加のキーと値のペア |
|
||||
|
||||
## 活用例
|
||||
|
||||
- 文書を公開する前に、適切なタイトルと作成者を設定する
|
||||
- 文書管理システムでの検索性を高めるために、キーワードを追加する
|
||||
- 現在の改訂を反映するように、更新日を更新する
|
||||
- 部署、プロジェクトID、分類などのカスタムメタデータフィールドを追加する
|
||||
- 元の作成ソフトが残したメタデータを整理する
|
||||
|
||||
## ヒント
|
||||
|
||||
- カスタムフィールドは、PDFの情報辞書に直接書き込まれます。一部のPDFリーダーではカスタムフィールドが表示されないことがありますが、ファイルには保持されます。
|
||||
- フィールドを空欄にすると、メタデータから消去されます。処理ボタンは、フォームに入っている内容をそのまま保存します。
|
||||
- 編集せずにメタデータを表示するには、[メタデータの表示](./view-metadata) を使ってください。メタデータをすべて削除するには、メタデータの削除を使います。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [メタデータの表示](./view-metadata)
|
||||
- [PDF OCG](./pdf-layers)
|
||||
- [PDFの圧縮](./compress-pdf)
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
title: PDFエディター
|
||||
description: ブラウザ上で直接、PDFに注釈を付け、ハイライトし、墨消しし、図形や画像を追加し、検索し、表示します。
|
||||
---
|
||||
|
||||
# PDFエディター
|
||||
|
||||
BentoPDFのPDFエディターを使うと、PDFに注釈を付け、ハイライトし、墨消しし、コメントし、図形や画像を追加し、検索できます。高機能なエディターがブラウザ上で直接読み込まれ、サーバーへのアップロードは不要です。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. ドロップゾーンをクリックするか、ファイルをドラッグして、PDFをアップロードします。
|
||||
2. 埋め込みのPDFエディターが自動的に開き、文書が読み込まれます。
|
||||
3. ツールバーを使って、注釈、ハイライト、墨消し、テキストの追加、図形の描画、画像の挿入ができます。
|
||||
4. **編集したPDFをダウンロード** をクリックして、変更を保存します。
|
||||
|
||||
## 機能
|
||||
|
||||
- ハイライト、下線、取り消し線、フリーハンド描画を備えた、フル機能の注釈ツールバー
|
||||
- テキストの挿入とコメント
|
||||
- 墨消しを適用すると、マークした内容を完全に削除する墨消しツール。**編集したPDFをダウンロード** をクリックしたときに適用されていないマークがある場合、エディターは先にそれらを適用するか確認します。
|
||||
- 長方形、円、線、矢印の図形ツール
|
||||
- PDFのページへの画像の挿入
|
||||
- 文書全体を対象とした、内蔵のテキスト検索
|
||||
- タブによる複数文書のサポート(最大10個の文書を同時に開けます)
|
||||
- ドラッグ&ドロップによるファイルの読み込み
|
||||
|
||||
## 活用例
|
||||
|
||||
- 契約書を確認し、ハイライトやコメントで変更箇所に印を付ける
|
||||
- 共有の前に、社会保障番号や財務データなどの機密情報を墨消しする
|
||||
- 建築図面や設計図に注釈を追加する
|
||||
- 会社のロゴやスタンプを文書のページに挿入する
|
||||
- 長い法的文書から、特定の用語を検索する
|
||||
|
||||
## ヒント
|
||||
|
||||
- 複数のPDFを同時に開き、エディター上部のタブバーで切り替えられます。
|
||||
- エディターは元のPDFの構造を保持するため、フォント、レイアウト、フォームフィールドはそのまま維持されます。
|
||||
- テキストや領域を墨消し対象にマークしただけでは、墨消しを適用するまで何も削除されません。選択したテキストを墨消しすると、ファイルのプロパティ、しおり、コメント、添付ファイルにあるそのコピーも、ダウンロードから削除されます(ファイルが暗号化されている場合を除く)。
|
||||
- 一括の透かしやページ番号の追加には、書式をより細かく制御できる専用ツールを使ってください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [透かしの追加](./add-watermark)
|
||||
- [PDFへ署名](./sign-pdf)
|
||||
- [スタンプの追加](./add-stamps)
|
||||
- [注釈の削除](./remove-annotations)
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
title: 電子メールからPDF
|
||||
description: EMLおよびMSGのメールファイルをブラウザでPDFに変換します。ヘッダー、本文、添付ファイルの一覧を保持します。
|
||||
---
|
||||
|
||||
# 電子メールからPDF
|
||||
|
||||
保存したメールファイルを、すっきりした印刷可能なPDFに変換します。このツールはEMLとMSGのファイルを解析し、ヘッダー、本文、添付ファイルのメタデータを含むメッセージ全体を取り出して、構造化されたPDFに描画します。法的な証拠開示、記録の保管、あるいは大事なメールを印刷したいときに役立ちます。
|
||||
|
||||
## 対応形式
|
||||
|
||||
| 形式 | 拡張子 | 備考 |
|
||||
| :--- | :----- | :----------------------------------------------------------------------- |
|
||||
| EML | `.eml` | 標準的なMIME形式のメール(ほとんどのメールクライアントからエクスポート) |
|
||||
| MSG | `.msg` | Microsoft Outlookの独自形式 |
|
||||
|
||||
## 使い方
|
||||
|
||||
1. アップロード領域をクリックするか、EMLまたはMSGファイルをドラッグ&ドロップします。両方の形式を1回のバッチに混在させることもできます。
|
||||
2. ファイル一覧を確認します。不要な項目はゴミ箱アイコンで削除するか、**ファイルを追加** をクリックして、さらにメールを追加します。
|
||||
3. 変換オプションを設定します(下記参照)。
|
||||
4. **PDFに変換** をクリックします。ツールは各メールを解析し、内容をスタイル付きHTMLとして描画して、PyMuPDFエンジンでPDFに変換します。
|
||||
5. 1通のメールの場合は、PDFとして直接ダウンロードされます。複数のメールの場合は `emails-converted.zip` にまとめられます。
|
||||
|
||||
## オプション
|
||||
|
||||
| オプション | デフォルト | 説明 |
|
||||
| :--------------------------- | :--------- | :-------------------------------------------------------------------------------------- |
|
||||
| **ページサイズ** | A4 | A4、Letter、Legalのページ寸法から選択します。 |
|
||||
| **CCとBCCを含める** | オン | 有効にすると、CCとBCCの宛先リストが、PDFのメールヘッダー部分に表示されます。 |
|
||||
| **添付ファイル一覧を含める** | オン | 有効にすると、メールのファイル添付の一覧(ファイル名とサイズ付き)がPDFに表示されます。 |
|
||||
|
||||
## 活用例
|
||||
|
||||
- コンプライアンスや監査のために、重要なビジネス上のやり取りをPDFとして保管する
|
||||
- 法的手続きや証拠開示の要求のために、メールのスレッドを印刷する
|
||||
- メールで受け取った注文確認、領収書、契約書の恒久的な記録を作成する
|
||||
- Outlookがなくても読める形式で、OutlookのMSGファイルをバックアップする
|
||||
- エクスポートしたEMLファイルから、カスタマーサポートのやり取りを記録する
|
||||
|
||||
## ヒント
|
||||
|
||||
- EML(Thunderbird、Apple Mail、ほとんどのメールクライアントで使われます)とOutlookのMSGファイルの両方に対応しています。メールクライアントからメールをエクスポートして、そのままツールにドロップしてください。
|
||||
- HTML形式のメールは、PDFでもスタイルが保たれます。プレーンテキストのメールは、すっきりした読みやすい書式で描画されます。
|
||||
- 添付ファイルの一覧にはファイル名とサイズが表示されますが、実際の添付ファイルがPDFに埋め込まれることはありません。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [XMLからPDF](./xml-to-pdf)
|
||||
- [XPSからPDF](./xps-to-pdf)
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: EPUBからPDF
|
||||
description: EPUB電子書籍をブラウザでPDFに変換します。無料、アップロード不要、プライバシー第一の変換です。
|
||||
---
|
||||
|
||||
# EPUBからPDF
|
||||
|
||||
EPUBの電子書籍を、ブラウザから離れることなくPDFファイルに変換します。EPUBはデジタル書籍のオープンスタンダードですが、印刷、注釈の追加、電子書籍リーダーを持っていない人との共有のために、レイアウト固定のPDFが必要になることがあります。
|
||||
|
||||
## 対応形式
|
||||
|
||||
| 形式 | 拡張子 | 備考 |
|
||||
| :--- | :------ | :----------------------- |
|
||||
| EPUB | `.epub` | EPUB 2とEPUB 3のファイル |
|
||||
|
||||
## 使い方
|
||||
|
||||
1. アップロード領域をクリックするか、EPUBファイルをドラッグ&ドロップします。複数選択に対応しています。
|
||||
2. アップロードしたファイルを確認します。不要な項目はゴミ箱アイコンで削除するか、**ファイルを追加** をクリックして、バッチを広げます。
|
||||
3. **PDFに変換** をクリックします。PyMuPDFエンジンが、EPUBの内容(テキスト、画像、書式)をページ分割されたPDF出力に描画します。
|
||||
4. 1つのEPUBの場合は、PDFとして直接ダウンロードされます。複数ファイルの場合は、`epub-converted.zip` という名前のZIPアーカイブにまとめられます。
|
||||
|
||||
## オプション
|
||||
|
||||
変換は妥当なデフォルト設定で実行され、必須の設定はありません。テキストは標準のページ寸法に再配置され、埋め込みフォントと画像はPDFに引き継がれます。
|
||||
|
||||
## 活用例
|
||||
|
||||
- DRMフリーの電子書籍を印刷して、画面から離れて読む
|
||||
- EPUBの原稿を、レビュー用にレイアウト固定のPDFとして提出する
|
||||
- デジタル書籍を、どのOSでも標準で開ける形式でアーカイブする
|
||||
- EPUBリーダーを持っていない同僚に、1つの章を共有する
|
||||
- EPUBで配布されている技術文書を、注釈を付けられるPDFに変換する
|
||||
|
||||
## ヒント
|
||||
|
||||
- 埋め込み音声や動画といったEPUB 3の機能はPDFに引き継がれませんが、テキスト、画像、表はすべてきれいに変換されます。
|
||||
- スタイルが多用されたEPUBで最良の結果を得るには、出力の最初の数ページを確認して、レイアウトが忠実か確かめてください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [MOBIからPDFへの変換](./mobi-to-pdf)
|
||||
- [FB2からPDF](./fb2-to-pdf)
|
||||
- [CBZからPDF](./cbz-to-pdf)
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
title: ExcelからPDF
|
||||
description: Excelスプレッドシート(XLS、XLSX)、ODS、CSVファイルを、書式を保ったままPDFに変換します。
|
||||
---
|
||||
|
||||
# ExcelからPDF
|
||||
|
||||
表計算ファイルをPDFに変換します。このツールは、最新のExcelファイル、従来のXLS形式、OpenDocumentスプレッドシート、さらにCSVにも対応しており、そのすべてがブラウザ上のLibreOfficeエンジンで描画されるため、セルの書式、数式(計算された値として)、グラフ、複数シートのレイアウトが保たれます。
|
||||
|
||||
## 対応形式
|
||||
|
||||
| 形式 | 拡張子 |
|
||||
| :--------------------------- | :------ |
|
||||
| Excel(最新) | `.xlsx` |
|
||||
| Excel(従来) | `.xls` |
|
||||
| OpenDocumentスプレッドシート | `.ods` |
|
||||
| CSV | `.csv` |
|
||||
|
||||
## 使い方
|
||||
|
||||
1. アップロード領域をクリックするか、表計算ファイルをドラッグ&ドロップします。
|
||||
2. ファイル一覧を確認します。ファイルを追加したり、不要なものを削除したりできます。
|
||||
3. **PDFに変換** をクリックします。LibreOfficeエンジンは初回の使用時に初期化され、その後で各ファイルを処理します。
|
||||
4. 1ファイルの場合は、PDFとして直接ダウンロードされます。複数ファイルの場合は `excel-converted.zip` として提供されます。
|
||||
|
||||
## オプション
|
||||
|
||||
このツールに追加の設定はありません。ページレイアウト、拡大縮小、印刷範囲は、スプレッドシートに組み込まれた設定に基づいて、LibreOfficeエンジンが決定します。
|
||||
|
||||
## 出力
|
||||
|
||||
| 入力数 | 出力 |
|
||||
| :------------ | :--------------------------------------------------------------------- |
|
||||
| 1ファイル | 単一のPDFをダウンロード(元のファイル名に `.pdf` 拡張子) |
|
||||
| 2ファイル以上 | ZIPアーカイブ(`excel-converted.zip`)に、ファイルごとに1つのPDFを格納 |
|
||||
|
||||
## 活用例
|
||||
|
||||
- 配布用に、財務レポートや予算表をExcelからPDFに変換する
|
||||
- 在庫表や商品カタログのスプレッドシートから、印刷用のPDFを作成する
|
||||
- Excelがインストールされていない関係者に、データ分析の結果を共有する
|
||||
- 四半期レポートを、編集できない形式でアーカイブする
|
||||
- LibreOffice CalcのODSファイルをPDFに変換する
|
||||
|
||||
## ヒント
|
||||
|
||||
- スプレッドシートに埋め込まれたグラフはPDFに描画されます。変換する前に、元のファイルで正しく見えることを確認してください。
|
||||
- スプレッドシートに複数のシートがある場合、すべてのシートがPDFの出力に含まれます。
|
||||
- 書式のない単純なCSVデータには、[CSVからPDF](./csv-to-pdf) ツールのほうが軽量な変換になります。書式、グラフ、複数シートを保持したい場合は、ExcelからPDFを使ってください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [CSVからPDF](./csv-to-pdf)
|
||||
- [WordからPDF](./word-to-pdf)
|
||||
- [PowerPointからPDF](./powerpoint-to-pdf)
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: 添付ファイルの抽出
|
||||
description: 1つ以上のPDFから、埋め込まれたファイル添付をすべて抽出し、ZIPアーカイブとしてダウンロードします。
|
||||
---
|
||||
|
||||
# 添付ファイルの抽出
|
||||
|
||||
1つ以上のPDFファイルから、埋め込まれたすべての添付ファイルを取り出します。抽出されたファイルは、ダウンロード用に1つのZIPアーカイブにまとめられます。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. 埋め込まれた添付ファイルを含む、1つ以上のPDFファイルをアップロードします。
|
||||
2. **添付ファイルを抽出** をクリックします。
|
||||
3. ツールが、各PDFの文書レベルとページレベルの添付ファイルをスキャンします。
|
||||
4. 見つかったすべてのファイルがZIPアーカイブにまとめられ、自動的にダウンロードされます。
|
||||
5. ステータスメッセージで、見つかった添付ファイルの数と合計サイズを確認できます。
|
||||
|
||||
## 機能
|
||||
|
||||
- 複数のPDFからの一括抽出
|
||||
- 文書レベルとページレベルの両方の添付ファイルを抽出
|
||||
- 抽出したすべてのファイルを含む、1つのZIPファイルを出力
|
||||
- 添付ファイルの合計数と合計ファイルサイズを表示
|
||||
- 添付ファイルが見つからない場合は、わかりやすいステータスメッセージを表示
|
||||
|
||||
## 活用例
|
||||
|
||||
- レポートのPDFに埋め込まれたデータファイルを復元する
|
||||
- ポートフォリオや仕様書から、画像素材を取り出す
|
||||
- 研修やコンプライアンス用のPDFから、補足資料を抽出する
|
||||
- 一連のPDFにどのファイルが埋め込まれているかを監査する
|
||||
|
||||
## ヒント
|
||||
|
||||
- ツールが添付ファイルなしと報告した場合、PDFには、ファイル添付ではなく、埋め込み画像やフォームデータが含まれている可能性があります。それらはファイル添付ではありません。埋め込み画像には [画像の抽出](./extract-images) を使ってください。
|
||||
- 複数のPDFを処理すると、すべてのファイルの添付ファイルが1つのZIPにまとめられます。ファイル名は、元の埋め込み時のものが保持されます。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [添付ファイルの追加](./add-attachments)
|
||||
- [添付ファイルの編集](./edit-attachments)
|
||||
- [画像の抽出](./extract-images)
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
title: 画像の抽出
|
||||
description: PDFファイルから、埋め込まれたすべての画像を抽出します。グリッドでプレビューし、個別に、またはZIPアーカイブとしてダウンロードできます。
|
||||
---
|
||||
|
||||
# 画像の抽出
|
||||
|
||||
1つ以上のPDFファイルから、埋め込まれたすべての画像を取り出します。抽出された画像はプレビューグリッドに表示され、個別にダウンロードすることも、ZIPとしてすべてを一度に取得することもできます。PyMuPDFを搭載しています。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. ドロップゾーンをクリックするか、ファイルをドラッグして、1つ以上のPDFをアップロードします。必要に応じてファイルを追加したり、個別に削除したりできます。
|
||||
2. **抽出** をクリックして、処理を開始します。
|
||||
3. ツールが、アップロードされたすべてのPDFのすべてのページをスキャンし、埋め込まれた画像を見つけて抽出します。
|
||||
4. 抽出された画像がサムネイル付きのグリッドに表示されます。各画像にはダウンロードボタンがあります。
|
||||
5. **すべてダウンロード** をクリックして、すべてをZIPアーカイブとして保存します。
|
||||
|
||||
## オプション
|
||||
|
||||
このツールに設定可能なオプションはありません。埋め込まれたすべての画像は、元の形式(通常はPNG、JPEG、またはPDFに埋め込まれたときに使われた形式)で抽出されます。
|
||||
|
||||
## 出力形式
|
||||
|
||||
- 画像は、`image_1.png`、`image_2.jpg` のような名前でプレビューグリッドに表示されます。
|
||||
- **すべてダウンロード** は、すべての画像を含む `extracted-images.zip` を生成します。
|
||||
- 個々の画像は、グリッドから1つずつダウンロードできます。
|
||||
|
||||
## 活用例
|
||||
|
||||
- PDFから写真やグラフィックを取り出して、別のプロジェクトで再利用する。
|
||||
- ECサイトの掲載用に、カタログのPDFから商品画像を抽出する。
|
||||
- プレゼンテーションで使うために、技術文書から図を取り出す。
|
||||
- 共有する前に、文書にどの画像が埋め込まれているかを監査する。
|
||||
|
||||
## ヒント
|
||||
|
||||
- このツールは、PDFに保存されているとおりの画像を抽出します。ページを画像として再描画することはありません。それには、[PDFからPNG](./pdf-to-png) や [PDFからJPG](./pdf-to-jpg) を使ってください。
|
||||
- ツールが「画像が見つかりません」と報告した場合、PDFが埋め込みのラスター画像ではなくベクターグラフィックを使っているか、ページ全体が1枚の大きな画像になっているスキャン文書である可能性があります。
|
||||
- バッチ処理は、複数のPDFにまたがって機能します。すべてのファイルのすべての画像が、1つのグリッドと1つのZIPにまとめられます。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFからPNG](./pdf-to-png)
|
||||
- [PDFからJPG](./pdf-to-jpg)
|
||||
- [PDFワークフロービルダー](./pdf-workflow)
|
||||
@@ -0,0 +1,41 @@
|
||||
---
|
||||
title: ページの抽出
|
||||
description: PDFから特定のページ範囲を、新しい文書として保存します。
|
||||
---
|
||||
|
||||
# ページの抽出
|
||||
|
||||
PDFから複数のページを取り出して、新しいファイルとして保存します。範囲の構文で必要なページを正確に指定すると、ツールがそれらのページだけを含むすっきりしたPDFを作成します。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. PDFファイルをアップロードします。ツールにファイル名、サイズ、総ページ数が表示されます。
|
||||
2. 範囲の構文(例: `1-5`、`3, 7, 10-12`)で、抽出したいページを入力します。
|
||||
3. 必要に応じて、各範囲を別々のPDFとしてZIPアーカイブでダウンロードするよう選択します。
|
||||
4. 処理ボタンをクリックします。抽出されたページが、新しいPDF(またはZIP)としてダウンロードされます。
|
||||
|
||||
## 機能
|
||||
|
||||
- 柔軟なページ範囲の構文:個別のページ、範囲、またはカンマ区切りの組み合わせ
|
||||
- アップロード後に総ページ数を表示し、参照しやすく
|
||||
- 1つにまとめたPDF、またはZIP内の別々のファイルとして出力するオプション
|
||||
- 元のページの内容と書式を保持
|
||||
|
||||
## 活用例
|
||||
|
||||
- 長いレポートから、エグゼクティブサマリー(最初の数ページ)を取り出す
|
||||
- 教科書のPDFから、1つの章を抽出する
|
||||
- 書類一式から特定のページを、独立した文書として保存する
|
||||
- 大きなファイルの選択したページから、サンプル文書を作成する
|
||||
|
||||
## ヒント
|
||||
|
||||
- ページ番号は1から始まります。最初のページには `0` ではなく `1` を使ってください。
|
||||
- ページを抽出するのではなく取り除きたい場合は、逆の操作にあたる [ページの削除](./delete-pages) を使ってください。
|
||||
- サムネイルでページを視覚的に選択したい場合は、[PDFの分割](./split-pdf) をビジュアル選択モードで使ってください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFの分割](./split-pdf)
|
||||
- [ページの削除](./delete-pages)
|
||||
- [PDFの結合](./merge-pdf)
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
title: PDFテーブルの抽出
|
||||
description: PDF文書から表を検出して抽出します。表ごとに、CSV、JSON、Markdownとしてエクスポートできます。
|
||||
---
|
||||
|
||||
# PDFテーブルの抽出
|
||||
|
||||
PDF内のすべての表を検出し、CSV、JSON、Markdownのお好みの形式でエクスポートできます。各表は、ページと位置のメタデータとともに個別に抽出されます。PyMuPDFの表検出エンジンを搭載しています。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. ドロップゾーンをクリックするか、ファイルをドラッグして、PDFをアップロードします。
|
||||
2. お好みの **エクスポート形式** を選びます。CSV、JSON、Markdownのいずれかです。
|
||||
3. **抽出** をクリックして、処理を開始します。
|
||||
4. 表が1つ見つかった場合は、単一のファイルとしてダウンロードされます。複数の表がある場合は、表ごとに1ファイルのZIPアーカイブになります。
|
||||
|
||||
## オプション
|
||||
|
||||
- **エクスポート形式**: 次から選べます。
|
||||
- **CSV**: カンマ、引用符、改行を含むフィールドを適切に引用符で囲んだ、カンマ区切りの値。表計算ソフトやデータベースに適しています。
|
||||
- **JSON**: 配列の配列の構造で、2スペースのインデントで整形されます。プログラムでの利用に適しています。
|
||||
- **Markdown**: PyMuPDFが描画する、パイプ区切りの表形式。ドキュメントやREADMEファイルに適しています。
|
||||
|
||||
## 出力形式
|
||||
|
||||
- **表が1つ**: `filename_table.csv`(または `.json` / `.md`)
|
||||
- **複数の表**: `table_1_page3.csv`、`table_2_page5.csv` のような名前のファイルを含む `filename_tables.zip`
|
||||
|
||||
## 活用例
|
||||
|
||||
- 長いPDFレポートから、文書全体のデータを取り出さずに、特定の表だけを抽出する。
|
||||
- GitHubのIssue、Wiki、ドキュメントに直接貼り付けるために、表をMarkdown形式で取得する。
|
||||
- APIの連携やスクリプトのために、PDFの表から構造化されたJSONデータを取り出す。
|
||||
- 異なるバージョンのPDFの表を、両方をCSVにエクスポートして差分を取って比較する。
|
||||
|
||||
## ヒント
|
||||
|
||||
- このツールでは表ごとに制御できます。すべての表を1つのCSVにまとめて出力するだけなら、[PDFからCSV](./pdf-to-csv) を使ってください。Excelのブック全体が必要な場合は、[PDFからExcel](./pdf-to-excel) を使ってください。
|
||||
- 複数のページにまたがる表は、ページごとに別々の表として検出されることがあります。手動で連結する必要があるかもしれません。
|
||||
- 表が検出されない場合、PDFはスキャン画像かもしれません。先にOCRを実行して、テキストレイヤーを追加してください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFからCSV](./pdf-to-csv)
|
||||
- [PDFからExcel](./pdf-to-excel)
|
||||
- [PDFからテキスト](./pdf-to-text)
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: FB2からPDF
|
||||
description: FictionBook(FB2)形式の電子書籍をブラウザー上でPDFに変換します。無料でプライベート、サーバーへのアップロードは不要です。
|
||||
---
|
||||
|
||||
# FB2からPDF
|
||||
|
||||
FictionBook 2(FB2)ファイルをPDFドキュメントに変換します。FB2はXMLベースの電子書籍フォーマットで、ロシアや東欧で広く使われています。一部のプラットフォームでは対応していますが、ほとんどの環境ではほぼ知られていません。PDFに変換すれば、どこでも本を読めるようになります。
|
||||
|
||||
## 対応フォーマット
|
||||
|
||||
| フォーマット | 拡張子 | 備考 |
|
||||
| :------------ | :----- | :---------------------- |
|
||||
| FictionBook 2 | `.fb2` | XMLベースの電子書籍形式 |
|
||||
|
||||
## 使い方
|
||||
|
||||
1. アップロードエリアをクリックするか、FB2ファイルをドラッグ&ドロップします。複数ファイルの一括選択も可能です。
|
||||
2. ファイル一覧を確認します。ゴミ箱アイコンで個別に削除でき、**ファイルを追加**でさらに追加できます。
|
||||
3. **PDFに変換**をクリックします。PyMuPDFエンジンがFB2のXML構造を解析し、ページ分割されたPDFとして出力します。
|
||||
4. ファイルが1つの場合はPDFが直接ダウンロードされます。複数の場合は`fb2-converted.zip`にまとめられます。
|
||||
|
||||
## オプション
|
||||
|
||||
設定は不要です。コンバーターがFB2のXML構造を自動で処理し、章の区切り、書式、埋め込み画像を保持します。
|
||||
|
||||
## 活用例
|
||||
|
||||
- PDFにしか対応していない端末やアプリでFB2の電子書籍を読む
|
||||
- FB2形式で配布されているロシア語文学を印刷する
|
||||
- FB2ライブラリを、どこでも使える形式でアーカイブする
|
||||
- FictionBookに対応していないリーダーを使っている相手に本を共有する
|
||||
|
||||
## ヒント
|
||||
|
||||
- FB2ファイルはプレーンなXMLなので、サイズが小さく、ブラウザー上でも素早く変換できます。
|
||||
- FB2ファイルが`.fb2.zip`として圧縮されている場合は、先に展開してからアップロードしてください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [EPUBからPDF](./epub-to-pdf)
|
||||
- [MOBIからPDFへの変換](./mobi-to-pdf)
|
||||
- [XMLからPDF](./xml-to-pdf)
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: ページサイズを固定
|
||||
description: PDF内のすべてのページを同じサイズに統一します。標準の用紙サイズから選ぶか、任意のサイズを指定できます。
|
||||
---
|
||||
|
||||
# ページサイズを固定
|
||||
|
||||
複数の出典から組み立てたPDFでは、LetterとA4が混在したり、規格外のサイズが混ざったりして、ページサイズがそろわないことがあります。このツールはすべてのページを1つのサイズに揃え、必要に応じて内容を拡大縮小して収めたり埋めたりします。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. PDFファイルをアップロードします。
|
||||
2. ドロップダウンから**ターゲットページサイズ**を選びます(A4、Letter、Legal、A3、A5、Tabloid、カスタム)。
|
||||
3. **向き**を選びます。自動なら各ページの元の向きを保ち、縦または横に固定することもできます。
|
||||
4. **コンテンツのスケーリング**モードを選びます。フィット(内容をすべて保持、余白が付く場合あり)またはフィル(ページを埋める、端が切れる場合あり)です。
|
||||
5. 必要に応じて、追加される余白の**背景色**を設定します。
|
||||
6. **ページサイズを固定**をクリックします。
|
||||
|
||||
## オプション
|
||||
|
||||
- **標準サイズ**: A4、Letter、Legal、A3、A5、Tabloid
|
||||
- **カスタムサイズ**: 幅と高さをインチまたはミリメートルで入力
|
||||
- **向き**: 自動、縦、横
|
||||
- **スケーリングモード**: フィットまたはフィル(トリミング)
|
||||
- **背景色**: 余白部分に使う任意の色
|
||||
|
||||
## 活用例
|
||||
|
||||
- 別々のスキャナーで取り込んだページを結合したPDFを統一する
|
||||
- USレターの文書を海外向けにA4へ変換する
|
||||
- 一定の仕上がりサイズが必要な印刷用PDFを準備する
|
||||
- 標準からわずかにずれたページ(例: 8.5 x 11ではなく8.49 x 11.02インチ)を修正する
|
||||
|
||||
## ヒント
|
||||
|
||||
- 内容を失いたくない場合はフィットモードを使います。フィルモードは見た目がすっきりしますが、端が切れることがあります。
|
||||
- 出力は「ページ寸法」ツールで確認すると、すべてのページが目標サイズに一致しているか分かります。
|
||||
- 背景色の初期値は白です。文書の余白が暗い場合は暗い色に切り替えてください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [ページ寸法](./page-dimensions): 修正の前後でページサイズを確認
|
||||
- [PDFの圧縮](./compress-pdf): 統一後にファイルサイズを削減
|
||||
- [PDFのトリミング](./crop-pdf): 自動スケーリングの代わりに手動でトリミング
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
title: PDFの平坦化
|
||||
description: インタラクティブなフォームと注釈を静的なコンテンツに平坦化します。フォームフィールドは編集不可になり、注釈はページに焼き付けられます。
|
||||
---
|
||||
|
||||
# PDFの平坦化
|
||||
|
||||
平坦化では、フォームフィールド、ドロップダウン、チェックボックス、注釈、ハイライト、付箋などのインタラクティブな要素をページの内容に直接統合します。見た目は変わりませんが、編集も抽出もできなくなります。入力済みのフォームを印刷してスキャンし直すのと同じ効果ですが、画質は完全に保たれます。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. 1つ以上のPDFファイルをアップロードします。
|
||||
2. **PDFを平坦化**をクリックします。
|
||||
3. ファイルが1つの場合は直接ダウンロードされ、複数の場合はZIPアーカイブになります。
|
||||
|
||||
このツールはpdf-libでフォームフィールドを平坦化し(`form.flatten()`経由)、専用の注釈フラットナーで注釈をページストリームに焼き付けます。どちらの処理も1回のパスで行われます。
|
||||
|
||||
## 平坦化されるもの
|
||||
|
||||
- **フォームフィールド**: テキスト入力、チェックボックス、ラジオボタン、ドロップダウン、署名フィールド
|
||||
- **注釈**: コメント、ハイライト、取り消し線、下線、付箋、スタンプ、インク注釈
|
||||
- **インタラクティブ要素**: ボタン、アクショントリガー
|
||||
|
||||
## 変更されないもの
|
||||
|
||||
- テキストの内容(選択や検索は引き続き可能)
|
||||
- 画像とグラフィック
|
||||
- ページのレイアウトと寸法
|
||||
- しおりと目次
|
||||
- ハイパーリンク(注釈ベースのものを除く)
|
||||
|
||||
## 活用例
|
||||
|
||||
- 入力済みのフォームをロックし、受取人が提出内容を変更できないようにする
|
||||
- インタラクティブ要素が不要なアーカイブ用にPDFを準備する
|
||||
- ビューアーごとに注釈の表示が異なる問題を解消する
|
||||
- 署名済みの文書が署名後に変更されないようにする
|
||||
- フォームフィールドの定義と注釈オブジェクトを除去してファイルサイズを減らす
|
||||
|
||||
## ヒント
|
||||
|
||||
- すべての編集が終わってから平坦化してください。平坦化したPDFを元に戻す方法はありません。
|
||||
- 平坦化に加えてメタデータ、JavaScript、添付ファイルも削除したい場合は、代わりに「PDFをサニタイズ」ツールを使ってください。平坦化もオプションの1つとして含まれています。
|
||||
- 「フォームが見つかりません」と表示されるPDFがありますが、文書に注釈のみでフォームフィールドがない場合は正常です。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFをサニタイズ](./sanitize-pdf): フォームの平坦化に加え、メタデータやスクリプトなども削除
|
||||
- [PDFの画像化](./rasterize-pdf): 画像ベースのPDFに変換して最大限に平坦化
|
||||
- [フォントをアウトライン化](./font-to-outline): フォントをベクターパスに平坦化
|
||||
- [PDFの暗号化](./protect-pdf): 平坦化したPDFをパスワードでロック
|
||||
@@ -0,0 +1,52 @@
|
||||
---
|
||||
title: フォントをアウトライン化
|
||||
description: PDFのすべてのフォントをベクターアウトラインに変換し、どのデバイスでも同じ表示にします。フォント依存の問題を解消します。
|
||||
---
|
||||
|
||||
# フォントをアウトライン化
|
||||
|
||||
フォントをアウトライン化すると、すべての文字がフォントのグリフからベクターパスに変換されます。PDFはインストール済みのフォントに依存しなくなり、あらゆるデバイス、OS、プリンターで同じように表示されます。これは印刷前工程(プリプレス)の標準的な手順です。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. 1つ以上のPDFファイルをアップロードします。
|
||||
2. **アウトラインに変換**をクリックします。
|
||||
3. Ghostscriptがすべてのテキストをベクターパスに変換します。
|
||||
4. 結果をダウンロードします。複数ファイルの場合はZIPアーカイブになります。
|
||||
|
||||
設定項目はありません。このツールはGhostscript(WebAssembly)を使い、すべてのフォント参照を1回のパスでアウトライン化したパスに変換します。
|
||||
|
||||
## 変わること
|
||||
|
||||
- 文字がベクター曲線(ベジェパス)になる
|
||||
- フォントの埋め込みが不要になり、PDFはグリフレベルで自己完結する
|
||||
- ベクターパスは通常フォント参照より大きいため、ファイルサイズが増える場合がある
|
||||
- 見た目は完全に保たれる
|
||||
|
||||
## 失われるもの
|
||||
|
||||
- テキストの選択とコピー&ペースト
|
||||
- テキスト検索(Ctrl+Fが使えなくなる)
|
||||
- テキスト内容の編集
|
||||
- スクリーンリーダーによるアクセシビリティ
|
||||
|
||||
## 活用例
|
||||
|
||||
- アウトライン化したフォントを要求する印刷所にPDFを送る
|
||||
- カスタムフォントやライセンスフォントを使った文書を、そのフォントを持たない相手と共有する
|
||||
- 他のシステムでフォントが置き換わって見た目が変わるのを防ぐ
|
||||
- ベクター入力が必要なレーザー彫刻やCNCカットの工程用にPDFを準備する
|
||||
- ロゴを多く含むPDFをすべてのプラットフォームで正しく表示させる
|
||||
|
||||
## ヒント
|
||||
|
||||
- 元のPDFは必ず保管してください。アウトライン化は元に戻せず、パスを編集可能なテキストに戻すことはできません。
|
||||
- テキストを検索可能なままにしたい場合は、代わりに「PDFの画像化」ツールを使い、その後にOCRを行うことを検討してください。
|
||||
- アウトライン化したPDFは大きくなりがちです。ファイルサイズが気になる場合は、後から「PDFの圧縮」を実行してください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFの平坦化](./flatten-pdf): フォントには触れずにフォームと注釈を平坦化
|
||||
- [PDFの画像化](./rasterize-pdf): ベクターアウトラインの代わりに画像ベースのPDFに変換
|
||||
- [PDFの圧縮](./compress-pdf): アウトライン化後にファイルサイズを削減
|
||||
- [PDFからPDF/A](./pdf-to-pdfa): フォント非依存にしたうえで、アーカイブ用に変換
|
||||
@@ -0,0 +1,76 @@
|
||||
---
|
||||
title: PDFフォームの作成
|
||||
description: テキストフィールド、チェックボックス、ドロップダウン、ラジオボタンなどをドラッグ&ドロップして、入力可能なPDFフォームを作成します。
|
||||
---
|
||||
|
||||
# PDFフォームの作成
|
||||
|
||||
入力可能なPDFフォームを、ゼロから、または既存のPDFにフィールドを追加して作成できます。ビジュアルエディターで、テキストフィールド、チェックボックス、ドロップダウン、ラジオボタン、署名フィールドなどのフォーム要素をページプレビューに直接ドラッグ&ドロップできます。フィールドのプロパティを設定し、条件付き表示ルールを組んで、完全にインタラクティブなPDFフォームとして書き出せます。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. 既存のPDFをアップロードするか、**空白のPDFを作成**をクリックしてゼロから始めます。
|
||||
2. 空白のPDFを作成する場合は、ページサイズ(Letter、A4、A5、Legal、Tabloid、A3、またはカスタム寸法)を選びます。
|
||||
3. フィールドの種類を並べたツールバーとページプレビューのあるフォームエディターが開きます。
|
||||
4. ツールバーからフィールドの種類を選び、ページ上をクリックして配置します。
|
||||
5. フィールドをドラッグして位置を変え、リサイズハンドルでサイズを調整します。
|
||||
6. フィールドをクリックするとプロパティパネルが開き、フィールド名、初期値、フォントサイズ、配置などを設定できます。
|
||||
7. ページ操作でページ間を移動します。
|
||||
8. **保存**をクリックして、完成した入力可能なPDFをダウンロードします。
|
||||
|
||||
## 機能
|
||||
|
||||
- ドラッグ&ドロップでのフィールド配置と、リサイズ用のビジュアルハンドル
|
||||
- フィールドの種類: テキスト入力、複数行テキスト、チェックボックス、ドロップダウン、ラジオボタン、署名、日付、数値、バーコード
|
||||
- 各フィールドの名前、ラベル、初期値、フォントサイズ、色、配置、検証を設定するプロパティパネル
|
||||
- フィールドアクションと条件付き表示ルール(他のフィールドの値に応じてフィールドを表示/非表示)
|
||||
- 複数ページのフォームに対応したページ移動
|
||||
- 既存フィールドの抽出: アップロードしたPDFからフォームフィールドを自動で検出して取り込み
|
||||
- アップロードしたPDFと空白ページの両方をフォームのキャンバスとして利用可能
|
||||
- 複数のページサイズプリセットとカスタム寸法
|
||||
- bwip-jsによるバーコード生成
|
||||
- ラジオボタングループの管理
|
||||
|
||||
## オプション
|
||||
|
||||
**ページサイズのプリセット(空白のPDF用):**
|
||||
|
||||
- Letter(8.5" x 11")
|
||||
- A4(210mm x 297mm)
|
||||
- A5(148mm x 210mm)
|
||||
- Legal(8.5" x 14")
|
||||
- Tabloid(11" x 17")
|
||||
- A3(297mm x 420mm)
|
||||
- カスタム(幅と高さを指定)
|
||||
|
||||
**フィールドのプロパティ(フィールドの種類により異なります):**
|
||||
|
||||
- 名前、ラベル、プレースホルダーテキスト
|
||||
- 初期値
|
||||
- フォントファミリー、サイズ、色
|
||||
- テキストの配置(左、中央、右)
|
||||
- 必須フィールドの切り替え
|
||||
- 読み取り専用の切り替え
|
||||
- テキストフィールドの最大文字数
|
||||
- ドロップダウンとラジオボタンの選択肢リスト
|
||||
- 条件付き表示アクション
|
||||
|
||||
## 活用例
|
||||
|
||||
- 個人情報用のテキストフィールドと、規定への同意用のチェックボックスを備えた入社手続きフォームを作る
|
||||
- サービス選択用のドロップダウンを備えた顧客向けヒアリングシートを作る
|
||||
- 計算フィールドとバーコード識別子を備えた注文書を設計する
|
||||
- 合格/不合格を選ぶラジオボタンを使った点検チェックリストを作る
|
||||
- 回答に応じて追加の質問が表示される条件付きのアンケートフォームを作る
|
||||
|
||||
## ヒント
|
||||
|
||||
- 既存のPDFをアップロードすると、すでにあるフォームフィールドの抽出を試み、編集や追加ができるようになります。
|
||||
- 排他的な選択肢にはラジオボタングループ機能を使います。同じラジオグループのフィールドはグループ名を共有します。
|
||||
- フォームをダウンロードして[PDFフォーム入力機能](./form-filler)で開き、フィールドの動作を確認してください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFフォーム入力機能](./form-filler)
|
||||
- [PDFへ署名](./sign-pdf)
|
||||
- [PDFエディター](./edit-pdf)
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
title: PDFフォーム入力機能
|
||||
description: XFAフォームを含むPDFフォームを、埋め込みビューアーでブラウザー上で直接入力します。
|
||||
---
|
||||
|
||||
# PDFフォーム入力機能
|
||||
|
||||
フォームフィールドのあるPDFを開き、埋め込みビューアーで直接入力できます。標準のAcroFormフィールドと、従来のXFA(XML Forms Architecture)フォームの両方に対応しています。入力が終わったら、ワンクリックで記入済みのPDFをダウンロードできます。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. フォームフィールドを含むPDFをアップロードします。
|
||||
2. 文書が統合PDFビューアーで開き、フォームフィールドがインタラクティブな入力欄として表示されます。
|
||||
3. テキストフィールド、チェックボックス、ドロップダウン、ラジオボタンをクリックして入力します。
|
||||
4. **保存してダウンロード**をクリックすると、記入済みのPDFが取得できます。
|
||||
|
||||
## 機能
|
||||
|
||||
- フォームフィールドを操作できる、PDF.jsの埋め込みビューアー
|
||||
- 標準のAcroFormフィールド(テキスト入力、チェックボックス、ドロップダウン、ラジオボタン)に対応
|
||||
- 従来のXMLベースのフォーム向けにXFAフォームに対応
|
||||
- ページ寸法に合わせたビューアーサイズの自動調整
|
||||
- ファイル名とサイズの表示
|
||||
|
||||
## オプション
|
||||
|
||||
追加の設定項目はありません。フォームをアップロードして入力し、ダウンロードするだけです。
|
||||
|
||||
## 活用例
|
||||
|
||||
- 税務書類、保険の申込書、役所の書類に記入する
|
||||
- PDFの添付ファイルで届いた求人応募フォームに記入する
|
||||
- 取引先登録フォームやサプライヤー向けアンケートに記入する
|
||||
- チェックボックスのフィールドでコンプライアンスのチェックリストを承認する
|
||||
- 診察前に問診票に記入する
|
||||
|
||||
## ヒント
|
||||
|
||||
- XFAフォームは従来の形式で、一部のPDFビューアーでしか対応していません。XFAのPDFをChromeやほとんどのツールで開いて空白ページが表示される場合、それらのビューアーがXFAに対応していないためです。BentoPDFのフォーム入力機能とFirefoxはXFAを正しく処理できます。
|
||||
- 既存のフォームフィールドがないPDFは、まず[PDFフォームの作成](./form-creator)ツールでフィールドを追加してから、ここで入力してください。
|
||||
- ビューアーはPDFのページ寸法に合わせて自動でサイズが調整されます。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFフォームの作成](./form-creator)
|
||||
- [PDFへ署名](./sign-pdf)
|
||||
- [PDFエディター](./edit-pdf)
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
title: ヘッダーとフッター
|
||||
description: ページ番号の動的変数を使って、PDFのページにカスタマイズ可能なヘッダーとフッターのテキストを追加します。
|
||||
---
|
||||
|
||||
# ヘッダーとフッター
|
||||
|
||||
PDFのページの6か所(ヘッダー左、ヘッダー中央、ヘッダー右、フッター左、フッター中央、フッター右)にテキストを追加します。ページ番号と総ページ数の動的変数に対応しているので、「10ページ中3ページ」のようなテンプレートを作れば、ページごとに自動で更新されます。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. PDFファイルをアップロードします。
|
||||
2. 書式設定のコントロールと6つのテキスト入力欄を含むオプションパネルが表示されます。
|
||||
3. ヘッダー/フッターの任意の位置に、表示したいテキストを入力します。
|
||||
4. 動的なページ番号には`{page}`と`{total}`のプレースホルダーを使います。
|
||||
5. フォントサイズと文字色を調整し、必要に応じて特定のページ範囲に限定します。
|
||||
6. **ヘッダーとフッターを追加**をクリックして処理し、ダウンロードします。
|
||||
|
||||
## オプション
|
||||
|
||||
- **ページ範囲**: ヘッダーとフッターを付けるページを限定できます(任意)。空欄にするとすべてのページに適用されます。形式は「1-3, 5」(カンマ区切りの範囲)です。
|
||||
- **フォントサイズ**: 6〜24ポイント。初期値は10です。
|
||||
- **文字色**: カラーセレクターで好きな色を選べます。
|
||||
- **ヘッダー左 / 中央 / 右**: 各ページ上部のテキスト欄です。
|
||||
- **フッター左 / 中央 / 右**: 各ページ下部のテキスト欄です。
|
||||
|
||||
## 機能
|
||||
|
||||
- 1ページにつき、独立した6つのテキスト位置
|
||||
- 現在のページ番号を挿入する動的な`{page}`変数
|
||||
- 総ページ数を挿入する動的な`{total}`変数
|
||||
- 特定のページを対象にするページ範囲フィルター
|
||||
- フォントサイズと色のカスタマイズ
|
||||
- すっきりとしたプロフェッショナルな仕上がりのHelveticaフォント
|
||||
|
||||
## 活用例
|
||||
|
||||
- レポートのフッター中央に「{total} ページ中 {page} ページ」を追加する
|
||||
- ヘッダー左に会社名、ヘッダー右に文書の日付を配置する
|
||||
- 法律文書のフッターに機密保持の注意書きを追加する
|
||||
- 特定のページ範囲に文書の改訂番号を入れる
|
||||
|
||||
## ヒント
|
||||
|
||||
- `{page}`と`{total}`を1つの欄に組み合わせて、「{total} ページ中 {page} ページ」や「{page}/{total}」のような形式にできます。
|
||||
- 必要な位置だけ入力し、ほとんどの欄を空のままにできます。空の欄は単にスキップされます。
|
||||
- 画像やロゴを含むより複雑なヘッダーには、ページ上部に配置した[透かしの追加](./add-watermark)ツールの利用を検討してください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [ページ番号](./page-numbers)
|
||||
- [透かしの追加](./add-watermark)
|
||||
- [通し番号付け](./bates-numbering)
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
title: HEICからPDF
|
||||
description: iPhoneやiPadのHEIC/HEIF画像を、ブラウザー上で直接PDFに変換します。
|
||||
---
|
||||
|
||||
# HEICからPDF
|
||||
|
||||
HEIC/HEIF画像をPDFに変換します。HEICはiOS 11以降のiPhoneとiPadで標準の写真フォーマットです。このツールを使えば、デスクトップソフトをインストールしたりファイルをサーバーにアップロードしたりせずに、写真をPDFにできます。
|
||||
|
||||
## 対応フォーマット
|
||||
|
||||
| フォーマット | 拡張子 |
|
||||
| :----------- | :------ |
|
||||
| HEIC | `.heic` |
|
||||
| HEIF | `.heif` |
|
||||
|
||||
## 使い方
|
||||
|
||||
1. アップロードエリアをクリックするか、HEIC/HEIFファイルをドラッグ&ドロップします。
|
||||
2. ファイル一覧を確認し、不要なファイルを削除します。
|
||||
3. **PDFに変換**をクリックします。結果は`from_heic.pdf`としてダウンロードされます。
|
||||
|
||||
各HEICファイルはheic2anyライブラリでデコードされ、品質92%のPNGに変換されます。そのPNGはpdf-libでPDFに埋め込まれ、1枚の画像が1ページに、フル解像度で配置されます。
|
||||
|
||||
## オプション
|
||||
|
||||
このツールに追加の設定はありません。HEIC画像は高品質(0.92)でPNGに変換されてから埋め込まれます。
|
||||
|
||||
## 活用例
|
||||
|
||||
- 保険請求やレポートに添付するため、iPhoneの写真からPDFを作る
|
||||
- 不動産掲載用のHEIC写真を、印刷可能な1つの文書にまとめる
|
||||
- iPadのスクリーンショット(HEIF形式)を共有しやすいPDFにする
|
||||
- 旅行記用に、旅行の写真を一括で変換する
|
||||
|
||||
## ヒント
|
||||
|
||||
- HEICのデコードはWebAssemblyを使ってすべてブラウザー内で行われます。デコーダーの読み込み中は、最初の変換に少し時間がかかる場合があります。
|
||||
- HEICを他の画像形式(JPG、PNGなど)と混ぜたい場合は、HEICを含むすべての形式を扱える[画像からPDF](./image-to-pdf)ツールを使ってください。
|
||||
- iPhoneのHEICファイルには、GPS座標を含むEXIFデータが含まれていることがよくあります。PDFの出力にはこのメタデータは引き継がれません。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [画像からPDF](./image-to-pdf)
|
||||
- [JPGからPDF](./jpg-to-pdf)
|
||||
- [PNGからPDF](./png-to-pdf)
|
||||
@@ -0,0 +1,65 @@
|
||||
---
|
||||
title: 画像からPDF
|
||||
description: JPG、PNG、BMP、GIF、TIFF、SVG、HEIC、WebP、PSDなど10種類以上の画像フォーマットを、1つのPDFファイルに変換します。
|
||||
---
|
||||
|
||||
# 画像からPDF
|
||||
|
||||
あらゆる画像に対応したユニバーサルな画像PDFコンバーターです。ほぼどんな形式の画像でもアップロードして、1つのPDF文書にまとめられます。各画像は元の寸法に合わせたサイズで、1枚につき1ページになります。
|
||||
|
||||
## 対応フォーマット
|
||||
|
||||
| フォーマット | 拡張子 |
|
||||
| :-------------- | :------------------------------------- |
|
||||
| JPEG | `.jpg`, `.jpeg` |
|
||||
| JPEG 2000 | `.jp2`, `.jpx` |
|
||||
| PNG | `.png` |
|
||||
| BMP | `.bmp` |
|
||||
| GIF | `.gif` |
|
||||
| TIFF | `.tiff`, `.tif` |
|
||||
| SVG | `.svg` |
|
||||
| HEIC/HEIF | `.heic`, `.heif` |
|
||||
| WebP | `.webp` |
|
||||
| PSD | `.psd` |
|
||||
| Portable Anymap | `.pnm`, `.pgm`, `.pbm`, `.ppm`, `.pam` |
|
||||
| JPEG XR | `.jxr` |
|
||||
|
||||
BentoPDFの画像コンバーターの中で、最も幅広い形式に対応しています。特定の形式だけが必要な場合は、専用のツールを使うこともできます。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. アップロードエリアをクリックするか、画像ファイルをドラッグ&ドロップします。複数のファイルを同時に選択できます。
|
||||
2. ファイル一覧を確認します。不要なファイルはゴミ箱アイコンで削除でき、**ファイルを追加**で画像を追加できます。
|
||||
3. ドロップダウンから**PDFの品質**を選びます。
|
||||
4. **PDFに変換**をクリックします。ツールはPyMuPDFエンジンで画像を処理し、結果を`images_to_pdf.pdf`としてダウンロードします。
|
||||
|
||||
## オプション
|
||||
|
||||
**PDFの品質**は、画像をPDFに埋め込むときの圧縮を調整します。
|
||||
|
||||
- **高品質**: 圧縮を最小限に抑え、ファイルサイズは大きくなります。印刷やアーカイブに最適です。
|
||||
- **中品質**(初期値): バランスの取れた圧縮です。ほとんどの用途に適しています。
|
||||
- **低品質**: 強力に圧縮し、ファイルサイズを最小にします。メールや簡単な共有に向いています。
|
||||
|
||||
HEICとWebPファイルは、埋め込み前に自動でPNGに変換されます。これは自動的に行われ、追加の操作は不要です。
|
||||
|
||||
## 活用例
|
||||
|
||||
- スマートフォンのカメラで撮ったレシートや書類のスキャンを1つのPDFにまとめる
|
||||
- 形式が混在した画像から、フォトポートフォリオやルックブックを作る
|
||||
- デスクトップソフトをインストールせずに、iPhoneの写真(HEIC)を共有しやすいPDFに変換する
|
||||
- PSDの書き出しとスクリーンショットから、クライアント向けのデザインモックアップ資料を作る
|
||||
- 古い形式(PNM、JXR、JP2)の画像が入ったフォルダーを、1つのPDFとしてアーカイブする
|
||||
|
||||
## ヒント
|
||||
|
||||
- PDF内の画像の順序は、ファイル一覧の並び順と一致します。希望する順番でアップロードしてください。
|
||||
- ファイルサイズを最小にしたい場合は低品質を選びます。文字中心のスキャンでは、見た目の差はたいてい気になりません。
|
||||
- 画像形式が1種類だけなら、専用コンバーター(JPGからPDF、PNGからPDFなど)でも同じ結果が、よりシンプルな画面で得られます。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [JPGからPDF](./jpg-to-pdf)
|
||||
- [PNGからPDF](./png-to-pdf)
|
||||
- [HEICからPDF](./heic-to-pdf)
|
||||
- [WebPからPDF](./webp-to-pdf)
|
||||
@@ -0,0 +1,183 @@
|
||||
# ツールリファレンス
|
||||
|
||||
BentoPDFには、PDFを扱う**130以上のツール**があります。すべてのツールはブラウザー内で完結して動作し、ファイルがお使いのデバイスの外に出ることはありません。
|
||||
|
||||
---
|
||||
|
||||
## 編集と注釈
|
||||
|
||||
充実した編集ツールで、PDF文書を修正、マークアップ、強化できます。
|
||||
|
||||
<div class="tool-grid">
|
||||
|
||||
- [**PDFエディター**](./edit-pdf): 注釈、ハイライト、墨消し、コメント、図形や画像の追加、検索、PDFの閲覧ができます。
|
||||
- [**しおりの編集**](./bookmark): PDFのしおりを追加、編集、インポート、削除、抽出できます。
|
||||
- [**目次**](./table-of-contents): PDFのしおりから目次ページを生成します。
|
||||
- [**ページ番号**](./page-numbers): 文書にページ番号を挿入します。
|
||||
- [**ページラベルの追加**](./add-page-labels): ローマ数字、接頭辞、任意の開始番号でPDFのページラベルを設定します。
|
||||
- [**通し番号付け**](./bates-numbering): 1つ以上のPDFファイルにまたがって、連続したBates番号を追加します。
|
||||
- [**透かしの追加**](./add-watermark): PDFのページにテキストや画像を重ねて押印します。
|
||||
- [**ヘッダーとフッター**](./header-footer): ページの上部と下部にテキストを追加します。
|
||||
- [**色の反転**](./invert-colors): PDFのダークモード版を作成します。
|
||||
- [**スキャナー効果**](./scanner-effect): PDFをスキャンした文書のように見せます。
|
||||
- [**色の調整**](./adjust-colors): 明るさ、コントラスト、彩度などを細かく調整します。
|
||||
- [**背景色**](./background-color): PDFの背景色を変更します。
|
||||
- [**テキストの色の変更**](./text-color): PDF内のテキストの色を変更します。
|
||||
- [**PDFへ署名**](./sign-pdf): 署名を手書き、入力、またはアップロードで追加します。
|
||||
- [**スタンプの追加**](./add-stamps): 注釈ツールバーを使って、PDFに画像スタンプを追加します。
|
||||
- [**注釈の削除**](./remove-annotations): コメント、ハイライト、リンクを取り除きます。
|
||||
- [**PDFのトリミング**](./crop-pdf): PDFのすべてのページの余白を切り取ります。
|
||||
- [**PDFフォーム入力機能**](./form-filler): ブラウザー上で直接フォームに入力します。XFAフォームにも対応しています。
|
||||
- [**PDFフォームの作成**](./form-creator): ドラッグ&ドロップのテキストフィールドで、入力可能なPDFフォームを作成します。
|
||||
- [**空白ページの削除**](./remove-blank-pages): 空白ページを自動で検出して削除します。
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
## PDFへの変換
|
||||
|
||||
画像、文書、電子書籍、その他のファイル形式をPDFに変換します。
|
||||
|
||||
<div class="tool-grid">
|
||||
|
||||
- [**画像からPDF**](./image-to-pdf): JPG、PNG、BMP、GIF、TIFF、SVG、HEIC、WebPなどをPDFに変換します。
|
||||
- [**JPGからPDF**](./jpg-to-pdf): 1つ以上のJPG画像からPDFを作成します。
|
||||
- [**PNGからPDF**](./png-to-pdf): 1つ以上のPNG画像からPDFを作成します。
|
||||
- [**WebPからPDF**](./webp-to-pdf): 1つ以上のWebP画像からPDFを作成します。
|
||||
- [**SVGからPDF**](./svg-to-pdf): 1つ以上のSVG画像からPDFを作成します。
|
||||
- [**BMPからPDF**](./bmp-to-pdf): 1つ以上のBMP画像からPDFを作成します。
|
||||
- [**HEICからPDF**](./heic-to-pdf): 1つ以上のHEIC画像からPDFを作成します。
|
||||
- [**TIFFからPDFへ**](./tiff-to-pdf): 1つ以上のTIFF画像からPDFを作成します。
|
||||
- [**テキストからPDF**](./txt-to-pdf): プレーンテキストファイルをPDFに変換します。
|
||||
- [**マークダウンからPDF**](./markdown-to-pdf): ライブプレビューとシンタックスハイライト付きで、MarkdownをPDFに変換します。
|
||||
- [**JSONからPDF**](./json-to-pdf): JSONファイルをPDF形式に変換します。
|
||||
- [**ODTからPDF**](./odt-to-pdf): ODT(OpenDocument Text)ファイルをPDFに変換します。
|
||||
- [**CSVからPDF**](./csv-to-pdf): CSVのスプレッドシートをPDFに変換します。
|
||||
- [**RTFからPDF**](./rtf-to-pdf): RTF(リッチテキスト形式)の文書をPDFに変換します。
|
||||
- [**WordからPDF**](./word-to-pdf): Word文書(DOCX、DOC、ODT)をPDFに変換します。
|
||||
- [**ExcelからPDF**](./excel-to-pdf): Excelのスプレッドシート(XLSX、XLS、ODS)をPDFに変換します。
|
||||
- [**PowerPointからPDF**](./powerpoint-to-pdf): PowerPointのプレゼンテーション(PPTX、PPT、ODP)をPDFに変換します。
|
||||
- [**XPSからPDF**](./xps-to-pdf): XPS/OXPS文書をPDFに変換します。
|
||||
- [**MOBIからPDFへの変換**](./mobi-to-pdf): MOBI形式の電子書籍をPDFに変換します。
|
||||
- [**EPUBからPDF**](./epub-to-pdf): EPUB形式の電子書籍をPDFに変換します。
|
||||
- [**FB2からPDF**](./fb2-to-pdf): FictionBook(FB2)形式の電子書籍をPDFに変換します。
|
||||
- [**CBZからPDF**](./cbz-to-pdf): コミックブックのアーカイブ(CBZ/CBR)をPDFに変換します。
|
||||
- [**WPDからPDF**](./wpd-to-pdf): WordPerfectの文書(WPD)をPDFに変換します。
|
||||
- [**WPSからPDF**](./wps-to-pdf): WPS Officeの文書をPDFに変換します。
|
||||
- [**XMLからPDF**](./xml-to-pdf): XML文書をPDFに変換します。
|
||||
- [**ODGからPDF**](./odg-to-pdf): OpenDocument Graphics(ODG)をPDFに変換します。
|
||||
- [**ODSからPDF**](./ods-to-pdf): OpenDocument Spreadsheet(ODS)をPDFに変換します。
|
||||
- [**ODPからPDF**](./odp-to-pdf): OpenDocument Presentation(ODP)をPDFに変換します。
|
||||
- [**PUBからPDF**](./pub-to-pdf): Microsoft Publisher(PUB)をPDFに変換します。
|
||||
- [**VSDからPDFへのファイル変換**](./vsd-to-pdf): Microsoft Visio(VSD、VSDX)をPDFに変換します。
|
||||
- [**PSDからPDF**](./psd-to-pdf): Adobe Photoshop(PSD)ファイルをPDFに変換します。
|
||||
- [**電子メールからPDF**](./email-to-pdf): メールファイル(EML、MSG)をPDF形式に変換します。
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
## PDFからの変換
|
||||
|
||||
PDFの内容を、画像、文書、データ形式に取り出します。
|
||||
|
||||
<div class="tool-grid">
|
||||
|
||||
- [**PDFからJPG**](./pdf-to-jpg): PDFの各ページをJPG画像に変換します。
|
||||
- [**PDFからPNG**](./pdf-to-png): PDFの各ページをPNG画像に変換します。
|
||||
- [**PDFからWebP**](./pdf-to-webp): PDFの各ページをWebP画像に変換します。
|
||||
- [**PDFからBMP**](./pdf-to-bmp): PDFの各ページをBMP画像に変換します。
|
||||
- [**PDFからTIFF**](./pdf-to-tiff): PDFの各ページをTIFF画像に変換します。
|
||||
- [**PDFからCBZへ**](./pdf-to-cbz): コミックリーダーやCalibre向けに、PDFをCBZ(コミックブックアーカイブ)に変換します。
|
||||
- [**PDFからSVG**](./pdf-to-svg): PDFの各ページを拡大縮小可能なベクターグラフィックに変換します。
|
||||
- [**PDFからCSV**](./pdf-to-csv): PDFから表を抽出して、CSV形式に変換します。
|
||||
- [**PDFからExcel**](./pdf-to-excel): PDFから表を抽出して、Excel(XLSX)に変換します。
|
||||
- [**PDFのグレースケール化**](./pdf-to-greyscale): すべての色を白黒に変換します。
|
||||
- [**PDFからJSON**](./pdf-to-json): PDFファイルをJSON形式に変換します。
|
||||
- [**PDFからWord**](./pdf-to-word): PDFファイルを編集可能なWord文書に変換します。
|
||||
- [**画像の抽出**](./extract-images): PDFファイルに埋め込まれたすべての画像を抽出します。
|
||||
- [**PDFからマークダウン**](./pdf-to-markdown): PDFのテキストと表をMarkdown形式に変換します。
|
||||
- [**AI用のPDFを準備する**](./prepare-pdf-for-ai): RAG/LLMパイプライン向けに、PDFの内容をLlamaIndex JSONとして抽出します。
|
||||
- [**PDFからテキスト**](./pdf-to-text): PDFファイルからテキストを抽出して、プレーンテキストとして保存します。
|
||||
- [**PDFテーブルの抽出**](./extract-tables): PDFから表をCSV、JSON、Markdownとして抽出します。
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
## 整理と管理
|
||||
|
||||
PDFのページやファイルを並べ替え、結合、分割、管理します。
|
||||
|
||||
<div class="tool-grid">
|
||||
|
||||
- [**PDFワークフロービルダー**](./pdf-workflow): ビジュアルなノードエディターで、独自のPDF処理パイプラインを構築します。
|
||||
- [**PDFマルチツール**](./pdf-multi-tool): ページ管理に対応した、フル機能のPDFエディターです。
|
||||
- [**OCR PDF**](./ocr-pdf): PDFを検索やコピーができるようにします。
|
||||
- [**PDFの結合**](./merge-pdf): 複数のPDFを1つのファイルにまとめます。
|
||||
- [**代替ページと混合ページ**](./alternate-merge): 各PDFのページを交互に並べて、PDFを結合します。
|
||||
- [**両面スキャンの並べ替え**](./duplex-collate): 表面と裏面のスキャンのまとまりを、正しいページ順に並べ替えます。
|
||||
- [**複製と整理**](./organize-pdf): ページの複製、並べ替え、削除を行います。
|
||||
- [**添付ファイルの追加**](./add-attachments): 1つ以上のファイルをPDFに埋め込みます。
|
||||
- [**添付ファイルの抽出**](./extract-attachments): PDFに埋め込まれたすべてのファイルをZIPとして抽出します。
|
||||
- [**添付ファイルの編集**](./edit-attachments): PDF内の添付ファイルを表示または削除します。
|
||||
- [**PDF OCG**](./pdf-layers): PDF内のOCGレイヤーを表示、切り替え、追加、削除します。
|
||||
- [**PDFの分割**](./split-pdf): ページ範囲を新しいPDFとして取り出します。
|
||||
- [**ページの分割**](./divide-pages): ページを水平方向または垂直方向に分割します。
|
||||
- [**ページの抽出**](./extract-pages): 選択したページを新しいファイルとして保存します。
|
||||
- [**ページの削除**](./delete-pages): 文書から特定のページを削除します。
|
||||
- [**空白ページの追加**](./add-blank-page): PDFの任意の位置に空のページを挿入します。
|
||||
- [**ページの反転**](./reverse-pages): 文書のすべてのページの順序を逆にします。
|
||||
- [**PDFの回転**](./rotate-pdf): ページを90度単位で回転します。
|
||||
- [**任意の角度で回転**](./rotate-custom): ページを任意の角度で回転します。
|
||||
- [**N-Up PDF**](./n-up-pdf): 複数のページを1枚のシートに配置します。
|
||||
- [**PDFブックレット**](./pdf-booklet): 両面のブックレット印刷用に、ページを並べ替えます。
|
||||
- [**単一ページに結合**](./combine-single-page): すべてのページを、1つの連続したスクロールページにつなぎ合わせます。
|
||||
- [**メタデータの表示**](./view-metadata): PDFの隠れたプロパティを確認します。
|
||||
- [**メタデータの編集**](./edit-metadata): 作成者、タイトル、その他のプロパティを変更します。
|
||||
- [**PDFからZIP**](./pdf-to-zip): 複数のPDFファイルをZIPアーカイブにまとめます。
|
||||
- [**PDFの比較**](./compare-pdfs): 2つのPDFを並べて比較します。
|
||||
- [**PDFのポスタライズ**](./posterize-pdf): 大きなページを、複数の小さなページに分割します。
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
## 最適化と修復
|
||||
|
||||
PDFを圧縮、修正、最適化して、パフォーマンスと互換性を高めます。
|
||||
|
||||
<div class="tool-grid">
|
||||
|
||||
- [**PDFの圧縮**](./compress-pdf): PDFのファイルサイズを小さくします。
|
||||
- [**PDFからPDF/A**](./pdf-to-pdfa): 長期保存用に、PDFをPDF/Aに変換します。
|
||||
- [**ページサイズを固定**](./fix-page-size): すべてのページを同じサイズに統一します。
|
||||
- [**PDFの線形化**](./linearize-pdf): PDFをWebでの高速表示向けに最適化します。
|
||||
- [**ページ寸法**](./page-dimensions): ページのサイズ、向き、単位を分析します。
|
||||
- [**制限の解除**](./remove-restrictions): パスワード保護とセキュリティ制限を解除します。
|
||||
- [**PDFの修復**](./repair-pdf): 破損したPDFファイルからデータを復元します。
|
||||
- [**PDFの画像化**](./rasterize-pdf): PDFを画像ベースのPDFに変換します。レイヤーを平坦化し、選択可能なテキストを取り除きます。
|
||||
- [**PDFの傾き補正**](./deskew-pdf): OpenCVを使って、傾いたスキャンページを自動で水平に補正します。
|
||||
- [**フォントをアウトライン化**](./font-to-outline): 表示を一定にするため、すべてのフォントをベクターアウトラインに変換します。
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
## PDFのセキュリティ
|
||||
|
||||
PDF文書を保護、暗号化し、アクセスを制御します。
|
||||
|
||||
<div class="tool-grid">
|
||||
|
||||
- [**PDFの暗号化**](./protect-pdf): パスワードを追加して、PDFをロックします。
|
||||
- [**PDFをサニタイズ**](./sanitize-pdf): メタデータ、注釈、スクリプトなどを削除します。
|
||||
- [**PDFの復号化**](./unlock-pdf): パスワード保護を解除して、PDFのロックを外します。
|
||||
- [**PDFの平坦化**](./flatten-pdf): フォームフィールドと注釈を編集不可にします。
|
||||
- [**メタデータの削除**](./remove-metadata): PDFから隠れたデータを取り除きます。
|
||||
- [**権限の変更**](./change-permissions): PDFのユーザー権限を設定または変更します。
|
||||
- [**PDFへの電子署名**](./digital-sign-pdf): X.509証明書を使って、暗号化された電子署名を追加します。
|
||||
- [**署名の検証**](./validate-signature-pdf): 電子署名を検証し、証明書の詳細を表示します。
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: 色の反転
|
||||
description: PDFのすべての色を反転して、どんな文書もダークモード版にします。
|
||||
---
|
||||
|
||||
# 色の反転
|
||||
|
||||
PDFのすべての色を反転色にします。白い背景は黒に、黒い文字は白に、その他の色は補色に変わります。どんなPDFでも「ダークモード」版を作る最も手軽な方法です。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. PDFファイルをアップロードします。
|
||||
2. **色の反転**をクリックして処理します。
|
||||
3. 反転したPDFが自動でダウンロードされます。
|
||||
|
||||
追加の設定はありません。このツールは各ページを画像としてレンダリングし、すべてのピクセルの色を反転して、結果を新しいPDFに組み直します。
|
||||
|
||||
## 機能
|
||||
|
||||
- すべてのページの色をワンクリックで反転
|
||||
- 文書内のすべてのページを処理
|
||||
- 元のページ寸法とレイアウトを維持
|
||||
- 内容の種類(テキスト、画像、混在)を問わずあらゆるPDFで動作
|
||||
|
||||
## 活用例
|
||||
|
||||
- 夜間でも読みやすいように、教科書やマニュアルのダークモード版を作る
|
||||
- アクセシビリティのために、文書の高コントラスト版を用意する
|
||||
- 露出が正しくない状態で取り込んだスキャン文書を反転する
|
||||
- 画像の多いPDFのネガ版を作って、視覚的に分析する
|
||||
|
||||
## ヒント
|
||||
|
||||
- このツールは効果を適用するためにページを画像化するため、出力は画像ベースになります。テキストは選択も検索もできなくなります。反転後に検索可能なテキストが必要な場合は、出力をOCRツールにかけてください。
|
||||
- 明るさ、コントラスト、彩度などをより細かく調整したい場合は、代わりに[色の調整](./adjust-colors)ツールを使ってください。
|
||||
- ページ数の多い大きなPDFは、各ページを個別にレンダリングして反転するため、処理に時間がかかる場合があります。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [色の調整](./adjust-colors)
|
||||
- [背景色](./background-color)
|
||||
- [スキャナー効果](./scanner-effect)
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
title: JPGからPDF
|
||||
description: 1つ以上のJPG、JPEG、JPEG 2000画像を、ブラウザー上で直接1つのPDFファイルに変換します。
|
||||
---
|
||||
|
||||
# JPGからPDF
|
||||
|
||||
JPG画像をきれいなPDFにします。ファイルを1つだけ、または複数のJPGをまとめてアップロードでき、各画像が出力文書のフルサイズの1ページになります。
|
||||
|
||||
## 対応フォーマット
|
||||
|
||||
| フォーマット | 拡張子 |
|
||||
| :----------- | :-------------- |
|
||||
| JPEG | `.jpg`, `.jpeg` |
|
||||
| JPEG 2000 | `.jp2`, `.jpx` |
|
||||
|
||||
## 使い方
|
||||
|
||||
1. アップロードエリアをクリックするか、JPGファイルをドラッグ&ドロップします。複数選択に対応しています。
|
||||
2. アップロードしたファイルを確認します。ゴミ箱アイコンで個別に削除でき、**ファイルを追加**で一覧に追加できます。
|
||||
3. **PDFの品質**を選びます。
|
||||
4. **PDFに変換**をクリックします。ツールは品質設定に応じて画像を圧縮し、PyMuPDFエンジンで変換して、`from_jpgs.pdf`をダウンロードします。
|
||||
|
||||
## オプション
|
||||
|
||||
**PDFの品質**は、PDFに埋め込む前に各画像へ適用する圧縮を調整します。
|
||||
|
||||
- **高品質**: 細部を最大限に保ちます。写真や印刷向けです。
|
||||
- **中品質**(初期値): 鮮明さとファイルサイズのバランスが良い設定です。
|
||||
- **低品質**: 強力に圧縮して、出力を最小にします。
|
||||
|
||||
## 活用例
|
||||
|
||||
- JPGで保存したスキャン文書を、提出用の1つのPDFにまとめる
|
||||
- 顧客向けに、商品写真をカタログとしてまとめる
|
||||
- 医療や衛星のJPEG 2000画像を、持ち運びしやすいPDFにする
|
||||
- カメラから書き出した写真で、印刷用のフォトアルバムを作る
|
||||
|
||||
## ヒント
|
||||
|
||||
- 標準のJPEGだけでなく、JPEG 2000ファイル(`.jp2`、`.jpx`)にも完全に対応しています。医療画像や地理空間データに便利です。
|
||||
- スマートフォンのカメラで撮ったJPGなら、中品質にすると、画面上では違いが見えないまま、高品質よりファイルが40〜60%小さくなることが多いです。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [画像からPDF](./image-to-pdf)
|
||||
- [PNGからPDF](./png-to-pdf)
|
||||
- [WebPからPDF](./webp-to-pdf)
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
title: JSONからPDF
|
||||
description: BentoPDFのJSON形式からPDFファイルを再構築します。JSONで書き出したデータを、元のPDF文書に戻します。
|
||||
---
|
||||
|
||||
# JSONからPDF
|
||||
|
||||
BentoPDFの**PDFからJSON**ツールで作成したJSONファイルから、PDF文書を再構築します。これは往復変換のためのツールで、PDFの構造化されたJSON表現を受け取り、元の文書を組み立て直します。
|
||||
|
||||
::: warning
|
||||
このツールが受け付けるのは、BentoPDFのPDFからJSONコンバーターで作成したJSONファイルのみです。APIやデータベース、他のツールが出力する一般的なJSONファイルには対応していません。
|
||||
:::
|
||||
|
||||
## 対応フォーマット
|
||||
|
||||
| 入力 | 説明 |
|
||||
| :------ | :---------------------------------------------------- |
|
||||
| `.json` | BentoPDFのPDFからJSONツールで書き出されたJSONファイル |
|
||||
|
||||
## 使い方
|
||||
|
||||
1. アップロードエリアをクリックするか、1つ以上のJSONファイルをドラッグ&ドロップします。
|
||||
2. ファイル一覧に、選択した各ファイルとそのサイズが表示されます。
|
||||
3. **PDFに変換**をクリックします。ツールはWeb WorkerとCPDFエンジンですべてのファイルを処理します。
|
||||
4. 出力は`jsons-to-pdf.zip`としてダウンロードされ、入力した各JSONファイルにつき1つのPDFが含まれます。
|
||||
|
||||
変換はバックグラウンドのWeb Workerで実行されるため、大きなファイルでもUIは応答し続けます。
|
||||
|
||||
## オプション
|
||||
|
||||
このツールに設定可能なオプションはありません。出力されるPDFは、JSONの構造によって完全に決まります。
|
||||
|
||||
## 出力
|
||||
|
||||
複数のJSONファイルを変換した場合、結果はZIPアーカイブで提供されます。各PDFは元のJSONファイルの名前が付きます(例: `report.json`は`report.pdf`になります)。
|
||||
|
||||
## 活用例
|
||||
|
||||
- JSONベースのバックアップやアーカイブのパイプラインからPDFを復元する
|
||||
- PDFをJSONに変換して中身を確認し、再びPDFに戻す
|
||||
- JSON構造をプログラムで変更した後に、文書を再構築する
|
||||
- PDFからJSONへの書き出しがすべての文書内容を取得できているか、変換し直して確認する
|
||||
|
||||
## ヒント
|
||||
|
||||
- 任意のJSONデータ(APIのレスポンスや設定ファイルなど)を整形したPDFに変換したい場合は、[テキストからPDF](./txt-to-pdf)ツールのほうが向いています。JSONをテキストとして貼り付けると、適切な書式でレンダリングされます。
|
||||
- このツールを使うには、CPDF WebAssemblyエンジンが利用可能である必要があります。セルフホスト環境では、CPDFのWASMファイルを設定してください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [テキストからPDF](./txt-to-pdf)
|
||||
- [マークダウンからPDF](./markdown-to-pdf)
|
||||
- [CSVからPDF](./csv-to-pdf)
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
title: PDFの線形化
|
||||
description: プログレッシブ読み込みに対応して、PDFをWebでの高速表示向けに最適化します。「Fast Web View」最適化とも呼ばれます。
|
||||
---
|
||||
|
||||
# PDFの線形化
|
||||
|
||||
線形化はPDFの構造を組み替えて、ファイル全体のダウンロードが終わる前に最初のページを表示できるようにします。Adobeはこれを「Fast Web View」と呼んでいます。PDFをWebサイトで公開したり、ドキュメントポータルで提供したりしている場合、線形化すると開くときの体感速度が大きく向上します。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. 1つ以上のPDFファイルをアップロードします。
|
||||
2. **PDFを線形化**をクリックします。
|
||||
3. すべての線形化済みファイルを含むZIPアーカイブとして、結果をダウンロードします。
|
||||
|
||||
設定項目はありません。このツールはQPDFの`--linearize`フラグを使い、見た目の内容を変えずにPDFの内部構造を並べ替えます。
|
||||
|
||||
## 線形化で行われること
|
||||
|
||||
- 最初のページのデータがファイルの先頭に来るよう、PDFオブジェクトを並べ替える
|
||||
- ビューアーが各ページの場所を把握できるよう、線形化ディクショナリとヒントテーブルを追加する
|
||||
- バイトレンジリクエストを有効にし、ブラウザーがファイル全体をダウンロードせずに最初のページだけを取得できるようにする
|
||||
- ランダムアクセスを効率化するため、相互参照テーブルを整理する
|
||||
|
||||
## 機能
|
||||
|
||||
- 複数のPDFを1回の操作でバッチ処理
|
||||
- 出力はすべてのコンテンツ、フォント、画像、インタラクティブ要素を保持
|
||||
- 確実で標準に準拠した線形化のためにQPDF(WebAssembly)を使用
|
||||
- 結果は簡単にダウンロードできるようZIPにまとめられる
|
||||
|
||||
## 活用例
|
||||
|
||||
- ユーザーが即座にページ表示されることを期待するWebサイトで、PDFレポートを公開する
|
||||
- ブラウザー内ビューアーを備えたWebアプリケーションにPDFを埋め込む
|
||||
- 低速なモバイル回線でアクセスされるPDFのカタログやマニュアルを公開する
|
||||
- バイトレンジ配信に対応したコンテンツ配信ネットワーク(CDN)向けに文書を準備する
|
||||
|
||||
## ヒント
|
||||
|
||||
- 線形化は、ほかの編集がすべて終わってから行ってください。その後に変更(結合やページの追加など)を加えると、線形化が解除されます。
|
||||
- 「PDFの圧縮」と組み合わせると、最小で最速に読み込めるPDFになります。
|
||||
- 線形化によってファイルサイズがわずかに増えます(通常は1%未満)。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFの圧縮](./compress-pdf): 線形化の前にファイルサイズを削減
|
||||
- [PDFの修復](./repair-pdf): 線形化を妨げる構造上の問題を修正
|
||||
- [メタデータの削除](./remove-metadata): オンライン公開の前にメタデータを削除
|
||||
@@ -0,0 +1,59 @@
|
||||
---
|
||||
title: マークダウンからPDF
|
||||
description: Markdownを書くか貼り付けて、ライブプレビューとシンタックスハイライト付きで、整ったPDFとして書き出します。
|
||||
---
|
||||
|
||||
# マークダウンからPDF
|
||||
|
||||
ライブプレビューとワンクリックのPDF書き出しを備えた、高機能なMarkdownエディターです。ゼロから書く、既存の`.md`ファイルをアップロードする、クリップボードから貼り付けるのいずれも可能です。エディターはMarkdownをリアルタイムでレンダリングし、ブラウザー内蔵の印刷エンジンでスタイル付きのPDFを書き出します。
|
||||
|
||||
## 対応フォーマット
|
||||
|
||||
| 入力 | 説明 |
|
||||
| :------------ | :--------------------------------- |
|
||||
| `.md`ファイル | アップロードボタンからアップロード |
|
||||
| 直接入力 | エディターに入力または貼り付け |
|
||||
|
||||
## 使い方
|
||||
|
||||
1. マークダウンからPDFツールを開きます。エディターは分割ビューで読み込まれ、左にMarkdownのソース、右にレンダリングされたプレビューが表示されます。
|
||||
2. Markdownを書くか貼り付けるか、**アップロード**をクリックして`.md`ファイルを読み込みます。
|
||||
3. ツールバーのテーマスライダーで、ライトテーマとダークテーマを切り替えます。
|
||||
4. **PDFを書き出し**をクリックするか`Ctrl/Cmd + S`を押すと、ブラウザーの印刷ダイアログ経由でPDFが生成されます。
|
||||
|
||||
## 機能
|
||||
|
||||
このエディターは、基本を超えた豊富なMarkdown機能に対応しています。
|
||||
|
||||
- **標準のMarkdown**: 見出し、太字、斜体、リンク、画像、リスト、引用、水平線
|
||||
- 15以上の言語(JavaScript、TypeScript、Python、Go、Rust、SQL、Java、C#、C++、YAML、Bashなど)に対応した、シンタックスハイライト付きの**コードブロック**
|
||||
- **Mermaid図**: フローチャート、シーケンス図、ER図などのMermaidチャートがプレビュー上で直接表示されます
|
||||
- 標準のMarkdown記法による**表**
|
||||
- チェックボックス付きの**タスクリスト**
|
||||
- **脚注**、**下付き文字**、**上付き文字**
|
||||
- **定義リスト**、**略語**
|
||||
- **絵文字**に対応(`:smile:`が絵文字として表示されます)
|
||||
- **ハイライト**(`==marked text==`)と**挿入**(`++inserted text++`)
|
||||
- **URLの自動リンク化**: プレーンなURLがクリック可能なリンクに変換されます
|
||||
- **目次**の生成
|
||||
- 見出しへの**アンカーリンク**
|
||||
|
||||
## 活用例
|
||||
|
||||
- プロジェクトのドキュメントを書き、関係者向けに整ったPDFとして書き出す
|
||||
- コードサンプルやMermaidのアーキテクチャ図を含む技術レポートを作る
|
||||
- GitHubのREADMEを、オフラインでの閲覧や印刷用にPDFへ変換する
|
||||
- タスクリストや表を使って、提案書や仕様書の下書きを作る
|
||||
- Markdownで書いた講義ノートから、スタイル付きの配布資料を作る
|
||||
|
||||
## ヒント
|
||||
|
||||
- PDFの出力にはブラウザーの「PDFに印刷」機能を使います。Chromeでは、保存前に印刷ダイアログで余白や拡大率を調整できます。
|
||||
- Mermaid図はプレビューに表示されますが、初回は初期化に少し時間がかかる場合があります。
|
||||
- ボタンに手を伸ばさず書き出すには、キーボードショートカットの`Ctrl/Cmd + S`を使ってください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [テキストからPDF](./txt-to-pdf)
|
||||
- [WordからPDF](./word-to-pdf)
|
||||
- [JSONからPDF](./json-to-pdf)
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
title: PDFの結合
|
||||
description: ドラッグ&ドロップでの並べ替えとページ単位の制御で、複数のPDFファイルを1つの文書に結合します。
|
||||
---
|
||||
|
||||
# PDFの結合
|
||||
|
||||
複数のPDFファイルを1つの文書に結合します。ファイル全体を指定した順序で結合することも、ページモードに切り替えて、アップロードしたすべてのPDFの個々のページを細かく制御することもできます。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. ドロップゾーンをクリックするか、ドラッグして、2つ以上のPDFファイルをアップロードします。
|
||||
2. 上部の切り替えで、**ファイルモード**と**ページモード**のどちらかを選びます。
|
||||
3. ファイルモードでは、ファイルをドラッグして並べ替え、必要に応じて各ファイルのページ範囲(例: `1-3, 5`)を指定します。範囲を空欄にすると、すべてのページが含まれます。
|
||||
4. ページモードでは、個々のページのサムネイルをドラッグ&ドロップして、思い通りのページ順を作ります。
|
||||
5. **PDFを結合**をクリックすると、すべてが1つのファイルにまとめられます。結合したPDFは自動でダウンロードされます。
|
||||
|
||||
## 機能
|
||||
|
||||
- 2つの結合モード: ファイル全体をすばやく結合するファイルモードと、ページ単位で制御するページモード
|
||||
- どちらのモードでも、滑らかなアニメーションでドラッグ&ドロップによる並べ替えが可能
|
||||
- ページ範囲の記法(例: `1-3, 5, 8-10`)で、ページモードに切り替えずに必要なページだけを選べる
|
||||
- サムネイルを遅延読み込みするため、大きな文書でもUIが軽快に動作
|
||||
- ファイル数や合計ページ数に制限なし
|
||||
- 再エンコードせず、元のPDFの品質を維持
|
||||
|
||||
## オプション
|
||||
|
||||
| オプション | 説明 |
|
||||
| ------------------ | ---------------------------------------------------------------------------------------- |
|
||||
| **ファイルモード** | ファイル全体を好きな順序で結合。ファイルごとにページ範囲のフィルターも指定可能 |
|
||||
| **ページモード** | すべてのファイルのすべてのページを一覧表示。サムネイルをドラッグして思い通りの順序を作成 |
|
||||
| **ページ入力** | ファイルごとのテキスト欄。`1-3, 5`のような範囲を指定して、特定のページだけを含める |
|
||||
|
||||
## 活用例
|
||||
|
||||
- 章ごとに分かれたPDFを、1冊の本やレポートにまとめる
|
||||
- 送付状と履歴書を、1つの応募書類に結合する
|
||||
- 複数の元文書から特定のページを取り出して、1つのファイルにまとめる
|
||||
- スキャンしたレシートや請求書を、1つのアーカイブPDFにまとめる
|
||||
- 複数のスライド資料から、プレゼンテーションの配布資料を作る
|
||||
|
||||
## ヒント
|
||||
|
||||
- ファイルを次々に追加するのではなく、異なるファイルのページを交互に挟み込みたい場合は、ページモードを使ってください。
|
||||
- 最初のアップロード後でも、**ファイルを追加**ボタンでファイルを追加できます。現在の並びは失われません。
|
||||
- ページ範囲は1始まりなので、`1`はそのファイルの最初のページを指します。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFの分割](./split-pdf)
|
||||
- [複製と整理](./organize-pdf)
|
||||
- [代替ページと混合ページ](./alternate-merge)
|
||||
- [ページの削除](./delete-pages)
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: MOBIからPDF
|
||||
description: MOBI形式の電子書籍ファイルを、ブラウザー上で直接PDFに変換します。無料でプライベート、ファイルのアップロードは不要です。
|
||||
---
|
||||
|
||||
# MOBIからPDF
|
||||
|
||||
Amazon KindleのMOBI形式の電子書籍を、PDF文書に変換します。MOBIファイルはKindleの端末やアプリに依存しているため、ほかの環境では読みにくいことがあります。PDFに変換すれば、どんなデバイスでも開いたり印刷したりできる、持ち運びしやすい版が手に入ります。
|
||||
|
||||
## 対応フォーマット
|
||||
|
||||
| フォーマット | 拡張子 | 備考 |
|
||||
| :----------- | :------ | :--------------------------------- |
|
||||
| MOBI | `.mobi` | Kindleの電子書籍形式(Mobipocket) |
|
||||
|
||||
## 使い方
|
||||
|
||||
1. アップロードエリアをクリックするか、1つ以上のMOBIファイルをドラッグ&ドロップします。
|
||||
2. ファイル一覧を確認します。不要なファイルはゴミ箱アイコンで削除でき、**ファイルを追加**で電子書籍を追加できます。
|
||||
3. **PDFに変換**をクリックします。PyMuPDFエンジンがMOBIの構造を解析し、各ページをPDFの内容としてレンダリングします。
|
||||
4. ファイルが1つの場合はPDFとしてダウンロードされます。複数ファイルを変換した場合は、`mobi-converted.zip`という名前のZIPアーカイブが得られます。
|
||||
|
||||
## オプション
|
||||
|
||||
追加の設定は不要です。変換では、元のMOBIファイルのテキスト、書式、埋め込み画像が保持されます。
|
||||
|
||||
## 活用例
|
||||
|
||||
- PDFにしか対応していない、Kindle以外の電子書籍リーダーで、Kindleで購入したコンテンツを読む
|
||||
- オフラインでの学習や書き込みのために、電子書籍の章を印刷する
|
||||
- 個人の電子書籍ライブラリを、汎用的な形式でアーカイブする
|
||||
- Kindleアプリを持っていない相手に、抜粋を共有する
|
||||
|
||||
## ヒント
|
||||
|
||||
- DRM保護されたMOBIファイルは変換できません。このツールが扱えるのはDRMフリーのMOBIファイルのみです。
|
||||
- すべてがブラウザー内で処理されるため、画像が多く埋め込まれた大きな電子書籍は、処理に数秒長くかかる場合があります。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [EPUBからPDF](./epub-to-pdf)
|
||||
- [FB2からPDF](./fb2-to-pdf)
|
||||
- [CBZからPDF](./cbz-to-pdf)
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
title: N-Up PDF
|
||||
description: 複数のPDFページを1枚のシートにグリッド状に配置し、コンパクトに印刷します。
|
||||
---
|
||||
|
||||
# N-Up PDF
|
||||
|
||||
複数のページを、グリッド状に1枚のシートに配置します。1枚に2、4、6、8、9、16ページを収めることで、印刷枚数を減らせます。拡大縮小、配置、必要に応じたページサイズの設定は、ツールが処理します。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. PDFファイルをアップロードします。
|
||||
2. 1枚あたりのページ数(「N」の値)を選びます: 2、4、6、8、9、16。
|
||||
3. 出力するページサイズ(初期値はA4)と向きを選びます。
|
||||
4. 必要に応じて、間隔、枠線の色、背景色を設定します。
|
||||
5. 処理ボタンをクリックします。ツールが各ページを拡大縮小し、新しいシートに並べます。
|
||||
|
||||
## 機能
|
||||
|
||||
- グリッドレイアウト: 2-up、4-up、6-up、8-up、9-up、16-up
|
||||
- 出力ページサイズと向きを設定可能
|
||||
- 並べたページ間の間隔を任意で設定可能
|
||||
- 背景色と枠線の色の設定
|
||||
- 元のページの縦横比を保ったまま、収まるように拡大縮小
|
||||
|
||||
## オプション
|
||||
|
||||
| オプション | 説明 |
|
||||
| ----------------------- | ------------------------------------------------------ |
|
||||
| **1枚あたりのページ数** | 出力ページ1枚に収める元のページ数(2、4、6、8、9、16) |
|
||||
| **ページサイズ** | 出力シートのサイズ(A4、Letter、Legalなど) |
|
||||
| **向き** | 出力シートの縦または横 |
|
||||
| **間隔** | 並べたページ間のすき間(ポイント単位) |
|
||||
| **背景色** | 出力シートの背景の塗りつぶし色 |
|
||||
| **枠線の色** | 並べた各ページの周囲の枠線の色 |
|
||||
|
||||
## 活用例
|
||||
|
||||
- 紙を節約するため、1ページにスライド4枚を載せた配布資料を印刷する
|
||||
- 複数の参考ページを1枚にまとめた学習用シートを作る
|
||||
- ファイリング用に、コンパクトな文書アーカイブを作る
|
||||
- 長い文書のサムネイル一覧シートを作る
|
||||
|
||||
## ヒント
|
||||
|
||||
- 2-upのレイアウトには横向きが適していることが多く、4-up以上では通常は縦向きが最適です。
|
||||
- 間隔を広げると読みやすくなりますが、並べた各ページに使える面積が小さくなります。
|
||||
- 逆の操作(1ページを複数に分割する)については、[PDFのポスタライズ](./posterize-pdf)をご覧ください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFのポスタライズ](./posterize-pdf)
|
||||
- [PDFブックレット](./pdf-booklet)
|
||||
- [単一ページに結合](./combine-single-page)
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
title: OCR PDF
|
||||
description: Tesseract OCRを使い、多言語と文字フィルターに対応して、スキャンしたPDFを検索・コピー可能にします。
|
||||
---
|
||||
|
||||
# OCR PDF
|
||||
|
||||
スキャンした文書を、検索やコピーができるPDFに変えます。このツールはTesseract OCRで画像内のテキストを認識し、元のページの上に不可視のテキストレイヤーを重ねます。見た目はそのままで、内容を完全に検索できるようになります。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. スキャンしたPDF、または画像ベースのPDFファイルをアップロードします。
|
||||
2. 検索できる言語リストから、文書に含まれる言語を1つ以上選びます。
|
||||
3. 必要に応じて、詳細設定(解像度、二値化、ホワイトリスト)を調整します。
|
||||
4. **OCRを開始**をクリックし、リアルタイムの進行状況バーで進み具合を確認します。
|
||||
5. 完了したら、抽出されたテキストを確認し、検索可能なPDFまたはプレーンな`.txt`ファイルをダウンロードします。
|
||||
|
||||
## 機能
|
||||
|
||||
- 検索可能な言語セレクターによる、多言語OCR
|
||||
- 不可視のテキストレイヤーで、元の文書の見た目を維持
|
||||
- 処理中のリアルタイムな進行状況バーとログ出力
|
||||
- 検索可能なPDFまたはプレーンテキストファイルとして結果をダウンロード
|
||||
- 抽出したテキストをクリップボードに直接コピー
|
||||
- 速度と精度のバランスを取る、3段階の解像度
|
||||
|
||||
## オプション
|
||||
|
||||
| 設定 | 値 | 初期値 | 目的 |
|
||||
| ---------------------------------- | ------------------------------------------------------------------------ | ------ | ---------------------------------------------------------------------- |
|
||||
| **解像度** | 標準(192 DPI)、高(288 DPI)、超高(384 DPI) | 高 | 解像度を上げると小さな文字の精度が向上しますが、処理に時間がかかります |
|
||||
| **画像を二値化** | オン / オフ | オフ | 白黒に変換して、きれいなスキャンのコントラストを高めます |
|
||||
| **文字ホワイトリストのプリセット** | なし、英数字、数字と通貨、文字のみ、数字のみ、請求書、フォーム、カスタム | なし | 認識する文字を制限して、特定の種類の文書での精度を高めます |
|
||||
| **文字ホワイトリスト** | 自由入力 | 空 | プリセットがカスタムのときに使う、手動の文字セット |
|
||||
|
||||
## 活用例
|
||||
|
||||
- スキャンした契約書や請求書を検索可能にして、Ctrl+Fで探せるようにする
|
||||
- 撮影した文書や古い紙の記録からテキストを抽出する
|
||||
- 請求書プリセットでレシートを処理し、金額や日付を正確に取り込む
|
||||
- コンプライアンス要件のために、画像のみのスキャンからアクセシブルなPDFを作る
|
||||
- スキャンした書籍やマニュアルのテキストを一括で抽出する
|
||||
|
||||
## ヒント
|
||||
|
||||
- 文書に複数の言語が混在している場合(例: 英語の見出しと日本語の本文)は、複数の言語を選択してください。
|
||||
- 文字がかすれていたりコントラストが低い文書には、二値化オプションを使ってください。認識精度が大きく向上することがあります。
|
||||
- 請求書とフォームのホワイトリストプリセットは、無関係な文字の形を無視するため、構造化された文書での誤認識を大幅に減らします。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFテーブルの抽出](./extract-tables)
|
||||
- [PDFの結合](./merge-pdf)
|
||||
- [PDFの圧縮](./compress-pdf)
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: ODGからPDF
|
||||
description: LibreOffice Draw(ODG)ファイルを、ブラウザー上でPDFに変換します。無料で、アップロード不要、完全にプライベートです。
|
||||
---
|
||||
|
||||
# ODGからPDF
|
||||
|
||||
OpenDocument GraphicsファイルをPDFに変換します。ODGはLibreOffice Drawのネイティブ形式で、図表、フローチャート、ベクターイラストに使われます。PDFに変換すると、これらの図を共有、印刷、ほかの文書への埋め込みがしやすくなります。
|
||||
|
||||
## 対応フォーマット
|
||||
|
||||
| フォーマット | 拡張子 | 備考 |
|
||||
| :-------------------- | :----- | :------------------------------------------- |
|
||||
| OpenDocument Graphics | `.odg` | LibreOffice Draw / OpenOffice Drawのファイル |
|
||||
|
||||
## 使い方
|
||||
|
||||
1. アップロードエリアをクリックするか、ODGファイルをドラッグ&ドロップします。複数のファイルを一度に追加できます。
|
||||
2. ファイル一覧を確認します。ゴミ箱アイコンで個別に削除でき、**ファイルを追加**でさらに図面を追加できます。
|
||||
3. **PDFに変換**をクリックします。LibreOfficeベースのエンジンがブラウザー内で読み込まれ、ベクターグラフィック、図形、テキストを保持したまま各ODGファイルを変換します。
|
||||
4. ファイルが1つの場合はPDFが直接ダウンロードされます。複数の場合は、`odg-to-pdf.zip`という名前のZIPアーカイブになります。
|
||||
|
||||
## オプション
|
||||
|
||||
追加の設定は不要です。変換では、ODGソースの元のページ寸法、図形、コネクター、テキストボックスが保持されます。
|
||||
|
||||
## 活用例
|
||||
|
||||
- LibreOfficeをインストールしていない取引先と、LibreOffice Drawの図を共有する
|
||||
- Drawで作成したフローチャートやネットワーク図を印刷する
|
||||
- ODGのイラストを、PDFとしてレポートやプレゼンテーションに埋め込む
|
||||
- 技術図面を、数十年先でも読める形式でアーカイブする
|
||||
|
||||
## ヒント
|
||||
|
||||
- ベクター要素はPDF出力でもベクターのまま保たれるため、どんな印刷サイズにもきれいに拡大縮小できます。
|
||||
- LibreOfficeエンジンは初回の使用時に初期化に少し時間がかかります。その後、同じセッション内の変換はより速くなります。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [ODSからPDF](./ods-to-pdf)
|
||||
- [ODPからPDF](./odp-to-pdf)
|
||||
- [VSDからPDFへのファイル変換](./vsd-to-pdf)
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: ODPからPDF
|
||||
description: LibreOffice Impress(ODP)のプレゼンテーションを、ブラウザー上でPDFに変換します。無料でプライベート、アップロード不要です。
|
||||
---
|
||||
|
||||
# ODPからPDF
|
||||
|
||||
OpenDocument PresentationファイルをPDFに変換します。ODPはLibreOffice Impressのネイティブ形式で、Googleスライドの標準的な書き出し形式でもあります。プレゼンテーションをPDFにすれば、誰でもプレゼンテーションソフトなしで閲覧でき、スライドもきれいに印刷できます。
|
||||
|
||||
## 対応フォーマット
|
||||
|
||||
| フォーマット | 拡張子 | 備考 |
|
||||
| :------------------------ | :----- | :--------------------------------------------- |
|
||||
| OpenDocument Presentation | `.odp` | LibreOffice Impress / Googleスライドの書き出し |
|
||||
|
||||
## 使い方
|
||||
|
||||
1. アップロードエリアをクリックするか、ODPファイルをドラッグ&ドロップします。複数のプレゼンテーションを一度に選択できます。
|
||||
2. ファイル一覧を確認します。ゴミ箱アイコンで削除でき、**ファイルを追加**でプレゼンテーションを追加できます。
|
||||
3. **PDFに変換**をクリックします。LibreOfficeベースのエンジンが各プレゼンテーションを処理し、スライドが1枚ずつ1ページになったPDFを作成します。
|
||||
4. ファイルが1つの場合はPDFとしてダウンロードされます。複数ファイルの場合は、`odp-to-pdf.zip`という名前のZIPアーカイブで提供されます。
|
||||
|
||||
## オプション
|
||||
|
||||
設定する項目はありません。各スライドは元の寸法でレンダリングされ、テキスト、画像、図形、スライドの背景が保持されます。
|
||||
|
||||
## 活用例
|
||||
|
||||
- 配布資料のPDFとして、プレゼンテーションを参加者に配布する
|
||||
- ODPよりPDFを好む相手に、Googleスライドの書き出しを共有する
|
||||
- カンファレンスの講演や講義を、読み取り専用の形式でアーカイブする
|
||||
- 対面のワークショップ用に、スライド資料を印刷する
|
||||
|
||||
## ヒント
|
||||
|
||||
- スライドの切り替え効果やアニメーションは視覚効果のみでPDFには引き継がれませんが、静的なコンテンツはすべて正しくレンダリングされます。
|
||||
- スピーカーノートはPDFの出力に含まれません。ノートが必要な場合は、プレゼンテーションソフトから別途書き出してください。
|
||||
- ほかのLibreOfficeベースのツールと同様に、エンジンは初回の使用時に読み込まれ、セッション中はキャッシュされたままになります。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [ODGからPDF](./odg-to-pdf)
|
||||
- [ODSからPDF](./ods-to-pdf)
|
||||
- [PUBからPDF](./pub-to-pdf)
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: ODSからPDF
|
||||
description: LibreOffice Calc (ODS) のスプレッドシートをブラウザ上でPDFに変換します。無料、プライベート、登録不要。
|
||||
---
|
||||
|
||||
# ODSからPDF
|
||||
|
||||
OpenDocumentスプレッドシートファイルをPDFに変換します。ODSはLibreOffice Calcのネイティブ形式で、Google Sheetsからよくエクスポートされる形式でもあります。このツールは、スプレッドシートのデータ、書式、グラフをページ分割されたPDFにレンダリングし、印刷や共有に使えるようにします。
|
||||
|
||||
## 対応フォーマット
|
||||
|
||||
| フォーマット | 拡張子 | 備考 |
|
||||
| :----------------------- | :----- | :--------------------------------------------- |
|
||||
| OpenDocument Spreadsheet | `.ods` | LibreOffice Calc / Google Sheetsのエクスポート |
|
||||
|
||||
## 使い方
|
||||
|
||||
1. アップロード領域をクリックするか、ODSファイルをドラッグ&ドロップします。複数のファイルに対応しています。
|
||||
2. ファイル一覧を確認します。ごみ箱アイコンでファイルを削除するか、**ファイルを追加**をクリックしてバッチを増やせます。
|
||||
3. **PDFに変換**をクリックします。LibreOfficeベースのエンジンがブラウザに読み込まれ、各スプレッドシートをPDFページにレンダリングします。
|
||||
4. 1つのスプレッドシートはPDFとしてダウンロードされます。複数のファイルは`ods-to-pdf.zip`にまとめられます。
|
||||
|
||||
## オプション
|
||||
|
||||
設定は不要です。コンバーターは、スプレッドシートに設定済みの印刷レイアウト、セルの書式、列幅をそのままPDF出力に適用します。
|
||||
|
||||
## ユースケース
|
||||
|
||||
- PDFしか受け付けない相手にLibreOffice Calcの予算表やレポートを共有する
|
||||
- ODSとしてダウンロードしたGoogle Sheetsのエクスポートを印刷する
|
||||
- 財務記録を編集できない形式で保管する
|
||||
- ODSベースのフォームやタイムシートをレイアウト固定の文書として提出する
|
||||
|
||||
## ヒント
|
||||
|
||||
- スプレッドシートに複数のシートがある場合、すべてのシートがPDF出力に含まれます。
|
||||
- 非常に幅の広いスプレッドシートは、PDFの複数ページに横方向で分割されることがあります。レイアウトが重要な場合は、変換前に元ファイルで列幅を調整してください。
|
||||
- LibreOfficeエンジンは初回使用時に初期化されます。同じセッション内の2回目以降の変換は高速です。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [ODGからPDF](./odg-to-pdf)
|
||||
- [ODPからPDF](./odp-to-pdf)
|
||||
- [XMLからPDF](./xml-to-pdf)
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
title: ODTからPDF
|
||||
description: LibreOfficeベースのエンジンを使い、OpenDocument Text (ODT) ファイルをブラウザ上でPDF形式に変換します。
|
||||
---
|
||||
|
||||
# ODTからPDF
|
||||
|
||||
OpenDocument TextファイルをPDFに変換します。ODTはLibreOffice Writer、Apache OpenOffice、その他のオープンソースワープロのネイティブ形式です。このツールはブラウザ上のLibreOfficeエンジンを使い、書式、表、画像、スタイルを保持した正確な変換を行います。
|
||||
|
||||
## 対応フォーマット
|
||||
|
||||
| フォーマット | 拡張子 |
|
||||
| :---------------- | :----- |
|
||||
| OpenDocument Text | `.odt` |
|
||||
|
||||
## 使い方
|
||||
|
||||
1. アップロード領域をクリックするか、1つ以上のODTファイルをドラッグ&ドロップします。
|
||||
2. ファイル一覧を確認します。ファイルの追加や不要なファイルの削除ができます。
|
||||
3. **PDFに変換**をクリックします。LibreOfficeエンジンが初期化され (進行状況インジケーターに読み込み状況が表示されます)、その後各ファイルが変換されます。
|
||||
4. 1つのファイルはPDFとして直接ダウンロードされます。複数のファイルは`odt-converted.zip`にまとめられます。
|
||||
|
||||
## オプション
|
||||
|
||||
このツールに追加の設定はありません。変換では、元の文書の書式をできるだけ忠実に保持します。
|
||||
|
||||
## 出力
|
||||
|
||||
| 入力数 | 出力 |
|
||||
| :------------ | :-------------------------------------------------------------------- |
|
||||
| 1ファイル | 単一のPDFをダウンロード (例: `document.pdf`) |
|
||||
| 2ファイル以上 | ZIPアーカイブ (`odt-converted.zip`)。ファイルごとに1つのPDFを含みます |
|
||||
|
||||
## ユースケース
|
||||
|
||||
- LibreOffice Writerの文書をPDFに変換し、Microsoft Officeユーザーと共有する
|
||||
- OpenDocument形式で書かれた学術論文から印刷用PDFを作成する
|
||||
- ODTテンプレートのフォルダをまとめてPDFに変換して配布する
|
||||
- 自動文書生成システムが作成したODTファイルからPDFを生成する
|
||||
|
||||
## ヒント
|
||||
|
||||
- LibreOfficeエンジンは初回使用時に読み込まれ、以降の変換のためにキャッシュされます。初回の読み込みには数秒かかりますが、その後の変換は高速です。
|
||||
- 埋め込みOLEオブジェクトや特殊なフォントを含む複雑な文書は、デスクトップ版LibreOfficeとわずかに異なる表示になることがあります。一括変換の前にサンプルで試してください。
|
||||
- Word文書 (`.doc`, `.docx`) には、代わりに[WordからPDF](./word-to-pdf)ツールを使ってください。同じLibreOfficeエンジンを使い、Microsoft形式を直接受け付けます。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [WordからPDF](./word-to-pdf)
|
||||
- [RTFからPDF](./rtf-to-pdf)
|
||||
- [テキストからPDF](./txt-to-pdf)
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
title: 複製と整理
|
||||
description: ドラッグ&ドロップのサムネイルとカスタムページ順入力で、PDFのページを並べ替え、複製、削除します。
|
||||
---
|
||||
|
||||
# 複製と整理
|
||||
|
||||
視覚的なドラッグ&ドロップ操作で、PDFのページを並べ替え、複製、削除します。各ページはサムネイルとして表示され、移動、複製、削除をしてから新しいファイルとして保存できます。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. PDFファイルを1つアップロードします。
|
||||
2. すべてのページを示すサムネイルグリッドが表示されます。
|
||||
3. サムネイルをドラッグしてページを並べ替えます。緑の複製ボタンでページを複製し、赤の削除ボタンでページを削除します。
|
||||
4. または、テキストフィールドにカスタムページ順 (例: `3, 1, 2, 4`) を入力して**適用**をクリックすると、すべてのページを一度に並べ替えられます。
|
||||
5. 処理ボタンをクリックして、整理したPDFを作成しダウンロードします。
|
||||
|
||||
## 機能
|
||||
|
||||
- アニメーション付きのドラッグ&ドロップによるページの並べ替え
|
||||
- ページごとの複製ボタンと削除ボタン
|
||||
- 正確な並べ替えのためのカスタムページ順入力
|
||||
- 変更のたびに自動更新されるページ番号ラベル
|
||||
- 最後に残った1ページは削除できません
|
||||
|
||||
## ユースケース
|
||||
|
||||
- レポートの中で位置がずれたページを正しい位置に移動する
|
||||
- フォームのページを複製し、1つのファイルに複数の空白コピーを作る
|
||||
- 文書を配布する前に、下書きやプレースホルダーのページを削除する
|
||||
- 印刷準備のためにページ順を逆にしたり入れ替えたりする
|
||||
- 別々のファイルを再結合せずに、独自のページ順序を作る
|
||||
|
||||
## ヒント
|
||||
|
||||
- カスタムページ順のフィールドには、元のページ番号をカンマ区切りで入力します。すべてのページをちょうど1回ずつ含める必要があり、抜けや重複は使えません。
|
||||
- ページを複製すると、2つのコピーは同じ元のページインデックスを参照します。どちらのコピーも独立して並べ替えられます。
|
||||
- 複数ファイルにまたがる一括操作やより高度なワークフローには、代わりに[PDFマルチツール](./pdf-multi-tool)をご検討ください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFの結合](./merge-pdf)
|
||||
- [ページの削除](./delete-pages)
|
||||
- [PDFマルチツール](./pdf-multi-tool)
|
||||
- [ページの反転](./reverse-pages)
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
title: ページ寸法
|
||||
description: PDFのページサイズ、向き、縦横比、回転を分析します。サイズが混在した文書を検出し、データをCSVにエクスポートできます。
|
||||
---
|
||||
|
||||
# ページ寸法
|
||||
|
||||
PDFのすべてのページを読み取り、正確な寸法、向き、標準サイズ名、縦横比、面積、回転を報告する診断ツールです。印刷前にサイズが混在したページを見つけたり、受け取ったPDFのプロパティを記録したりするのに便利です。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. PDFファイルをアップロードします。分析は自動的に始まり、押すボタンはありません。
|
||||
2. サマリーパネルに、総ページ数、異なるページサイズの数、サイズが混在しているかどうかが表示されます。
|
||||
3. ページごとの詳細を含む結果テーブル全体を確認します。
|
||||
4. 表示単位をポイント、インチ、ミリメートル、ピクセルから切り替えられます。
|
||||
5. **CSVにエクスポート**をクリックしてデータを保存します。
|
||||
|
||||
## 報告される項目
|
||||
|
||||
| 列 | 説明 |
|
||||
| ---------- | ------------------------------------------------- |
|
||||
| ページ番号 | 連番のページ番号 |
|
||||
| 寸法 | 選択した単位での幅 x 高さ |
|
||||
| 標準サイズ | 一致した名前 (A4、Letterなど)、または「カスタム」 |
|
||||
| 向き | 縦または横 |
|
||||
| 縦横比 | 幅と高さの比 (小数) |
|
||||
| 面積 | 選択した単位の2乗でのページ面積 |
|
||||
| 回転 | ページの回転角度 (度) |
|
||||
|
||||
## 機能
|
||||
|
||||
- 標準の用紙サイズ (A3、A4、A5、Letter、Legal、Tabloidなど) の自動検出
|
||||
- サイズ混在の警告。どのサイズが何ページで使われているかの内訳も表示
|
||||
- ポイント、インチ、ミリメートル、ピクセル (96 PPI) の間の単位変換
|
||||
- スプレッドシートやドキュメント管理システムで使えるCSVエクスポート
|
||||
|
||||
## ユースケース
|
||||
|
||||
- 印刷会社に文書を提出する前に、すべてのページがA4であることを確認する
|
||||
- 結合したPDFで特定のページだけ余白が想定外になる原因を調べる
|
||||
- 大量のPDFアーカイブのページレイアウトをメタデータ記録として文書化する
|
||||
- 修正が必要な回転済みページを見つける
|
||||
|
||||
## ヒント
|
||||
|
||||
- サマリーに「サイズ混在」と表示された場合は、印刷前にページサイズを固定ツールで統一してください。
|
||||
- 回転フィールドを見ると、正しく表示されていても回転属性が0以外のページを特定できます。これは一部のワークフローで問題の原因になることがあります。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [ページサイズを固定](./fix-page-size): サイズが混在していると分かったページを統一します
|
||||
- [PDFの圧縮](./compress-pdf): ページの問題を修正した後にPDFを最適化します
|
||||
- [PDFの回転](./rotate-pdf): 回転しているページを修正します
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
title: ページ番号
|
||||
description: フォント、サイズ、色を設定して、PDFページの好きな位置にカスタマイズ可能なページ番号を追加します。
|
||||
---
|
||||
|
||||
# ページ番号
|
||||
|
||||
PDFのすべてのページに、見えるページ番号を追加します。位置、形式、フォントサイズ、色を選ぶだけで、あとはツールが処理します。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. PDFファイルをアップロードします。
|
||||
2. 表示されるオプションパネルでページ番号の設定を行います。
|
||||
3. **ページ番号を追加**をクリックして処理します。
|
||||
4. 番号付きのPDFが自動的にダウンロードされます。
|
||||
|
||||
## オプション
|
||||
|
||||
- **位置**: ページ番号を表示する場所を選びます。下中央、左下、右下、上中央、左上、右上から選べます。
|
||||
- **形式**: 単純な連番 (1, 2, 3...) か、「全Yページ中Xページ」形式 (1 / 5, 2 / 5...) を選びます。
|
||||
- **フォントサイズ**: ページ番号のテキストサイズを設定します。デフォルトは12です。
|
||||
- **色**: カラーピッカーでページ番号のテキストの色を自由に選べます。
|
||||
|
||||
## 機能
|
||||
|
||||
- 四隅と中央をカバーする6種類の配置オプション
|
||||
- 2種類の番号形式: 単純な連番、または「全Yページ中Xページ」
|
||||
- 6〜72ポイントで調整できるフォントサイズ
|
||||
- テキストの色を選べるフルカラーピッカー
|
||||
- ページサイズに関係なく、番号を安全な領域内に収める自動余白処理
|
||||
|
||||
## ユースケース
|
||||
|
||||
- ページ参照が必要な文書を印刷用に準備する
|
||||
- 複数のファイルから作った結合PDFにページ番号を追加する
|
||||
- 配布前のプレゼン資料にページ番号を振る
|
||||
- 法律文書や契約書に連番を追加する
|
||||
|
||||
## ヒント
|
||||
|
||||
- 「全Yページ中Xページ」形式は、提案書やレポートなど、読み手が全体の長さを知る必要がある文書に便利です。
|
||||
- 前付けにローマ数字を使うなど、セクションごとに異なる番号スタイルが必要な場合は、代わりに[ページラベルの追加](./add-page-labels)ツールを使ってください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [ページラベルの追加](./add-page-labels)
|
||||
- [通し番号付け](./bates-numbering)
|
||||
- [ヘッダーとフッター](./header-footer)
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: PDFブックレット
|
||||
description: PDFのページを、折って綴じて冊子にするための中綴じ(ブックレット)順に並べ替えます。
|
||||
---
|
||||
|
||||
# PDFブックレット
|
||||
|
||||
PDFのページをブックレットの面付け順に並べ替えます。両面印刷して半分に折ると、ページが正しい読み順になります。中綴じの冊子やジンで使われるレイアウトです。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. PDFファイルをアップロードします。
|
||||
2. ブックレットの設定を行います。出力ページサイズと向きを選びます。
|
||||
3. **プレビューを生成**をクリックして、各シートでのページの配置を確認します。
|
||||
4. プレビューを確認します。各用紙の表面と裏面に割り当てられたページが表示されます。
|
||||
5. **ダウンロード**をクリックして、面付け済みのブックレットPDFを保存します。
|
||||
|
||||
## 機能
|
||||
|
||||
- 中綴じ製本のための自動ページ並べ替え
|
||||
- 出力ページサイズの設定
|
||||
- ダウンロード前にブックレットのレイアウトを視覚的にプレビュー
|
||||
- ページ数が奇数の場合は必要に応じて空白ページを挿入
|
||||
- 元のページをブックレットの用紙サイズに合わせて拡大縮小
|
||||
|
||||
## ユースケース
|
||||
|
||||
- 通常のPDFから印刷できるブックレットやジンを作る
|
||||
- 社内印刷用にカンファレンスのプログラムやイベントガイドを準備する
|
||||
- 二つ折りのグリーティングカードや小さなカタログを作る
|
||||
- 手製本用の小冊子や詩集を作る
|
||||
|
||||
## ヒント
|
||||
|
||||
- きれいなブックレットにするには、元のPDFのページ数が4の倍数であることが理想です。そうでない場合は、最後の用紙を埋めるため空白ページが自動的に追加されます。
|
||||
- 出力は、プリンターの「短辺とじ」で両面印刷し、すべての用紙を重ねて折り、背をホチキスで留めてください。
|
||||
- ブックレット順にせず、単に複数のページを1枚の用紙に並べたい場合は、代わりに[N-Up PDF](./n-up-pdf)を使ってください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [N-Up PDF](./n-up-pdf)
|
||||
- [PDFの回転](./rotate-pdf)
|
||||
- [空白ページの追加](./add-blank-page)
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
title: PDF OCGレイヤー
|
||||
description: PDF文書内のオプショナルコンテンツグループ (OCG) レイヤーを表示、切り替え、追加、削除します。
|
||||
---
|
||||
|
||||
# PDF OCGレイヤー
|
||||
|
||||
PDF内のオプショナルコンテンツグループ (OCG)、一般に「レイヤー」と呼ばれるものを管理します。レイヤーの表示切り替え、新しいレイヤー (入れ子の子レイヤーを含む) の追加、レイヤーの削除を行い、変更したPDFを保存できます。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. PDFファイルをアップロードします。
|
||||
2. 処理ボタンをクリックして、PyMuPDFエンジンで文書を読み込みます。
|
||||
3. 既存のすべてのレイヤーが、表示状態、ロック状態、入れ子の階層とともに表示されます。
|
||||
4. チェックボックスでレイヤーの表示と非表示を切り替えます。ロックされたレイヤーは切り替えられません。
|
||||
5. 名前を入力して追加ボタンをクリックすると新しいトップレベルのレイヤーを追加でき、既存の親レイヤーの下に子レイヤーも追加できます。
|
||||
6. 不要になったレイヤーを削除します。
|
||||
7. **保存**をクリックして、レイヤーの変更を反映したPDFをダウンロードします。
|
||||
|
||||
## 機能
|
||||
|
||||
- 入れ子のレイヤーを適切なインデントで階層表示
|
||||
- レイヤーの表示と非表示の切り替え
|
||||
- ロックされたレイヤーの表示により、誤った変更を防止
|
||||
- 任意の名前でトップレベルまたは子レイヤーを追加
|
||||
- 個別のレイヤーを削除
|
||||
- すべての変更を新しいPDFファイルに保存
|
||||
|
||||
## ユースケース
|
||||
|
||||
- 建築や設計図面で、マークアップレイヤーの表示を切り替える
|
||||
- 複数レイヤーのデザイン文書に新しい注釈レイヤーを追加する
|
||||
- テンプレートを配布する前に、不要になったレイヤーを削除する
|
||||
- 第三者から受け取った複雑なPDFにどのレイヤーがあるか調べる
|
||||
|
||||
## ヒント
|
||||
|
||||
- PDFにレイヤーがない場合、ツールは空の状態を表示し、レイヤーの追加を促します。すべてのPDFがOCGレイヤーを使っているわけではなく、CAD出力やデザインファイルで最もよく使われます。
|
||||
- 子レイヤーは親の下にインデントして表示されます。レイヤーは任意の深さまで入れ子にできます。
|
||||
- ロックされたレイヤーにはロックアイコンが表示され、チェックボックスは無効になります。このロックはPDFの作成者が設定したものです。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [メタデータの表示](./view-metadata)
|
||||
- [メタデータの編集](./edit-metadata)
|
||||
- [複製と整理](./organize-pdf)
|
||||
@@ -0,0 +1,52 @@
|
||||
---
|
||||
title: PDFマルチツール
|
||||
description: PDFページの結合、分割、回転、複製、削除、並べ替えができるオールインワンのページ管理ツールです。
|
||||
---
|
||||
|
||||
# PDFマルチツール
|
||||
|
||||
ページ単位のあらゆるPDF操作をまとめた統合ワークスペースです。1つ以上のPDFをアップロードすると、すべてのページを1つの視覚的なグリッドで扱えます。回転、並べ替え、複製、削除、新しいPDFの挿入、空白ページの追加、結果の分割まで、ツールを離れずに行えます。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. **PDFをアップロード**をクリックするか、アップロード領域にファイルをドラッグします。複数のファイルに対応しています。
|
||||
2. アップロードしたすべてのファイルのページが、サムネイル付きのスクロール可能なグリッドに表示されます。
|
||||
3. ツールバーまたはページごとの操作ボタンでページを操作します。
|
||||
4. 各カードのチェックボックスでページを選択し、一括操作を適用します。
|
||||
5. はさみアイコンで分割位置を指定すると、出力が複数のファイルに分割されます。
|
||||
6. **PDFをエクスポート**をクリックして最終結果をダウンロードします。分割マーカーがある場合、出力は複数のPDFを含むZIPになります。
|
||||
|
||||
## 機能
|
||||
|
||||
- **結合**: 複数のPDFをアップロードすると、自動的に1つのワークスペースにまとまります
|
||||
- **並べ替え**: ページカードをドラッグ&ドロップして順序を変更します
|
||||
- **回転**: ページごと、または一括で、90度単位 (左または右) に回転します
|
||||
- **複製**: ワンクリックで任意のページを複製します
|
||||
- **削除**: 個別のページ、または選択したページをまとめて削除します
|
||||
- **PDFの挿入**: 指定したページの後ろに新しいPDFを追加します
|
||||
- **空白ページの追加**: 末尾に空白のA4ページを追加します
|
||||
- **分割**: ページの間に分割マーカーを置き、別々のPDFのZIPとしてエクスポートします
|
||||
- **すべて選択 / 選択解除**: 一括操作のための素早い選択
|
||||
- **元に戻す / やり直し**: すべての操作に対応した完全な履歴
|
||||
- **選択したページをダウンロード**: 選択したページだけを独立したPDFとしてエクスポートします
|
||||
- 破損したPDFは読み込み前に自動修復します
|
||||
|
||||
## ユースケース
|
||||
|
||||
- 複数の元PDFのページから独自の文書を作る
|
||||
- スキャン文書の空白ページを削除し、横向きのスキャンを回転し、セクションを並べ替えて整える
|
||||
- 視覚的な分割マーカーで、大きなPDFを章の区切りで分割する
|
||||
- 本格的なPDFエディターを使わずに、手早くページ単位で編集する
|
||||
|
||||
## ヒント
|
||||
|
||||
- 元に戻す/やり直しはすべての操作を記録します。作業が誤って失われることはないので、気軽に使ってください。
|
||||
- 分割マーカーはページ間の青い破線として表示されます。文書を分けたい位置に視覚的に置いてからエクスポートすると、ZIPが得られます。
|
||||
- 単純な結合や分割には、専用の[PDFの結合](./merge-pdf)または[PDFの分割](./split-pdf)ツールのほうが速い場合があります。マルチツールは、1回のセッションで複数の操作が必要なときに力を発揮します。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFの結合](./merge-pdf)
|
||||
- [PDFの分割](./split-pdf)
|
||||
- [複製と整理](./organize-pdf)
|
||||
- [PDFの回転](./rotate-pdf)
|
||||
@@ -0,0 +1,40 @@
|
||||
---
|
||||
title: PDFからBMP
|
||||
description: PDFのページを非圧縮のBMP画像に変換します。ビットマップ入力が必要なレガシーシステムや印刷ワークフローに便利です。
|
||||
---
|
||||
|
||||
# PDFからBMP
|
||||
|
||||
PDFの各ページをBMP (ビットマップ) 画像に変換します。BMPは非圧縮形式なので、出力は画質の劣化がなくピクセル単位で正確ですが、ファイルは大きくなります。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. ドロップゾーンをクリックするか、ファイルをドラッグして、PDFをアップロードします。
|
||||
2. **変換**をクリックしてファイルを処理します。
|
||||
3. 1つの`.bmp`ファイル、またはZIPアーカイブが自動的にダウンロードされます。
|
||||
|
||||
## オプション
|
||||
|
||||
このツールに設定可能なオプションはありません。ページは固定の2倍スケールでレンダリングされ、PDF本来のページ寸法のおよそ2倍の画像になります。
|
||||
|
||||
## 出力形式
|
||||
|
||||
- **1ページ**: `filename.bmp`
|
||||
- **複数ページ**: `filename_bmps.zip`。`page_1.bmp`、`page_2.bmp`などを含みます。
|
||||
|
||||
## ユースケース
|
||||
|
||||
- BMP入力しか受け付けないレガシーシステムやハードウェアにPDFのページを渡す。
|
||||
- 特定の印刷ワークフロー向けに非圧縮画像を準備する。
|
||||
- 生のピクセルデータが必要な画像処理ツールの入力としてビットマップ出力を使う。
|
||||
|
||||
## ヒント
|
||||
|
||||
- BMPファイルは圧縮なしで生のピクセルデータを保存するため、非常に大きくなります。ほとんどの用途では、[PDFからPNG](./pdf-to-png)のほうがロスレスの画質を保ちながらファイルがはるかに小さくなります。
|
||||
- 対象のシステムがPNGやTIFFに対応しているなら、ディスク容量を節約するためそれらの形式を優先してください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFからPNG](./pdf-to-png)
|
||||
- [PDFからTIFF](./pdf-to-tiff)
|
||||
- [PDFからJPG](./pdf-to-jpg)
|
||||
@@ -0,0 +1,77 @@
|
||||
---
|
||||
title: PDFからCBZ
|
||||
description: PDFを、Komga、Kavita、CDisplayEx、Calibreなどのコミックリーダー向けのCBZ (コミックブックアーカイブ) ファイルに変換します。
|
||||
---
|
||||
|
||||
# PDFからCBZ
|
||||
|
||||
PDFをCBZ (Comic Book ZIP) ファイルに変換します。デジタルコミックやマンガの標準形式です。PDFの各ページはアーカイブ内の画像になります。最大限の互換性のため、メタデータはComicInfo.xml、metadata.opf、ComicBookInfo JSONの3つの形式で生成されます。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. ドロップゾーンをクリックするか、ファイルをドラッグして、PDFをアップロードします。
|
||||
2. 画像形式、品質、スケール、任意のメタデータを選びます。
|
||||
3. **変換**をクリックしてCBZファイルを生成します。
|
||||
4. `.cbz`ファイルが自動的にダウンロードされます。
|
||||
|
||||
## オプション
|
||||
|
||||
| オプション | 値 | デフォルト | 説明 |
|
||||
| ------------------ | --------------- | ---------- | ---------------------------------------------------------------------------------------- |
|
||||
| 画像形式 | JPEG, PNG, WebP | JPEG | カラーのコミックにはJPEG、ロスレスの白黒マンガにはPNG、最高の圧縮にはWebP。 |
|
||||
| 品質 | 50–100% | 85% | JPEG/WebPの圧縮を制御します。PNG (常にロスレス) では非表示です。 |
|
||||
| スケール | 1.0x–4.0x | 2.0x | スケールを上げると、高解像度の画面向けにより鮮明な画像になります。 |
|
||||
| グレースケール | オン/オフ | オフ | ページをグレースケールに変換します。白黒のコンテンツではファイルサイズが小さくなります。 |
|
||||
| マンガモード | オン/オフ | オフ | メタデータに右から左への読み方向を設定します。 |
|
||||
| メタデータを含める | オン/オフ | オン | ComicInfo.xml、metadata.opf、ComicBookInfo JSONを埋め込みます。 |
|
||||
|
||||
## メタデータ項目
|
||||
|
||||
メタデータを有効にすると、次の項目を入力できます。
|
||||
|
||||
- **タイトル**: PDFのファイル名から自動検出されます。
|
||||
- **シリーズ**: シリーズ名 (例: 「Naruto」)。
|
||||
- **番号 (#)**: シリーズ内の号数。
|
||||
- **巻 (Vol.)**: 巻数。
|
||||
- **著者**: 作者または制作者の名前。
|
||||
- **出版社**: 出版会社。
|
||||
- **タグ / ジャンル**: カンマ区切りのタグ (例: 「Action, Adventure」)。
|
||||
- **出版年**: 出版された年 (1900〜2100)。
|
||||
- **評価**: 0から5のコミュニティ評価。
|
||||
|
||||
## メタデータの互換性
|
||||
|
||||
このツールは、どのリーダーでも見つけられるよう、3つの形式でメタデータを書き込みます。
|
||||
|
||||
| 形式 | 場所 | 対応するリーダー |
|
||||
| ------------------ | --------------- | ------------------------------------------- |
|
||||
| ComicInfo.xml | ZIP内のファイル | Komga, Kavita, CDisplayEx, Mylar, ComicRack |
|
||||
| metadata.opf | ZIP内のファイル | Calibre |
|
||||
| ComicBookInfo JSON | ZIPのコメント欄 | Calibre (フォールバック) |
|
||||
|
||||
## 出力形式
|
||||
|
||||
- `filename.cbz`: 番号付きのページ画像とメタデータファイルを含むZIPアーカイブ。
|
||||
|
||||
ページ画像には、リーダーが正しい順序で表示できるよう、ゼロ埋めした番号 (`01.jpg`、`02.jpg`など) が付けられます。
|
||||
|
||||
## ユースケース
|
||||
|
||||
- マンガやコミックのPDFを、コミックリーダーで使えるように変換する。
|
||||
- Komga、Kavita、Calibreでデジタルコミックのライブラリを構築する。
|
||||
- スキャンしたコミックを、リーダーで読みやすい形式に変換する。
|
||||
- 読み方向とメタデータを保持した形式でコミックを共有する。
|
||||
|
||||
## ヒント
|
||||
|
||||
- カラーのコミックには**JPEG**、白黒のマンガには**PNG**を使ってください。PNGは白黒のコンテンツを非常に効率よく圧縮します。
|
||||
- マンガでは**グレースケール**を有効にすると、ファイルサイズを大幅に減らせます。
|
||||
- ライブラリ管理ツール (Komga、Calibre) がコレクションを自動的に整理できるよう、**シリーズ**と**番号**を入力してください。
|
||||
- **WebP**は最高の圧縮率ですが、古いコミックリーダーは対応していない場合があります。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFからJPG](./pdf-to-jpg)
|
||||
- [PDFからPNG](./pdf-to-png)
|
||||
- [PDFからTIFF](./pdf-to-tiff)
|
||||
- [画像の抽出](./extract-images)
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: PDFからCSV
|
||||
description: PDF文書から表を抽出し、1つのCSVファイルとしてエクスポートします。自動表検出で複数ページのPDFにも対応します。
|
||||
---
|
||||
|
||||
# PDFからCSV
|
||||
|
||||
PDFから表を抽出し、CSVファイルとしてエクスポートします。このツールはPyMuPDFの表検出エンジンですべてのページから表形式のデータを探し、見つかったすべての行を1つのカンマ区切りの出力に書き込みます。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. ドロップゾーンをクリックするか、ファイルをドラッグして、PDFをアップロードします。
|
||||
2. **変換**をクリックして表の抽出を開始します。
|
||||
3. ツールが各ページをスキャンし、表を自動的に識別します。
|
||||
4. 抽出されたすべての表データを含む`.csv`ファイルがダウンロードされます。
|
||||
|
||||
異なるページの表は、出力内で空白行によって区切られます。カンマ、引用符、改行を含むセルは、RFC 4180に従って適切にエスケープされます。
|
||||
|
||||
## オプション
|
||||
|
||||
このツールに設定可能なオプションはありません。文書内で見つかったすべての表が抽出され、1つのCSVにまとめられます。
|
||||
|
||||
## 出力形式
|
||||
|
||||
- 検出されたすべての表を含む、単一の`filename.csv`ファイル。
|
||||
|
||||
## ユースケース
|
||||
|
||||
- PDFの銀行明細や請求書の財務データをスプレッドシートに取り込む。
|
||||
- 業者の見積書から価格表を抽出して比較する。
|
||||
- PDF論文の表形式の研究データを、分析ツールに適した形式に変換する。
|
||||
- 古いPDFレポートのデータをデータベースに移行する。
|
||||
|
||||
## ヒント
|
||||
|
||||
- 表が見つからない場合、ツールは「表が見つかりません」というメッセージを表示します。これは通常、PDFのテキストレイアウトが表のように見えても、実際の表として構造化されていないことを意味します。
|
||||
- 個々の表をより細かく制御したい場合は、CSV、JSON、Markdownの出力形式から選べる[PDFテーブルの抽出](./extract-tables)を使ってください。
|
||||
- 表ごとにシートを分けたExcel形式でデータが必要な場合は、[PDFからExcel](./pdf-to-excel)を使ってください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFからExcel](./pdf-to-excel)
|
||||
- [PDFテーブルの抽出](./extract-tables)
|
||||
- [PDFからテキスト](./pdf-to-text)
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: PDFからExcel
|
||||
description: PDF文書から表を抽出してExcelスプレッドシートにします。各表は、ページ参照付きの専用ワークシートに配置されます。
|
||||
---
|
||||
|
||||
# PDFからExcel
|
||||
|
||||
PDFから表を抽出し、Excel (`.xlsx`) スプレッドシートとして保存します。検出された各表は、表番号と元のページが付いた専用のワークシートに配置されます。表の検出にはPyMuPDF、Excelの生成にはSheetJSライブラリを使用しています。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. ドロップゾーンをクリックするか、ファイルをドラッグして、PDFをアップロードします。
|
||||
2. **変換**をクリックして表の抽出を開始します。
|
||||
3. ツールがすべてのページから表をスキャンし、Excelブックを作成します。
|
||||
4. 表ごとに1シートを持つ`.xlsx`ファイルがダウンロードされます。
|
||||
|
||||
## オプション
|
||||
|
||||
このツールに設定可能なオプションはありません。検出されたすべての表が自動的に抽出されます。
|
||||
|
||||
## 出力形式
|
||||
|
||||
- 単一の`filename.xlsx`ファイル。
|
||||
- **表が1つの場合**: 「Table」という名前のワークシートが1つ。
|
||||
- **表が複数の場合**: 「Table 1 (Page 3)」、「Table 2 (Page 5)」などの名前のワークシート。シート名はExcelの上限である31文字に切り詰められます。
|
||||
|
||||
## ユースケース
|
||||
|
||||
- PDFの財務レポートを、さらに分析するための編集可能なスプレッドシートに変換する。
|
||||
- 仕入先のPDFから在庫表や注文表を抽出する。
|
||||
- PDFのフォームやカタログの構造化データをExcelに取り込み、並べ替えやフィルターを行う。
|
||||
- 表形式のPDFデータを、専門外の同僚でも扱える形式で保管する。
|
||||
|
||||
## ヒント
|
||||
|
||||
- ツールが「表が見つかりません」と報告する場合、そのPDFは構造化された表ではなく、自由なテキストレイアウトを使っている可能性があります。代わりに[PDFからテキスト](./pdf-to-text)で生のコンテンツを取得してみてください。
|
||||
- よりシンプルなフラット形式には[PDFからCSV](./pdf-to-csv)を使ってください。表ごとに複数の形式でダウンロードしたい場合は、[PDFテーブルの抽出](./extract-tables)を使ってください。
|
||||
- シート名を確認すると、各表がどのページのものか分かります。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFからCSV](./pdf-to-csv)
|
||||
- [PDFテーブルの抽出](./extract-tables)
|
||||
- [PDFからテキスト](./pdf-to-text)
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: PDFのグレースケール化
|
||||
description: カラーのPDFをグレースケール (白黒) 版に変換します。すべてのページから色を除いた新しいPDFを作成します。
|
||||
---
|
||||
|
||||
# PDFのグレースケール化
|
||||
|
||||
カラーのPDFをグレースケール版に変換します。各ページはレンダリングされ、彩度を落とした後、JPEG画像として新しいPDFに再埋め込みされます。出力は元のページ寸法を保持します。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. ドロップゾーンをクリックするか、ファイルをドラッグして、PDFをアップロードします。
|
||||
2. **変換**をクリックしてファイルを処理します。
|
||||
3. すべてのページが白黒に変換された新しい`greyscale.pdf`がダウンロードされます。
|
||||
|
||||
内部的には、各ページが2倍スケールでレンダリングされ、ピクセルデータにグレースケールフィルターが適用され、品質90%のJPEGとして再エンコードされて、新しいPDF文書に配置されます。
|
||||
|
||||
## オプション
|
||||
|
||||
このツールに設定可能なオプションはありません。グレースケール変換には標準の輝度計算式を使い、JPEG品質は90%に固定されています。
|
||||
|
||||
## 出力形式
|
||||
|
||||
- すべてのページをグレースケールのJPEG画像として含む、単一の`greyscale.pdf`ファイル。
|
||||
|
||||
## ユースケース
|
||||
|
||||
- カラーインクのコストを節約するため、白黒印刷用に文書を準備する。
|
||||
- グレースケールを義務付ける法的または行政の提出要件を満たす。
|
||||
- カラーが多いPDFのファイルサイズを減らす (グレースケールのJPEG画像はカラーより小さくなります)。
|
||||
- カラーと白黒のページが混在する文書で、見た目を統一する。
|
||||
|
||||
## ヒント
|
||||
|
||||
- 各ページがラスタライズされJPEGとして再埋め込みされるため、出力は画像ベースになります。元のPDFのテキストは選択も検索もできなくなります。後で検索可能なテキストが必要な場合は、出力をOCRツールにかけてください。
|
||||
- 明るさ、コントラスト、彩度などの色調整をより細かく行いたい場合は、色の調整ツールや、[PDFワークフロービルダー](./pdf-workflow)のグレースケールノードをご覧ください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFからJPG](./pdf-to-jpg)
|
||||
- [PDFからPNG](./pdf-to-png)
|
||||
- [PDFワークフロービルダー](./pdf-workflow)
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
title: PDFからJPG
|
||||
description: PDFのページを、品質を調整できるJPG画像に変換します。1ページのPDFは直接ダウンロードされ、複数ページのPDFはZIPとしてエクスポートされます。
|
||||
---
|
||||
|
||||
# PDFからJPG
|
||||
|
||||
PDFの各ページをJPG画像に変換します。1ページの文書は単独の`.jpg`ファイルとしてダウンロードされます。複数ページのPDFは、1ページにつき1つのJPGを含むZIPアーカイブになります。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. ドロップゾーンをクリックするか、ファイルをドラッグして、PDFをアップロードします。ツールにファイル名、ファイルサイズ、ページ数が表示されます。
|
||||
2. **品質**スライダーを調整して、JPGの圧縮を制御します。
|
||||
3. **変換**をクリックして処理を開始します。
|
||||
4. 結果は自動的にダウンロードされます。1ページのPDFなら1つのJPG、複数ページの文書ならZIPファイルです。
|
||||
|
||||
## オプション
|
||||
|
||||
- **品質**: 0%から100% (デフォルトは90%) のスライダー。値を高くすると、ファイルサイズは大きくなりますが、より鮮明な画像になります。値を低くすると、より強く圧縮されます。
|
||||
|
||||
ページは内部で2倍スケールでレンダリングされるため、出力解像度はPDFのページ寸法の2倍になります。標準のレターサイズのページでは、約1,224 x 1,584ピクセルの画像になります。
|
||||
|
||||
## 出力形式
|
||||
|
||||
- **1ページ**: `filename.jpg`
|
||||
- **複数ページ**: `filename_jpgs.zip`。`page_1.jpg`、`page_2.jpg`などを含みます。
|
||||
|
||||
## ユースケース
|
||||
|
||||
- 文書管理システム用のプレビューサムネイルを生成する。
|
||||
- PDFに対応していないチャットやメールで、レポートの1ページを共有する。
|
||||
- PDFの図やイラストから画像素材を作る。
|
||||
- スキャンした文書を個別の画像として保管する。
|
||||
|
||||
## ヒント
|
||||
|
||||
- ロスレスの出力が必要な場合は、代わりに[PDFからPNG](./pdf-to-png)を使ってください。
|
||||
- 品質を80〜90%に設定すると、ファイルサイズと見た目の忠実度のバランスがよくなります。
|
||||
- ページごとに特定の形式が必要な場合は、PDFから画像への出力ノードを持つ[PDFワークフロービルダー](./pdf-workflow)をご検討ください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFからPNG](./pdf-to-png)
|
||||
- [PDFからWebP](./pdf-to-webp)
|
||||
- [PDFからBMP](./pdf-to-bmp)
|
||||
- [PDFからTIFF](./pdf-to-tiff)
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
title: PDFからJSON
|
||||
description: CPDFを使ってPDFファイルを構造化JSON形式に変換します。PDFの内部構造を機械可読なJSONデータとしてエクスポートします。
|
||||
---
|
||||
|
||||
# PDFからJSON
|
||||
|
||||
1つ以上のPDFファイルをJSON形式に変換します。このツールはCPDF (Coherent PDF) を使い、各PDFの内部構造を機械可読なJSON表現にシリアライズします。出力は常にZIPアーカイブとして提供されます。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. ファイルピッカーで1つ以上のPDFファイルを選択します。
|
||||
2. **変換**をクリックして処理を開始します。変換はバックグラウンドのWebワーカーで実行されます。
|
||||
3. 入力したPDFごとに1つのJSONファイルを含むZIPアーカイブがダウンロードされます。
|
||||
|
||||
ステータスバーに、変換とZIP作成の各段階の進行状況が表示されます。
|
||||
|
||||
## オプション
|
||||
|
||||
このツールに設定可能なオプションはありません。各PDFは完全なJSON表現に変換されます。
|
||||
|
||||
## 出力形式
|
||||
|
||||
- 入力したPDFごとの`filename.json`を含む`pdfs-to-json.zip`ファイル。
|
||||
|
||||
JSON出力は、ページツリー、フォント参照、メタデータ、コンテンツストリームなど、PDFの内部オブジェクト構造を表します。
|
||||
|
||||
## ユースケース
|
||||
|
||||
- デバッグや検証のために、PDFの内部構造を調べる。
|
||||
- 構造化されたメタデータやページのプロパティをプログラムで抽出する。
|
||||
- PDFの構造データを独自の処理パイプラインに渡す。
|
||||
- オブジェクトツリーを分析して、PDF文書のコンプライアンスを監査する。
|
||||
|
||||
## ヒント
|
||||
|
||||
- このツールが出力するのは生のPDFオブジェクト構造で、抽出したテキストコンテンツではありません。ページのテキストをJSON形式で取得したい場合は、代わりに[AI用のPDFを準備する](./prepare-pdf-for-ai)を使ってください。
|
||||
- プレーンテキストの抽出には、[PDFからテキスト](./pdf-to-text)のほうが簡単です。
|
||||
- 構造が複雑な大きなPDFは、非常に大きなJSONファイルになります。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFからテキスト](./pdf-to-text)
|
||||
- [AI用のPDFを準備する](./prepare-pdf-for-ai)
|
||||
- [PDFテーブルの抽出](./extract-tables)
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: PDFからマークダウン
|
||||
description: PDF文書をMarkdown形式に変換します。画像の抽出も任意で行え、複数ファイルの一括変換に対応しています。
|
||||
---
|
||||
|
||||
# PDFからマークダウン
|
||||
|
||||
PDFファイルをMarkdown (`.md`) 形式に変換し、見出し、段落、リスト、基本的な書式を保持します。埋め込み画像の抽出と取り込みも任意で行えます。単一ファイルと一括変換に対応しています。PyMuPDFを使用しています。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. ドロップゾーンをクリックするか、ファイルをドラッグして、1つ以上のPDFをアップロードします。
|
||||
2. 必要に応じて**画像を含める**を切り替え、抽出した画像をMarkdown出力に埋め込みます。
|
||||
3. **変換**をクリックして処理を開始します。
|
||||
4. 1つのファイルは`filename.md`としてダウンロードされます。複数のファイルは`markdown-files.zip`になります。
|
||||
|
||||
## オプション
|
||||
|
||||
- **画像を含める**: チェックすると、PDFの埋め込み画像が抽出され、Markdown出力から参照されます。チェックしない場合は、テキストコンテンツのみが変換されます。
|
||||
|
||||
## 出力形式
|
||||
|
||||
- **単一ファイル**: `filename.md`
|
||||
- **複数ファイル**: 入力したPDFごとに1つの`.md`を含む`markdown-files.zip`。
|
||||
|
||||
## ユースケース
|
||||
|
||||
- PDFのドキュメントを、VitePress、Hugo、Jekyllなどの静的サイトジェネレーター向けにMarkdownへ変換する。
|
||||
- PDFの研究論文を、Obsidianなどのノートアプリ向けに編集可能なMarkdownにする。
|
||||
- 古いPDFのナレッジベースを、Gitと相性のよいテキスト形式に移行する。
|
||||
- PDFの電子書籍から構造化されたコンテンツを抽出し、再フォーマットする。
|
||||
|
||||
## ヒント
|
||||
|
||||
- 画像を含めるオプションは、PDFにコンテンツに不可欠な図や表が含まれている場合に便利です。テキスト中心の文書では、出力をすっきり保つために無効にしてください。
|
||||
- サイドバー、脚注、複数段組みのテキストを含む複雑なレイアウトでは、Markdownが完全にならないことがあります。必要に応じて出力を確認し、調整してください。
|
||||
- 書式のない生のテキストが必要な場合は、代わりに[PDFからテキスト](./pdf-to-text)を使ってください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFからテキスト](./pdf-to-text)
|
||||
- [PDFからWord](./pdf-to-word)
|
||||
- [AI用のPDFを準備する](./prepare-pdf-for-ai)
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
title: PDFからPDF/A
|
||||
description: 標準のPDFを長期保存用のPDF/A形式に変換します。PDF/A-1b、PDF/A-2b、PDF/A-3bの準拠レベルに対応しています。
|
||||
---
|
||||
|
||||
# PDFからPDF/A
|
||||
|
||||
PDF/Aは、デジタルデータの長期保存のために設計された、PDFのISO標準サブセットです。このツールは、ブラウザ内で直接動作するGhostscriptを使い、標準のPDFをPDF/A準拠の文書に変換します。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. 1つ以上のPDFファイルをアップロードします。
|
||||
2. ドロップダウンから**PDF/Aバージョン**を選びます。
|
||||
3. 通常の変換に失敗する複雑なファイルでは、必要に応じて**事前に平坦化**を有効にします。
|
||||
4. **PDF/Aに変換**をクリックします。複数のファイルはZIPアーカイブになります。
|
||||
|
||||
## PDF/Aのバージョン
|
||||
|
||||
| バージョン | 制限 | 適した用途 |
|
||||
| ------------ | ------------------------------------------ | ---------------------------------- |
|
||||
| **PDF/A-1b** | 最も厳格。透明効果とレイヤーは使用不可。 | 古い保管システムとの最大限の互換性 |
|
||||
| **PDF/A-2b** | 透明効果とJPEG2000を許可。 | 汎用的な保管 (推奨) |
|
||||
| **PDF/A-3b** | あらゆる形式の埋め込み添付ファイルを許可。 | 元のデータファイルを含む文書の保管 |
|
||||
|
||||
デフォルトではPDF/A-2bが選択されており、ほとんどの保管ニーズに対応できます。
|
||||
|
||||
## 事前平坦化オプション
|
||||
|
||||
PDFによっては、特殊なフォントエンコーディング、複雑な透明効果の重なり、壊れた内部構造など、PDF/Aへのきれいな変換を妨げる機能が含まれていることがあります。**事前に平坦化**を有効にすると、変換前にPDFを300 DPIでラスタライズします。これにより準拠が保証されますが、テキストは選択できなくなります。標準の変換でエラーが出る場合のフォールバックとして使ってください。
|
||||
|
||||
事前平坦化にはPyMuPDF WASMエンジンが必要です。
|
||||
|
||||
## ユースケース
|
||||
|
||||
- 政府や法的な保管要件を満たす (多くの法域で、裁判所への提出書類にPDF/Aが義務付けられています)
|
||||
- 機関リポジトリやデジタルライブラリに文書を提出する
|
||||
- 元のソフトウェアが10年後には存在しないかもしれない業務記録を保存する
|
||||
- XML添付ファイル付きのPDF/A-3bを必要とする電子請求書の規格向けに請求書を準備する
|
||||
|
||||
## ヒント
|
||||
|
||||
- まず事前平坦化なしで変換を試してください。エラーが出た場合にのみ有効にします。
|
||||
- PDF/Aはすべてのフォントを埋め込むため、出力ファイルは元のファイルより大きくなることがよくあります。
|
||||
- ワークフローで厳密な準拠が必要な場合は、専用のPDF/A検証ツールで出力を検証してください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFの圧縮](./compress-pdf): 変換後にファイルサイズを減らします
|
||||
- [PDFの平坦化](./flatten-pdf): PDF/Aに変換する前にフォームを平坦化します
|
||||
- [メタデータの削除](./remove-metadata): 保管前にメタデータを取り除きます
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: PDFからPNG
|
||||
description: PDFのページを、スケールを調整できるロスレスのPNG画像に変換します。高品質なスクリーンショットや透明な背景に最適です。
|
||||
---
|
||||
|
||||
# PDFからPNG
|
||||
|
||||
PDFの各ページをPNG画像に変換します。PNGはロスレス圧縮を使うため、出力は元のページのあらゆるディテールを保持します。1ページのPDFは`.png`ファイルとしてダウンロードされ、複数ページのPDFはZIPになります。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. ドロップゾーンをクリックするか、ファイルをドラッグして、PDFをアップロードします。
|
||||
2. **スケール**スライダーを設定して、出力解像度を制御します。
|
||||
3. **変換**をクリックして処理を開始します。
|
||||
4. 1つのPNG、またはZIPアーカイブが自動的にダウンロードされます。
|
||||
|
||||
## オプション
|
||||
|
||||
- **スケール**: 1.0xから3.0x (デフォルトは2.0x)。2.0xでは、標準のレターサイズのページが約1,224 x 1,584ピクセルでレンダリングされます。スケールを上げると、より大きく鮮明な画像になりますが、ファイルサイズと処理時間が増えます。
|
||||
|
||||
## 出力形式
|
||||
|
||||
- **1ページ**: `filename.png`
|
||||
- **複数ページ**: `filename_pngs.zip`。`page_1.png`、`page_2.png`などを含みます。
|
||||
|
||||
## ユースケース
|
||||
|
||||
- プレゼン用に、PDFページの高精細なスクリーンショットを取得する。
|
||||
- 輪郭がくっきりして圧縮ノイズのない、グラフや図を抽出する。
|
||||
- PDFのモックアップから、Webデザイン用の素材を準備する。
|
||||
- OCRの前処理用に、ロスレスのページ画像を作る。
|
||||
|
||||
## ヒント
|
||||
|
||||
- PNGファイルはJPGよりかなり大きくなります。完璧な品質よりファイルサイズが重要な場合は、[PDFからJPG](./pdf-to-jpg)または[PDFからWebP](./pdf-to-webp)を使ってください。
|
||||
- スケール1.0xでは、出力はPDF本来の解像度と一致します。印刷品質で書き出すには3.0xに上げてください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFからJPG](./pdf-to-jpg)
|
||||
- [PDFからWebP](./pdf-to-webp)
|
||||
- [PDFからSVG](./pdf-to-svg)
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: PDFからSVG
|
||||
description: PDFのページをスケーラブルなSVGベクターグラフィックスに変換します。テキストと図形をベクターパスとして保持し、無限に拡大できます。
|
||||
---
|
||||
|
||||
# PDFからSVG
|
||||
|
||||
PDFの各ページをSVG (Scalable Vector Graphics) ファイルに変換します。ラスター形式と違い、SVGはベクターパス、テキスト、図形を保持するため、出力はピクセル化せずに任意のサイズへ拡大できます。PyMuPDFを使用しています。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. ドロップゾーンをクリックするか、ファイルをドラッグして、1つ以上のPDFをアップロードします。複数のファイルを追加し、個別に管理できます。
|
||||
2. **変換**をクリックして、アップロードしたすべてのファイルを処理します。
|
||||
3. 1ファイル1ページの変換は、単独の`.svg`としてダウンロードされます。それ以外はZIPアーカイブとしてダウンロードされます。
|
||||
|
||||
## オプション
|
||||
|
||||
このツールに設定可能なオプションはありません。各ページは、PyMuPDFのネイティブなベクターエクスポートでSVGに変換されます。
|
||||
|
||||
## 出力形式
|
||||
|
||||
- **単一ファイル、単一ページ**: `filename.svg`
|
||||
- **単一ファイル、複数ページ**: `filename_svg.zip`。`page_1.svg`、`page_2.svg`などを含みます。
|
||||
- **複数ファイル**: 元の文書名ごとに整理されたファイルを含む`pdf_to_svg.zip`。
|
||||
|
||||
## ユースケース
|
||||
|
||||
- PDFレポートからベクターの図、グラフ、イラストを抽出し、Webページで使う。
|
||||
- InkscapeやIllustratorなどのベクターエディターで、PDFページの内容を編集する。
|
||||
- レスポンシブなWebアプリケーションに、拡大縮小できるページプレビューを埋め込む。
|
||||
- PDFのパンフレットから、輪郭を保ったままロゴやグラフィックを抽出する。
|
||||
|
||||
## ヒント
|
||||
|
||||
- SVGは、ベクターコンテンツを含むPDFで最も効果を発揮します。スキャンした文書や画像の多いPDFは、ラスターデータが埋め込まれた大きなSVGファイルになります。
|
||||
- 画像の多いPDFをラスター形式で出力するには、代わりに[PDFからPNG](./pdf-to-png)または[PDFからJPG](./pdf-to-jpg)を使ってください。
|
||||
- このツールは一括変換に対応しています。複数のPDFを一度にアップロードして、1回の実行ですべて変換できます。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFからPNG](./pdf-to-png)
|
||||
- [PDFからJPG](./pdf-to-jpg)
|
||||
- [PDFからマークダウン](./pdf-to-markdown)
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: PDFからテキスト
|
||||
description: PDFファイルからプレーンテキストを抽出します。複数のPDFを一括で抽出でき、TXTファイルとして出力します。
|
||||
---
|
||||
|
||||
# PDFからテキスト
|
||||
|
||||
PDFファイルからすべてのテキストコンテンツを抽出し、プレーンな`.txt`ファイルとして保存します。一括処理に対応しており、複数のPDFをアップロードすると、1回の操作でそれぞれのテキストを抽出できます。PyMuPDFを使用しています。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. ドロップゾーンをクリックするか、ファイルをドラッグして、1つ以上のPDFをアップロードします。ファイルリストは、追加ボタンとクリアボタンで管理できます。
|
||||
2. **抽出**をクリックして処理を開始します。
|
||||
3. 1つのファイルは`filename.txt`としてダウンロードされます。複数のファイルは`pdf-to-text.zip`アーカイブになります。
|
||||
|
||||
## オプション
|
||||
|
||||
このツールに設定可能なオプションはありません。すべてのページのテキストコンテンツが、読み順に抽出されます。
|
||||
|
||||
## 出力形式
|
||||
|
||||
- **単一ファイル**: `filename.txt`
|
||||
- **複数ファイル**: 入力したPDFごとに1つの`.txt`を含む`pdf-to-text.zip`。
|
||||
|
||||
## ユースケース
|
||||
|
||||
- 全文検索のインデックス作成のために、PDFレポートから本文を抽出する。
|
||||
- PDFの電子書籍や記事を、電子ペーパー端末で読めるプレーンテキストに変換する。
|
||||
- キーワード分析のために、契約書や法的文書からテキストを取り出す。
|
||||
- データ処理スクリプト用に、PDFから書式を取り除いてきれいなテキストにする。
|
||||
- 自然言語処理のために、PDFアーカイブからテキストコーパスを準備する。
|
||||
|
||||
## ヒント
|
||||
|
||||
- スキャンされたPDF (画像のみ) は、抽出できるテキストレイヤーがないため、空のテキストファイルになります。スキャンした文書は、先にOCRにかけてください。
|
||||
- 出力は、PyMuPDFが解釈した読み順を保持します。一般的には左から右、上から下の順です。複数段組みのレイアウトでは、テキストが入り混じることがあります。
|
||||
- 見出しや書式を含む構造化された出力には、[PDFからマークダウン](./pdf-to-markdown)をお試しください。AI向けの構造化JSONには、[AI用のPDFを準備する](./prepare-pdf-for-ai)を使ってください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFからマークダウン](./pdf-to-markdown)
|
||||
- [AI用のPDFを準備する](./prepare-pdf-for-ai)
|
||||
- [PDFからWord](./pdf-to-word)
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: PDFからTIFF
|
||||
description: PDFのページを、印刷、ファクス、アーカイブのワークフローでよく使われるTIFF画像に変換します。エンコードに失敗した場合はPNGにフォールバックします。
|
||||
---
|
||||
|
||||
# PDFからTIFF
|
||||
|
||||
PDFの各ページをTIFF画像に変換します。TIFFは、印刷製版、ファクスシステム、文書アーカイブの標準形式です。このツールはTIFFのエンコードにPackBits圧縮を使い、ページのエンコードに失敗した場合はPNGにフォールバックします。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. ドロップゾーンをクリックするか、ファイルをドラッグして、PDFをアップロードします。
|
||||
2. **変換**をクリックしてファイルを処理します。
|
||||
3. 1つのTIFFファイル、またはZIPアーカイブが自動的にダウンロードされます。
|
||||
|
||||
## オプション
|
||||
|
||||
このツールに設定可能なオプションはありません。ページは固定の2倍スケールでレンダリングされます。
|
||||
|
||||
## 出力形式
|
||||
|
||||
- **1ページ**: `filename.tiff`
|
||||
- **複数ページ**: `filename_tiffs.zip`。`page_1.tiff`、`page_2.tiff`などを含みます。
|
||||
|
||||
特定のページでTIFFのエンコードに失敗した場合 (圧縮の問題による)、そのページは代わりに`.png`ファイルとして保存されます。その場合、ZIPにはTIFFとPNGのファイルが混在します。
|
||||
|
||||
## ユースケース
|
||||
|
||||
- TIFF形式を必須とする行政機関や法的システムに文書を提出する。
|
||||
- デジタルファクスサービスで送信するためのページを準備する。
|
||||
- スキャンした文書を、広くサポートされているロスレス形式で保管する。
|
||||
- 企業の文書管理システムにページを渡す。
|
||||
|
||||
## ヒント
|
||||
|
||||
- TIFFファイルは大きくなります。Webや画面での利用でロスレスの品質だけが必要な場合は、[PDFからPNG](./pdf-to-png)のほうが適しています。
|
||||
- 一部のページでPNGへのフォールバックが発生した場合は、ZIPの中身を確認してください。それらのページは別途変換し直したほうがよいかもしれません。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFからPNG](./pdf-to-png)
|
||||
- [PDFからBMP](./pdf-to-bmp)
|
||||
- [PDFからJPG](./pdf-to-jpg)
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: PDFからWebP
|
||||
description: PDFのページを、品質を調整できるWebP画像に変換します。同程度の画質でJPGよりファイルサイズが小さくなります。
|
||||
---
|
||||
|
||||
# PDFからWebP
|
||||
|
||||
PDFの各ページをWebP画像に変換します。WebPは、同じ体感品質でJPGより25〜35%小さいファイルになるのが一般的で、Web用途に適しています。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. ドロップゾーンをクリックするか、ファイルをドラッグして、PDFをアップロードします。
|
||||
2. **品質**スライダーを調整します。
|
||||
3. **変換**をクリックしてファイルを処理します。
|
||||
4. 1つの`.webp`ファイル、またはZIPアーカイブが自動的にダウンロードされます。
|
||||
|
||||
## オプション
|
||||
|
||||
- **品質**: 0%から100% (デフォルトは85%) のスライダー。非可逆圧縮のレベルを制御します。値を高くすると、より多くのディテールが保持されます。
|
||||
|
||||
ページは内部で2倍スケールでレンダリングされ、PDF本来の寸法のおよそ2倍の画像になります。
|
||||
|
||||
## 出力形式
|
||||
|
||||
- **1ページ**: `filename.webp`
|
||||
- **複数ページ**: `filename_webps.zip`。`page_1.webp`、`page_2.webp`などを含みます。
|
||||
|
||||
## ユースケース
|
||||
|
||||
- 帯域幅が重要なWebサイト向けに、ページのプレビューを準備する。
|
||||
- ソーシャルメディア向けに、チラシやパンフレットの軽量な画像版を生成する。
|
||||
- 複数ページの文書を、Web向けに最適化した画像セットに一括変換する。
|
||||
|
||||
## ヒント
|
||||
|
||||
- WebPはすべてのモダンブラウザでサポートされています。古い環境との互換性が必要な場合は、[PDFからJPG](./pdf-to-jpg)を使ってください。
|
||||
- 品質80〜85%なら、画面上では通常元の画像と見分けがつかず、ファイルサイズも小さく保てます。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFからJPG](./pdf-to-jpg)
|
||||
- [PDFからPNG](./pdf-to-png)
|
||||
- [PDFからBMP](./pdf-to-bmp)
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: PDFからWord
|
||||
description: PDFファイルを編集可能なWord (DOCX) 文書に変換します。複数のPDFの一括変換に対応しています。
|
||||
---
|
||||
|
||||
# PDFからWord
|
||||
|
||||
PDFファイルを編集可能なWord (`.docx`) 文書に変換します。このツールはPyMuPDFを使って文書の内容を再構築し、テキスト、基本的な書式、レイアウトを保持します。単一ファイルと一括変換に対応しています。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. ドロップゾーンをクリックするか、ファイルをドラッグして、1つ以上のPDFをアップロードします。ファイルを追加したり、リストから個別に削除したりできます。
|
||||
2. **変換**をクリックして処理を開始します。
|
||||
3. 1つのファイルは`filename.docx`としてダウンロードされます。複数のファイルは`converted-documents.zip`にまとめられます。
|
||||
|
||||
## オプション
|
||||
|
||||
このツールに設定可能なオプションはありません。各PDFは、PyMuPDFの組み込み変換エンジンでDOCXに変換されます。
|
||||
|
||||
## 出力形式
|
||||
|
||||
- **単一ファイル**: `filename.docx`
|
||||
- **複数ファイル**: 入力したPDFごとに1つの`.docx`を含む`converted-documents.zip`。
|
||||
|
||||
## ユースケース
|
||||
|
||||
- 受け取ったPDFのテキストを、修正のために編集する。
|
||||
- 保管してあるPDFレポートを、同僚がMicrosoft WordやGoogle Docsで編集できる形式に変換する。
|
||||
- PDFの契約書や提案書の内容をWordに取り込み、修正履歴を付けて校正する。
|
||||
- 古いPDFドキュメントを、編集可能な形式に移行する。
|
||||
|
||||
## ヒント
|
||||
|
||||
- 複数段組みのテキスト、埋め込みフォーム、多くのグラフィックを含む複雑なレイアウトは、完全には変換されないことがあります。出力を確認し、ワープロで書式を調整してください。
|
||||
- スキャンされたPDF (画像のみ) は、空または最小限のDOCXファイルになります。先にOCRにかけてテキストレイヤーを追加してください。
|
||||
- 一括モードは、フォルダ全体のPDFを変換するのに効率的です。まとめてアップロードしてください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFからテキスト](./pdf-to-text)
|
||||
- [PDFからマークダウン](./pdf-to-markdown)
|
||||
- [PDFワークフロービルダー](./pdf-workflow)
|
||||
@@ -0,0 +1,41 @@
|
||||
---
|
||||
title: PDFからZIP
|
||||
description: 複数のPDFファイルを1つのZIPアーカイブにまとめ、共有や保管をしやすくします。
|
||||
---
|
||||
|
||||
# PDFからZIP
|
||||
|
||||
複数のPDFファイルを1つのZIPアーカイブにまとめます。シンプルなパッケージツールで、PDF自体の変換、圧縮、変更は行いません。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. ドロップゾーンを使って、複数のPDFファイルをアップロードします。
|
||||
2. ファイルの一覧を確認します。含めたくないものは削除します。
|
||||
3. 処理ボタンをクリックします。
|
||||
4. アップロードしたすべてのPDFを含むZIPアーカイブがすぐにダウンロードされます。
|
||||
|
||||
## 機能
|
||||
|
||||
- 任意の数のPDFファイルに対応
|
||||
- アーカイブ作成前にファイルごとに削除可能
|
||||
- ZIP内で元のファイル名を保持
|
||||
- PDFの内容は変更せず、ファイルはそのままパッケージ化
|
||||
- アップロードした各PDFのファイル名とサイズを表示
|
||||
|
||||
## ユースケース
|
||||
|
||||
- メールに添付するため、請求書や領収書をまとめる
|
||||
- 引き継ぎのために、プロジェクトの成果物 (複数のPDFレポート) をまとめる
|
||||
- フォームやテンプレートのコレクションを、1回でダウンロードできるようにする
|
||||
- 一連の文書を1つの圧縮ファイルに保管する
|
||||
|
||||
## ヒント
|
||||
|
||||
- ZIPファイルには元のPDFのファイル名が使われます。同じ名前のファイルがある場合は、競合を避けるためアップロード前に名前を変更してください。
|
||||
- このツールはPDF自体を圧縮しません。ファイルサイズを減らしたい場合は、先にPDFの圧縮を通してから、このツールでまとめてください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFの結合](./merge-pdf)
|
||||
- [PDFの分割](./split-pdf)
|
||||
- [PDFの圧縮](./compress-pdf)
|
||||
@@ -0,0 +1,95 @@
|
||||
---
|
||||
title: PDFワークフロービルダー
|
||||
description: キャンバス上でノードを接続して、独自のPDF処理パイプラインを視覚的に構築します。結合、圧縮、透かし、エクスポートなどの操作をつなげられます。
|
||||
---
|
||||
|
||||
# PDFワークフロービルダー
|
||||
|
||||
ワークフロービルダーを使うと、複数のPDF操作を1つの自動化パイプラインにつなげられます。ツールを1つずつ実行する代わりに、入力、処理、出力のノードを視覚的なグラフとしてつなぎ、ワンクリックですべてを実行します。ファイルがブラウザの外に出ることはありません。
|
||||
|
||||
## 使い方
|
||||
|
||||
画面は3つのパネルに分かれています。左の**ノードツールボックス**、中央の**キャンバス**、ノードを選択すると右に表示される**設定パネル**です。
|
||||
|
||||
1. **ノードを追加**するには、左のサイドバーでクリックするか、キャンバスに直接ドラッグします。ツールボックス上部の検索バーで名前による絞り込みができます。
|
||||
2. **ノードを接続**するには、出力ソケット (ノードの下側) から別のノードの入力ソケット (上側) へドラッグします。接続は上から下へ流れます。
|
||||
3. **設定する**には、ノードをクリックして右側の設定パネルを開きます。ノードの種類ごとに独自のオプション (ページ範囲、品質スライダー、パスワードなど) があります。
|
||||
4. **ワークフローを実行**するには、ツールバーの**実行**ボタンをクリックします。エンジンはノードをトポロジカル順に実行し、1つずつ処理します。下部のステータスバーで進行状況を確認できます。
|
||||
5. **結果をダウンロード**するには、最後のダウンロードノードが最終的なPDF (複数ファイルが生成された場合はZIP) を保存します。
|
||||
|
||||
## ノードのカテゴリ
|
||||
|
||||
ノードは6つのカテゴリに整理されており、キャンバス上で色分けされています。
|
||||
|
||||
- **入力** (青): PDF入力、画像入力、Word/Excel/PowerPointからPDF、およびパイプラインにファイルを渡す15種類以上のその他の形式コンバーター。
|
||||
- **編集と注釈** (インディゴ): トリミング、グレースケール、色の反転、透かし、ページ番号、ヘッダーとフッター、スキャナー効果、色の調整、背景色、空白ページの削除、注釈の削除。
|
||||
- **整理と管理** (紫): 結合、分割、ページの抽出、回転、ページの削除、反転、空白ページの追加、ページの分割、N-Up、ページサイズの固定、単一ページに結合、ブックレット、ポスター化、メタデータの編集、目次、OCR。
|
||||
- **最適化と修復** (琥珀): 圧縮、ラスタライズ、リニアライズ、傾き補正、PDFからPDF/A、フォントのアウトライン化、修復。
|
||||
- **PDFの保護** (ローズ): 暗号化、復号、サニタイズ、平坦化、電子署名、墨消し。
|
||||
- **出力** (ティール): ダウンロード (単一のPDFかZIPかを自動判別)、PDFから画像、PDFからテキスト、PDFからDOCX、PDFからXLSX、PDFからCSV、PDFからSVG、PDFからMarkdown、画像の抽出。
|
||||
|
||||
## ワークフローの保存と読み込み
|
||||
|
||||
ツールバーには4つの保存オプションがあります。
|
||||
|
||||
- **保存**: 現在のワークフローを、名前付きテンプレートとしてブラウザのローカルストレージに保存します。複数のテンプレートを保存できます。
|
||||
- **読み込み**: 保存済みのテンプレートをすべて一覧表示するモーダルを開きます。読み込みをクリックして復元するか、不要になったテンプレートを削除できます。
|
||||
- **エクスポート**: ワークフローを`.json`ファイルとしてダウンロードし、共有やバックアップに使えます。
|
||||
- **インポート**: ディスクから`.json`のワークフローファイルを読み込み、すべてのノード、位置、接続を復元します。
|
||||
|
||||
テンプレートはローカルストレージにセッションをまたいで保持されます。エクスポートしたJSONファイルは、ブラウザやマシンの間で持ち運べます。
|
||||
|
||||
## 実行モデル
|
||||
|
||||
エンジンは接続から依存関係グラフを作成し、ノードをトポロジカル順に実行します。いずれかのノードが失敗すると実行は停止し、失敗したノードが赤く表示されます。次のルールに注意してください。
|
||||
|
||||
- すべてのワークフローには、少なくとも1つの**入力**ノードと1つの**出力**ノードが必要です。
|
||||
- エンジンは循環依存を検出し、エラーを出して実行をブロックします。
|
||||
- **暗号化**ノードは、出力ノードの直前の最後の処理ステップにする必要があります。それより前に置くと、下流のノードは暗号化されたデータを扱えないため、検証の警告が出ます。
|
||||
- パスワード保護されたPDFは、実行中にパスワードの入力を求められます。
|
||||
- 複数のPDF入力に対応しています。結合ノードでまとめることも、一括処理ノードで各PDFを個別に処理することもできます。
|
||||
|
||||
## ソケットの種類
|
||||
|
||||
接続には型付きのソケットが使われ、無効な配線を防ぎます。
|
||||
|
||||
- **PDF** (インディゴ): 1つのPDF文書。
|
||||
- **MultiPDF** (琥珀): まとめられた複数のPDF文書。
|
||||
- **画像** (緑): 画像のBlob。
|
||||
|
||||
## オプション
|
||||
|
||||
各ノードには、右側の設定パネルから行える独自の設定があります。よくあるパターンは次のとおりです。
|
||||
|
||||
- 分割、ページの抽出、ページの削除ノードの**ページ範囲**
|
||||
- 画像変換の出力ノードの**品質スライダー**
|
||||
- 暗号化と復号ノードの**パスワード欄**
|
||||
- 透かし、ヘッダーとフッター、メタデータの編集の**テキスト入力**
|
||||
- 回転ノードの**回転角度**
|
||||
- 圧縮ノードの**圧縮レベル**
|
||||
- OCRノードの**OCR言語の選択**
|
||||
|
||||
## ユースケース
|
||||
|
||||
- **請求書処理パイプライン**: PDF入力 -> OCR -> 表の抽出 -> CSVとしてダウンロード。
|
||||
- **レポートの標準化**: WordからPDF -> ページサイズの固定 -> ページ番号の追加 -> 透かし -> 圧縮 -> ダウンロード。
|
||||
- **保管の準備**: PDF入力 -> 修復 -> 平坦化 -> サニタイズ -> PDFからPDF/A -> ダウンロード。
|
||||
- **画像の一括抽出**: PDF入力 (複数ファイル) -> 画像の抽出 -> ZIPをダウンロード。
|
||||
- **印刷用ブックレット**: PDF入力 -> ブックレット -> トリミング -> 圧縮 -> ダウンロード。
|
||||
- **安全な配布**: PDF入力 -> 墨消し -> 注釈の削除 -> 暗号化 -> ダウンロード。
|
||||
|
||||
## ヒント
|
||||
|
||||
- **Delete**または**Backspace**を使うと、選択したノードをキャンバスから削除できます。
|
||||
- ノードのステータスバーにある**X**ボタンをクリックすると、そのノードを直接削除できます。
|
||||
- 何もない場所をクリックしてドラッグすると、キャンバスを移動できます。移動中はカーソルがつかむアイコンに変わります。
|
||||
- モバイルでは、ツールバーの<strong>+</strong>ボタンでノードツールボックスを切り替えます。
|
||||
- ワークフローが複数の出力ファイルを生成する場合、ダウンロードノードが自動的にZIPにまとめます。
|
||||
- まずはシンプルに、2ノードのパイプラインを作ってテストしてから、複雑にしていきましょう。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFからテキスト](./pdf-to-text)
|
||||
- [PDFからExcel](./pdf-to-excel)
|
||||
- [画像の抽出](./extract-images)
|
||||
- [PDFからマークダウン](./pdf-to-markdown)
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
title: PNGからPDF
|
||||
description: 1つ以上のPNG画像を、品質を調整できるPDF文書に、すべてブラウザ上で変換します。
|
||||
---
|
||||
|
||||
# PNGからPDF
|
||||
|
||||
PNG画像を、フル解像度を保ったままPDFに変換します。各PNGは、元の画像サイズに合わせた1ページになります。透明部分は自動的に処理されます。
|
||||
|
||||
## 対応フォーマット
|
||||
|
||||
| フォーマット | 拡張子 |
|
||||
| :----------- | :----- |
|
||||
| PNG | `.png` |
|
||||
|
||||
## 使い方
|
||||
|
||||
1. アップロード領域をクリックするか、PNGファイルをドラッグ&ドロップします。複数を同時に選択できます。
|
||||
2. ファイルリストを管理します。不要なファイルを削除したり、追加したりできます。
|
||||
3. ドロップダウンから**PDF品質**のレベルを選びます。
|
||||
4. **PDFに変換**をクリックします。出力は`from_jpgs.pdf`としてダウンロードされます。
|
||||
|
||||
このツールはpdf-libを使って各画像を直接埋め込みます。PNGをネイティブに埋め込めない場合 (たとえば特殊なカラープロファイルのため) は、キャンバス経由でJPEGとして再レンダリングするフォールバックが働きます。
|
||||
|
||||
## オプション
|
||||
|
||||
**PDF品質**は、埋め込み前に適用される圧縮を制御します。
|
||||
|
||||
- **高品質**: 圧縮を最小限にし、ファイルサイズは最大になります。
|
||||
- **中品質** (デフォルト): サイズと鮮明さのバランスがよい設定です。
|
||||
- **低品質**: 圧縮を最大にし、出力は最小になります。
|
||||
|
||||
## ユースケース
|
||||
|
||||
- スクリーンショットを、バグレポートやドキュメント用の複数ページPDFに変換する
|
||||
- UIデザインのエクスポートを、レビュー用に1つのファイルにまとめる
|
||||
- 図のエクスポート (draw.io、Excalidraw) を、共有できるPDFにする
|
||||
- 一連のグラフ画像を、レポートとしてまとめる
|
||||
|
||||
## ヒント
|
||||
|
||||
- 透明部分を含むPNGは、PDFでは白い背景になります。別の背景が必要な場合は、事前に画像を編集してください。
|
||||
- 輪郭やテキストがくっきりしたスクリーンショットや図では、高品質を選ぶとJPEG圧縮のノイズを避けられます。中品質や低品質では、内部的にJPEGへ変換されることがあります。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [画像からPDF](./image-to-pdf)
|
||||
- [JPGからPDF](./jpg-to-pdf)
|
||||
- [SVGからPDF](./svg-to-pdf)
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
title: PDFのポスタライズ
|
||||
description: PDFのページを小さなページのグリッドに分割し、複数枚の用紙にまたがる大判印刷に対応します。
|
||||
---
|
||||
|
||||
# PDFのポスタライズ
|
||||
|
||||
PDFの各ページを、小さなサブページのグリッドに分割します。1ページを複数枚の用紙に印刷し、それらをつなぎ合わせて大きなポスターやバナーを作るためのツールです。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. PDFファイルをアップロードします。
|
||||
2. **行**と**列**の数を設定してグリッドを決めます(例:2行 x 2列なら各ページが4つのサブページに分割されます)。
|
||||
3. 必要に応じて、ポスタライズするページ範囲を指定します。
|
||||
4. プレビューキャンバスには現在のページにグリッドが重ねて表示されるため、切り取り位置を確認できます。
|
||||
5. ページを切り替えて、他のページのオーバーレイも確認します。
|
||||
6. 処理ボタンをクリックします。グリッドの各セルが、出力PDFの1ページになります。
|
||||
|
||||
## 機能
|
||||
|
||||
- 行数と列数を自由に設定でき、柔軟なグリッドサイズに対応
|
||||
- ページが分割される位置を正確に示すグリッドオーバーレイ付きのライブプレビュー
|
||||
- 特定のページだけをポスタライズするページ範囲フィルター
|
||||
- プレビューでのページ単位の移動
|
||||
- ページのスナップショットをキャッシュし、プレビューの移動を高速化
|
||||
- 赤い破線のグリッド線で切り取りの境界を明確に表示
|
||||
|
||||
## オプション
|
||||
|
||||
| オプション | 説明 |
|
||||
| -------------- | -------------------------------------------- |
|
||||
| **行** | 横方向の分割数(デフォルト:1) |
|
||||
| **列** | 縦方向の分割数(デフォルト:1) |
|
||||
| **ページ範囲** | ポスタライズするページ(空欄の場合はすべて) |
|
||||
|
||||
## 活用例
|
||||
|
||||
- ポスターサイズのPDFを標準のA4またはレターサイズの用紙に印刷し、壁の上で組み立てる
|
||||
- 1ページのPDFデザインから大きなバナーを作る
|
||||
- 大きすぎる技術図面を印刷可能なタイルに分割する
|
||||
- 大判プリンターがなくても大判印刷を行う
|
||||
|
||||
## ヒント
|
||||
|
||||
- 2x2のグリッドは1ページを4ページに、3x3のグリッドは1ページを9ページにします。組み立てた後の大きさに合わせてグリッドを計画してください。
|
||||
- プレビューのオーバーレイで、重要な内容が切り取り線にかからないか確認できます。必要に応じて行や列を調整してください。
|
||||
- 逆の操作(複数のページを1枚にまとめる)には、[N-Up PDF](./n-up-pdf)を使用します。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [N-Up PDF](./n-up-pdf)
|
||||
- [ページの分割](./divide-pages)
|
||||
- [PDFの分割](./split-pdf)
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
title: PowerPointからPDF
|
||||
description: PowerPointプレゼンテーション(PPT、PPTX)とODPファイルを、スライドの書式を保ったままPDFに変換します。
|
||||
---
|
||||
|
||||
# PowerPointからPDF
|
||||
|
||||
プレゼンテーションファイルをPDFに変換します。各スライドが出力ドキュメントの1ページになり、テキスト、画像、図形、トランジションがブラウザ上のLibreOfficeエンジンで描画されます。新しい形式と古い形式のPowerPoint、さらにOpenDocument Presentation形式に対応しています。
|
||||
|
||||
## 対応フォーマット
|
||||
|
||||
| フォーマット | 拡張子 |
|
||||
| :------------------------ | :------ |
|
||||
| PowerPoint(新形式) | `.pptx` |
|
||||
| PowerPoint(旧形式) | `.ppt` |
|
||||
| OpenDocument Presentation | `.odp` |
|
||||
|
||||
## 使い方
|
||||
|
||||
1. アップロード領域をクリックするか、プレゼンテーションファイルをドラッグアンドドロップします。
|
||||
2. ファイル一覧を確認します。必要に応じてファイルを追加または削除します。
|
||||
3. **PDFに変換**をクリックします。LibreOfficeエンジンは初回使用時に読み込まれ、その後各ファイルが変換されます。
|
||||
4. ファイルが1つの場合はPDFとして直接ダウンロードされます。複数の場合は`powerpoint-converted.zip`にまとめられます。
|
||||
|
||||
## オプション
|
||||
|
||||
このツールに追加の設定はありません。スライドは元のサイズで描画されます。
|
||||
|
||||
## 出力
|
||||
|
||||
| 入力数 | 出力 |
|
||||
| :------------ | :-------------------------------------------------------------------------- |
|
||||
| 1ファイル | PDFを1つダウンロード(元のファイル名に`.pdf`拡張子) |
|
||||
| 2ファイル以上 | ZIPアーカイブ(`powerpoint-converted.zip`)に、ファイルごとに1つのPDFを格納 |
|
||||
|
||||
## 活用例
|
||||
|
||||
- PowerPointを持っていない相手に共有する前に、プレゼンテーションをPDFに変換する
|
||||
- 会議やワークショップ向けに、スライドの印刷用配布資料を作成する
|
||||
- どの端末でも同じように表示される形式でプレゼンテーションを保管する
|
||||
- LibreOffice ImpressのODPプレゼンテーションをまとめてPDFに変換する
|
||||
- メールに添付するために、ピッチデッキのPDF版を作成する
|
||||
|
||||
## ヒント
|
||||
|
||||
- スライドのアニメーションやトランジションはPDFには反映されません。各スライドは静止したページとして取り込まれます。
|
||||
- 埋め込まれた動画は出力に表示されません。必要に応じて、スクリーンショットやプレースホルダー画像に置き換えてください。
|
||||
- スピーカーノートは、デフォルトのPDF出力には含まれません。ノートが必要な場合は、先にPowerPoint標準の「ノートの印刷」ビューから書き出すことを検討してください。
|
||||
- LibreOfficeエンジンは初回の読み込み後にキャッシュされるため、同じセッションで2つ目のプレゼンテーションを変換するときははるかに高速です。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [WordからPDF](./word-to-pdf)
|
||||
- [ExcelからPDF](./excel-to-pdf)
|
||||
- [画像からPDF](./image-to-pdf)
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
title: AI用のPDFを準備する
|
||||
description: PDFの内容を、LLMやLlamaIndexなどのAIパイプラインに最適化された構造化JSONとして抽出します。一括処理に対応しています。
|
||||
---
|
||||
|
||||
# AI用のPDFを準備する
|
||||
|
||||
PDFファイルから内容を抽出し、大規模言語モデル(LLM)やLlamaIndexなどのAIフレームワークに取り込みやすいJSONとして構造化します。各ページの内容が抽出され、RAGパイプライン、チャットボット、セマンティック検索システムにそのまま使える形式に整理されます。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. ドロップゾーンをクリックするかファイルをドラッグして、1つ以上のPDFをアップロードします。
|
||||
2. **抽出**をクリックして処理を開始します。
|
||||
3. ファイルが1つの場合は`filename_llm.json`としてダウンロードされます。複数の場合は`pdf-for-ai.zip`アーカイブになります。
|
||||
|
||||
このツールはPyMuPDFのLlamaIndex連携を使用して、ページ単位の内容をメタデータ付きで抽出し、AIフレームワークに直接読み込める出力を生成します。
|
||||
|
||||
## オプション
|
||||
|
||||
このツールに設定可能なオプションはありません。すべてのページがテキスト全体とメタデータとともに抽出されます。
|
||||
|
||||
## 出力形式
|
||||
|
||||
- **1ファイル**:`filename_llm.json`
|
||||
- **複数ファイル**:入力PDFごとに1つの`_llm.json`を含む`pdf-for-ai.zip`。
|
||||
|
||||
JSON出力はLlamaIndexのドキュメントスキーマに従い、ページごとのテキスト内容とメタデータフィールドを持ちます。
|
||||
|
||||
## 活用例
|
||||
|
||||
- 検索拡張生成(RAG)パイプライン向けにPDFドキュメントを準備する。
|
||||
- AIチャットボット向けに、PDFアーカイブから検索可能なナレッジベースを構築する。
|
||||
- PDFレポートをLLMベースの分析ワークフローに取り込む。
|
||||
- セマンティック検索や質問応答システム向けに、研究論文を前処理する。
|
||||
- PDFドキュメントのコレクションから構造化された学習データを作成する。
|
||||
|
||||
## ヒント
|
||||
|
||||
- AI向けの整形をしないプレーンテキストの抽出には、[PDFからテキスト](./pdf-to-text)を使用します。
|
||||
- 見出しや構造を保ったMarkdown出力には、[PDFからMarkdown](./pdf-to-markdown)を使用します。
|
||||
- スキャンされたPDFでは、出力が空になるか、ごくわずかになります。抽出の前にOCRを実行して、テキストレイヤーを追加してください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFからテキスト](./pdf-to-text)
|
||||
- [PDFからMarkdown](./pdf-to-markdown)
|
||||
- [PDFからJSON](./pdf-to-json)
|
||||
@@ -0,0 +1,64 @@
|
||||
---
|
||||
title: PDFの保護
|
||||
description: 256ビットAES暗号化でPDFファイルをパスワード保護します。ユーザーパスワードと所有者パスワードを設定し、利用制限を構成できます。
|
||||
---
|
||||
|
||||
# PDFの保護
|
||||
|
||||
PDFをパスワードでロックし、許可された人だけが開けるようにします。BentoPDFは、銀行や政府機関でも使われている標準と同じ256ビットAES暗号化を、QPDFを通じてすべてブラウザ上で適用します。
|
||||
|
||||
## 使い方
|
||||
|
||||
1. PDFファイルをアップロードします。
|
||||
2. **ユーザーパスワード**を入力します(必須)。ファイルを開くために必要なパスワードです。
|
||||
3. 必要に応じて**所有者パスワード**を入力します。設定すると、印刷、編集、コピー、注釈の追加を禁止する利用制限がPDFに適用されます。
|
||||
4. **PDFを暗号化**をクリックします。
|
||||
5. 暗号化されたファイルをダウンロードします。
|
||||
|
||||
## パスワードの種類
|
||||
|
||||
### ユーザーパスワード(必須)
|
||||
|
||||
ユーザーパスワードは、受信者がPDFを開くときに入力するものです。これがなければ、ドキュメントにはまったくアクセスできません。暗号化されたPDFには必ず1つ設定します。
|
||||
|
||||
### 所有者パスワード(任意)
|
||||
|
||||
所有者パスワードは、許可されたユーザーがファイルを開いた後にできることを制御します。ユーザーパスワードと異なる所有者パスワードを設定すると、BentoPDFは最も厳しい制限を自動的に適用します。
|
||||
|
||||
- 変更を無効化
|
||||
- 抽出とコピーを無効化
|
||||
- 印刷を無効化
|
||||
- 注釈を無効化
|
||||
- フォーム入力を無効化
|
||||
- ドキュメントの組み立てを無効化
|
||||
|
||||
所有者パスワードを空欄にした場合、PDFは暗号化されます(開くにはユーザーパスワードが必要です)が、開いた後の利用制限はありません。
|
||||
|
||||
## 暗号化の詳細
|
||||
|
||||
- **アルゴリズム**:AES-256(256ビット Advanced Encryption Standard)
|
||||
- **鍵長**:256ビット
|
||||
- **規格**:PDF 2.0暗号化(QPDF実装)
|
||||
|
||||
AES-256は、現在の技術ではブルートフォースで破ることが計算上不可能です。暗号化したPDFの安全性は、パスワードの強度にかかっています。
|
||||
|
||||
## 活用例
|
||||
|
||||
- 機密性の高い財務レポートをメールで送る前に保護する
|
||||
- 相手方の弁護士と共有する法的文書を保護する
|
||||
- 医療記録や個人を特定できる情報にパスワードを設定する
|
||||
- 有料コンテンツ(電子書籍やレポート)をアクセス制御付きで配布する
|
||||
- 保存時の暗号化を求めるデータ保護ポリシーに準拠する
|
||||
|
||||
## ヒント
|
||||
|
||||
- 強力で一意なパスワードを使用してください。大文字小文字、数字、記号を混ぜた12文字以上のパスフレーズが理想的です。
|
||||
- パスワードは、PDFと同じメールではなく、電話やテキストメッセージなど別の経路で共有してください。
|
||||
- 開くときのパスワードは不要で、操作(印刷不可、コピー不可など)だけを制限したい場合は、代わりに権限の変更ツールを使用してください。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [PDFの復号化](./unlock-pdf):パスワードがわかっている場合に暗号化を解除
|
||||
- [権限の変更](./change-permissions):特定の利用制限を変更
|
||||
- [制限の解除](./remove-restrictions):PDFからすべてのセキュリティを削除
|
||||
- [PDFのサニタイズ](./sanitize-pdf):暗号化する前に隠れたコンテンツを削除
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: PSDからPDF
|
||||
description: Photoshop(PSD)ファイルをブラウザ上でPDFに変換します。無料でプライバシーも安心、Adobeソフトウェアは不要です。
|
||||
---
|
||||
|
||||
# PSDからPDF
|
||||
|
||||
Adobe PhotoshopのPSDファイルをPDFドキュメントに変換します。PSDはPhotoshopのネイティブ形式で、通常は高価なAdobeソフトウェアがないと開けません。このツールは、PSDファイルの統合済みの合成画像を、フル解像度のPDFページとして描画します。
|
||||
|
||||
## 対応フォーマット
|
||||
|
||||
| フォーマット | 拡張子 | 備考 |
|
||||
| :-------------- | :----- | :----------------------------- |
|
||||
| Adobe Photoshop | `.psd` | 統合済みの合成画像を描画します |
|
||||
|
||||
## 使い方
|
||||
|
||||
1. アップロード領域をクリックするか、PSDファイルをドラッグアンドドロップします。複数のファイルに対応しています。
|
||||
2. ファイル一覧を確認します。不要なファイルはゴミ箱アイコンで削除するか、**ファイルを追加**でさらに追加します。
|
||||
3. **PDFに変換**をクリックします。PyMuPDFエンジンがPSDファイルを読み込み、合成画像を元の解像度でPDFのページに埋め込みます。
|
||||
4. PSDが1つの場合はPDFが1つ生成されます。複数のPSDファイルをアップロードした場合は、`psd_to_pdf.pdf`という名前の1つの複数ページPDFにまとめられ、各PSDが1ページになります。
|
||||
|
||||
## オプション
|
||||
|
||||
設定は不要です。コンバーターはPSDファイルの統合済み画像データを使用します。
|
||||
|
||||
## 活用例
|
||||
|
||||
- Photoshopを開かずにデザインをプレビューする
|
||||
- Adobe Creative Suiteを持っていないクライアントにデザインの校正を送る
|
||||
- PSDファイルの高解像度アートワークを印刷する
|
||||
- 複数のPSDデザインファイルからPDFポートフォリオを作成する(それぞれが1つのドキュメント内の1ページになります)
|
||||
|
||||
## ヒント
|
||||
|
||||
- 変換では、PSDの合成(統合済み)ビューが描画されます。個々のレイヤー、調整レイヤー、レイヤー効果は、PDFの中で別々の要素としては保持されません。
|
||||
- 複数のPSDファイルは、個別のPDFではなく1つの複数ページPDFに結合されます。ポートフォリオやルックブックの作成に便利です。
|
||||
- 解像度が非常に高いPSDファイル(300 DPI以上の印刷用ファイル)は、大きなPDFになります。このツールはフル解像度を保持します。
|
||||
|
||||
## 関連ツール
|
||||
|
||||
- [画像からPDF](./image-to-pdf)
|
||||
- [PNGからPDF](./png-to-pdf)
|
||||
- [VSDからPDF](./vsd-to-pdf)
|
||||
Loaded 100 of 3344 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user