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` перед комітом
|
||||
- Без коментарів у робочому коді (коментарі видаляються під час збірки)
|
||||
|
||||
## Процес pull request
|
||||
|
||||
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), щоб скористатися BentoPDF одразу, без встановлення.
|
||||
|
||||
### Варіант 2: розгорнути на власному сервері через Docker
|
||||
|
||||
> [!IMPORTANT]
|
||||
> Конвертація офісних файлів потребує `SharedArrayBuffer`, для чого потрібні обидва заголовки:
|
||||
>
|
||||
> - `Cross-Origin-Opener-Policy: same-origin`
|
||||
> - `Cross-Origin-Embedder-Policy: require-corp`
|
||||
> - безпечний контекст
|
||||
>
|
||||
> `http://localhost` підходить для локального тестування, бо браузери вважають loopback надійним. `http://192.168.x.x` та інші LAN-адреси зазвичай не підходять, тому конвертація 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 постачається у двох збірках: **Self-Hosted build** (`bentopdf-simple`, використана вище) для внутрішніх розгортань у командах і організаціях, та **Commercial build** (`bentopdf:latest`), яку використовує сам bentopdf.com і власники комерційної ліцензії для публічних розгортань. Обидві мають однакові PDF-інструменти, а Commercial build додає головний екран, FAQ, відгуки та футер bentopdf.com. Якщо вагаєтеся, обирайте Self-Hosted build.
|
||||
|
||||
Потім відкрийте `http://localhost:3000` у браузері.
|
||||
|
||||
> [!NOTE]
|
||||
> Якщо ви готуєте OCR-розгортання в ізольованому середовищі (air-gapped), окрім Tesseract worker, основного runtime та файлів traineddata, потрібно розмістити внутрішньо й шрифти текстового шару OCR. Повне налаштування описано в розділі [Самостійне розгортання](/uk/self-hosting/), зокрема `VITE_OCR_FONT_BASE_URL` і вбудований каталог `ocr-fonts/`.
|
||||
|
||||
### Варіант 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 та інші |
|
||||
| **Редагування й анотації** | Підпис, виділення, редагування (redact), заповнення форм, штампи |
|
||||
| **Організація** | Об’єднання, розділення, поворот, видалення сторінок, зміна порядку |
|
||||
| **Оптимізація** | Стиснення, відновлення, зведення (flatten), OCR |
|
||||
| **Безпека** | Шифрування, розшифрування, зняття обмежень |
|
||||
|
||||
## Підтримка браузерів
|
||||
|
||||
BentoPDF найкраще працює в сучасних браузерах:
|
||||
|
||||
- ✅ Chrome/Edge 90+
|
||||
- ✅ Firefox 90+
|
||||
- ✅ Safari 15+
|
||||
|
||||
## Наступні кроки
|
||||
|
||||
- [Переглянути всі інструменти](/uk/tools/)
|
||||
- [Розгорнути BentoPDF самостійно](/uk/self-hosting/)
|
||||
- [Долучитися до проєкту](/uk/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: /uk/getting-started
|
||||
- theme: alt
|
||||
text: Переглянути інструменти
|
||||
link: /uk/tools/
|
||||
- theme: alt
|
||||
text: Самостійне розгортання
|
||||
link: /uk/self-hosting/
|
||||
- theme: alt
|
||||
text: Комерційна ліцензія
|
||||
link: /uk/licensing
|
||||
|
||||
features:
|
||||
- icon: 🔒
|
||||
title: 100% приватно
|
||||
details: Ваші файли ніколи не залишають пристрій. Уся обробка відбувається локально у вашому браузері за допомогою WebAssembly.
|
||||
- icon: ⚡
|
||||
title: Швидко й безкоштовно
|
||||
details: Без реєстрації, без обмежень, без водяних знаків. Обробляйте необмежену кількість PDF безкоштовно та назавжди.
|
||||
- icon: 🛠️
|
||||
title: 50+ інструментів
|
||||
details: Конвертуйте, редагуйте, об’єднуйте, розділяйте, стискайте, підписуйте, розпізнавайте (OCR) та багато іншого. Усе потрібне в одному місці.
|
||||
|
||||
- icon: 🌐
|
||||
title: Можна розгорнути самостійно
|
||||
details: Розгортайте на власній інфраструктурі. Docker, Vercel, Netlify, AWS або повністю ізольовані (air-gapped) середовища з власними OCR-воркерами, мовними даними та шрифтами текстового шару.
|
||||
---
|
||||
|
||||
## OCR офлайн
|
||||
|
||||
Якщо ви самостійно розгортаєте BentoPDF в ізольованому або офлайн-середовищі, для OCR потрібні не лише Tesseract worker і файли traineddata. Для пошукового PDF також потрібно внутрішньо віддавати шрифти текстового шару OCR.
|
||||
Повне налаштування, зокрема `VITE_OCR_FONT_BASE_URL`, вбудований каталог `ocr-fonts/` та оновлений процес для ізольованих середовищ, дивіться в розділі [Самостійне розгортання](/uk/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](/uk/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
|
||||
|
||||
Розмістіть BentoPDF за допомогою Apache HTTP Server.
|
||||
|
||||
## Вимоги
|
||||
|
||||
- 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
|
||||
```
|
||||
|
||||
## Усунення несправностей
|
||||
|
||||
### Помилки 404 для WASM
|
||||
|
||||
Переконайтеся, що налаштовано MIME-тип:
|
||||
|
||||
```apache
|
||||
AddType application/wasm .wasm
|
||||
```
|
||||
|
||||
### Sign PDF або Form Filler показує порожній переглядач (помилка MIME для `.mjs`)
|
||||
|
||||
Якщо в консолі браузера з'являється:
|
||||
|
||||
```
|
||||
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-переглядач постачає файли ES-модулів з розширенням `.mjs`, а стандартний `mime.types` в Apache їх за замовчуванням не містить.
|
||||
|
||||
Додайте до VirtualHost або `.htaccess`:
|
||||
|
||||
```apache
|
||||
AddType application/javascript .mjs
|
||||
```
|
||||
|
||||
Потім перезавантажте Apache:
|
||||
|
||||
```bash
|
||||
sudo apache2ctl configtest && sudo systemctl reload apache2
|
||||
```
|
||||
|
||||
Щоб перевірити: у DevTools браузера → вкладка Network знайдіть невдалий запит `.mjs` і перегляньте заголовок відповіді `Content-Type`. Тепер він має бути `application/javascript`, а не `application/octet-stream`.
|
||||
|
||||
### Rewrite не працює
|
||||
|
||||
Перевірте, чи увімкнено 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-адреси зазвичай вимагають HTTPS. Якщо заголовки є, але `window.crossOriginIsolated` усе ще `false`, перевірте, чи сторінка не відкривається через звичайний HTTP з origin, що не є loopback.
|
||||
|
||||
Попередньо стиснуті файли `.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
|
||||
|
||||
Розмістіть BentoPDF на AWS для максимального контролю та масштабованості.
|
||||
|
||||
## Архітектура
|
||||
|
||||
```
|
||||
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 → Create distribution
|
||||
2. Origin domain: виберіть свій бакет S3
|
||||
3. Увімкніть "Origin Access Control"
|
||||
4. Default root object: `index.html`
|
||||
5. Створіть дистрибуцію
|
||||
|
||||
## Крок 3b: політика заголовків відповіді (обов'язково для LibreOffice WASM)
|
||||
|
||||
Конвертація на основі LibreOffice (Word, Excel, PowerPoint у PDF) потребує `SharedArrayBuffer`, для чого потрібні певні заголовки відповіді. Створіть CloudFront Response Headers Policy:
|
||||
|
||||
1. Перейдіть до CloudFront → Policies → Response headers
|
||||
2. Створіть власну політику з такими заголовками:
|
||||
|
||||
| Заголовок | Значення |
|
||||
| ------------------------------ | -------------- |
|
||||
| `Cross-Origin-Embedder-Policy` | `require-corp` |
|
||||
| `Cross-Origin-Opener-Policy` | `same-origin` |
|
||||
| `Cross-Origin-Resource-Policy` | `cross-origin` |
|
||||
|
||||
3. Прикріпіть політику до стандартної поведінки кешу (default cache behavior) вашої дистрибуції
|
||||
|
||||
Або через 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: метадані S3 для попередньо стиснутих файлів WASM
|
||||
|
||||
Файли 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%. Без правильного Content-Encoding для файлів `.gz` браузер отримує необроблені байти 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: власні сторінки помилок
|
||||
|
||||
Налаштуйте повернення `index.html` для 404 для маршрутизації SPA:
|
||||
|
||||
1. CloudFront → Error pages
|
||||
2. Створіть власну відповідь на помилку:
|
||||
- HTTP error code: 404
|
||||
- Response page path: `/index.html`
|
||||
- HTTP response code: 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
|
||||
|
||||
## Конфігурація збірки
|
||||
|
||||
| Параметр | Значення |
|
||||
| ---------------------- | --------------- |
|
||||
| Framework preset | None |
|
||||
| Build command | `npm run build` |
|
||||
| Build output directory | `dist` |
|
||||
| Root directory | `/` |
|
||||
|
||||
## Змінні середовища
|
||||
|
||||
Додайте їх у Settings → Environment variables:
|
||||
|
||||
| Змінна | Значення |
|
||||
| ----------------------- | ---------------------------------------------------- |
|
||||
| `NODE_VERSION` | `18` |
|
||||
| `SIMPLE_MODE` | `false` (необов'язково) |
|
||||
| `VITE_BRAND_NAME` | Власна назва бренду (необов'язково) |
|
||||
| `VITE_BRAND_LOGO` | Шлях до логотипа відносно `public/` (необов'язково) |
|
||||
| `VITE_FOOTER_TEXT` | Власний текст футера/авторських прав (необов'язково) |
|
||||
| `VITE_DEFAULT_LANGUAGE` | Типова мова інтерфейсу, напр. `fr` (необов'язково) |
|
||||
|
||||
## Файл конфігурації
|
||||
|
||||
Створіть `_headers` у папці `public`:
|
||||
|
||||
```
|
||||
# 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 Важливо
|
||||
Заголовки `Cross-Origin-Embedder-Policy` і `Cross-Origin-Opener-Policy` обов'язкові для конвертації Word/ODT/Excel/PowerPoint у PDF. Без них `SharedArrayBuffer` недоступний, і рушій LibreOffice WASM не зможе ініціалізуватися.
|
||||
:::
|
||||
|
||||
Створіть `_redirects` для маршрутизації SPA:
|
||||
|
||||
```
|
||||
/* /index.html 200
|
||||
```
|
||||
|
||||
## Власний домен
|
||||
|
||||
1. Перейдіть до свого проєкту Pages
|
||||
2. Натисніть "Custom domains"
|
||||
3. Додайте свій домен
|
||||
4. Cloudflare автоматично налаштує DNS, якщо домен розміщено на Cloudflare
|
||||
|
||||
## Переваги
|
||||
|
||||
- **Безкоштовний необмежений трафік**
|
||||
- **Глобальна CDN** з понад 300 вузлами
|
||||
- **Автоматичний HTTPS**
|
||||
- **Попередні розгортання** для pull request
|
||||
- **Швидкі збірки**
|
||||
|
||||
## Усунення несправностей
|
||||
|
||||
### Завантаження великих файлів
|
||||
|
||||
Cloudflare Pages підтримує файли до 25 MB. Модулі WASM мають вміститися, але якщо ви впираєтеся в ліміти, розгляньте:
|
||||
|
||||
```bash
|
||||
# Split large files during build
|
||||
npm run build
|
||||
```
|
||||
|
||||
### Ліміти розміру Worker
|
||||
|
||||
Якщо ви використовуєте Cloudflare Workers для складної маршрутизації, зверніть увагу на ліміт 1 MB для безкоштовних планів.
|
||||
|
||||
## Worker CORS-проксі (для цифрових підписів)
|
||||
|
||||
Інструмент цифрового підпису потребує CORS-проксі для отримання ланцюжків сертифікатів. Розгорніть вбудований worker:
|
||||
|
||||
```bash
|
||||
cd cloudflare
|
||||
npx wrangler login
|
||||
npx wrangler deploy
|
||||
```
|
||||
|
||||
### Функції безпеки
|
||||
|
||||
| Функція | Опис |
|
||||
| --------------------------- | ------------------------------- |
|
||||
| **Обмеження URL** | Дозволено лише URL сертифікатів |
|
||||
| **Ліміт розміру файлу** | Макс. 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-проксі для отримання сертифікатів
|
||||
|
||||
Інструмент цифрового підпису використовує CORS-проксі, щоб отримувати сертифікати емітентів із зовнішніх центрів сертифікації (CA). Це потрібно, бо багато серверів CA не додають заголовків CORS у відповіді, що унеможливлює пряме отримання з браузера.
|
||||
|
||||
Крім того, багато серверів CA віддають сертифікати через звичайний HTTP. Коли ваш екземпляр BentoPDF розміщено через HTTPS, браузери блокують такі HTTP-запити (політика змішаного контенту). CORS-проксі вирішує обидві проблеми, спрямовуючи запити через HTTPS-ендпоінт із потрібними заголовками.
|
||||
|
||||
## Як це працює
|
||||
|
||||
Під час підписання PDF сертифікатом:
|
||||
|
||||
1. Бібліотека `zgapdfsigner` намагається побудувати повний ланцюжок сертифікатів
|
||||
2. Вона отримує сертифікати емітентів за URL, вбудованими в розширення AIA (Authority Information Access) вашого сертифіката
|
||||
3. Ці запити проходять через CORS-проксі, який додає потрібні заголовки `Access-Control-Allow-Origin`
|
||||
4. Проксі повертає дані сертифіката в браузер
|
||||
|
||||
## Самостійне розгортання CORS-проксі
|
||||
|
||||
Якщо ви самостійно розгортаєте BentoPDF, вам потрібно розгорнути власний CORS-проксі, щоб цифрові підписи працювали із сертифікатами, які потребують отримання ланцюжка.
|
||||
|
||||
### Варіант 1: Cloudflare Workers (рекомендовано)
|
||||
|
||||
1. **Встановіть Wrangler CLI**:
|
||||
|
||||
```bash
|
||||
npm install -g wrangler
|
||||
```
|
||||
|
||||
2. **Увійдіть у Cloudflare**:
|
||||
|
||||
```bash
|
||||
wrangler login
|
||||
```
|
||||
|
||||
3. **Клонуйте BentoPDF і змініть дозволені origin**:
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
Запам'ятайте URL вашого worker (напр., `https://bentopdf-cors-proxy.your-subdomain.workers.dev`).
|
||||
|
||||
5. **Перезберіть BentoPDF з URL проксі**:
|
||||
|
||||
Якщо використовуєте 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. Приймати GET-запити з параметром запиту `url`
|
||||
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 має кілька заходів безпеки:
|
||||
|
||||
| Функція | Опис |
|
||||
| --------------------------- | ------------------------------------------------------------------------------------------ |
|
||||
| **Перевірка origin** | Дозволяє запити лише з доменів зі списку `ALLOWED_ORIGINS` |
|
||||
| **Обмеження URL** | Дозволяє лише URL сертифікатів (`.crt`, `.cer`, `.pem`, `/certs/`, `/ocsp`, `/crl`) |
|
||||
| **Блокування приватних IP** | Блокує приватні діапазони IPv4/IPv6, link-local, loopback, десяткові IP та метадані хмари |
|
||||
| **Безпечний Content-Type** | Повертає лише безпечні MIME-типи сертифікатів, блокує підміну content-type від джерела |
|
||||
| **Ліміт розміру файлу** | Передає відповідь потоком з лімітом 10MB, перериває завантаження, якщо його перевищено |
|
||||
| **Обмеження частоти** | 60 запитів на хвилину на IP або IPv6 /64 (потрібен KV, у разі помилок KV пропускає запити) |
|
||||
| **Підписи HMAC** | Необов'язкове підписування на стороні клієнта (стримує випадкові зловживання) |
|
||||
|
||||
### DNS rebinding (самостійне розгортання поза Cloudflare)
|
||||
|
||||
Worker відхиляє будь-який URL, що вказує на приватну або внутрішню IP-адресу. Він не може використовувати фіксований список дозволених хостів, бо URL ланцюжків сертифікатів вказують на будь-який CA, що видав сертифікат (FNMT, корпоративні CA тощо), тож призначення наперед невідомі. Через це залишається невелике вікно для rebinding: той, хто керує DNS власного домену, може віддати публічну IP під час перевірки безпеки, а приватну в реальному запиті за мить.
|
||||
|
||||
На Cloudflare це не експлуатується: Workers не мають доступу до приватних IP чи ендпоінта метаданих `169.254.169.254`, тож rebind нікуди не веде. Просто не давайте worker шляху всередину: не підключайте Tunnel, Service чи binding приватної мережі (йому потрібен лише `RATE_LIMIT_KV`).
|
||||
|
||||
Якщо ви запускаєте це поза Cloudflare (workerd, Node тощо) усередині VPC, середовище _може_ звертатися до внутрішніх IP. Поставте перед ним egress-фаєрвол і заблокуйте приватні діапазони: `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-проксі відхиляє ваш origin**: перевірте, чи ваш домен є в масиві `ALLOWED_ORIGINS` у `cors-proxy-worker.js`
|
||||
|
||||
### "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]
|
||||
> **Обов'язкові заголовки для конвертації офісних файлів**
|
||||
>
|
||||
> Інструменти на основі LibreOffice (конвертація Word, Excel, PowerPoint) потребують таких HTTP-заголовків для підтримки `SharedArrayBuffer`:
|
||||
>
|
||||
> - `Cross-Origin-Opener-Policy: same-origin`
|
||||
> - `Cross-Origin-Embedder-Policy: require-corp`
|
||||
>
|
||||
> Сторінка також має віддаватися з безпечного контексту. `http://localhost` підходить для локального тестування, але `http://192.168.x.x` та інші LAN-адреси зазвичай не відповідають вимогам, тому конвертація Office через звичайний HTTP не працюватиме, навіть якщо заголовки присутні.
|
||||
>
|
||||
> Офіційні образи контейнерів містять ці заголовки. Якщо ви використовуєте зворотний проксі (Traefik, Caddy тощо), переконайтеся, що ці заголовки зберігаються або додаються, і використовуйте HTTPS для доступу не з loopback.
|
||||
|
||||
> [!TIP]
|
||||
> **Користувачам Podman:** усі команди `docker` працюють з Podman, якщо замінити `docker` на `podman`, а `docker-compose` на `podman-compose`.
|
||||
|
||||
## Швидкий старт
|
||||
|
||||
> [!TIP]
|
||||
> BentoPDF постачається у двох збірках:
|
||||
>
|
||||
> - **Self-Hosted build**: `ghcr.io/alam00000/bentopdf-simple:latest`. Усі PDF-інструменти, **без** маркетингових елементів (без головного екрана, FAQ, відгуків і футера). Використовуйте для внутрішніх розгортань у командах і організаціях. Це **не** урізана "lite"-версія.
|
||||
> - **Commercial build**: `ghcr.io/alam00000/bentopdf:latest`. Повний маркетинговий сайт, який використовує сам bentopdf.com і власники комерційної ліцензії для публічних розгортань.
|
||||
>
|
||||
> Якщо вагаєтеся, беріть Self-Hosted build.
|
||||
|
||||
```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` | Зібрати варіант Self-Hosted (ховає маркетингові елементи bentopdf.com: головний екран, FAQ, відгуки, футер). Усі PDF-інструменти залишаються. | `false` |
|
||||
| `BASE_URL` | Розгортання в підкаталозі | `/` |
|
||||
| `VITE_WASM_PYMUPDF_URL` | URL модуля PyMuPDF WASM | `https://cdn.jsdelivr.net/npm/@bentopdf/pymupdf-wasm@0.11.16/` |
|
||||
| `VITE_WASM_GS_URL` | URL модуля Ghostscript WASM | `https://cdn.jsdelivr.net/npm/@bentopdf/gs-wasm@0.1.1/assets/` |
|
||||
| `VITE_WASM_CPDF_URL` | URL модуля CoherentPDF WASM | `https://cdn.jsdelivr.net/npm/coherentpdf@2.5.5/dist/` |
|
||||
| `VITE_TESSERACT_WORKER_URL` | URL скрипта OCR worker | _(порожньо; CDN Tesseract.js за замовчуванням)_ |
|
||||
| `VITE_TESSERACT_CORE_URL` | Каталог основного runtime OCR | _(порожньо; CDN Tesseract.js за замовчуванням)_ |
|
||||
| `VITE_TESSERACT_LANG_URL` | Каталог traineddata OCR | _(порожньо; CDN Tesseract.js за замовчуванням)_ |
|
||||
| `VITE_TESSERACT_AVAILABLE_LANGUAGES` | Мови OCR через кому, що відображаються в інтерфейсі | _(порожньо; показати повний каталог)_ |
|
||||
| `VITE_OCR_FONT_BASE_URL` | Каталог шрифтів текстового шару OCR | _(порожньо; використовувати віддалені URL шрифтів Noto)_ |
|
||||
| `VITE_DEFAULT_LANGUAGE` | Типова мова інтерфейсу | `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 під час завантаження сторінки та прибрати `api.github.com` із CSP. Збірки Simple Mode завжди це пропускають. | `false` |
|
||||
| `SITE_URL` | Публічний URL, що записується в canonical, hreflang і посилання sitemap. Залиште типовим, якщо не хочете, щоб пошукові системи сприймали ваше розгортання як окремий сайт. | `https://www.bentopdf.com` |
|
||||
| `ALLOW_INDEXING` | Із власним `SITE_URL` кожну сторінку позначено `noindex`, щоб ваша копія не конкурувала з bentopdf.com у пошуку. Задайте `true`, щоб дозволити пошуковим системам її індексувати. | `false` |
|
||||
|
||||
URL модулів WASM попередньо налаштовано з типовими значеннями CDN, тому всі розширені функції працюють одразу. Перевизначте їх для ізольованих (air-gapped) або самостійно розгорнутих середовищ.
|
||||
|
||||
### Пошукові системи
|
||||
|
||||
За замовчуванням кожна сторінка вказує пошуковим системам на 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` **генеруються під час збірки** зі змінних URL `VITE_*` вище: усі хости, які ви передаєте через `--build-arg`, автоматично додаються до політики.
|
||||
|
||||
Отже:
|
||||
|
||||
- Якщо ви перевизначаєте `VITE_CORS_PROXY_URL` або `VITE_WASM_*_URL` під час збірки, CSP автоматично дозволяє ці origin, додаткове налаштування не потрібне.
|
||||
- Для URL на `cdn.jsdelivr.net` `script-src` дозволяє лише точну версійну папку пакета, наприклад `https://cdn.jsdelivr.net/npm/@bentopdf/pymupdf-wasm@0.11.16/`, а не весь CDN. jsDelivr віддає будь-який публічний пакет npm або репозиторій GitHub, тож дозвіл усього хоста дав би змогу запускати будь-який із них на вашому екземплярі. URL на будь-яких інших хостах дозволяються за origin.
|
||||
- Якщо ви налаштовуєте власні URL WASM під час _роботи_ через сторінку «Додаткові налаштування» у застосунку, ці origin **не** потрапляють до CSP, і браузер блокуватиме запити до них. Це також стосується іншої версії того самого пакета на `cdn.jsdelivr.net`, бо дозволено лише версію, задану під час збірки. Налаштування під час роботи призначене для експериментів; для постійних власних URL задайте відповідний build arg `VITE_*`.
|
||||
- Ізольовані розгортання, що перевизначають усі три значення `VITE_WASM_*_URL`, також позбуваються цих папок пакетів `cdn.jsdelivr.net` у CSP (кожне типове значення замінюється, а не доповнюється). Типові значення Tesseract OCR на `cdn.jsdelivr.net` залишаються в політиці, доки ви також не задасте три значення `VITE_TESSERACT_*`. Так само задання `VITE_CORS_PROXY_URL` замінює публічне типове значення `bentopdf-cors-proxy.bentopdf.workers.dev`.
|
||||
|
||||
CSP містить `'unsafe-eval'` у `script-src`, тому що runtime 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. Часткові перевизначення OCR відхиляються, бо worker, основний runtime і каталог traineddata мають збігатися. Для повністю офлайн-виводу пошукового PDF також задайте `VITE_OCR_FONT_BASE_URL`, щоб шрифти текстового шару OCR завантажувалися з вашого внутрішнього сервера, а не з публічних URL шрифтів Noto.
|
||||
|
||||
`VITE_DEFAULT_LANGUAGE` задає мову інтерфейсу для нових відвідувачів. Підтримувані значення: `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, і його можна поєднувати з усіма іншими параметрами збірки.
|
||||
|
||||
### Вимкнення окремих інструментів
|
||||
|
||||
Ховайте інструменти з інтерфейсу з міркувань відповідності вимогам або безпеки. Вимкнені інструменти прибираються з головної сторінки, результатів пошуку, клавіатурних скорочень і конструктора робочих процесів. Прямий доступ за 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: під час збірки (build arg 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-редактора (наприклад, редагування (redaction), анотації, форми), не вимикаючи весь інструмент редактора. Додайте `editorDisabledCategories` до `config.json`:
|
||||
|
||||
```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
|
||||
|
||||
Навігаційна панель показує актуальну кількість зірок GitHub, яку отримують з `api.github.com` під час завантаження сторінки. Це єдиний зовнішній запит, що не обслуговує жодну функцію PDF. Вимкніть його під час збірки, щоб прибрати код отримання з бандла та `api.github.com` із Content-Security-Policy:
|
||||
|
||||
```bash
|
||||
docker build --build-arg DISABLE_GITHUB_STARS=true -t bentopdf .
|
||||
```
|
||||
|
||||
Збірки Simple Mode (`bentopdf-simple`) завжди пропускають лічильник зірок: цей прапорець потрібен лише для Commercial build або власних повних збірок.
|
||||
|
||||
### Власні URL WASM (ізольовані / самостійно розгорнуті середовища)
|
||||
|
||||
> [!IMPORTANT]
|
||||
> URL WASM вшиваються в 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
|
||||
```
|
||||
|
||||
Для `--ocr-languages` використовуйте коди, які виводить `bash scripts/prepare-airgap.sh --list-ocr-languages`, або шукайте за назвою через `bash scripts/prepare-airgap.sh --search-ocr-language <term>`. Коли ви збираєте з обмеженим набором мов 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` |
|
||||
|
||||
Це працює і зі стандартним, і з nonroot Dockerfile.
|
||||
|
||||
## Власний ID користувача (PUID/PGID)
|
||||
|
||||
Для середовищ, які вимагають запуску від конкретного користувача без прав root (NAS-пристрої, Kubernetes із контекстами безпеки, організаційні політики), BentoPDF надає окремий Dockerfile з підтримкою PUID/PGID у стилі LSIO.
|
||||
|
||||
### Збірка і запуск
|
||||
|
||||
```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]
|
||||
> Для розгортання на рівні системи використовуйте `systemctl` без прапорця `--user` і помістіть файл у `/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) це популярний провайдер спільного хостингу. Цей посібник описує розгортання BentoPDF на спільному хостингу Hostinger.
|
||||
|
||||
## Вимоги
|
||||
|
||||
- Тарифний план 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. Перейдіть до **File Manager** → **public_html**
|
||||
3. **Видаліть** усі наявні файли (за потреби зробіть резервну копію)
|
||||
4. **Завантажте** весь вміст локальної папки `dist` до `public_html`
|
||||
|
||||
### Розгортання в підкаталозі
|
||||
|
||||
Якщо розгортаєте в підкаталозі (напр., `yourdomain.com/pdf-tools/`):
|
||||
|
||||
1. Зберіть із правильним базовим URL:
|
||||
|
||||
```bash
|
||||
BASE_URL=/pdf-tools/ npm run build
|
||||
```
|
||||
|
||||
2. Створіть папку в Hostinger:
|
||||
- Перейдіть до **File Manager** → **public_html**
|
||||
- Створіть нову папку: `pdf-tools`
|
||||
3. Завантажте весь вміст `dist` до `public_html/pdf-tools/`
|
||||
|
||||
## Крок 3: створіть файл .htaccess
|
||||
|
||||
Створіть файл `.htaccess` у корені вашої папки розгортання (`public_html` або `public_html/pdf-tools/`):
|
||||
|
||||
::: 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 не завантажуються
|
||||
|
||||
Переконайтеся, що MIME-типи правильно задано в `.htaccess`:
|
||||
|
||||
```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 використовує статичні HTML-файли, а не маршрутизацію SPA:
|
||||
|
||||
```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 постачається у двох збірках:
|
||||
>
|
||||
> - **Збірка для самостійного розміщення** (Self-Hosted): `ghcr.io/alam00000/bentopdf-simple:latest`. Усі PDF-інструменти, **без** маркетингового оформлення (без hero-блоку, FAQ, відгуків і футера). Використовуйте її для внутрішніх розгортань у команді чи організації. Це **не** урізана "lite"-версія.
|
||||
> - **Комерційна збірка** (Commercial): `ghcr.io/alam00000/bentopdf:latest`. Повний маркетинговий сайт, який використовує сам bentopdf.com і власники комерційної ліцензії з публічними розгортаннями.
|
||||
>
|
||||
> Якщо вагаєтеся, беріть збірку для самостійного розміщення.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> Перетворення офісних файлів потребує `SharedArrayBuffer`, а отже застосунок має бути і ізольованим між походженнями (cross-origin isolated), і обслуговуватися з безпечного контексту. Офіційний образ уже надсилає потрібні заголовки COOP/COEP, але браузери все одно вимикають `SharedArrayBuffer` на звичайних HTTP-адресах локальної мережі, як-от `http://192.168.x.x`.
|
||||
>
|
||||
> Використовуйте `http://localhost` лише для тестування на одному пристрої. Якщо користувачі відкривають BentoPDF через LAN IP або ім’я хоста, налаштуйте 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](/uk/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
|
||||
```
|
||||
|
||||
## Параметри конфігурації
|
||||
|
||||
### Збірка для самостійного розміщення (Simple Mode)
|
||||
|
||||
Збірка для самостійного розміщення (образ `bentopdf-simple`, також званий Simple Mode) **функціонально ідентична** комерційній збірці: усі PDF-інструменти на місці й працюють однаково. Вона лише приховує маркетингове оформлення, яке має сенс тільки на самому bentopdf.com або в комерційному публічному розгортанні. **Це не урізана чи "lite"-версія.**
|
||||
|
||||
**Що приховує збірка для самостійного розміщення** (лише косметика, жодні функції PDF не вилучаються):
|
||||
|
||||
- Панель навігації, hero-секцію, секцію переваг, FAQ, відгуки, футер
|
||||
- Змінює заголовок сторінки на "PDF інструменти"
|
||||
|
||||
**Що зберігає збірка для самостійного розміщення** (усе, що справді працює з PDF):
|
||||
|
||||
- Усі PDF-інструменти (об’єднання, розділення, редагування, підпис, OCR, перетворення офісних файлів тощо)
|
||||
- Підтримку власного брендингу, усі налаштування часу збірки та виконання
|
||||
|
||||
Комерційна збірка (`ghcr.io/alam00000/bentopdf:latest`) живить сам bentopdf.com і використовується власниками комерційної ліцензії з публічними розгортаннями. Вона додає hero-блок, 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. Вона містить повний маркетинговий сайт (hero, переваги, FAQ, відгуки, футер) на додачу до всіх PDF-інструментів. Використовуйте цю збірку, коли хочете **розгорнути BentoPDF як публічний PDF-сервіс під власним брендом**, наприклад:
|
||||
|
||||
- Ви запускаєте BentoPDF як хмарний сервіс (SaaS) для кінцевих користувачів на власному домені
|
||||
- Вам потрібен досвід лендингу (маркетингові секції + інструменти), а не лише голий набір інструментів
|
||||
- Ви власник комерційної ліцензії та вбудовуєте 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`, перевизначення URL для WASM тощо) працюють так само, як і в збірці для самостійного розміщення.
|
||||
|
||||
::: warning Ліцензування
|
||||
Запуск комерційної збірки дозволений за будь-яким із двох варіантів ліцензії BentoPDF:
|
||||
|
||||
- **AGPL-3.0** (безкоштовно): дозволено, якщо ваше розгортання публікує повний вихідний код під AGPL, включно з будь-якими змінами брендингу та навколишньою бізнес-логікою.
|
||||
- **Комерційна ліцензія** ($79 довічно): потрібна для закритих/пропрієтарних розгортань, де ви не відкриваєте вихідний код свого форка з брендингом чи бізнес-код.
|
||||
|
||||
Повне порівняння дивіться на [сторінці ліцензування](https://www.bentopdf.com/licensing). WASM-модулі під AGPL (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 .
|
||||
```
|
||||
|
||||
Брендинг працює і в повному режимі, і в Simple Mode та поєднується з усіма іншими параметрами часу збірки (`BASE_URL`, `SIMPLE_MODE`, `VITE_DEFAULT_LANGUAGE`).
|
||||
|
||||
### Вимкнення окремих інструментів
|
||||
|
||||
Приховуйте окремі інструменти з міркувань відповідності вимогам або безпеки. Вимкнені інструменти вилучаються з головної сторінки, пошуку, ярликів, конструктора робочих процесів і прямого доступу за URL.
|
||||
|
||||
Ідентифікатори інструментів є URL сторінки без `.html`: відкрийте будь-який інструмент і подивіться на 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 (наприклад, редагування вмісту) без вимкнення всього інструмента, додавши `editorDisabledCategories` до `config.json`. Повний перелік категорій дивіться в [посібнику з Docker](/uk/self-hosting/docker#вимкнення-функціи-редактора).
|
||||
|
||||
## Посібники з розгортання
|
||||
|
||||
Виберіть свою платформу:
|
||||
|
||||
- [Vercel](/uk/self-hosting/vercel)
|
||||
- [Netlify](/uk/self-hosting/netlify)
|
||||
- [Cloudflare Pages](/uk/self-hosting/cloudflare)
|
||||
- [AWS S3 + CloudFront](/uk/self-hosting/aws)
|
||||
- [Hostinger](/uk/self-hosting/hostinger)
|
||||
- [Nginx](/uk/self-hosting/nginx)
|
||||
- [Apache](/uk/self-hosting/apache)
|
||||
- [Docker](/uk/self-hosting/docker)
|
||||
- [Kubernetes](/uk/self-hosting/kubernetes)
|
||||
- [CORS-проксі](/uk/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`, який браузер вмикає лише тоді, коли сторінка **ізольована між походженнями** І обслуговується з **безпечного контексту**. Тобто мають виконуватися дві умови:
|
||||
|
||||
1. Кожна відповідь містить обидва заголовки:
|
||||
- `Cross-Origin-Embedder-Policy: require-corp`
|
||||
- `Cross-Origin-Opener-Policy: same-origin`
|
||||
2. Сторінка обслуговується через `https://...` або `http://localhost`. Звичайний HTTP на LAN IP (наприклад, `http://192.168.x.x`) безпечним НЕ вважається: браузери вимикають там `SharedArrayBuffer`.
|
||||
|
||||
Невідповідність `00 61 73 6d / 1f 8b 08 08` є окремим підсимптомом: у попередньо стиснутих файлів `.wasm.gz` / `.data.gz` відсутній заголовок відповіді `Content-Encoding: gzip`, тож браузер отримує сирі байти gzip замість розпакованого WASM.
|
||||
|
||||
**Рішення**: точну конфігурацію дивіться в посібнику для вашої платформи:
|
||||
|
||||
- [Nginx →](/uk/self-hosting/nginx#не-працює-перетворення-word-odt-excel-у-pdf)
|
||||
- [Apache →](/uk/self-hosting/apache#конвертація-word-odt-excel-у-pdf-не-працює)
|
||||
- [AWS S3 + CloudFront →](/uk/self-hosting/aws#крок-3b-політика-заголовків-відповіді-обов-язково-для-libreoffice-wasm)
|
||||
- [Cloudflare Pages →](/uk/self-hosting/cloudflare#фаил-конфігураціі) (файл `_headers`)
|
||||
- [Netlify →](/uk/self-hosting/netlify#перетворення-word-odt-excel-у-pdf-зависає-на-55) (`netlify.toml`)
|
||||
- [Vercel →](/uk/self-hosting/vercel#не-працює-перетворення-word-odt-excel-у-pdf) (`vercel.json`)
|
||||
- [Hostinger →](/uk/self-hosting/hostinger#інструменти-libreoffice-не-працюють) (`.htaccess`)
|
||||
- [Kubernetes →](/uk/self-hosting/kubernetes#як-переконатися-що-заголовки-sharedarraybuffer-працюють-ingress-gateway)
|
||||
- **Docker**: обробляється автоматично вбудованою конфігурацією nginx, жодних дій не потрібно.
|
||||
|
||||
**Перевірка**: відкрийте консоль DevTools на будь-якій сторінці BentoPDF і виконайте:
|
||||
|
||||
```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` чи іншому не-loopback HTTP-походженні, налаштуйте HTTPS: рішення лише через заголовки не існує.
|
||||
|
||||
### Файли `.mjs` віддаються як `application/octet-stream`
|
||||
|
||||
**Симптом**: Sign 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.`
|
||||
|
||||
**Причина**: у вашого вебсервера або зворотного проксі немає зіставлення MIME-типу для файлів `.mjs` (вбудований PDF-переглядач постачає ES-модулі з таким розширенням). Багато стандартних конфігурацій серверів за замовчуванням віддають невідомі розширення як `application/octet-stream`, і браузери відмовляються виконувати їх як ES-модулі.
|
||||
|
||||
**Рішення**: точний фрагмент дивіться в посібнику для вашої платформи:
|
||||
|
||||
- [Nginx →](/uk/self-hosting/nginx#sign-pdf-або-form-filler-показує-порожніи-переглядач-помилка-mime-для-mjs)
|
||||
- [Apache →](/uk/self-hosting/apache#sign-pdf-або-form-filler-показує-порожніи-переглядач-помилка-mime-для-mjs)
|
||||
- [AWS S3 + CloudFront →](/uk/self-hosting/aws#крок-2-зберіть-і-завантажте) (дивіться `aws s3 cp ... --include "*.mjs"`)
|
||||
- [Kubernetes →](/uk/self-hosting/kubernetes#помилки-mime-типу-mjs-порожніи-iframe-у-sign-pdf-form-filler)
|
||||
- **Docker, Vercel, Netlify, Cloudflare Pages, Hostinger**: обробляється автоматично, жодних дій не потрібно.
|
||||
|
||||
**Перевірка**: відкрийте DevTools → вкладка Network, знайдіть запит `.mjs`, що завершився помилкою, і перевірте заголовок відповіді `Content-Type`. Він має бути `application/javascript`. Якщо там досі `application/octet-stream`, зовнішній зворотний проксі чи CDN, можливо, повторно визначає тип: перевірте кожен рівень у ланцюжку обслуговування.
|
||||
|
||||
## Конфігурація WASM (компоненти під AGPL)
|
||||
|
||||
BentoPDF **не вбудовує** бібліотеки обробки під ліцензією AGPL у свій вихідний код, але **попередньо налаштовує URL-адреси CDN**, тож усі функції працюють одразу, без ручного налаштування.
|
||||
|
||||
::: tip Нульова конфігурація за замовчуванням
|
||||
Починаючи з v2.0.0 модулі WASM попередньо налаштовані на завантаження з CDN jsDelivr через змінні середовища. Усі розширені функції працюють одразу без жодного налаштування користувачем.
|
||||
:::
|
||||
|
||||
| Компонент | Ліцензія | Функції |
|
||||
| --------------- | -------- | ------------------------------------------------------------------ |
|
||||
| **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=
|
||||
```
|
||||
|
||||
### Перевизначення URL для WASM
|
||||
|
||||
Значення за замовчуванням можна перевизначити під час збірки для власних розгортань:
|
||||
|
||||
```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_*` порожніми й використовуйте онлайнові ресурси за замовчуванням, або задайте URL воркера/ядра/мовних даних разом для самостійно розміщеного/офлайн OCR. Якщо ви вбудовуєте лише окремі мови OCR, також задайте `VITE_TESSERACT_AVAILABLE_LANGUAGES` тими самими кодами через кому, щоб інтерфейс пропонував лише встановлені мови, а непідтримувані вибори завершувалися описовою помилкою. Для повністю офлайн-створення PDF із пошуком також задайте `VITE_OCR_FONT_BASE_URL` як внутрішній каталог, що віддає вбудовані шрифти OCR.
|
||||
|
||||
Користувачі також можуть будь-коли перевизначити ці значення через **Додаткові налаштування** в інтерфейсі: перевизначення, збережені в браузері, мають пріоритет над значеннями середовища за замовчуванням.
|
||||
|
||||
### Розгортання в ізольованій мережі / офлайн
|
||||
|
||||
Для мереж без доступу до інтернету (державні установи, охорона здоров’я, фінанси тощо). URL-адреси WASM вбудовуються в 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` | Увімкнути Simple Mode | вимк. |
|
||||
| `--base-url <path>` | Базовий URL підкаталогу (наприклад, `/pdf/`) | `/` |
|
||||
| `--language <code>` | Мова інтерфейсу за замовчуванням (наприклад, `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. Веб-воркери використовують `importScripts()`, який не може завантажувати скрипти з іншого походження. Наприклад, якщо BentoPDF працює на `https://internal.example.com`, базовий URL WASM також має бути `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: Зберіть образ Docker із внутрішніми URL**
|
||||
|
||||
```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
|
||||
- П’ять пакетів `.tgz` WASM/OCR з кроку 1
|
||||
- Каталог `tesseract-langdata/` з кроку 1
|
||||
- Каталог `ocr-fonts/` з кроку 1
|
||||
|
||||
**Крок 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
|
||||
```
|
||||
|
||||
Переконайтеся, що файли доступні за URL-адресами, налаштованими на кроці 2, зокрема `.../ocr/worker.min.js`, `.../ocr/core`, `.../ocr/lang-data` і `.../ocr/fonts`.
|
||||
|
||||
</details>
|
||||
|
||||
::: info Збираєте з вихідного коду замість Docker?
|
||||
Задайте змінні в `.env.production` перед запуском `npm run build`:
|
||||
|
||||
```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-проксі
|
||||
|
||||
Якщо потрібно віддавати файли WASM під AGPL із правильними заголовками CORS, можна розгорнути простий проксі. Приклад реалізації дивіться в [посібнику Cloudflare WASM Proxy](https://github.com/alam00000/bentopdf/blob/main/cloudflare/WASM-PROXY.md).
|
||||
|
||||
::: tip Навіщо розділення?
|
||||
Таке розділення забезпечує:
|
||||
|
||||
- Чітку юридичну відповідність для комерційних користувачів
|
||||
- Збереження ядра BentoPDF під його подвійною ліцензією (AGPL-3.0 / Commercial)
|
||||
- Завантаження файлів WASM під час виконання, а не вбудовування у вихідний код
|
||||
:::
|
||||
|
||||
## Системні вимоги
|
||||
|
||||
| Вимога | Мінімум |
|
||||
| ------- | ------------------------------- |
|
||||
| Сховище | ~100 МБ (ядро без модулів AGPL) |
|
||||
| RAM | 512 МБ |
|
||||
| CPU | Будь-який сучасний процесор |
|
||||
|
||||
::: tip
|
||||
BentoPDF є статичним сайтом: база даних чи серверна частина не потрібні!
|
||||
:::
|
||||
@@ -0,0 +1,211 @@
|
||||
# Розгортання в Kubernetes
|
||||
|
||||
Kubernetes може бути надмірним для статичного сайту, але він чудово підходить, якщо ви вже стандартизувалися на Helm + GitOps.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> **Обов’язкові заголовки для перетворення офісних файлів**
|
||||
>
|
||||
> Інструменти на основі LibreOffice (перетворення Word, Excel, PowerPoint) потребують таких HTTP-заголовків для підтримки `SharedArrayBuffer`:
|
||||
>
|
||||
> - `Cross-Origin-Opener-Policy: same-origin`
|
||||
> - `Cross-Origin-Embedder-Policy: require-corp`
|
||||
>
|
||||
> Офіційні образи BentoPDF на nginx містять ці заголовки. У Kubernetes **контролери Ingress/Gateway також є зворотними проксі**, тож переконайтеся, що ці заголовки зберігаються (або додайте їх на межі).
|
||||
|
||||
## Вимоги
|
||||
|
||||
- Кластер Kubernetes
|
||||
- Helm v3
|
||||
- Образ BentoPDF на nginx (наприклад, `ghcr.io/alam00000/bentopdf:<tag>`), що обслуговує **порт 8080**
|
||||
|
||||
## Розгортання через 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-чарт)
|
||||
|
||||
Якщо чарт опубліковано в GHCR як артефакт OCI:
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
## Відкриття доступу
|
||||
|
||||
### Port-forward (швидка перевірка)
|
||||
|
||||
```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):
|
||||
|
||||
```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)
|
||||
|
||||
### Що "має" відбуватися
|
||||
|
||||
Конфігурація nginx у BentoPDF встановлює потрібні заголовки відповіді. Більшість контролерів Ingress/Gateway **передають заголовки відповіді вихідного сервера без змін**.
|
||||
|
||||
### Що може це зламати
|
||||
|
||||
- Політика контролера/межі, що **перевизначає** або **видаляє** заголовки відповіді
|
||||
- Проміжне ПЗ "security headers", яке встановлює інші значення COOP/COEP
|
||||
|
||||
### Як перевірити
|
||||
|
||||
Виконайте це для свого публічного endpoint:
|
||||
|
||||
```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;
|
||||
```
|
||||
|
||||
## Помилки MIME-типу `.mjs` (порожній iframe у Sign PDF / Form Filler)
|
||||
|
||||
Якщо консоль браузера показує `Failed to load module script: ... non-JavaScript MIME type "application/octet-stream"` для запиту `.mjs`, то контролер Ingress/Gateway перед nginx BentoPDF підмінює заголовок `Content-Type` вихідного сервера на `application/octet-stream`.
|
||||
|
||||
nginx в образі BentoPDF уже віддає `.mjs` як `application/javascript`. Рішення: заборонити контролеру видаляти/замінювати його. Для nginx-ingress:
|
||||
|
||||
```yaml
|
||||
ingress:
|
||||
annotations:
|
||||
nginx.ingress.kubernetes.io/configuration-snippet: |
|
||||
location ~* \.mjs$ {
|
||||
types {} default_type application/javascript;
|
||||
}
|
||||
```
|
||||
|
||||
Або скористайтеся фільтром `ResponseHeaderModifier` у Gateway API, щоб встановити `Content-Type: application/javascript` для шляхів `.mjs`. Перевірте у 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
|
||||
```
|
||||
|
||||
Ідентифікатори інструментів є URL сторінки без `.html`: відкрийте будь-який інструмент і подивіться на URL (наприклад, `edit-pdf`, `merge-pdf`, `compress-pdf`). Вимкнені інструменти приховуються на головній сторінці, у пошуку, ярликах, конструкторі робочих процесів і при прямому доступі за URL. Повний перелік параметрів дивіться в [посібнику з Docker](/uk/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 Важливо
|
||||
Заголовки `Cross-Origin-Embedder-Policy` і `Cross-Origin-Opener-Policy` потрібні для перетворення Word/ODT/Excel/PowerPoint у PDF. Без них `SharedArrayBuffer` недоступний, і рушій LibreOffice WASM не зможе ініціалізуватися.
|
||||
|
||||
Заголовки `Content-Encoding: gzip` для файлів `.wasm.gz` і `.data.gz` наказують браузеру автоматично їх розпакувати. Без них браузер отримує сирі байти 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` | Мова інтерфейсу за замовчуванням (наприклад, `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`, заголовки COEP/COOP з вашого `netlify.toml` не застосовуються. Переконайтеся, що файл лежить у корені проєкту, і розгорніть заново.
|
||||
|
||||
Якщо в консолі з’являється `expected magic word 00 61 73 6d, found 1f 8b 08 08`, у файлів `.wasm.gz` відсутні заголовки `Content-Encoding: gzip`. Переконайтеся, що блоки `[[headers]]` для `soffice.wasm.gz` і `soffice.data.gz` є у вашому `netlify.toml`.
|
||||
|
||||
### Збірка завершується помилкою
|
||||
|
||||
Перевірте сумісність версії Node:
|
||||
|
||||
```toml
|
||||
[build.environment]
|
||||
NODE_VERSION = "20"
|
||||
```
|
||||
|
||||
### Повільне початкове завантаження
|
||||
|
||||
Увімкніть оптимізацію ресурсів у Site settings → Build & deploy → Asset optimization.
|
||||
@@ -0,0 +1,232 @@
|
||||
# Розгортання з Nginx
|
||||
|
||||
Розмістіть BentoPDF на власному сервері за допомогою Nginx.
|
||||
|
||||
## Вимоги
|
||||
|
||||
- Сервер 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: SSL через Let's Encrypt
|
||||
|
||||
```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;
|
||||
}
|
||||
```
|
||||
|
||||
### Sign PDF або Form Filler показує порожній переглядач (помилка MIME для `.mjs`)
|
||||
|
||||
Якщо консоль браузера показує:
|
||||
|
||||
```
|
||||
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-переглядач (його використовують Sign PDF, Form Filler та кілька інших інструментів) постачає файли ES-модулів із розширенням `.mjs`, а стандартний `mime.types` nginx їх за замовчуванням не містить.
|
||||
|
||||
Виправте це, додавши `mjs` до наявного рядка `application/javascript` у `/etc/nginx/mime.types`:
|
||||
|
||||
```nginx
|
||||
application/javascript js mjs;
|
||||
```
|
||||
|
||||
> НЕ додавайте _другий_ рядок `application/javascript`: nginx розбирає `mime.types` рядок за рядком, і діє лише одне зіставлення типу з розширенням, тож другий рядок у деяких версіях мовчки ігнорується. Відредагуйте наявний рядок, додавши `mjs` поруч із `js`.
|
||||
|
||||
Або перевизначте локально всередині блоку 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/javascript`, а не `application/octet-stream`.
|
||||
|
||||
### Не працює перетворення Word/ODT/Excel у PDF
|
||||
|
||||
LibreOffice WASM потребує `SharedArrayBuffer`, для якого потрібні заголовки `Cross-Origin-Embedder-Policy` і `Cross-Origin-Opener-Policy`. Також потрібен безпечний контекст, тож `http://localhost` підходить для локального тестування, а `http://192.168.x.x` та інші LAN-адреси зазвичай потребують HTTPS. Зверніть увагу, що директиви nginx `add_header` у блоці `location` **перевизначають** директиви `add_header` рівня server, а не поєднуються з ними. Кожен блок `location` із власним `add_header` має містити заголовки 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` | Встановіть `true` для мінімального інтерфейсу |
|
||||
| `VITE_BRAND_NAME` | Власна назва бренду (замінює "BentoPDF") |
|
||||
| `VITE_BRAND_LOGO` | Шлях до логотипа відносно `public/` (наприклад, `images/my-logo.svg`) |
|
||||
| `VITE_FOOTER_TEXT` | Власний текст футера/авторських прав |
|
||||
| `VITE_DEFAULT_LANGUAGE` | Мова інтерфейсу за замовчуванням (наприклад, `fr`, `de`, `es`) |
|
||||
|
||||
### Крок 4: Розгортання
|
||||
|
||||
Натисніть "Deploy" і дочекайтеся завершення збірки.
|
||||
|
||||
## Власний домен
|
||||
|
||||
1. Перейдіть до налаштувань проєкту
|
||||
2. Відкрийте "Domains"
|
||||
3. Додайте свій домен
|
||||
4. Налаштуйте DNS відповідно до інструкцій
|
||||
|
||||
## Обмеження
|
||||
|
||||
::: warning Великі файли
|
||||
Серверні функції Vercel мають ліміт 50 МБ. Оскільки BentoPDF є статичним сайтом, це не повинно вплинути на вас, але модулі WASM великі (загалом ~100 МБ). Переконайтеся, що вони віддаються з папки `/public`.
|
||||
:::
|
||||
|
||||
## Усунення неполадок
|
||||
|
||||
### Тайм-аут збірки
|
||||
|
||||
Якщо збірка завершується за тайм-аутом, спробуйте:
|
||||
|
||||
```json
|
||||
// vercel.json
|
||||
{
|
||||
"buildCommand": "npm run build",
|
||||
"outputDirectory": "dist"
|
||||
}
|
||||
```
|
||||
|
||||
### Помилка 404 після оновлення сторінки
|
||||
|
||||
Додайте `vercel.json` для маршрутизації SPA:
|
||||
|
||||
```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 на рівні документа або прикріплюйте їх до окремих сторінок.
|
||||
---
|
||||
|
||||
# Додати вкладення
|
||||
|
||||
Вбудуйте один або кілька файлів безпосередньо в PDF-документ. Вкладення можна додати на рівні документа (вони відображаються на панелі вкладень будь-якого PDF-переглядача) або прив’язати до окремих сторінок.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте PDF, до якого потрібно додати файли.
|
||||
2. У зоні для вкладень виберіть файли, які потрібно вбудувати (будь-якого типу).
|
||||
3. Виберіть рівень вкладення: **Документ** (за замовчуванням) або **Сторінка**.
|
||||
4. Якщо вибрано рівень сторінки, введіть діапазон сторінок (наприклад, `1-3` або `5`).
|
||||
5. Натисніть кнопку обробки. Змінений PDF завантажиться з вбудованими файлами.
|
||||
|
||||
## Можливості
|
||||
|
||||
- Вкладення файлів будь-якого типу: зображення, таблиці, архіви, виконувані файли, усе що завгодно
|
||||
- Розміщення вкладень на рівні документа або сторінки
|
||||
- Кілька файлів можна додати за одну операцію
|
||||
- Відображення назв і розмірів усіх вибраних вкладень
|
||||
- Початковий вміст PDF зберігається, до нього лише додаються вбудовані файли
|
||||
|
||||
## Параметри
|
||||
|
||||
| Параметр | Опис |
|
||||
| -------------------- | ---------------------------------------------------------------------------- |
|
||||
| **Рівень документа** | Прикріплює файли до PDF загалом, доступні на панелі вкладень |
|
||||
| **Рівень сторінки** | Прикріплює файли до окремих сторінок, які вказуються через діапазон сторінок |
|
||||
|
||||
## Приклади використання
|
||||
|
||||
- Додавання вихідних даних (файлів Excel, CSV) до PDF-звіту
|
||||
- Прикріплення оригінальних зображень до PDF-портфоліо фотографа
|
||||
- Вбудовування супровідних документів у договір або комерційну пропозицію
|
||||
- Додавання додаткових матеріалів до окремих сторінок навчального посібника
|
||||
|
||||
## Поради
|
||||
|
||||
- Вкладення на рівні документа підтримуються більшістю PDF-переглядачів. Вкладення на рівні сторінки можуть не відображатися в усіх переглядачах.
|
||||
- Обмеження розміру вкладень немає, але дуже великі вбудовані файли пропорційно збільшують розмір PDF.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Витяг вкладень](./extract-attachments)
|
||||
- [Редагувати вкладення](./edit-attachments)
|
||||
- [Об’єднати PDF](./merge-pdf)
|
||||
@@ -0,0 +1,40 @@
|
||||
---
|
||||
title: Додати порожню сторінку
|
||||
description: Вставляйте одну або кілька порожніх сторінок у будь-яке місце PDF-документа.
|
||||
---
|
||||
|
||||
# Додати порожню сторінку
|
||||
|
||||
Вставте порожні сторінки в PDF у вказаній позиції. Ви самі визначаєте, де розмістити порожні сторінки і скільки їх додати.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте PDF-файл. Інструмент покаже кількість сторінок.
|
||||
2. Введіть **позицію**, у яку потрібно вставити порожні сторінки. Використайте `0`, щоб вставити на самому початку, або загальну кількість сторінок, щоб додати в кінець.
|
||||
3. Введіть **кількість** порожніх сторінок (за замовчуванням 1).
|
||||
4. Натисніть кнопку обробки. Змінений PDF завантажиться з вставленими порожніми сторінками.
|
||||
|
||||
## Можливості
|
||||
|
||||
- Вставка в будь-яку позицію: на початок, у середину або в кінець документа
|
||||
- Додавання кількох порожніх сторінок за одну операцію
|
||||
- Підказка щодо позиції динамічно оновлюється відповідно до кількості сторінок завантаженого PDF
|
||||
- Порожні сторінки стандартного розміру A4
|
||||
|
||||
## Приклади використання
|
||||
|
||||
- Додавання порожньої розділової сторінки між частинами зібраного документа
|
||||
- Вставка порожніх сторінок для коректного двостороннього друку
|
||||
- Додавання місця для рукописних нотаток у роздрукованому навчальному посібнику
|
||||
- Доповнення документа до мінімально потрібної кількості сторінок
|
||||
|
||||
## Поради
|
||||
|
||||
- Позиція `0` вставляє сторінки перед першою. Позиція, що дорівнює загальній кількості сторінок, додає їх після останньої.
|
||||
- Якщо потрібно вставити в певну позицію вміст (а не лише порожні сторінки), скористайтеся [PDF мультиінструментом](./pdf-multi-tool), щоб вставити інший PDF після вказаної сторінки.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Упорядкувати PDF](./organize-pdf)
|
||||
- [PDF мультиінструмент](./pdf-multi-tool)
|
||||
- [Об’єднати PDF](./merge-pdf)
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
title: Додати нумерацію сторінок
|
||||
description: Додавайте мітки сторінок PDF з римськими цифрами, буквеними префіксами, власною нумерацією та кількома правилами в одному документі.
|
||||
---
|
||||
|
||||
# Додати нумерацію сторінок
|
||||
|
||||
Мітки сторінок визначають, як номери сторінок відображаються в PDF-переглядачах (номер на панелі інструментів, а не надрукований на самій сторінці). Цей інструмент дає змогу призначати різні схеми нумерації різним діапазонам сторінок: римські цифри для вступної частини, десяткові числа для основного тексту, буквені додатки тощо.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте PDF-файл.
|
||||
2. З’явиться панель параметрів з одним правилом міток за замовчуванням.
|
||||
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 для нумерації з нуля.
|
||||
- **Продовжувати нумерацію між розривними діапазонами** -- Увімкніть, якщо правило охоплює несуміжні сторінки (наприклад, `1-9,30-40` або `odd`) і нумерація має тривати послідовно.
|
||||
- **Видалити наявні мітки сторінок** -- Увімкнено за замовчуванням. Очищає всі попередні мітки перед застосуванням нових правил.
|
||||
|
||||
## Можливості
|
||||
|
||||
- Кілька правил міток в одному документі для складних схем нумерації
|
||||
- Шість стилів міток, що охоплюють усі стандартні системи нумерації
|
||||
- Підтримка власних префіксів для нумерації за розділами
|
||||
- Підтримка розривних діапазонів зі наскрізною нумерацією
|
||||
- Можливість зберегти або видалити наявні мітки
|
||||
|
||||
## Приклади використання
|
||||
|
||||
- Римські цифри (i, ii, iii) для передмови книги й десяткові мітки для основного тексту
|
||||
- Позначення сторінок додатків буквеними префіксами, як-от "A-1", "A-2", "B-1", "B-2"
|
||||
- Виправлення міток сторінок у відсканованому документі, де фізичні номери сторінок не збігаються з порядком сторінок у PDF
|
||||
- Нумерація з нуля для технічних документів
|
||||
|
||||
## Поради
|
||||
|
||||
- Мітки сторінок є метаданими, які PDF-переглядачі показують на навігаційній панелі. Вони не друкуються на самій сторінці. Для видимих номерів використовуйте [Нумерація сторінок](./page-numbers).
|
||||
- Для цього інструмента потрібно налаштувати CoherentPDF (CPDF) у налаштуваннях WASM. Якщо його не налаштовано, вам буде запропоновано це зробити.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Нумерація сторінок](./page-numbers)
|
||||
- [Нумерація Bates](./bates-numbering)
|
||||
- [Редагувати закладки](./bookmark)
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
title: Додати штампи
|
||||
description: Додавайте зображення-штампи на сторінки PDF за допомогою вбудованої панелі анотацій із зазначенням імені користувача.
|
||||
---
|
||||
|
||||
# Додати штампи
|
||||
|
||||
Розміщуйте зображення-штампи на сторінках PDF за допомогою вбудованого переглядача з панеллю анотацій для штампів. Штампи можуть містити ваше ім’я, що корисно для процесів погодження, рецензування та маркування документів.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Введіть своє ім’я в поле **Ім’я користувача для штампа**. Це ім’я відображатиметься на створених вами штампах.
|
||||
2. Завантажте PDF-файл, клацнувши зону завантаження або перетягнувши файл у неї.
|
||||
3. Відкриється редактор штампів із завантаженим документом у переглядачі.
|
||||
4. За допомогою інструмента зображення-штампа на панелі виберіть і розмістіть штампи на будь-якій сторінці.
|
||||
5. За потреби змініть положення та розмір штампів.
|
||||
6. Натисніть **Зберегти PDF зі штампами**, щоб завантажити результат.
|
||||
|
||||
## Можливості
|
||||
|
||||
- Інтегрований PDF-переглядач із панеллю анотацій для штампів
|
||||
- Зазначення імені користувача на створених штампах
|
||||
- Розміщення зображень-штампів на будь-якій сторінці
|
||||
- Позиціювання та зміна розміру перетягуванням
|
||||
- Автоматичний підбір розміру переглядача за співвідношенням сторін сторінки
|
||||
- Відображення назви й розміру файлу
|
||||
|
||||
## Приклади використання
|
||||
|
||||
- Додавання зображень-штампів "APPROVED" або "REVIEWED" до документів у процесі рецензування
|
||||
- Розміщення зображень печатки компанії або нотаріального штампа на офіційних документах
|
||||
- Маркування сторінок штампами "RECEIVED" з ім’ям рецензента
|
||||
- Додавання штампів контролю якості до звітів про перевірку
|
||||
|
||||
## Поради
|
||||
|
||||
- Вкажіть ім’я користувача для штампа до завантаження 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. Натисніть **Додати водяний знак**, щоб обробити файл і завантажити результат.
|
||||
|
||||
## Параметри
|
||||
|
||||
**Параметри текстового водяного знака:**
|
||||
|
||||
- **Текст** -- Текст водяного знака (наприклад, "КОНФІДЕНЦІЙНО", "ЧЕРНЕТКА").
|
||||
- **Розмір шрифту** -- Від 10 до 200 пунктів. За замовчуванням 72.
|
||||
- **Колір** -- Будь-який колір через вибір кольору.
|
||||
- **Прозорість** -- Керування прозорістю від повністю прозорого до повністю непрозорого.
|
||||
- **Поворот** -- Поворот тексту водяного знака від -180 до 180 градусів.
|
||||
|
||||
**Параметри графічного водяного знака:**
|
||||
|
||||
- **Завантаження зображення** -- Завантажте PNG, JPG або інший файл зображення для використання як водяного знака.
|
||||
- **Прозорість** -- Керування прозорістю зображення.
|
||||
- **Масштаб** -- Зміна розміру графічного водяного знака.
|
||||
|
||||
**Параметри розташування:**
|
||||
|
||||
- **Одиночний** -- Один водяний знак на сторінці, положення задається перетягуванням або готовими шаблонами позиції.
|
||||
- **Мозаїка** -- Повторює водяний знак по всій сторінці діагональною сіткою, що відповідає куту повороту, тож знак покриває документ від краю до краю.
|
||||
- **Горизонтальний проміжок** -- Відстань між плитками вздовж напрямку тексту у відсотках від ширини водяного знака (лише в режимі мозаїки).
|
||||
- **Вертикальний проміжок** -- Відстань між рядами плиток у відсотках від висоти водяного знака (лише в режимі мозаїки).
|
||||
|
||||
**Загальні параметри:**
|
||||
|
||||
- **Застосувати до всіх сторінок** -- Якщо позначено, той самий водяний знак застосовується до кожної сторінки. Зніміть позначку, щоб задавати окремі водяні знаки для кожної сторінки.
|
||||
- **Діапазон сторінок** -- Вкажіть, які сторінки отримають водяний знак (наприклад, "1-3, 5, 7-9" або "all").
|
||||
|
||||
## Можливості
|
||||
|
||||
- Візуальне позиціювання перетягуванням на попередньому перегляді PDF наживо
|
||||
- Зміна розміру водяного знака кутовими маркерами
|
||||
- Текстовий і графічний режими водяного знака
|
||||
- Одиночне розташування або мозаїка (повторення) на всій сторінці з регульованими проміжками
|
||||
- Застосування до окремих сторінок або до всього документа
|
||||
- Перехід між сторінками в попередньому перегляді
|
||||
- Керування прозорістю та поворотом
|
||||
- Фільтрація за діапазоном сторінок
|
||||
|
||||
## Приклади використання
|
||||
|
||||
- Позначення чернеток документів написом "ЧЕРНЕТКА" перед передачею на рецензію
|
||||
- Додавання водяних знаків "КОНФІДЕНЦІЙНО" до конфіденційних фінансових звітів
|
||||
- Брендування документів водяним знаком із логотипом компанії
|
||||
- Нанесення "SAMPLE" на документацію до продуктів, яку надсилають потенційним клієнтам
|
||||
- Додавання повідомлень про авторські права до поширюваних PDF-матеріалів
|
||||
|
||||
## Поради
|
||||
|
||||
- Для діагональних водяних знаків на всю сторінку встановіть поворот близько 45 градусів і збільште розмір шрифту.
|
||||
- Режим мозаїки значно ускладнює повторне використання документа після обрізання, адже видалення одного знака залишає десятки інших. Зменште прозорість у режимі мозаїки, щоб текст під знаками залишався читабельним.
|
||||
- Графічні водяні знаки з прозорим фоном (формат PNG) природніше поєднуються зі вмістом документа.
|
||||
- Якщо потрібен різний текст водяного знака на різних сторінках, зніміть позначку "Застосувати до всіх сторінок" і переходьте від сторінки до сторінки.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Колонтитули](./header-footer)
|
||||
- [Додати штампи](./add-stamps)
|
||||
- [Нумерація Bates](./bates-numbering)
|
||||
- [Підписати PDF](./sign-pdf)
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
title: Корекція кольору
|
||||
description: Точно налаштовуйте яскравість, контраст, насиченість, відтінок, температуру, тонування, гамму та сепію у вашому PDF.
|
||||
---
|
||||
|
||||
# Корекція кольору
|
||||
|
||||
Повноцінний набір для колірної корекції PDF. Налаштовуйте вісім незалежних параметрів -- яскравість, контраст, насиченість, зсув відтінку, температуру, тонування, гамму та сепію -- з попереднім переглядом наживо, що оновлюється під час руху кожного повзунка.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте PDF-файл.
|
||||
2. Відкриється редактор із попереднім переглядом першої сторінки та панеллю колірних налаштувань.
|
||||
3. Рухайте повзунки, щоб змінити кожен колірний параметр. Попередній перегляд оновлюється в реальному часі.
|
||||
4. Натисніть **Скинути**, щоб повернути всі повзунки до початкових положень.
|
||||
5. Натисніть **Застосувати**, щоб обробити всі сторінки й завантажити відкоригований PDF.
|
||||
|
||||
## Параметри
|
||||
|
||||
- **Яскравість** -- Висвітлення або затемнення всієї сторінки (від -100 до +100).
|
||||
- **Контраст** -- Збільшення або зменшення різниці між світлими й темними ділянками (від -100 до +100).
|
||||
- **Насиченість** -- Посилення або зменшення інтенсивності кольорів (від -100 до +100). Значення -100 дає відтінки сірого.
|
||||
- **Зсув відтінку** -- Поворот колірного кола для рівномірного зсуву всіх кольорів.
|
||||
- **Температура** -- Зсув кольорів у теплий (жовтий/оранжевий) або холодний (синій) бік.
|
||||
- **Тонування** -- Додавання зеленого або пурпурного відтінку.
|
||||
- **Гамма** -- Регулювання яскравості півтонів за допомогою гамма-кривої. Значення нижче 1.0 затемнюють півтони, а вище 1.0 висвітлюють їх.
|
||||
- **Сепія** -- Класичний ефект сепії. Вищі значення дають інтенсивніший коричневий відтінок.
|
||||
|
||||
## Можливості
|
||||
|
||||
- Вісім незалежно регульованих колірних параметрів
|
||||
- Попередній перегляд наживо, що миттєво реагує на рух повзунків
|
||||
- Кнопка скидання для швидкого повернення до початкових значень
|
||||
- Обробка всіх сторінок документа
|
||||
- Працює з будь-яким вмістом PDF (текст, зображення, графіка)
|
||||
|
||||
## Приклади використання
|
||||
|
||||
- Освітлення темного скана або виправлення переекспонованих сторінок
|
||||
- Зменшення насиченості кольорового документа для економії чорнила перед друком
|
||||
- Застосування тону сепії для старовинного вигляду сертифікатів або нагород
|
||||
- Корекція колірної температури фотографій, вбудованих у PDF
|
||||
- Підвищення контрасту блідих або низькоякісних сканованих документів
|
||||
|
||||
## Поради
|
||||
|
||||
- Для швидкого перетворення на відтінки сірого перетягніть повзунок насиченості до -100.
|
||||
- Повзунок гамми особливо корисний для покращення читабельності сканованих документів, де півтони надто темні або надто світлі.
|
||||
- Як і інші інструменти ефектів зображення, цей інструмент растеризує кожну сторінку. Результат буде у вигляді зображень, тому текст не можна буде виділити.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Інвертувати кольори](./invert-colors)
|
||||
- [Ефект сканера](./scanner-effect)
|
||||
- [Колір фону](./background-color)
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: Чергування та змішування сторінок
|
||||
description: Об’єднуйте PDF, чергуючи сторінки з кожного файлу, зі збереженням закладок.
|
||||
---
|
||||
|
||||
# Чергування та змішування сторінок
|
||||
|
||||
Чергуйте сторінки з кількох PDF-файлів так, щоб вони йшли по черзі з різних документів. Цей інструмент знадобиться, коли звичайне об’єднання просто приєднує файли один за одним, а вам потрібна сторінка 1 з файлу A, потім сторінка 1 з файлу B, потім сторінка 2 з файлу A і так далі.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте щонайменше два PDF-файли через зону завантаження.
|
||||
2. Інструмент покаже кожен файл із кількістю сторінок і розміром.
|
||||
3. Перетягуйте маркери, щоб змінити, сторінки якого файлу йдуть першими в послідовності чергування.
|
||||
4. Натисніть **Змішати сторінки**, щоб отримати результат із чергуванням.
|
||||
5. Результат завантажується як `alternated-mixed.pdf`.
|
||||
|
||||
## Можливості
|
||||
|
||||
- Чергування сторінок у будь-якій кількості PDF (щонайменше два)
|
||||
- Зміна порядку файлів перетягуванням для керування пріоритетом чергування
|
||||
- Збереження закладок із вихідних документів
|
||||
- Відображення кількості сторінок і розміру кожного завантаженого файлу
|
||||
- Обробка в окремому веб-воркері для чуйного інтерфейсу
|
||||
|
||||
## Приклади використання
|
||||
|
||||
- Складання двосторонніх сканів, де непарні й парні сторінки скановано окремо
|
||||
- Поєднання аркушів із питаннями та відповідями, щоб після кожного питання йшла відповідь
|
||||
- Об’єднання двомовних документів сторінка за сторінкою (наприклад, англійською на одному боці, переклад на наступному)
|
||||
- Чергування лицьових і зворотних сканів з одностороннього сканера
|
||||
|
||||
## Поради
|
||||
|
||||
- Якщо у вихідних PDF різна кількість сторінок, сторінки коротшого документа закінчаться першими, а решта сторінок довшого з’явиться в кінці.
|
||||
- Порядок файлів має значення: перший файл у списку дає першу сторінку результату. За потреби перетягніть файли, щоб змінити порядок.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Об’єднати PDF](./merge-pdf)
|
||||
- [Упорядкувати PDF](./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: Нумерація Bates
|
||||
description: Застосовуйте номери Bates до одного або кількох PDF із настроюваними шаблонами, заповненням нулями, шрифтами та позиціюванням.
|
||||
---
|
||||
|
||||
# Нумерація Bates
|
||||
|
||||
Нумерація Bates наносить послідовні ідентифікатори на кожну сторінку ваших PDF. Це стандартний метод маркування документів у судових процесах, аудитах і робочих процесах відповідності вимогам. Інструмент підтримує кілька файлів і настроювані шаблони та видає окремо пронумеровані PDF або єдиний ZIP-архів.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте один або кілька PDF-файлів. Можна перетягнути одразу кілька файлів.
|
||||
2. Виберіть готовий стиль або створіть власний шаблон.
|
||||
3. Налаштуйте позицію, шрифт, розмір, колір і початкові номери.
|
||||
4. Натисніть **Застосувати номери Bates**, щоб обробити файли.
|
||||
5. Один файл завантажується напряму. Кілька файлів завантажуються як ZIP-архів.
|
||||
|
||||
## Параметри
|
||||
|
||||
- **Готовий стиль** -- Виберіть один із вбудованих форматів:
|
||||
- Exhibit + Case + Bates + Page (наприклад, "Exhibit 1 Case XYZ 000001 Page 1")
|
||||
- Exhibit + Case + Bates (без номера сторінки)
|
||||
- Case + Bates
|
||||
- Bates Number Only (наприклад, "000001")
|
||||
- Власний (напишіть власний шаблон)
|
||||
- **Власний стиль** -- Рядок шаблону із заповнювачами: `[BATES]`, `[PAGE]`, `[FILE]`, `[FILENAME]`.
|
||||
- **Заповнення номера Bates** -- Кількість цифр (від 3 до 6) для номерів Bates із ведучими нулями. Видимий лише у власному режимі.
|
||||
- **Позиція** -- Верхній або нижній колонтитул, ліворуч, по центру або праворуч.
|
||||
- **Номер Bates починається з** -- Перший номер Bates. За замовчуванням 1. Нумерація продовжується між файлами.
|
||||
- **Лічильник файлів починається з** -- Початковий номер для заповнювача `[FILE]`.
|
||||
- **Шрифт** -- Helvetica, Times New Roman або Courier.
|
||||
- **Розмір шрифту** -- Розмір нанесеного тексту.
|
||||
- **Колір** -- Вибір кольору тексту номера Bates.
|
||||
|
||||
## Можливості
|
||||
|
||||
- Попередній перегляд наживо, що показує вигляд номерів Bates у всіх завантажених файлах
|
||||
- Підтримка кількох файлів зі скрізною нумерацією між документами
|
||||
- Зміна порядку файлів перетягуванням для керування послідовністю нумерації
|
||||
- Шість варіантів позиції (верх/низ, ліворуч/по центру/праворуч)
|
||||
- Адаптивний розрахунок полів з урахуванням різних розмірів сторінок
|
||||
- Вивід у ZIP для пакетів із кількох файлів
|
||||
- Заповнювачі в шаблонах для максимальної гнучкості
|
||||
|
||||
## Приклади використання
|
||||
|
||||
- Нанесення послідовних номерів експонатів на документи для судового розкриття доказів
|
||||
- Нумерація пакетів доказів аудиту, що охоплюють десятки файлів
|
||||
- Застосування регуляторних довідкових номерів до документації з відповідності вимогам
|
||||
- Маркування додатків до патентних заявок ідентифікаторами конкретної справи
|
||||
|
||||
## Поради
|
||||
|
||||
- Перед обробкою перетягніть файли у списку, щоб змінити їх порядок. Послідовність нумерації Bates відповідає цьому порядку.
|
||||
- Використовуйте заповнювач `[FILENAME]`, щоб додати до штампа початкову назву файлу, що допомагає простежити сторінки до вихідних документів.
|
||||
- Поле попереднього перегляду оновлюється в реальному часі під час зміни налаштувань, тож ви можете перевірити формат до обробки.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Нумерація сторінок](./page-numbers)
|
||||
- [Додати нумерацію сторінок](./add-page-labels)
|
||||
- [Колонтитули](./header-footer)
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: BMP у PDF
|
||||
description: Перетворюйте растрові зображення BMP на PDF прямо у браузері, без завантаження на жоден сервер.
|
||||
---
|
||||
|
||||
# BMP у PDF
|
||||
|
||||
Перетворюйте файли Windows Bitmap (BMP) на PDF. BMP є нестисненим форматом зображень, який досі трапляється в застарілих системах, медичній візуалізації та промислових сканерах. Цей інструмент перетворює їх на PDF без жодного встановлення.
|
||||
|
||||
## Підтримувані формати
|
||||
|
||||
| Формат | Розширення |
|
||||
| :----- | :--------- |
|
||||
| BMP | `.bmp` |
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Клацніть зону завантаження або перетягніть у неї BMP-файли.
|
||||
2. Перегляньте список файлів. Додайте ще файлів або видаліть зайві.
|
||||
3. Натисніть **Перетворити на PDF**. Результат завантажиться як `from_bmps.pdf`.
|
||||
|
||||
Кожен BMP малюється на полотні (canvas), експортується як PNG і вбудовується в PDF за допомогою pdf-lib. Розмір сторінки відповідає розмірам початкового зображення.
|
||||
|
||||
## Параметри
|
||||
|
||||
Цей інструмент не має додаткових налаштувань якості. Зображення вбудовуються в початковій роздільності як PNG без втрат.
|
||||
|
||||
## Приклади використання
|
||||
|
||||
- Перетворення застарілих сканованих документів у форматі BMP на архівні PDF
|
||||
- Перетворення BMP-знімків екрана зі старіших програм Windows на документи для обміну
|
||||
- Обробка результатів медичних або промислових сканерів, які за замовчуванням видають BMP
|
||||
- Міграція старих архівів зображень у більш портативний формат
|
||||
|
||||
## Поради
|
||||
|
||||
- Файли BMP нестиснені, тому зазвичай великі. Отриманий PDF буде значно меншим, оскільки зображення всередині перекодовуються в PNG.
|
||||
- Якщо поряд із BMP у вас є зображення інших форматів, скористайтеся інструментом [Зображення у PDF](./image-to-pdf), щоб перетворити все одним пакетом.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Зображення у PDF](./image-to-pdf)
|
||||
- [PNG у PDF](./png-to-pdf)
|
||||
- [TIFF у PDF](./tiff-to-pdf)
|
||||
@@ -0,0 +1,57 @@
|
||||
---
|
||||
title: Редагувати закладки
|
||||
description: Додавайте, редагуйте, імпортуйте, експортуйте та видаляйте закладки PDF у візуальному редакторі з підтримкою CSV і JSON.
|
||||
---
|
||||
|
||||
# Редагувати закладки
|
||||
|
||||
Редактор закладок дає повний контроль над навігаційними закладками 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. В одній партії можна поєднувати обидва формати.
|
||||
2. Перегляньте список файлів. Видаліть непотрібні або натисніть **Додати ще файли**, щоб додати ще.
|
||||
3. Натисніть **Конвертувати у PDF**. Для файлів CBZ інструмент розпаковує архів, сортує зображення за назвою в природному порядку, визначає справжній формат кожного зображення та вбудовує їх у PDF за допомогою pdf-lib. Файли CBR натомість обробляє рушій PyMuPDF.
|
||||
4. Один файл завантажується як PDF. Кілька файлів дають ZIP-архів із назвою `comic-converted.zip`.
|
||||
|
||||
## Параметри
|
||||
|
||||
Налаштування не потрібні. Кожне зображення стає сторінкою з розмірами оригіналу, тому розвороти залишаються широкими, а окремі сторінки вузькими.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Читання коміксів на планшеті чи в застосунку на телефоні, що підтримує PDF, але не CBZ/CBR
|
||||
- Друк окремих сторінок цифрового коміксу
|
||||
- Архівування колекції коміксів у форматі, який відкриє будь-який переглядач
|
||||
- Передавання коміксу тому, хто не має спеціальної програми для читання коміксів
|
||||
|
||||
## Поради
|
||||
|
||||
- Зображення в архіві сортуються в природному порядку (тож `page2.jpg` іде перед `page10.jpg`). Називайте файли з послідовною нумерацією, щоб сторінки йшли в правильному порядку.
|
||||
- Конвертер визначає формат зображення за бінарним підписом, а не за розширенням файлу. PNG, випадково названий `.jpg`, усе одно вбудується правильно.
|
||||
- Файли 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.
|
||||
- Скористайтеся цим інструментом, щоб оновити старі PDF із шифруванням RC4 до AES-256.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Зашифрувати PDF](./protect-pdf): простий захист паролем без детальних дозволів
|
||||
- [Розшифрувати PDF](./unlock-pdf): повністю зняти шифрування
|
||||
- [Зняти обмеження](./remove-restrictions): прибрати всі обмеження, якщо у вас є пароль власника
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
title: Об’єднати в одну сторінку
|
||||
description: Зшийте всі сторінки PDF в одну суцільну вертикальну або горизонтальну стрічку.
|
||||
---
|
||||
|
||||
# Об’єднати в одну сторінку
|
||||
|
||||
Зведіть усі сторінки PDF в одну довгу сторінку. Сторінки зшиваються вертикально (як сувій) або горизонтально (поруч), і на виході виходить одна суцільна сторінка.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте файл PDF.
|
||||
2. Виберіть напрямок розташування: **Вертикально** (сторінки одна під одною) або **Горизонтально** (сторінки поруч).
|
||||
3. Задайте відстань між сторінками в пунктах.
|
||||
4. Виберіть колір тла для проміжків між сторінками.
|
||||
5. За бажання ввімкніть роздільники (тонкі лінії між сторінками) та налаштуйте їхню товщину й колір.
|
||||
6. Натисніть кнопку обробки. Результатом буде PDF з однією сторінкою.
|
||||
|
||||
## Можливості
|
||||
|
||||
- Вертикальне або горизонтальне зшивання сторінок
|
||||
- Налаштовувана відстань між сторінками
|
||||
- Вибір кольору тла для проміжків
|
||||
- Необов’язкові роздільні лінії з регульованою товщиною та кольором
|
||||
- Кожна початкова сторінка відображається в повній роздільності на спільному полотні
|
||||
|
||||
## Параметри
|
||||
|
||||
| Параметр | Опис |
|
||||
| ---------------------------- | ------------------------------------------------------ |
|
||||
| **Напрямок розкладки** | Вертикально (одна під одною) або горизонтально (поруч) |
|
||||
| **Відступ** | Проміжок між сторінками в пунктах |
|
||||
| **Колір фону** | Колір області між сторінками |
|
||||
| **Додати лінії-роздільники** | Увімкнення тонких ліній між сторінками |
|
||||
| **Товщина роздільника** | Товщина лінії в пунктах |
|
||||
| **Колір роздільника** | Колір ліній-роздільників |
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Створення одного довгого зображення з багатосторінкового каркаса чи макета дизайну
|
||||
- Створення суцільного вигляду документа для вбудовування на вебсторінку
|
||||
- Зшивання багатосторінкового коміксу чи розкадровки в одну стрічку
|
||||
- Створення панорамного вигляду послідовних сторінок для перегляду
|
||||
|
||||
## Поради
|
||||
|
||||
- Вертикальна орієнтація найкраще підходить для документів із книжковими сторінками. Горизонтальна краща для альбомного вмісту.
|
||||
- Великі документи з багатьма сторінками дають дуже високий або дуже широкий результат. Деякі переглядачі PDF можуть погано працювати з надзвичайно великими окремими сторінками.
|
||||
- Роздільники контрастного кольору допомагають побачити, де закінчується одна початкова сторінка й починається наступна.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [N-Up PDF](./n-up-pdf)
|
||||
- [Об’єднати PDF](./merge-pdf)
|
||||
- [Розділення сторінок](./divide-pages)
|
||||
@@ -0,0 +1,60 @@
|
||||
---
|
||||
title: Порівняти PDF
|
||||
description: Порівнюйте два документи PDF поруч або в режимі накладання з детальним виявленням і класифікацією змін.
|
||||
---
|
||||
|
||||
# Порівняти PDF
|
||||
|
||||
Завантажте два PDF і побачте, що саме змінилося між ними. Інструмент розумно зіставляє сторінки, виявляє відмінності в тексті, зображеннях, анотаціях, колонтитулах і форматуванні та показує їх у режимі поруч або накладання.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте два файли PDF: оригінал (ліворуч) і змінену версію (праворуч).
|
||||
2. Інструмент зіставляє сторінки документів за сигнатурами вмісту.
|
||||
3. Виберіть режим перегляду: **Пліч-о-пліч** або **Накладання**.
|
||||
4. Переходьте між парами сторінок за допомогою елементів керування пагінацією.
|
||||
5. Відмінності підсвічуються та класифікуються. Скористайтеся панеллю фільтрів, щоб зосередитися на певних типах змін.
|
||||
6. За бажання експортуйте порівняння як звіт у PDF.
|
||||
|
||||
## Можливості
|
||||
|
||||
- Автоматичне зіставлення сторінок за схожістю вмісту
|
||||
- Режими порівняння поруч і з накладанням
|
||||
- Класифікація змін: текст, зображення, колонтитули, анотації, форматування, тло
|
||||
- Перемикачі фільтрів за категоріями, щоб показувати або ховати певні типи змін
|
||||
- Пошук змін у тексті з фільтрацією за запитом
|
||||
- Підтримка OCR для порівняння відсканованих документів
|
||||
- Елементи керування масштабом для детального огляду
|
||||
- Синхронна прокрутка панелей у режимі поруч
|
||||
- Експорт результатів порівняння у PDF
|
||||
|
||||
## Параметри
|
||||
|
||||
| Параметр | Опис |
|
||||
| --------------------- | ------------------------------------------------------------------------------------------ |
|
||||
| **Режим перегляду** | Пліч-о-пліч або накладання |
|
||||
| **OCR** | Увімкнення чи вимкнення OCR для порівняння відсканованих документів |
|
||||
| **Мова OCR** | Мова для розпізнавання тексту OCR |
|
||||
| **Фільтри категорій** | Показ або приховування змін тексту, зображень, колонтитулів, анотацій, форматування та тла |
|
||||
| **Обсяг змін** | У режимі накладання: усі зміни або лише зміни вмісту |
|
||||
| **Масштаб** | Налаштування масштабу для детального огляду |
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Перегляд редакцій договору, щоб знайти, що саме змінилося між версіями
|
||||
- Порівняння макетів дизайну, щоб переконатися, що експорт у PDF відповідає очікуванням
|
||||
- Аудит змін у документах у регульованих галузях, де потрібно відстежувати кожну правку
|
||||
- Перевірка того, що процес конвертації в PDF точно зберіг початковий вміст
|
||||
- Звірення перекладених документів з оригіналом на предмет змін у верстці
|
||||
|
||||
## Поради
|
||||
|
||||
- Режим накладання розміщує обидва документи один на одному, тож просторові відмінності (зсунуті елементи, змінені зображення) одразу помітні.
|
||||
- Вмикайте OCR, коли порівнюєте скановані документи без текстового шару. Рушій порівняння витягне текст із зображень сторінок.
|
||||
- Використовуйте фільтри категорій, щоб зосередитися на важливому. Наприклад, сховайте зміни форматування, якщо вас цікавлять лише відмінності в тексті.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Перегляд метаданих](./view-metadata)
|
||||
- [OCR PDF](./ocr-pdf)
|
||||
- [Об’єднати PDF](./merge-pdf)
|
||||
@@ -0,0 +1,73 @@
|
||||
---
|
||||
title: Стиснення PDF
|
||||
description: Зменшуйте розмір PDF до 90% за допомогою рушія Hyper Compress. Підтримує цільовий розмір файлу, пакетну обробку та власні налаштування якості.
|
||||
---
|
||||
|
||||
# Стиснення PDF
|
||||
|
||||
Зменшуйте розмір PDF, не псуючи їх. Стиснення PDF працює на базі [Hyper Compress](https://www.bentopdf.com/hyper-compress), власного рушія стиснення BentoPDF. Він повторно стискає зображення, створює підмножини шрифтів і об’єднує їх, а також прибирає зайве, як-от вбудовані мініатюри та приватні дані програм. PDF залишається повністю функціональним: текст можна виділяти, а посилання й поля форм працюють.
|
||||
|
||||
Hyper Compress скомпільовано у WebAssembly, і він постачається разом із BentoPDF, тому стиснення працює офлайн та в ізольованих від мережі середовищах без додаткового налаштування.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте один або кілька PDF, клацнувши по зоні або перетягнувши файли.
|
||||
2. Виберіть **Рівень стиснення**: Низький, Середній, Високий або Без втрат.
|
||||
3. За бажання вкажіть **Цільовий розмір файлу** або розгорніть **Власні налаштування** для детального керування, зокрема **Конвертувати у відтінки сірого**.
|
||||
4. Натисніть **Стиснення PDF**. Для кількох файлів ви отримаєте один ZIP-архів.
|
||||
|
||||
## Особливі документи
|
||||
|
||||
- **PDF із цифровим підписом** повертаються без змін, оскільки будь-яка зміна зробила б підпис недійсним. Увімкніть **Перевизначити захист вмісту** у розділі «Власні налаштування», щоб прибрати підписи та стиснути файл; видимий підпис залишиться на сторінці, але файл більше не буде підписаним.
|
||||
- **Файли PDF/A** після стиснення втрачають позначку PDF/A, щоб файл ніколи не заявляв про відповідність, якої вже не має. Увімкніть **Зберегти PDF/A** у розділі «Власні налаштування», щоб натомість зберегти відповідність.
|
||||
- **PDF із паролем** отримують поле пароля на картці файлу. Введіть пароль там, і Hyper Compress відкриє файл сам, без окремого кроку розблокування. Якщо заблокованих файлів два чи більше, одне спільне поле розблокує всі файли з однаковим паролем. Стиснута копія не має пароля; скористайтеся [Захистом PDF](./protect-pdf), щоб додати його знову.
|
||||
- **Скани без текстового шару** можна стиснути ще сильніше за допомогою **Растеризувати сторінки в зображення** у розділі «Власні налаштування», що замінює кожну сторінку одним оптимізованим зображенням. Це пропускається для будь-якого документа з текстом, який можна виділити, зокрема для сканів після OCR, якщо не ввімкнено **Перевизначити захист вмісту**. Тоді текстові сторінки також стають зображеннями, тож текст перестає виділятися, а посилання перестають працювати.
|
||||
|
||||
## Рівні стиснення
|
||||
|
||||
| Рівень | Якість зображень | Макс. роздільність | Найкраще для |
|
||||
| ------------- | ------------------- | ------------------ | ------------------------------------------ |
|
||||
| **Низький** | 80 | 200 DPI | Збереження візуальної якості |
|
||||
| **Середній** | 50 | 150 DPI | Щоденні документи |
|
||||
| **Високий** | 20 | 72 DPI | Вкладення в email, вивантаження в інтернет |
|
||||
| **Без втрат** | Зображення без змін | Без змін | Архівні копії |
|
||||
|
||||
Рівень «Високий» також прибирає вбудовування 14 стандартних шрифтів PDF, а також схожих на них шрифтів, як-от Arial, коли це безпечно.
|
||||
|
||||
## Цільовий розмір файлу
|
||||
|
||||
Вкажіть розмір у КБ або МБ, і Hyper Compress шукатиме найкращу якість зображень, що все ще вміщається, починаючи з вибраного рівня. Якщо документ не вдається зменшити до такого розміру, ви отримаєте найменшу версію, яку він може створити, і повідомлення про це. Окремі сторінки, як-от [Стиснути PDF до 1 МБ](https://www.bentopdf.com/compress-pdf-to-1mb), відкриваються з уже заповненим цільовим розміром.
|
||||
|
||||
## Власні налаштування
|
||||
|
||||
Розгорніть панель «Власні налаштування», щоб налаштувати Hyper Compress напряму. Вибір рівня стиснення скидає ці значення до значень цього рівня, а зміна будь-якого з них перемикає рівень на «Власний».
|
||||
|
||||
- **Перевизначити захист вмісту**: за замовчуванням Hyper Compress не чіпає підписані PDF і не растеризує сторінки з текстом. Увімкнення цього параметра обходить обидва обмеження. Він залишається ввімкненим, коли ви змінюєте рівень.
|
||||
|
||||
- **Зображення**: якість зображень, максимальна роздільність, примусова передискретизація, зменшення кількості кольорів, обрізання невидимих областей зображень, видалення альтернативних зображень, спрощення профілів кольору, JPEG 2000 і режим без втрат
|
||||
- **Шрифти**: створення підмножин, об’єднання дублікатів і прибирання вбудовування стандартних шрифтів та схожих на них
|
||||
- **Вміст**: сплющення анотацій, полів форм або посилань
|
||||
- **Очищення**: видалення мініатюр, даних програм, потоків статей, інформації про веб-захоплення, дерева структури або цільових профілів виводу
|
||||
- **Растеризувати**: заміна сторінок зображеннями для сканів без тексту; пропускається, якщо в документі є текст, який можна виділити
|
||||
- **Результат**: «Зберегти PDF/A» і стиснення Brotli для програм читання PDF 2.0, що його підтримують
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Зменшення звіту на 50 МБ до ліміту вкладень в email
|
||||
- Стиснення скану до суворого ліміту порталу за допомогою цільового розміру файлу
|
||||
- Оптимізація маркетингових PDF для швидшого завантаження з вебсайту
|
||||
- Архівування великих наборів документів, де важлива вартість зберігання
|
||||
- Зменшення витрат мобільного трафіку під час надсилання PDF у месенджерах
|
||||
|
||||
## Поради
|
||||
|
||||
- Почніть із рівня «Середній». Якщо результат усе ще завеликий, задайте цільовий розмір файлу або перейдіть на «Високий».
|
||||
- Для скану без текстового шару ввімкніть «Растеризувати сторінки в зображення» у розділі «Власні налаштування».
|
||||
- Параметр «Конвертувати у відтінки сірого» у розділі «Власні налаштування» може зменшити розмір документів з великою кількістю кольорів.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Лінеаризація PDF](./linearize-pdf): оптимізуйте стиснений PDF для швидкого перегляду в інтернеті
|
||||
- [Растеризація PDF](./rasterize-pdf): перетворюйте сторінки на зображення із заданою роздільністю DPI, зокрема сторінки з текстом
|
||||
- [Відновлення PDF](./repair-pdf): виправте PDF, який зламався під час стиснення деінде
|
||||
- [Видалити метадані](./remove-metadata): приберіть приховані дані для приватності
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: Обрізати PDF
|
||||
description: Візуально обрізайте сторінки PDF, малюючи область обрізання на кожній сторінці в редакторі на основі Cropper.js.
|
||||
---
|
||||
|
||||
# Обрізати PDF
|
||||
|
||||
Обрізайте поля сторінок PDF у візуальному інтерфейсі. Намалюйте прямокутник обрізання безпосередньо на кожній сторінці, перегляньте результат і застосуйте обрізання. Можна задати різні області для різних сторінок або застосувати однакове обрізання до всього документа.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте файл PDF.
|
||||
2. Відкриється редактор обрізання з першою сторінкою та накладкою, яку можна перетягувати.
|
||||
3. Змінюйте прямокутник обрізання, перетягуючи його краї або кути.
|
||||
4. Кнопками навігації переходьте між сторінками та задавайте області обрізання для кожної.
|
||||
5. Натисніть **Обрізати й завантажити**, щоб застосувати обрізання й завантажити результат.
|
||||
|
||||
## Можливості
|
||||
|
||||
- Візуальний редактор обрізання на основі Cropper.js з маркерами для точного налаштування
|
||||
- Посторінкова навігація для окремих областей обрізання
|
||||
- Збереження параметрів обрізання для кожної сторінки, тож можна задати різні обрізання для різних сторінок
|
||||
- Живий попередній перегляд вибраної області
|
||||
- Підтримка PDF будь-якого розміру сторінки чи орієнтації
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Видалення широких полів зі сканованих документів, щоб зосередитися на вмісті
|
||||
- Прибирання друкарських міток обрізання чи реєстрації з PDF для передпресової підготовки
|
||||
- Обрізання слайдів лекцій, щоб прибрати область приміток доповідача
|
||||
- Видалення верхніх або нижніх колонтитулів з кожної сторінки перед поширенням уривка документа
|
||||
- Зміна розміру сторінок під конкретний дисплей чи макет друку
|
||||
|
||||
## Поради
|
||||
|
||||
- Накладку обрізання можна вільно змінювати за розміром і переміщувати. Тягніть за кути для пропорційної зміни розміру або за краї для зміни по одній осі.
|
||||
- Якщо до всіх сторінок потрібне однакове обрізання, задайте його на першій сторінці: інструмент запам’ятовує вашу область, поки ви переходите між сторінками.
|
||||
- Якщо потрібно уніфікувати розміри сторінок, а не обрізати візуально, краще підійде інструмент «Вирівняти розмір сторінок».
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Редактор 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. Клацніть зону завантаження або перетягніть один чи кілька файлів CSV.
|
||||
2. Перегляньте список файлів. Додайте ще файли або видаліть непотрібні.
|
||||
3. Натисніть **Перетворити на PDF**. Індикатор прогресу показує стан перетворення.
|
||||
4. Один файл завантажується напряму як PDF. Кілька файлів пакуються в `csv-converted.zip`.
|
||||
|
||||
## Параметри
|
||||
|
||||
Цей інструмент не має додаткових налаштувань. CSV автоматично розбирається та форматується як таблиця.
|
||||
|
||||
## Результат
|
||||
|
||||
| Кількість вхідних файлів | Результат |
|
||||
| :----------------------- | :-------------------------------------------------------- |
|
||||
| 1 файл | Один PDF для завантаження (наприклад, `data.pdf`) |
|
||||
| 2+ файли | ZIP-архів (`csv-converted.zip`) з одним PDF на кожен файл |
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Перетворення експортованих звітів з бази даних на таблиці PDF для друку
|
||||
- Передавання фінансових даних чи списків інвентаря людям без Excel
|
||||
- Створення PDF-версій журналів CSV для документації відповідності вимогам
|
||||
- Друк списків адрес, відомостей оцінок чи будь-яких табличних даних у форматі 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: Автоматично вирівнюйте нахилені сторінки у сканованих PDF за допомогою виявлення нахилу OpenCV. Регульовані поріг і DPI.
|
||||
---
|
||||
|
||||
# Вирівнювання PDF
|
||||
|
||||
Скановані документи рідко бувають ідеально рівними. Навіть невеликий нахил знижує точність OCR і погіршує вигляд друку. Цей інструмент використовує алгоритми обробки зображень OpenCV, щоб визначити кут нахилу кожної сторінки та повернути її до рівня.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте один або кілька сканованих PDF.
|
||||
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
|
||||
- Вирівнювання сторінок із планшетного сканера з нерівномірним розташуванням паперу
|
||||
- Покращення візуальної якості оцифрованих архівних матеріалів
|
||||
|
||||
## Поради
|
||||
|
||||
- Знизьте поріг до 0.1 градуса, якщо для OCR потрібне точне вирівнювання до пікселя.
|
||||
- 150 DPI швидкий і точний для більшості документів. Використовуйте 300 DPI для дуже дрібного тексту чи сторінок із тонкими деталями.
|
||||
- Вирівнювання найкраще працює на документах із чіткими горизонтальними рядками тексту. Воно може давати збій на сторінках, що здебільшого складаються із зображень або діагональних елементів дизайну.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Растеризація PDF](./rasterize-pdf): перетворіть вирівняний результат на плоский PDF із зображень
|
||||
- [Стиснення PDF](./compress-pdf): зменшіть розмір файлу після вирівнювання
|
||||
- [Відновлення PDF](./repair-pdf): виправте структурні проблеми у сканованих PDF
|
||||
@@ -0,0 +1,65 @@
|
||||
---
|
||||
title: Цифровий підпис
|
||||
description: Додавайте криптографічні цифрові підписи до PDF за допомогою сертифікатів X.509. Підтримує формати 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 | Текстовий формат. Має містити і сертифікат, і закритий ключ в одному файлі. Підтримує зашифровані закриті ключі. |
|
||||
|
||||
## Параметри видимого підпису
|
||||
|
||||
Якщо ввімкнено, на сторінці PDF відображається блок видимого підпису:
|
||||
|
||||
- **Позиція**: координати X/Y і ширина/висота в пунктах
|
||||
- **Сторінка**: перша сторінка, остання, усі сторінки або конкретний номер сторінки
|
||||
- **Зображення**: завантажте зображення PNG, JPG або WebP (ваш рукописний підпис, печатку компанії тощо)
|
||||
- **Текст**: власний текст із налаштовуваними кольором і розміром шрифту. Якщо не задано ні зображення, ні тексту, інструмент автоматично створює текст зі звичайного імені сертифіката та поточної дати.
|
||||
|
||||
## Метадані підпису
|
||||
|
||||
- **Причина**: чому документ підписано (наприклад, "Approved", "Reviewed")
|
||||
- **Місце**: де відбулося підписання (наприклад, "New York, NY")
|
||||
- **Контактна інформація**: як зв’язатися з підписантом (наприклад, адреса email)
|
||||
|
||||
## Примітка про підключення до інтернету
|
||||
|
||||
Для підписання може знадобитися підключення до інтернету. Бібліотека підписання завантажує ланцюжок сертифікатів за URL-адресами, вбудованими в розширення Authority Information Access (AIA) вашого сертифіката. Якщо ці сервери недоступні, підписання не вдасться для сертифікатів, що потребують перевірки ланцюжка.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Підписання договорів, пропозицій і угод юридично значущими цифровими підписами
|
||||
- Засвідчення офіційних документів у робочих процесах, що вимагають автентифікації на основі PKI
|
||||
- Підписання PDF-рахунків для відповідності нормативним вимогам (багато країн ЄС вимагають цифрово підписаних електронних рахунків)
|
||||
- Додавання організаційного затвердження до креслень чи документів з якості
|
||||
|
||||
## Поради
|
||||
|
||||
- Самопідписані сертифікати годяться для тестування, але в Adobe Reader показуватимуть попередження. Для робочих документів використовуйте сертифікат довіреного центру сертифікації.
|
||||
- Видимий підпис суто візуальний. Криптографічний підпис вбудовується незалежно від того, чи ввімкнено видимий блок.
|
||||
- Перевірте підписаний PDF за допомогою інструмента перевірки підпису, щоб підтвердити цілісність підпису.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Перевірка підпису](./validate-signature-pdf): перевіряйте цифрові підписи в підписаних PDF
|
||||
- [Сплощення PDF](./flatten-pdf): сплющіть форми перед підписанням, щоб запобігти змінам
|
||||
- [Зашифрувати PDF](./protect-pdf): додайте захист паролем поверх цифрового підпису
|
||||
- [Видалити метадані](./remove-metadata): приберіть метадані перед підписанням
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: Розділити сторінки
|
||||
description: Розділяйте сторінки PDF горизонтально або вертикально на менші підсторінки.
|
||||
---
|
||||
|
||||
# Розділити сторінки
|
||||
|
||||
Розрізайте окремі сторінки PDF навпіл, розділяючи їх горизонтально або вертикально. Це корисно, коли одна сторінка містить вміст, який слід розділити на окремі сторінки, наприклад, дві колонки, відскановані як одна широка сторінка.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте файл PDF.
|
||||
2. Виберіть напрямок розділення: **Вертикально** (ліва/права половини) або **Горизонтально** (верхня/нижня половини).
|
||||
3. За бажання вкажіть діапазон сторінок, щоб обмежити, які сторінки розділяти. Залиште порожнім, щоб розділити всі сторінки.
|
||||
4. Натисніть кнопку обробки, щоб створити розділений PDF.
|
||||
|
||||
## Можливості
|
||||
|
||||
- Вертикальне розділення: ділить кожну сторінку на ліву та праву половини
|
||||
- Горизонтальне розділення: ділить кожну сторінку на верхню та нижню половини
|
||||
- Фільтр діапазону сторінок для вибіркового розділення певних сторінок
|
||||
- Сторінки поза вибором проходять без змін
|
||||
- Зберігає якість вмісту без повторного відображення
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Розділення сторінок, відсканованих по дві (наприклад, скан книги, де ліва та права сторінки на одному аркуші)
|
||||
- Розбиття альбомного 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 із двостороннього сканування, де лицьові й зворотні сторінки йдуть окремими блоками, у правильний порядок лицьових і зворотних сторінок.
|
||||
---
|
||||
|
||||
# Сортування двостороннього сканування
|
||||
|
||||
Дуплексне впорядкування призначене для робочих процесів сканування через автоподавач, коли один PDF містить два блоки сторінок:
|
||||
|
||||
- спочатку всі лицьові сторони
|
||||
- потім усі зворотні сторони
|
||||
|
||||
Замість ручного розділення та повторного складання цей інструмент чергує два блоки в природному порядку читання: лицьова 1, зворотна 1, лицьова 2, зворотна 2 і так далі.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте один PDF, створений скануванням стосу у дуплексному режимі.
|
||||
2. Задайте точку розділення, де закінчується блок лицьових сторінок.
|
||||
3. Виберіть обробку блоку зворотних сторінок:
|
||||
- **Обернути блок зворотів** (поширений випадок, коли стос перевертають перед скануванням зворотних сторін)
|
||||
- **Залишити блок зворотів без змін**
|
||||
4. Натисніть **Зібрати PDF**, щоб завантажити результат із переупорядкованими сторінками.
|
||||
|
||||
## Параметри
|
||||
|
||||
- **Визначити розділення автоматично (половина)**: задає точку розділення як `ceil(totalPages / 2)`.
|
||||
- **Попередження про непарну кількість сторінок**: попереджає, коли загальна кількість сторінок непарна (часто це невідповідність під час сканування).
|
||||
- **Підтвердження нерівних блоків**: просить підтвердження, коли розміри блоків лицьових і зворотних сторінок різні.
|
||||
- **Експорт групами**: розділяє результат на окремі PDF за кількістю сторінок початкового документа та завантажує їх як ZIP.
|
||||
|
||||
## Поведінка результату
|
||||
|
||||
- **За замовчуванням**: один вихідний PDF (один вхідний PDF дає один вихідний PDF).
|
||||
- **Режим групування**: результат ділиться на частини за вашим значенням сторінок на документ; якщо утворюється кілька частин, їх завантажують одним ZIP, інакше завантажується один PDF.
|
||||
|
||||
Якщо розміри блоків різні, спочатку впорядковуються парні сторінки, а решта сторінок без пари додається в кінець.
|
||||
|
||||
## Типові сценарії використання
|
||||
|
||||
- Відновлення порядку після сканування стосу двосторонніх форм у два проходи.
|
||||
- Відновлення пакетів лицьових і зворотних сторінок зі сканерів офісного типу, які виводять спочатку всі лицьові, потім усі зворотні сторони.
|
||||
- Постобробка архівних сканів перед розділенням на файли для окремих документів.
|
||||
|
||||
## Поради
|
||||
|
||||
- У більшості дуплексних пакетів загальна кількість сторінок має бути парною.
|
||||
- Якщо зворотні сторінки виглядають перевернутими, перемкніть між **Обернути блок зворотів** і **Залишити блок зворотів без змін**.
|
||||
- Для оригіналів із 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 вкладень не знайдено": PDF просто не містить вбудованих файлів.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Додати вкладення](./add-attachments)
|
||||
- [Витяг вкладень](./extract-attachments)
|
||||
- [Перегляд метаданих](./view-metadata)
|
||||
@@ -0,0 +1,58 @@
|
||||
---
|
||||
title: Редагувати метадані
|
||||
description: Переглядайте та змінюйте поля метаданих PDF, зокрема назву, автора, ключові слова, дати та власні властивості.
|
||||
---
|
||||
|
||||
# Редагувати метадані
|
||||
|
||||
Редагуйте метадані, вбудовані у файл PDF. Інструмент попередньо заповнює форму наявними метаданими документа, дозволяє змінити будь-яке поле та зберігає зміни в новий PDF.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте файл PDF. Інструмент зчитує поточні метадані та заповнює форму.
|
||||
2. Редагуйте будь-які стандартні поля: Заголовок, Автор, Тема, Ключові слова, Створювач, Виробник.
|
||||
3. Налаштуйте поля «Дата створення» і «Дата зміни» за допомогою вибору дати й часу.
|
||||
4. Додавайте власні поля метаданих, натискаючи кнопку додавання та вводячи пару ключ-значення.
|
||||
5. Натисніть кнопку обробки, щоб зберегти змінений PDF.
|
||||
|
||||
## Можливості
|
||||
|
||||
- Попереднє заповнення всіх наявних метаданих із завантаженого PDF
|
||||
- Стандартні поля: Заголовок, Автор, Тема, Ключові слова, Створювач, Виробник
|
||||
- Вибір дати й часу для полів «Дата створення» і «Дата зміни»
|
||||
- Власні поля метаданих «ключ-значення» для довільних властивостей
|
||||
- Збереження змін безпосередньо в інформаційний словник документа PDF
|
||||
|
||||
## Поля, які можна редагувати
|
||||
|
||||
| Поле | Опис |
|
||||
| ------------------ | -------------------------------------------------------------- |
|
||||
| **Заголовок** | Назва документа, що відображається в програмах для читання PDF |
|
||||
| **Автор** | Особа чи організація, що створила документ |
|
||||
| **Тема** | Короткий опис теми документа |
|
||||
| **Ключові слова** | Терміни через кому для пошуку та категоризації |
|
||||
| **Створювач** | Програма, у якій спочатку створено вміст |
|
||||
| **Виробник** | Програма, яка згенерувала PDF |
|
||||
| **Дата створення** | Коли документ було створено |
|
||||
| **Дата зміни** | Коли документ востаннє змінювали |
|
||||
| **Власні поля** | Будь-які додаткові пари «ключ-значення», які ви задаєте |
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Установлення належної назви й автора перед публікацією документа
|
||||
- Додавання ключових слів для кращого пошуку в системах керування документами
|
||||
- Оновлення дати зміни, щоб відобразити поточну редакцію
|
||||
- Додавання власних полів метаданих, як-от Department, Project ID чи Classification
|
||||
- Очищення метаданих, залишених початковою програмою створення
|
||||
|
||||
## Поради
|
||||
|
||||
- Власні поля записуються безпосередньо в інформаційний словник PDF. Деякі програми для читання PDF можуть не показувати власні поля, але вони зберігаються у файлі.
|
||||
- Залиште поле порожнім, щоб очистити його в метаданих. Кнопка обробки зберігає все, що є у формі.
|
||||
- Щоб переглянути метадані без редагування, скористайтеся [Перегляд метаданих](./view-metadata). Щоб повністю видалити всі метадані, скористайтеся інструментом «Видалити метадані».
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Перегляд метаданих](./view-metadata)
|
||||
- [Шари OCG у PDF](./pdf-layers)
|
||||
- [Стиснення PDF](./compress-pdf)
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
title: Редактор PDF
|
||||
description: Коментуйте, виділяйте, редагуйте з вилученням, додавайте фігури й зображення, шукайте та переглядайте PDF прямо у браузері.
|
||||
---
|
||||
|
||||
# Редактор PDF
|
||||
|
||||
Редактор PDF у BentoPDF дозволяє коментувати, виділяти, закреслювати з видаленням вмісту (редагування), залишати примітки, додавати фігури й зображення та шукати в ваших 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: Email у PDF
|
||||
description: Перетворюйте файли електронної пошти EML і MSG на PDF у браузері. Зберігає заголовки, тіло листа та список вкладень.
|
||||
---
|
||||
|
||||
# Email у PDF
|
||||
|
||||
Перетворюйте збережені файли електронних листів на охайні PDF для друку. Інструмент розбирає файли EML і MSG, витягує повне повідомлення (заголовки, вміст тіла та метадані вкладень) і відображає все у структурованому PDF. Корисно для юридичного розкриття доказів, ведення записів або просто для друку важливого листа.
|
||||
|
||||
## Підтримувані формати
|
||||
|
||||
| Формат | Розширення | Примітки |
|
||||
| :----- | :--------- | :-------------------------------------------------------------------- |
|
||||
| EML | `.eml` | Стандартний формат MIME (експортується з більшості поштових клієнтів) |
|
||||
| MSG | `.msg` | Власний формат Microsoft Outlook |
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Клацніть зону завантаження або перетягніть файли EML чи MSG. В одній партії можна поєднувати обидва формати.
|
||||
2. Перегляньте список файлів. Видаліть непотрібні піктограмою кошика або натисніть **Додати ще файли**, щоб додати інші листи.
|
||||
3. Налаштуйте параметри перетворення (див. нижче).
|
||||
4. Натисніть **Конвертувати у PDF**. Інструмент розбирає кожен лист, відображає вміст як стилізований HTML і перетворює його на PDF за допомогою рушія PyMuPDF.
|
||||
5. Один лист завантажується одразу як PDF. Кілька листів пакуються в `emails-converted.zip`.
|
||||
|
||||
## Параметри
|
||||
|
||||
| Параметр | За замовчуванням | Опис |
|
||||
| :------------------------------------------ | :--------------- | :---------------------------------------------------------------------------------------- |
|
||||
| **Розмір сторінки** | A4 | Вибір розміру сторінки: A4, Letter або Legal. |
|
||||
| **Додати одержувачів CC і BCC у заголовок** | Увімк. | Якщо ввімкнено, списки одержувачів CC і BCC з’являються в розділі заголовка листа в PDF. |
|
||||
| **Додати список вкладень листа** | Увімк. | Якщо ввімкнено, у PDF з’являється список вкладених файлів листа (з іменами та розмірами). |
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Архівування важливого ділового листування у PDF для відповідності вимогам чи аудиту
|
||||
- Друк ланцюжків листів для судових проваджень чи запитів про розкриття доказів
|
||||
- Створення постійного запису підтверджень замовлень, квитанцій чи договорів, отриманих електронною поштою
|
||||
- Резервне копіювання файлів Outlook MSG у форматі, для читання якого не потрібен Outlook
|
||||
- Документування звернень до служби підтримки за експортованими файлами 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. Один EPUB завантажується одразу як PDF. Кілька файлів пакуються в ZIP-архів `epub-converted.zip`.
|
||||
|
||||
## Параметри
|
||||
|
||||
Перетворення виконується зі зручними типовими налаштуваннями й не потребує обов’язкової конфігурації. Текст перекомпоновується під стандартні розміри сторінки, а вбудовані шрифти й зображення переносяться в PDF.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Друк електронної книги без DRM для читання поза екранами
|
||||
- Подання рукопису EPUB як PDF із фіксованою версткою для рецензування
|
||||
- Архівування цифрових книг у форматі, який нативно відкриває кожна операційна система
|
||||
- Передавання розділу колезі, який не має читалки EPUB
|
||||
- Перетворення технічної документації, що поширюється як 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. Один файл завантажується одразу як PDF. Кілька файлів надаються як `excel-converted.zip`.
|
||||
|
||||
## Параметри
|
||||
|
||||
Цей інструмент не має додаткових налаштувань. Рушій LibreOffice визначає макет сторінки, масштабування та область друку за вбудованими параметрами таблиці.
|
||||
|
||||
## Результат
|
||||
|
||||
| Кількість вхідних файлів | Результат |
|
||||
| :----------------------- | :--------------------------------------------------------------------- |
|
||||
| 1 файл | Один PDF для завантаження (початкова назва файлу з розширенням `.pdf`) |
|
||||
| 2+ файли | ZIP-архів (`excel-converted.zip`) з одним PDF на кожен файл |
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Перетворення фінансових звітів чи бюджетів з Excel на PDF для розповсюдження
|
||||
- Створення PDF, готових до друку, з таблиць інвентаря чи каталогів продукції
|
||||
- Передавання результатів аналізу даних зацікавленим сторонам, які не мають Excel
|
||||
- Архівування квартальних звітів у форматі без можливості редагування
|
||||
- Перетворення файлів ODS з LibreOffice Calc на 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: Витягуйте всі вбудовані вкладені файли з одного чи кількох PDF і завантажуйте їх як ZIP-архів.
|
||||
---
|
||||
|
||||
# Витяг вкладень
|
||||
|
||||
Витягуйте всі вбудовані вкладення з одного чи кількох файлів PDF. Усі витягнуті файли пакуються в один ZIP-архів для завантаження.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте один або кілька файлів PDF із вбудованими вкладеннями.
|
||||
2. Натисніть **Витяг вкладень**.
|
||||
3. Інструмент шукає в кожному PDF вкладення на рівні документа та на рівні сторінки.
|
||||
4. Усі знайдені файли пакуються в ZIP-архів і завантажуються автоматично.
|
||||
5. Повідомлення про стан підтверджує, скільки вкладень знайдено та який їхній загальний розмір.
|
||||
|
||||
## Можливості
|
||||
|
||||
- Пакетне витягування з кількох PDF одночасно
|
||||
- Витягує вкладення і на рівні документа, і на рівні сторінки
|
||||
- Видає один ZIP-файл з усіма витягнутими файлами
|
||||
- Показує загальну кількість вкладень і сукупний розмір файлів
|
||||
- Чіткі повідомлення про стан, якщо вкладень не знайдено
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Відновлення файлів даних, вбудованих у PDF зі звітом
|
||||
- Витягування графічних ресурсів з портфоліо чи специфікації
|
||||
- Витягування додаткових матеріалів з навчальних чи PDF для відповідності вимогам
|
||||
- Аудит того, які файли вбудовано в пакет PDF
|
||||
|
||||
## Поради
|
||||
|
||||
- Якщо інструмент повідомляє, що вкладень немає, PDF може містити вбудовані зображення чи дані форм, а вони не є вкладеними файлами. Для вбудованих зображень скористайтеся [Витяг зображень](./extract-images).
|
||||
- Під час обробки кількох PDF усі вкладення з усіх файлів потрапляють в один ZIP. Назви файлів зберігаються з початкових вбудувань.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Додати вкладення](./add-attachments)
|
||||
- [Редагування вкладень](./edit-attachments)
|
||||
- [Витяг зображень](./extract-images)
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
title: Витяг зображень
|
||||
description: Витягуйте всі вбудовані зображення з файлів PDF. Переглядайте їх у сітці та завантажуйте окремо або як ZIP-архів.
|
||||
---
|
||||
|
||||
# Витяг зображень
|
||||
|
||||
Витягує всі вбудовані зображення з одного чи кількох файлів PDF. Витягнуті зображення відображаються в сітці попереднього перегляду, де їх можна завантажувати окремо або одразу всі як ZIP. Працює на PyMuPDF.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте один чи кілька PDF, клацнувши зону завантаження або перетягнувши на неї файли. Додавайте інші файли або видаляйте окремі за потреби.
|
||||
2. Натисніть **Витяг зображень**, щоб почати обробку.
|
||||
3. Інструмент переглядає кожну сторінку кожного завантаженого PDF, знаходячи та витягуючи вбудовані зображення.
|
||||
4. Витягнуті зображення з’являються в сітці з мініатюрами. Кожне зображення має кнопку завантаження.
|
||||
5. Натисніть **Завантажити все**, щоб зберегти все як ZIP-архів.
|
||||
|
||||
## Параметри
|
||||
|
||||
Цей інструмент не має налаштовуваних параметрів. Усі вбудовані зображення витягуються у власному форматі (зазвичай PNG, JPEG або в тому, у якому зображення було вбудовано в PDF).
|
||||
|
||||
## Формат результату
|
||||
|
||||
- Зображення відображаються в сітці попереднього перегляду з назвами `image_1.png`, `image_2.jpg` тощо.
|
||||
- **Завантажити все** створює `extracted-images.zip` з усіма зображеннями.
|
||||
- Окремі зображення можна завантажувати по одному із сітки.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Відновлення фото чи графіки з PDF для повторного використання в іншому проєкті.
|
||||
- Витягування зображень товарів з PDF-каталогу для картки товару в інтернет-магазині.
|
||||
- Витягування діаграм з технічної документації для презентацій.
|
||||
- Аудит того, які зображення вбудовано в документ, перед його поширенням.
|
||||
|
||||
## Поради
|
||||
|
||||
- Інструмент витягує зображення точно так, як вони збережені в PDF. Він не відображає сторінки як зображення: для цього скористайтеся [PDF у PNG](./pdf-to-png) або [PDF у JPG](./pdf-to-jpg).
|
||||
- Якщо інструмент повідомляє "Зображень не знайдено", PDF може використовувати векторну графіку замість вбудованих растрових зображень або бути скануванням, де вся сторінка є одним великим зображенням.
|
||||
- Пакетна обробка працює для кількох PDF. Усі зображення з усіх файлів об’єднуються в одну сітку та один 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).
|
||||
|
||||
## Можливості
|
||||
|
||||
- Гнучкий синтаксис діапазонів: окремі сторінки, діапазони або комбінації через кому
|
||||
- Показує загальну кількість сторінок після завантаження для зручності
|
||||
- Можливість отримати один об’єднаний PDF або окремі файли в ZIP
|
||||
- Зберігає початковий вміст і форматування сторінок
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Витягування короткого резюме (перших кількох сторінок) з довгого звіту
|
||||
- Витягування одного розділу з PDF-підручника
|
||||
- Збереження окремих сторінок із пакета форм як самостійних документів
|
||||
- Створення зразка документа з вибраних сторінок більшого файлу
|
||||
|
||||
## Поради
|
||||
|
||||
- Нумерація сторінок починається з одиниці. Використовуйте `1` для першої сторінки, а не `0`.
|
||||
- Щоб видалити сторінки, а не витягнути їх, скористайтеся [Видалити сторінки](./delete-pages): це обернена операція.
|
||||
- Якщо потрібен візуальний вибір сторінок із мініатюрами, використовуйте [Розділити PDF](./split-pdf) у режимі «Вибрати сторінки візуально».
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Розділити PDF](./split-pdf)
|
||||
- [Видалити сторінки](./delete-pages)
|
||||
- [Об’єднати PDF](./merge-pdf)
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
title: Витяг таблиць
|
||||
description: Знаходьте та витягуйте таблиці з документів PDF. Експорт у CSV, JSON або Markdown з деталізацією по кожній таблиці.
|
||||
---
|
||||
|
||||
# Витяг таблиць
|
||||
|
||||
Знаходить усі таблиці в PDF і дозволяє експортувати їх у вибраному форматі: CSV, JSON або Markdown. Кожна таблиця витягується окремо з метаданими сторінки та позиції. Працює на рушії виявлення таблиць PyMuPDF.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте PDF, клацнувши зону завантаження або перетягнувши на неї файл.
|
||||
2. Виберіть бажаний **формат експорту**: CSV, JSON або Markdown.
|
||||
3. Натисніть **Витягнути таблиці**, щоб почати обробку.
|
||||
4. Якщо знайдено одну таблицю, вона завантажується як один файл. Кілька таблиць дають ZIP-архів з одним файлом на таблицю.
|
||||
|
||||
## Параметри
|
||||
|
||||
- **Формат експорту**: виберіть один із варіантів:
|
||||
- **CSV**: значення, розділені комами, з належним екрануванням полів, що містять коми, лапки чи переноси рядків. Підходить для електронних таблиць і баз даних.
|
||||
- **JSON**: структура масиву масивів, відформатована з відступом у 2 пробіли. Підходить для програмної обробки.
|
||||
- **Markdown**: формат таблиці з роздільниками-вертикальними рисками, який формує PyMuPDF. Підходить для документації та файлів README.
|
||||
|
||||
## Формат результату
|
||||
|
||||
- **Одна таблиця**: `filename_table.csv` (або `.json` / `.md`)
|
||||
- **Кілька таблиць**: `filename_tables.zip` з файлами на кшталт `table_1_page3.csv`, `table_2_page5.csv` тощо.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Витягування окремих таблиць із довгих PDF-звітів без вивантаження даних усього документа.
|
||||
- Отримання таблиць у форматі Markdown для вставлення безпосередньо в задачі GitHub, вікі чи документацію.
|
||||
- Отримання структурованих даних JSON із таблиць PDF для інтеграцій з API чи скриптів.
|
||||
- Порівняння таблиць у різних версіях PDF шляхом експорту обох у CSV і перегляду відмінностей.
|
||||
|
||||
## Поради
|
||||
|
||||
- Цей інструмент дає контроль над кожною таблицею окремо. Якщо потрібно просто вивантажити всі таблиці в один 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 розбирає XML-структуру FB2 і відтворює її як посторінковий вміст PDF.
|
||||
4. Один файл завантажується як PDF одразу. Кілька конвертацій пакуються в `fb2-converted.zip`.
|
||||
|
||||
## Параметри
|
||||
|
||||
Налаштування не потрібні. Конвертер автоматично обробляє XML-структуру FB2 і зберігає розриви розділів, форматування та вбудовані зображення.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Читання електронних книг FB2 на пристроях або в застосунках, які підтримують лише PDF
|
||||
- Друк літератури, що поширюється у форматі 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. Завантажте файл PDF.
|
||||
2. Оберіть **Цільовий розмір сторінки** зі списку (A4, Letter, Legal, A3, A5, Tabloid або Власний).
|
||||
3. Оберіть **Орієнтацію**: Авто зберігає початкову орієнтацію кожної сторінки, або можна примусово задати книжкову чи альбомну.
|
||||
4. Оберіть режим **Масштабування вмісту**: Вписати (зберігає весь вміст, може додати поля) або Заповнити (заповнює сторінку, може обрізати краї).
|
||||
5. За потреби задайте **Колір фону** для доданих полів.
|
||||
6. Натисніть **Вирівняти розмір сторінок**.
|
||||
|
||||
## Параметри
|
||||
|
||||
- **Стандартні розміри**: A4, Letter, Legal, A3, A5, Tabloid
|
||||
- **Власні розміри**: введіть ширину та висоту в дюймах або міліметрах
|
||||
- **Орієнтація**: Авто, книжкова, альбомна
|
||||
- **Режим масштабування**: Вписати або Заповнити (з обрізанням)
|
||||
- **Колір фону**: будь-який колір для заповнення полів
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Нормалізація об’єднаного PDF, сторінки якого походять із різних сканерів
|
||||
- Перетворення документа US Letter на A4 для міжнародного розповсюдження
|
||||
- Підготовка PDF до друку, що потребують однакового розміру обрізання
|
||||
- Виправлення сторінок, які трохи відхиляються від стандарту (наприклад, 8,49 x 11,02 дюйма замість 8,5 x 11)
|
||||
|
||||
## Поради
|
||||
|
||||
- Використовуйте режим Вписати, щоб гарантовано не втратити вміст. Режим Заповнити виглядає охайніше, але може обрізати краї.
|
||||
- Перевірте результат інструментом «Розміри сторінок», щоб переконатися, що всі сторінки відповідають цільовому розміру.
|
||||
- За замовчуванням фон білий; оберіть темний колір, якщо поля вашого документа темні.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Розміри сторінок](./page-dimensions): перегляньте розміри сторінок до і після виправлення
|
||||
- [Стиснення PDF](./compress-pdf): зменште розмір файлу після вирівнювання
|
||||
- [Обрізати PDF](./crop-pdf): обрізайте сторінки вручну замість автоматичного масштабування
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
title: Сплющити PDF
|
||||
description: Перетворіть інтерактивні форми й анотації на статичний вміст. Поля форм стають нередагованими, а анотації вбудовуються в сторінку.
|
||||
---
|
||||
|
||||
# Сплющити PDF
|
||||
|
||||
Сплющення вбудовує інтерактивні елементи (поля форм, випадні списки, прапорці, анотації, виділення, нотатки) безпосередньо у вміст сторінки. Вигляд залишається тим самим, але нічого вже не можна редагувати чи витягувати. Це аналог друку заповненої форми та повторного сканування, тільки якість лишається ідеальною.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте один або кілька файлів PDF.
|
||||
2. Натисніть **Сплющити PDF**.
|
||||
3. Один файл завантажується одразу. Кілька файлів дають архів ZIP.
|
||||
|
||||
Інструмент використовує pdf-lib для сплющення полів форм (через `form.flatten()`) і окремий модуль сплющення анотацій, який вбудовує анотації в потік сторінки. Обидві операції виконуються за один прохід.
|
||||
|
||||
## Що сплющується
|
||||
|
||||
- **Поля форм**: текстові поля, прапорці, радіокнопки, випадні списки, поля підпису
|
||||
- **Анотації**: коментарі, виділення, закреслення, підкреслення, нотатки, штампи, рукописні анотації
|
||||
- **Інтерактивні елементи**: кнопки, тригери дій
|
||||
|
||||
## Що не змінюється
|
||||
|
||||
- Текстовий вміст (залишається виділюваним і доступним для пошуку)
|
||||
- Зображення та графіка
|
||||
- Макет і розміри сторінок
|
||||
- Закладки та зміст
|
||||
- Гіперпосилання (крім тих, що реалізовані як анотації)
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Блокування заповненої форми, щоб отримувачі не могли змінити надані відповіді
|
||||
- Підготовка PDF до архівування, коли інтерактивні елементи не потрібні
|
||||
- Усунення проблем відображення, коли анотації виглядають по-різному в різних переглядачах
|
||||
- Гарантія того, що підписаний документ не можна змінити після накладання підпису
|
||||
- Зменшення розміру файлу завдяки видаленню визначень полів форм і об’єктів анотацій
|
||||
|
||||
## Поради
|
||||
|
||||
- Сплющуйте після завершення всіх правок. Скасувати сплющення PDF неможливо.
|
||||
- Якщо потрібно сплющити та ще й видалити метадані, JavaScript і вкладення, скористайтеся інструментом «Очистити PDF»: сплющення є одним із його параметрів.
|
||||
- Деякі PDF повідомляють «форму не знайдено». Це нормально, якщо в документі є лише анотації без полів форм.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Очистити PDF](./sanitize-pdf): сплющення форм плюс видалення метаданих, скриптів та іншого
|
||||
- [Растеризація PDF](./rasterize-pdf): перетворення на PDF із зображень для максимального сплющення
|
||||
- [Шрифти у контури](./font-to-outline): перетворення шрифтів на векторні контури
|
||||
- [Зашифрувати PDF](./protect-pdf): захистіть сплющений PDF паролем
|
||||
@@ -0,0 +1,52 @@
|
||||
---
|
||||
title: Шрифти у контури
|
||||
description: Перетворіть усі шрифти PDF на векторні контури для однакового відображення на різних пристроях. Усуває проблеми із залежністю від шрифтів.
|
||||
---
|
||||
|
||||
# Шрифти у контури
|
||||
|
||||
Перетворення шрифтів на контури змінює кожен символ тексту із гліфа шрифту на векторний контур. PDF більше не залежить від встановлених шрифтів: він виглядає однаково на кожному пристрої, в кожній операційній системі та на кожному принтері. Це стандартний крок у поліграфічній підготовці.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте один або кілька файлів PDF.
|
||||
2. Натисніть **Перетворити на контури**.
|
||||
3. Ghostscript перетворює весь текст на векторні контури.
|
||||
4. Завантажте результат. Кілька файлів дають архів ZIP.
|
||||
|
||||
Налаштовувати нічого не потрібно. Інструмент використовує Ghostscript (WebAssembly), щоб за один прохід перетворити всі посилання на шрифти на контури.
|
||||
|
||||
## Що змінюється
|
||||
|
||||
- Символи тексту стають векторними кривими (контурами Безьє)
|
||||
- Вбудовувати шрифти більше не потрібно: PDF самодостатній на рівні гліфів
|
||||
- Розмір файлу може збільшитися, бо векторні контури зазвичай більші за посилання на шрифти
|
||||
- Зовнішній вигляд зберігається точно
|
||||
|
||||
## Що втрачається
|
||||
|
||||
- Виділення та копіювання тексту
|
||||
- Пошук за текстом (Ctrl+F перестає працювати)
|
||||
- Можливість редагувати текстовий вміст
|
||||
- Доступність для екранних читалок
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Надсилання PDF до друкарні, яка вимагає шрифтів у контурах
|
||||
- Передавання документів із власними або ліцензованими шрифтами людям, у яких цих шрифтів немає
|
||||
- Запобігання підміні шрифтів, яка змінює вигляд документа в інших системах
|
||||
- Підготовка PDF для лазерного гравіювання або CNC-різання, що потребують векторних даних
|
||||
- Гарантія правильного відображення 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: Заповнюйте PDF-форми, зокрема XFA, прямо у браузері за допомогою вбудованого переглядача.
|
||||
---
|
||||
|
||||
# Заповнення PDF-форм
|
||||
|
||||
Відкрийте PDF із полями форм і заповніть його прямо у вбудованому переглядачі. Інструмент підтримує як стандартні поля AcroForm, так і застарілі форми XFA (XML Forms Architecture). Після заповнення форми завантажте готову версію одним кліком.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте PDF, що містить поля форм.
|
||||
2. Документ відкривається в інтегрованому переглядачі PDF, який відображає поля форм як інтерактивні елементи.
|
||||
3. Клацайте текстові поля, прапорці, випадні списки та радіокнопки, щоб заповнити їх.
|
||||
4. Натисніть **Зберегти та завантажити заповнену форму**, щоб отримати готовий PDF.
|
||||
|
||||
## Можливості
|
||||
|
||||
- Вбудований переглядач PDF.js з повною взаємодією з полями форм
|
||||
- Підтримка стандартних полів AcroForm (текстові поля, прапорці, випадні списки, радіокнопки)
|
||||
- Підтримка форм XFA для застарілих форм на основі XML
|
||||
- Автоматичний підбір розміру переглядача за розмірами сторінки
|
||||
- Відображення імені та розміру файлу
|
||||
|
||||
## Параметри
|
||||
|
||||
Додаткових параметрів немає. Завантажте форму, заповніть її та завантажте результат.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Заповнення податкових форм, страхових заяв або державних документів
|
||||
- Заповнення анкет для прийому на роботу, отриманих як вкладення PDF
|
||||
- Заповнення форм реєстрації постачальників або анкет для підрядників
|
||||
- Підтвердження контрольних списків відповідності за допомогою прапорців
|
||||
- Заповнення медичних анкет перед візитом до лікаря
|
||||
|
||||
## Поради
|
||||
|
||||
- XFA це застарілий формат, який підтримують лише деякі переглядачі PDF. Якщо ви відкриваєте PDF із XFA у Chrome або більшості інших інструментів і бачите порожні сторінки, це означає, що в цих переглядачах немає підтримки XFA. Заповнення PDF-форм у 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: верхній ліворуч, верхній по центру, верхній праворуч, нижній ліворуч, нижній по центру та нижній праворуч. Інструмент підтримує динамічні змінні для номера сторінки та загальної кількості сторінок, тож можна створювати шаблони на кшталт «Сторінка 3 з 10», які автоматично оновлюються для кожної сторінки.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте файл PDF.
|
||||
2. З’явиться панель параметрів з елементами форматування та шістьма полями введення тексту.
|
||||
3. Введіть потрібний текст у будь-яку позицію колонтитулів.
|
||||
4. Використовуйте заповнювачі `{page}` і `{total}` для динамічної нумерації сторінок.
|
||||
5. Налаштуйте розмір і колір шрифту та за потреби обмежте діапазон сторінок.
|
||||
6. Натисніть **Додати колонтитули**, щоб обробити файл і завантажити результат.
|
||||
|
||||
## Параметри
|
||||
|
||||
- **Діапазон сторінок**: за потреби обмежте сторінки, на які додаються колонтитули. Залиште порожнім, щоб застосувати до всіх сторінок. Формат: «1-3, 5» (діапазони через кому).
|
||||
- **Розмір шрифту**: від 6 до 24 пунктів. За замовчуванням 10.
|
||||
- **Колір шрифту**: оберіть будь-який колір за допомогою вибору кольору.
|
||||
- **Верхній ліворуч / по центру / праворуч**: текстові поля для верхньої частини кожної сторінки.
|
||||
- **Нижній ліворуч / по центру / праворуч**: текстові поля для нижньої частини кожної сторінки.
|
||||
|
||||
## Можливості
|
||||
|
||||
- Шість незалежних позицій тексту на кожній сторінці
|
||||
- Динамічна змінна `{page}`, що вставляє поточний номер сторінки
|
||||
- Динамічна змінна `{total}`, що вставляє загальну кількість сторінок
|
||||
- Фільтрація за діапазоном сторінок для вибору конкретних сторінок
|
||||
- Налаштовуваний розмір і колір шрифту
|
||||
- Шрифт Helvetica для чистого професійного вигляду
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Додавання «Сторінка {page} з {total}» у нижній колонтитул по центру звіту
|
||||
- Розміщення назви компанії у верхньому колонтитулі ліворуч, а дати документа праворуч
|
||||
- Додавання повідомлень про конфіденційність у нижній колонтитул юридичних документів
|
||||
- Нанесення номерів редакцій документа на певні діапазони сторінок
|
||||
|
||||
## Поради
|
||||
|
||||
- Поєднуйте `{page}` і `{total}` в одному полі для форматів на кшталт «Сторінка {page} з {total}» або «{page}/{total}».
|
||||
- Більшість полів можна залишити порожніми та заповнити лише потрібні позиції. Порожні поля просто пропускаються.
|
||||
- Для складніших колонтитулів із зображеннями чи логотипами скористайтеся інструментом [Додати водяний знак](./add-watermark), розмістивши його у верхній частині сторінки.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Нумерація сторінок](./page-numbers)
|
||||
- [Додати водяний знак](./add-watermark)
|
||||
- [Нумерація Bates](./bates-numbering)
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
title: HEIC у PDF
|
||||
description: Конвертуйте зображення HEIC і HEIF з iPhone та iPad у PDF прямо у браузері.
|
||||
---
|
||||
|
||||
# HEIC у PDF
|
||||
|
||||
Конвертуйте зображення HEIC/HEIF у PDF. HEIC є стандартним форматом фото на iPhone та iPad починаючи з iOS 11. Цей інструмент дозволяє перетворити такі фото на PDF без встановлення програм і без завантаження файлів на сервер.
|
||||
|
||||
## Підтримувані формати
|
||||
|
||||
| Формат | Розширення |
|
||||
| :----- | :--------- |
|
||||
| HEIC | `.heic` |
|
||||
| HEIF | `.heif` |
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Натисніть область завантаження або перетягніть файли HEIC/HEIF.
|
||||
2. Перегляньте список файлів і видаліть непотрібні.
|
||||
3. Натисніть **Конвертувати в PDF**. Результат завантажується як `from_heic.pdf`.
|
||||
|
||||
Кожен файл HEIC декодується бібліотекою heic2any, яка перетворює його на PNG із якістю 92%. Потім PNG вбудовується в PDF за допомогою pdf-lib: кожне зображення на окремій сторінці в повному розмірі.
|
||||
|
||||
## Параметри
|
||||
|
||||
Цей інструмент не має додаткових налаштувань. Зображення HEIC перед вбудовуванням конвертуються у PNG з високою якістю (0.92).
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Створення PDF із фото з iPhone для додавання до страхової заяви чи звіту
|
||||
- Конвертація фото HEIC для оголошення про нерухомість в один документ для друку
|
||||
- Перетворення скриншотів iPad (формат HEIF) на PDF, яким легко поділитися
|
||||
- Пакетна конвертація фото з відпустки для подорожнього щоденника
|
||||
|
||||
## Поради
|
||||
|
||||
- Декодування HEIC повністю відбувається у браузері за допомогою WebAssembly. Перша конвертація може тривати трохи довше, поки завантажується декодер.
|
||||
- Якщо потрібно поєднати HEIC з іншими форматами зображень (JPG, PNG тощо), скористайтеся інструментом [Зображення у PDF](./image-to-pdf), який обробляє HEIC разом з усіма іншими форматами.
|
||||
- Файли HEIC з iPhone часто містять дані EXIF, зокрема координати GPS. У вихідному 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 інших форматів зображень в один файл PDF.
|
||||
---
|
||||
|
||||
# Зображення у PDF
|
||||
|
||||
Універсальний конвертер зображень у PDF. Завантажуйте зображення практично в будь-якому форматі та об’єднуйте їх в один документ PDF. Кожне зображення отримує власну сторінку з розмірами оригіналу.
|
||||
|
||||
## Підтримувані формати
|
||||
|
||||
| Формат | Розширення |
|
||||
| :-------------- | :------------------------------------- |
|
||||
| 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 перед вбудовуванням. Це відбувається непомітно й не потребує додаткових дій.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Об’єднання сканованих чеків чи документів, зроблених камерою телефона, в один PDF
|
||||
- Створення фотопортфоліо чи лукбука зі зображень різних форматів
|
||||
- Конвертація фото з iPhone (HEIC) у PDF без встановлення програм
|
||||
- Збирання дизайнерських макетів з експортів PSD і скриншотів у фінальний матеріал для клієнта
|
||||
- Архівування теки зі старими форматами зображень (PNM, JXR, JP2) в один PDF
|
||||
|
||||
## Поради
|
||||
|
||||
- Порядок зображень у PDF відповідає їхньому порядку в списку файлів. Завантажуйте їх у потрібній послідовності.
|
||||
- Для найменшого розміру файлу оберіть низьку якість. Для сканів із великою кількістю тексту різниця зазвичай непомітна.
|
||||
- Якщо у вас зображення лише одного формату, окремі конвертери (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 пропонує **понад 130 інструментів** для роботи з PDF. Усі інструменти працюють повністю у вашому браузері: ваші файли ніколи не залишають пристрій.
|
||||
|
||||
---
|
||||
|
||||
## Редагування та анотації
|
||||
|
||||
Змінюйте, позначайте та покращуйте документи PDF за допомогою повного набору інструментів редагування.
|
||||
|
||||
<div class="tool-grid">
|
||||
|
||||
- [**Редактор PDF**](./edit-pdf): анотуйте, виділяйте, редагуйте вміст, коментуйте, додавайте фігури та зображення, шукайте й переглядайте PDF.
|
||||
- [**Редагувати закладки**](./bookmark): додавайте, редагуйте, імпортуйте, видаляйте та витягуйте закладки PDF.
|
||||
- [**Зміст**](./table-of-contents): створіть сторінку змісту із закладок PDF.
|
||||
- [**Нумерація сторінок**](./page-numbers): вставте номери сторінок у документ.
|
||||
- [**Додати нумерацію сторінок**](./add-page-labels): застосуйте мітки сторінок PDF з римськими цифрами, префіксами та власним початком.
|
||||
- [**Нумерація Bates**](./bates-numbering): додайте послідовні номери Bates в один чи кілька файлів PDF.
|
||||
- [**Додати водяний знак**](./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): створіть PDF з одного чи кількох зображень JPG.
|
||||
- [**PNG у PDF**](./png-to-pdf): створіть PDF з одного чи кількох зображень PNG.
|
||||
- [**WebP у PDF**](./webp-to-pdf): створіть PDF з одного чи кількох зображень WebP.
|
||||
- [**SVG у PDF**](./svg-to-pdf): створіть PDF з одного чи кількох зображень SVG.
|
||||
- [**BMP у PDF**](./bmp-to-pdf): створіть PDF з одного чи кількох зображень BMP.
|
||||
- [**HEIC у PDF**](./heic-to-pdf): створіть PDF з одного чи кількох зображень HEIC.
|
||||
- [**TIFF у PDF**](./tiff-to-pdf): створіть PDF з одного чи кількох зображень TIFF.
|
||||
- [**Текст у PDF**](./txt-to-pdf): конвертуйте простий текстовий файл у PDF.
|
||||
- [**Markdown у 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 (Rich Text Format) у 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.
|
||||
- [**Email у 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): конвертуйте PDF у CBZ (архів коміксів) для читалок коміксів і Calibre.
|
||||
- [**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 у Markdown**](./pdf-to-markdown): конвертуйте текст і таблиці PDF у формат Markdown.
|
||||
- [**Підготовка PDF для AI**](./prepare-pdf-for-ai): витягніть вміст PDF як LlamaIndex JSON для конвеєрів RAG/LLM.
|
||||
- [**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 в один файл.
|
||||
- [**Чергування та змішування сторінок**](./alternate-merge): об’єднуйте PDF, чергуючи сторінки з кожного PDF.
|
||||
- [**Сортування двостороннього сканування**](./duplex-collate): перевпорядкуйте блоки сканів лицьового й зворотного боку в правильну послідовність сторінок.
|
||||
- [**Дублювати та впорядкувати**](./organize-pdf): дублюйте, перевпорядковуйте та видаляйте сторінки.
|
||||
- [**Додати вкладення**](./add-attachments): вбудуйте один чи кілька файлів у PDF.
|
||||
- [**Витяг вкладень**](./extract-attachments): витягніть усі вбудовані файли з PDF як ZIP.
|
||||
- [**Редагувати вкладення**](./edit-attachments): переглядайте або видаляйте вкладення у PDF.
|
||||
- [**PDF OCG**](./pdf-layers): переглядайте, перемикайте, додавайте та видаляйте шари OCG у PDF.
|
||||
- [**Розділити 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): розмістіть кілька сторінок на одному аркуші.
|
||||
- [**PDF-буклет**](./pdf-booklet): перевпорядкуйте сторінки для двостороннього друку буклета.
|
||||
- [**Об’єднати в одну сторінку**](./combine-single-page): зшийте всі сторінки в одну безперервну стрічку.
|
||||
- [**Перегляд метаданих**](./view-metadata): перегляньте приховані властивості PDF.
|
||||
- [**Редагувати метадані**](./edit-metadata): змініть автора, заголовок та інші властивості.
|
||||
- [**PDF у ZIP**](./pdf-to-zip): запакуйте кілька файлів PDF в архів ZIP.
|
||||
- [**Порівняти PDF**](./compare-pdfs): порівняйте два 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 для швидкого перегляду в інтернеті.
|
||||
- [**Розміри сторінок**](./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.
|
||||
- [**Перевірка підпису PDF**](./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: Конвертуйте одне або кілька зображень JPG, JPEG і JPEG 2000 в один файл PDF прямо у браузері.
|
||||
---
|
||||
|
||||
# JPG у PDF
|
||||
|
||||
Перетворіть зображення JPG на охайний PDF. Завантажте один файл або кілька JPG одразу: кожне зображення стає повнорозмірною сторінкою вихідного документа.
|
||||
|
||||
## Підтримувані формати
|
||||
|
||||
| Формат | Розширення |
|
||||
| :-------- | :-------------- |
|
||||
| JPEG | `.jpg`, `.jpeg` |
|
||||
| JPEG 2000 | `.jp2`, `.jpx` |
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Натисніть область завантаження або перетягніть файли JPG. Можна вибрати кілька файлів.
|
||||
2. Перегляньте завантажені файли. Значком кошика видаляйте окремі файли або натисніть **Додати ще файли**, щоб доповнити список.
|
||||
3. Оберіть рівень **Якості PDF**.
|
||||
4. Натисніть **Конвертувати в PDF**. Інструмент стискає зображення відповідно до обраної якості, конвертує їх рушієм PyMuPDF і завантажує `from_jpgs.pdf`.
|
||||
|
||||
## Параметри
|
||||
|
||||
**Якість PDF** визначає стиснення кожного зображення перед вбудовуванням у PDF:
|
||||
|
||||
- **Висока якість**: зберігає максимум деталей. Для фотографії чи друку.
|
||||
- **Середня якість** (за замовчуванням): хороший баланс між чіткістю та розміром файлу.
|
||||
- **Низька якість**: сильне стиснення для найменшого результату.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Конвертація відсканованих документів, збережених як JPG, в один PDF для подання
|
||||
- Пакування фото товарів у каталог для клієнтів
|
||||
- Перетворення медичних чи супутникових зображень JPEG 2000 на переносний PDF
|
||||
- Створення фотоальбому для друку з експортів камери
|
||||
|
||||
## Поради
|
||||
|
||||
- Файли JPEG 2000 (`.jp2`, `.jpx`) підтримуються повністю, а не лише стандартний JPEG. Це корисно для медичної візуалізації та геопросторових даних.
|
||||
- Якщо ваші 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: Відновлюйте файли PDF із формату JSON BentoPDF. Конвертуйте експорти JSON назад в оригінальні документи PDF.
|
||||
---
|
||||
|
||||
# JSON у PDF
|
||||
|
||||
Відновлюйте документи PDF із файлів JSON, раніше створених інструментом **PDF у JSON** від BentoPDF. Це інструмент зворотної конвертації: він бере структуроване JSON-представлення PDF і перебудовує початковий документ.
|
||||
|
||||
::: warning
|
||||
Цей інструмент приймає лише файли JSON, створені конвертером PDF у JSON від BentoPDF. Звичайні файли JSON з API, баз даних чи інших інструментів не підтримуються.
|
||||
:::
|
||||
|
||||
## Підтримувані формати
|
||||
|
||||
| Вхідні дані | Опис |
|
||||
| :---------- | :------------------------------------------------------------ |
|
||||
| `.json` | Файли JSON, експортовані інструментом PDF у JSON від BentoPDF |
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Натисніть область завантаження або перетягніть один чи кілька файлів JSON.
|
||||
2. У списку файлів відображається кожен вибраний файл із його розміром.
|
||||
3. Натисніть **Конвертувати в PDF**. Інструмент обробляє всі файли за допомогою Web Worker і рушія CPDF.
|
||||
4. Результат завантажується як `jsons-to-pdf.zip`, що містить по одному PDF для кожного вхідного файлу JSON.
|
||||
|
||||
Конвертація виконується у фоновому Web Worker, тому інтерфейс залишається чутливим навіть із великими файлами.
|
||||
|
||||
## Параметри
|
||||
|
||||
Цей інструмент не має налаштовуваних параметрів. Структура JSON повністю визначає вихідний PDF.
|
||||
|
||||
## Результат
|
||||
|
||||
Під час конвертації кількох файлів JSON результати надаються як архів ZIP. Кожен PDF має ім’я вихідного файлу JSON (наприклад, `report.json` стає `report.pdf`).
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Відновлення PDF із резервної копії чи архівного конвеєра на основі JSON
|
||||
- Подвійна конвертація PDF через JSON для перевірки, а потім назад у PDF
|
||||
- Перебудова документів після програмних змін у структурі JSON
|
||||
- Перевірка того, що експорт PDF у JSON зберіг увесь вміст документа, шляхом конвертації назад
|
||||
|
||||
## Поради
|
||||
|
||||
- Якщо потрібно конвертувати довільні дані JSON (наприклад, відповіді API чи файли конфігурації) у відформатований PDF, краще підійде інструмент [Текст у PDF](./txt-to-pdf). Вставте JSON як текст, і він буде відображений із належним форматуванням.
|
||||
- Для роботи цього інструмента потрібен рушій CPDF WebAssembly. Для власних екземплярів потрібно налаштувати файли CPDF WASM.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Текст у PDF](./txt-to-pdf)
|
||||
- [Markdown у PDF](./markdown-to-pdf)
|
||||
- [CSV у PDF](./csv-to-pdf)
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
title: Лінеаризація PDF
|
||||
description: Оптимізуйте файли PDF для швидкого перегляду в інтернеті з поступовим завантаженням. Також відома як оптимізація «Fast Web View».
|
||||
---
|
||||
|
||||
# Лінеаризація PDF
|
||||
|
||||
Лінеаризація перебудовує структуру PDF так, щоб першу сторінку можна було показати ще до завантаження всього файлу. Adobe називає це «Fast Web View». Якщо ви розміщуєте PDF на сайті або видаєте їх через портал документів, лінеаризація помітно пришвидшує їх відкриття.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте один або кілька файлів PDF.
|
||||
2. Натисніть **Лінеаризувати PDF**.
|
||||
3. Завантажте результати як архів ZIP з усіма лінеаризованими файлами.
|
||||
|
||||
Налаштовувати нічого не потрібно. Інструмент використовує прапорець `--linearize` програми QPDF, який змінює внутрішню структуру PDF без зміни його візуального вмісту.
|
||||
|
||||
## Що робить лінеаризація
|
||||
|
||||
- Переупорядковує об’єкти PDF так, щоб дані першої сторінки опинилися на початку файлу
|
||||
- Додає словник лінеаризації та таблиці підказок, щоб переглядачі знали, де шукати кожну сторінку
|
||||
- Вмикає запити діапазонів байтів: браузер може отримати лише першу сторінку без завантаження всього файлу
|
||||
- Очищає таблицю перехресних посилань для ефективного довільного доступу
|
||||
|
||||
## Можливості
|
||||
|
||||
- Пакетна обробка кількох PDF в одній операції
|
||||
- Результат зберігає весь вміст, шрифти, зображення та інтерактивні елементи
|
||||
- Використовує QPDF (WebAssembly) для надійної лінеаризації за стандартами
|
||||
- Результати пакуються в ZIP для зручного завантаження
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Розміщення PDF-звітів на сайті, де користувачі очікують миттєвого відображення сторінки
|
||||
- Вбудовування PDF у вебзастосунки з переглядачами у браузері
|
||||
- Публікація PDF-каталогів чи посібників, до яких звертаються через повільні мобільні з’єднання
|
||||
- Підготовка документів для мереж доставки вмісту (CDN), що підтримують віддачу діапазонів байтів
|
||||
|
||||
## Поради
|
||||
|
||||
- Лінеаризуйте після завершення всіх інших правок. Будь-яка наступна зміна (об’єднання, додавання сторінок) порушить лінеаризацію.
|
||||
- Поєднуйте зі «Стисненням PDF», щоб отримати найменші та найшвидші для завантаження PDF.
|
||||
- Лінеаризація трохи збільшує розмір файлу (зазвичай менше ніж на 1%).
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Стиснення PDF](./compress-pdf): зменште розмір файлу перед лінеаризацією
|
||||
- [Відновити PDF](./repair-pdf): виправте структурні проблеми, що заважають лінеаризації
|
||||
- [Видалити метадані](./remove-metadata): приберіть метадані перед публікацією в інтернеті
|
||||
@@ -0,0 +1,59 @@
|
||||
---
|
||||
title: Markdown у PDF
|
||||
description: Пишіть або вставляйте Markdown та експортуйте його у професійно відформатований PDF із живим переглядом і підсвічуванням синтаксису.
|
||||
---
|
||||
|
||||
# Markdown у PDF
|
||||
|
||||
Повнофункціональний редактор Markdown із живим переглядом і експортом у PDF одним кліком. Пишіть з нуля, завантажуйте наявний файл `.md` або вставляйте вміст із буфера обміну. Редактор відтворює ваш Markdown у реальному часі та експортує стилізований PDF за допомогою вбудованого рушія друку браузера.
|
||||
|
||||
## Підтримувані формати
|
||||
|
||||
| Вхідні дані | Опис |
|
||||
| :------------- | :--------------------------------- |
|
||||
| Файли `.md` | Завантаження кнопкою «Завантажити» |
|
||||
| Пряме введення | Введіть або вставте в редактор |
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Відкрийте інструмент Markdown у 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 перетворюються на клікабельні посилання
|
||||
- Створення **змісту**
|
||||
- **Якірні посилання** на заголовках
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Написання документації проєкту та експорт охайного PDF для зацікавлених сторін
|
||||
- Створення технічних звітів із прикладами коду та архітектурними діаграмами Mermaid
|
||||
- Конвертація README з GitHub у 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 в один документ із перевпорядкуванням перетягуванням і керуванням на рівні сторінок.
|
||||
---
|
||||
|
||||
# Об’єднати PDF
|
||||
|
||||
Об’єднуйте кілька файлів PDF в один документ. Можна зливати цілі файли у вибраному порядку або перейти в режим сторінок для докладного керування окремими сторінками з кожного завантаженого PDF.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте два або більше файлів PDF, клацнувши область завантаження або перетягнувши їх.
|
||||
2. Оберіть між **Режимом файлів** і **Режимом сторінок** за допомогою перемикача вгорі.
|
||||
3. У режимі файлів перетягуйте файли, щоб змінити порядок, і за потреби вказуйте діапазони сторінок (наприклад, `1-3, 5`) для кожного файлу. Залиште діапазон порожнім, щоб додати всі сторінки.
|
||||
4. У режимі сторінок перетягуйте окремі мініатюри сторінок, щоб побудувати точну послідовність сторінок.
|
||||
5. Натисніть **Об’єднати PDF**, щоб зібрати все в один файл. Об’єднаний PDF завантажується автоматично.
|
||||
|
||||
## Можливості
|
||||
|
||||
- Два режими об’єднання: режим файлів для швидкого злиття цілих файлів, режим сторінок для керування кожною сторінкою
|
||||
- Перевпорядкування перетягуванням в обох режимах із плавними анімаціями
|
||||
- Синтаксис діапазонів сторінок (наприклад, `1-3, 5, 8-10`) дозволяє вибирати сторінки без переходу в режим сторінок
|
||||
- Відкладене завантаження мініатюр сторінок зберігає чутливість інтерфейсу навіть із великими документами
|
||||
- Без обмежень на кількість файлів чи загальну кількість сторінок
|
||||
- Зберігає початкову якість PDF без повторного кодування
|
||||
|
||||
## Параметри
|
||||
|
||||
| Параметр | Опис |
|
||||
| ------------------ | -------------------------------------------------------------------------------------------------------- |
|
||||
| **Режим файлів** | Об’єднання цілих файлів у власному порядку з необов’язковими фільтрами діапазонів для кожного файлу |
|
||||
| **Режим сторінок** | Візуальна сітка всіх сторінок з усіх файлів: перетягуйте мініатюри, щоб побудувати точну послідовність |
|
||||
| **Поле сторінок** | Текстове поле для кожного файлу, що приймає діапазони на кшталт `1-3, 5`, щоб додати лише певні сторінки |
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Об’єднання окремих PDF розділів в одну книгу чи звіт
|
||||
- Поєднання супровідного листа та резюме в один документ для подання
|
||||
- Збирання окремих сторінок із кількох джерел в один файл
|
||||
- Збирання сканованих чеків чи рахунків в один архівний 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. Натисніть область завантаження або перетягніть один чи кілька файлів MOBI.
|
||||
2. Перегляньте список файлів. Видаліть непотрібні файли значком кошика або скористайтеся кнопкою **Додати ще файли**, щоб додати інші книги.
|
||||
3. Натисніть **Конвертувати в PDF**. Рушій PyMuPDF розбирає структуру MOBI та відтворює кожну сторінку як вміст PDF.
|
||||
4. Один файл завантажується як PDF. Під час конвертації кількох файлів ви отримаєте архів ZIP з назвою `mobi-converted.zip`.
|
||||
|
||||
## Параметри
|
||||
|
||||
Додаткові налаштування не потрібні. Конвертація зберігає текст, форматування та вбудовані зображення оригінального файлу MOBI.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Читання вмісту, купленого в Kindle, на читалці не від Kindle, яка підтримує лише PDF
|
||||
- Друк розділів електронної книги для навчання чи нотаток офлайн
|
||||
- Архівування особистої бібліотеки електронних книг в універсальному форматі
|
||||
- Передавання уривків людині, у якої не встановлено застосунок Kindle
|
||||
|
||||
## Поради
|
||||
|
||||
- Файли MOBI із захистом DRM конвертувати не можна. Інструмент працює лише з файлами MOBI без DRM.
|
||||
- Великі електронні книги з багатьма вбудованими зображеннями можуть оброблятися на кілька секунд довше, бо все відбувається у браузері.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [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 на одному аркуші у вигляді сітки для компактного друку.
|
||||
---
|
||||
|
||||
# N-Up PDF
|
||||
|
||||
Розміщуйте кілька сторінок на одному аркуші у вигляді сітки. Це зменшує кількість друкованих сторінок, вміщуючи по 2, 4, 6, 8, 9 або 16 сторінок на аркуш. Інструмент виконує масштабування, позиціонування та додаткове налаштування розміру сторінки.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте файл PDF.
|
||||
2. Оберіть кількість сторінок на аркуші (значення «N»): 2, 4, 6, 8, 9 або 16.
|
||||
3. Оберіть розмір вихідної сторінки (за замовчуванням A4) та орієнтацію.
|
||||
4. За потреби налаштуйте відступи, колір рамки та колір фону.
|
||||
5. Натисніть кнопку обробки. Інструмент масштабує кожну сторінку та розміщує їх плиткою на нових аркушах.
|
||||
|
||||
## Можливості
|
||||
|
||||
- Сітки: 2-up, 4-up, 6-up, 8-up, 9-up і 16-up
|
||||
- Налаштовувані розмір і орієнтація вихідної сторінки
|
||||
- Необов’язкові відступи між сторінками в сітці
|
||||
- Налаштування кольору фону та рамки
|
||||
- Збереження пропорцій оригінальних сторінок під час масштабування
|
||||
|
||||
## Параметри
|
||||
|
||||
| Параметр | Опис |
|
||||
| ---------------------- | ------------------------------------------------------------------------------- |
|
||||
| **Сторінок на аркуші** | Кількість оригінальних сторінок на кожній вихідній сторінці (2, 4, 6, 8, 9, 16) |
|
||||
| **Розмір сторінки** | Розмір вихідного аркуша (A4, Letter, Legal тощо) |
|
||||
| **Орієнтація** | Книжкова або альбомна для вихідного аркуша |
|
||||
| **Відступи** | Проміжок у пунктах між сторінками в сітці |
|
||||
| **Колір фону** | Колір заливки фону вихідного аркуша |
|
||||
| **Колір рамки** | Колір рамок навколо кожної сторінки в сітці |
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Друк роздаткових матеріалів із 4 слайдами на сторінці для економії паперу
|
||||
- Створення навчальних аркушів із кількома довідковими сторінками на одному аркуші
|
||||
- Створення компактних архівів документів для підшивання
|
||||
- Створення оглядових аркушів із мініатюрами довгого документа
|
||||
|
||||
## Поради
|
||||
|
||||
- Альбомна орієнтація часто краще підходить для розкладки 2-up, а книжкова зазвичай найкраща для 4-up і більше.
|
||||
- Збільшення відступів покращує читабельність, але зменшує площу для кожної сторінки в сітці.
|
||||
- Для зворотної операції (розділення однієї сторінки на кілька) дивіться [Постеризація PDF](./posterize-pdf).
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Постеризація PDF](./posterize-pdf)
|
||||
- [PDF-буклет](./pdf-booklet)
|
||||
- [Об’єднати в одну сторінку](./combine-single-page)
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
title: OCR PDF
|
||||
description: Робіть скановані PDF придатними для пошуку та копіювання за допомогою Tesseract OCR із підтримкою кількох мов і фільтрацією символів.
|
||||
---
|
||||
|
||||
# OCR PDF
|
||||
|
||||
Перетворюйте скановані документи на PDF з пошуком і копіюванням. Інструмент використовує Tesseract OCR для розпізнавання тексту на зображеннях і накладає невидимий текстовий шар поверх оригінальних сторінок, зберігаючи їхній вигляд і роблячи вміст повністю придатним для пошуку.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте відсканований PDF або PDF із зображень.
|
||||
2. Оберіть одну чи кілька мов, присутніх у документі, у списку мов із пошуком.
|
||||
3. За потреби налаштуйте розширені параметри (роздільна здатність, бінаризація, білий список).
|
||||
4. Натисніть **Почати OCR** і стежте за прогресом на індикаторі в реальному часі.
|
||||
5. Після завершення перегляньте витягнутий текст, а потім завантажте PDF із пошуком або простий файл `.txt`.
|
||||
|
||||
## Можливості
|
||||
|
||||
- OCR кількома мовами з вибором мови за допомогою пошуку
|
||||
- Невидимий текстовий шар зберігає оригінальний вигляд документа
|
||||
- Індикатор прогресу та журнал у реальному часі під час обробки
|
||||
- Завантаження результатів як PDF із пошуком або простого текстового файлу
|
||||
- Копіювання витягнутого тексту прямо в буфер обміну
|
||||
- Три рівні роздільної здатності для балансу між швидкістю та точністю
|
||||
|
||||
## Параметри
|
||||
|
||||
| Налаштування | Значення | За замовчуванням | Призначення |
|
||||
| -------------------------------- | ----------------------------------------------------------------------------------------- | ---------------- | --------------------------------------------------------------------------------------- |
|
||||
| **Роздільна здатність** | Стандартна (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. Один файл завантажується як PDF одразу. Кілька файлів дають архів ZIP з назвою `odg-to-pdf.zip`.
|
||||
|
||||
## Параметри
|
||||
|
||||
Додаткові налаштування не потрібні. Конвертація зберігає початкові розміри сторінки, фігури, з’єднувальні лінії та текстові поля з джерела ODG.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Передавання діаграм LibreOffice Draw клієнтам, у яких не встановлено LibreOffice
|
||||
- Друк блок-схем і мережевих діаграм, створених у 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 Slides. Перетворення презентацій на PDF дозволяє будь-кому переглядати їх без програм для презентацій, а слайди чітко друкуються.
|
||||
|
||||
## Підтримувані формати
|
||||
|
||||
| Формат | Розширення | Примітки |
|
||||
| :------------------------ | :--------- | :--------------------------------------------- |
|
||||
| OpenDocument Presentation | `.odp` | LibreOffice Impress / експорт із Google Slides |
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Натисніть область завантаження або перетягніть файли ODP. Можна вибрати кілька презентацій одразу.
|
||||
2. Перегляньте список файлів. Видаліть записи значком кошика або скористайтеся кнопкою **Додати ще файли**, щоб додати інші презентації.
|
||||
3. Натисніть **Конвертувати в PDF**. Рушій на основі LibreOffice обробляє кожну презентацію та створює PDF, де кожен слайд стає сторінкою.
|
||||
4. Один файл завантажується як PDF. Кілька файлів надаються в архіві ZIP з назвою `odp-to-pdf.zip`.
|
||||
|
||||
## Параметри
|
||||
|
||||
Налаштовувати нічого не потрібно. Кожен слайд відтворюється в оригінальних розмірах зі збереженням тексту, зображень, фігур і фонів слайдів.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Розповсюдження презентації серед аудиторії як роздаткового PDF
|
||||
- Передавання експортів Google Slides людям, які віддають перевагу PDF перед ODP
|
||||
- Архівування доповідей і лекцій у форматі лише для читання
|
||||
- Друк наборів слайдів для очних воркшопів
|
||||
|
||||
## Поради
|
||||
|
||||
- Переходи та анімації слайдів є суто візуальними функціями й не переносяться в 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 Spreadsheet у PDF. ODS є рідним форматом LibreOffice Calc і поширеним форматом експорту з Google Sheets. Цей інструмент перетворює дані таблиці, форматування та діаграми на PDF із розбиттям на сторінки, який можна друкувати або надсилати іншим.
|
||||
|
||||
## Підтримувані формати
|
||||
|
||||
| Формат | Розширення | Примітки |
|
||||
| :----------------------- | :--------- | :------------------------------------------ |
|
||||
| OpenDocument Spreadsheet | `.ods` | Експорт із LibreOffice Calc / Google Sheets |
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Натисніть на область завантаження або перетягніть файли ODS. Підтримується кілька файлів.
|
||||
2. Перегляньте список файлів. Скористайтеся іконкою кошика, щоб видалити файли, або натисніть **Додати файли**, щоб розширити пакет.
|
||||
3. Натисніть **Конвертувати у PDF**. Рушій на основі LibreOffice завантажується в браузері й перетворює кожну таблицю на сторінки PDF.
|
||||
4. Одна таблиця завантажується як PDF. Кілька файлів пакуються в `ods-to-pdf.zip`.
|
||||
|
||||
## Параметри
|
||||
|
||||
Налаштування не потрібні. Конвертер застосовує до PDF наявний макет друку таблиці, форматування клітинок і ширину стовпців.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Надсилання бюджету чи звіту з LibreOffice Calc тому, хто приймає лише PDF
|
||||
- Друк експорту з Google Sheets, завантаженого у форматі ODS
|
||||
- Архівування фінансових записів у форматі, що не редагується
|
||||
- Подання форм або табелів на основі ODS як документів із фіксованим макетом
|
||||
|
||||
## Поради
|
||||
|
||||
- Якщо в таблиці кілька аркушів, усі вони потраплять у PDF.
|
||||
- Дуже широкі таблиці можуть розтягуватися на кілька сторінок PDF по горизонталі. Якщо макет важливий, перед конвертацією підлаштуйте ширину стовпців у вихідному файлі.
|
||||
- Рушій LibreOffice ініціалізується під час першого використання. Наступні конвертації в тому самому сеансі виконуються швидше.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [ODG у PDF](./odg-to-pdf)
|
||||
- [ODP у PDF](./odp-to-pdf)
|
||||
- [XML у PDF](./xml-to-pdf)
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
title: ODT у PDF
|
||||
description: Конвертуйте файли OpenDocument Text (ODT) у формат PDF у браузері за допомогою рушія на основі LibreOffice.
|
||||
---
|
||||
|
||||
# ODT у PDF
|
||||
|
||||
Конвертуйте файли OpenDocument Text у PDF. ODT є рідним форматом LibreOffice Writer, Apache OpenOffice та інших відкритих текстових редакторів. Цей інструмент використовує LibreOffice-рушій у браузері для точної конвертації зі збереженням форматування, таблиць, зображень і стилів.
|
||||
|
||||
## Підтримувані формати
|
||||
|
||||
| Формат | Розширення |
|
||||
| :---------------- | :--------- |
|
||||
| OpenDocument Text | `.odt` |
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Натисніть на область завантаження або перетягніть один чи кілька файлів ODT.
|
||||
2. Перегляньте список файлів. Додайте ще файли або видаліть зайві.
|
||||
3. Натисніть **Конвертувати у PDF**. Рушій LibreOffice ініціалізується (індикатор прогресу показує стан завантаження), після чого кожен файл конвертується.
|
||||
4. Один файл завантажується одразу як PDF. Кілька файлів пакуються в `odt-converted.zip`.
|
||||
|
||||
## Параметри
|
||||
|
||||
Цей інструмент не має додаткових налаштувань. Конвертація максимально точно зберігає форматування вихідного документа.
|
||||
|
||||
## Результат
|
||||
|
||||
| Кількість файлів | Результат |
|
||||
| :--------------- | :---------------------------------------------------------------- |
|
||||
| 1 файл | Завантаження одного PDF (напр., `document.pdf`) |
|
||||
| 2 і більше | ZIP-архів (`odt-converted.zip`), що містить по одному PDF на файл |
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Конвертація документів LibreOffice Writer у PDF для обміну з користувачами Microsoft Office
|
||||
- Створення PDF для друку з наукових робіт, написаних у форматі OpenDocument
|
||||
- Пакетна конвертація теки шаблонів ODT у PDF для розсилки
|
||||
- Створення PDF із файлів ODT, згенерованих системами автоматичного формування документів
|
||||
|
||||
## Поради
|
||||
|
||||
- Рушій 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.
|
||||
2. Інструмент відобразить сітку мініатюр усіх сторінок.
|
||||
3. Перетягуйте мініатюри, щоб змінити порядок сторінок, натисніть зелену кнопку дублювання, щоб клонувати сторінку, або червону кнопку видалення, щоб прибрати її.
|
||||
4. Також можна ввести власний порядок сторінок у текстовому полі (напр., `3, 1, 2, 4`) і натиснути **Застосувати**, щоб одразу переставити всі сторінки.
|
||||
5. Натисніть кнопку обробки, щоб зібрати та завантажити впорядкований PDF.
|
||||
|
||||
## Можливості
|
||||
|
||||
- Зміна порядку сторінок перетягуванням з анімованими переходами
|
||||
- Кнопки дублювання та видалення для кожної сторінки
|
||||
- Введення власного порядку сторінок для точного переставляння
|
||||
- Номери сторінок автоматично оновлюються після кожної зміни
|
||||
- Не дозволяє видалити останню сторінку
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Переміщення сторінки, що опинилася не на своєму місці, на правильну позицію у звіті
|
||||
- Дублювання сторінки форми, щоб мати кілька порожніх копій в одному файлі
|
||||
- Видалення чернеткових або службових сторінок перед розповсюдженням документа
|
||||
- Зворотний або довільний порядок сторінок для підготовки до друку
|
||||
- Створення власної послідовності сторінок без повторного об’єднання окремих файлів
|
||||
|
||||
## Поради
|
||||
|
||||
- Поле власного порядку сторінок очікує номери вихідних сторінок через кому. Воно має містити кожну сторінку рівно один раз: без пропусків і дублікатів.
|
||||
- Після дублювання сторінки обидві копії посилаються на той самий індекс вихідної сторінки. Переставляння будь-якої з копій працює незалежно.
|
||||
- Для масових операцій з кількома файлами або складніших сценаріїв скористайтеся [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 тощо) або "Власний" |
|
||||
| Орієнтація | Книжкова або альбомна |
|
||||
| Співвідношення сторін | Відношення ширини до висоти у вигляді десяткового числа |
|
||||
| Площа | Площа сторінки у квадратних одиницях вибраної одиниці |
|
||||
| Поворот | Поворот сторінки в градусах |
|
||||
|
||||
## Можливості
|
||||
|
||||
- Автоматичне визначення стандартних форматів паперу (A3, A4, A5, Letter, Legal, Tabloid та інші)
|
||||
- Попередження про документ зі сторінками різного розміру з розподілом: які розміри є і скільки сторінок використовує кожен
|
||||
- Перетворення одиниць між пунктами, дюймами, міліметрами та пікселями (при 96 PPI)
|
||||
- Експорт у CSV для електронних таблиць або систем документації
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Перевірка того, що всі сторінки мають формат A4, перед відправкою документа в друкарню
|
||||
- З’ясування, чому об’єднаний PDF друкується з неочікуваними полями на окремих сторінках
|
||||
- Документування макета сторінок великого архіву PDF для метаданих
|
||||
- Виявлення повернутих сторінок, які потребують виправлення
|
||||
|
||||
## Поради
|
||||
|
||||
- Якщо підсумок показує "Різні розміри", скористайтеся інструментом «Вирівняти розмір сторінок», щоб уніфікувати розміри перед друком.
|
||||
- Поле повороту допомагає знайти сторінки, які відображаються правильно, але мають ненульовий атрибут повороту, що може спричиняти проблеми в деяких робочих процесах.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Вирівняти розмір сторінок](./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...) або формат "сторінка X з Y" (1 / 5, 2 / 5...).
|
||||
- **Розмір шрифту**: розмір тексту номера. За замовчуванням 12.
|
||||
- **Колір**: оберіть будь-який колір тексту номера за допомогою палітри.
|
||||
|
||||
## Можливості
|
||||
|
||||
- Шість варіантів розміщення, що охоплюють усі кути та центральні позиції
|
||||
- Два формати нумерації: проста послідовна або "сторінка X з Y"
|
||||
- Настроюваний розмір шрифту від 6 до 72 пунктів
|
||||
- Повна палітра для вибору кольору тексту
|
||||
- Автоматична обробка полів, що тримає номери в безпечній зоні незалежно від розміру сторінки
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Підготовка документів до друку, де потрібні видимі посилання на сторінки
|
||||
- Додавання номерів сторінок в об’єднаний PDF, створений із кількох вихідних файлів
|
||||
- Нумерація роздаткових матеріалів до презентацій перед розповсюдженням
|
||||
- Додавання послідовної нумерації в юридичні документи або договори
|
||||
|
||||
## Поради
|
||||
|
||||
- Формат "сторінка X з Y" корисний для документів, де читачам важливо знати загальний обсяг, наприклад комерційних пропозицій чи звітів.
|
||||
- Якщо для різних розділів потрібні різні стилі нумерації (наприклад, римські цифри для вступної частини), скористайтеся інструментом [Додати нумерацію сторінок](./add-page-labels).
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Додати нумерацію сторінок](./add-page-labels)
|
||||
- [Нумерація Bates](./bates-numbering)
|
||||
- [Колонтитули](./header-footer)
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: PDF-буклет
|
||||
description: Переставте сторінки PDF у порядок буклета (зшивання внакидку) для складання та скріплення у фізичний буклет.
|
||||
---
|
||||
|
||||
# PDF-буклет
|
||||
|
||||
Переставте сторінки PDF у порядок розкладки буклета. Після двостороннього друку та складання навпіл сторінки йтимуть у правильній послідовності читання. Такий макет використовують для буклетів зі зшиванням внакидку та зінів.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте файл PDF.
|
||||
2. Налаштуйте параметри буклета: розмір сторінки результату та орієнтацію.
|
||||
3. Натисніть **Створити попередній перегляд**, щоб побачити, як сторінки розташуються на кожному аркуші.
|
||||
4. Перегляньте попередній перегляд: він показує кожен фізичний аркуш із розподілом сторінок на лицьовому та зворотному боці.
|
||||
5. Натисніть **Завантажити**, щоб зберегти PDF із розкладкою буклета.
|
||||
|
||||
## Можливості
|
||||
|
||||
- Автоматична перестановка сторінок для зшивання внакидку
|
||||
- Настроюваний розмір сторінки результату
|
||||
- Наочний попередній перегляд макета буклета перед завантаженням
|
||||
- Непарна кількість сторінок обробляється додаванням порожніх сторінок, де потрібно
|
||||
- Масштабування вихідних сторінок під розмір аркуша буклета
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Створення буклетів або зінів для друку зі звичайного PDF
|
||||
- Підготовка програм конференцій або путівників заходів для друку власними силами
|
||||
- Виготовлення складених вітальних листівок або невеликих каталогів
|
||||
- Випуск збірок віршів чи невеликих книжечок для ручного палітурства
|
||||
|
||||
## Поради
|
||||
|
||||
- Кількість сторінок у вихідному PDF бажано кратна 4, щоб буклет вийшов охайним. Якщо це не так, порожні сторінки додаються автоматично, щоб заповнити останній аркуш.
|
||||
- Друкуйте результат двосторонньо з налаштуванням принтера "перевертати по короткому краю", потім складіть усі аркуші разом і скріпіть степлером по корінцю.
|
||||
- Щоб просто розмістити кілька сторінок на одному аркуші без порядку буклета, скористайтеся [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: Переглядайте, вмикайте та вимикайте, додавайте й видаляйте шари Optional Content Group (OCG) у документі PDF.
|
||||
---
|
||||
|
||||
# Шари PDF (OCG)
|
||||
|
||||
Керуйте групами необов’язкового вмісту (Optional Content Groups, OCG), яких зазвичай називають «шарами», усередині PDF. Можна вмикати й вимикати видимість шарів, додавати нові шари (зокрема вкладені дочірні), видаляти шари та зберігати змінений 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. Завантажте один чи кілька PDF і працюйте з усіма їхніми сторінками в одній наочній сітці. Повертайте, переставляйте, дублюйте, видаляйте, вставляйте нові PDF, додавайте порожні сторінки та розділяйте результат, не залишаючи інструмент.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Натисніть **Завантажити PDF** або перетягніть файли на область завантаження. Підтримується кілька файлів.
|
||||
2. Усі сторінки з кожного завантаженого файлу з’являються в прокручуваній сітці з мініатюрами.
|
||||
3. Керуйте сторінками за допомогою панелі інструментів або кнопок дій на кожній сторінці.
|
||||
4. Позначайте сторінки прапорцем на кожній картці, а потім застосовуйте масові операції.
|
||||
5. Позначайте точки розділення іконкою ножиць, щоб розбити результат на окремі файли.
|
||||
6. Натисніть **Експортувати PDF**, щоб завантажити готовий результат. Якщо є позначки розділення, результатом буде ZIP із кількома PDF.
|
||||
|
||||
## Можливості
|
||||
|
||||
- **Об’єднання**: завантажені PDF автоматично об’єднуються в одному робочому просторі
|
||||
- **Зміна порядку**: перетягуйте картки сторінок, щоб змінити послідовність
|
||||
- **Поворот**: поворот окремої сторінки або групи кроками по 90 градусів (ліворуч або праворуч)
|
||||
- **Дублювання**: клонуйте будь-яку сторінку одним кліком
|
||||
- **Видалення**: прибирайте окремі сторінки або видаляйте вибрані групою
|
||||
- **Вставити PDF**: додайте новий PDF після будь-якої сторінки
|
||||
- **Додати порожню сторінку**: додайте порожню сторінку A4 у кінець
|
||||
- **Розділення**: розставте позначки розділення між сторінками, а потім експортуйте ZIP з окремими PDF
|
||||
- **Вибрати все / Зняти вибір**: швидкий вибір для масових операцій
|
||||
- **Скасувати / Повторити**: повна історія скасування та повторення кожної операції
|
||||
- **Завантажити вибране**: експортуйте лише вибрані сторінки як окремий PDF
|
||||
- Автоматично відновлює пошкоджені PDF перед завантаженням
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Створення власного документа зі сторінок кількох вихідних PDF
|
||||
- Наведення порядку в скануванні: видалення порожніх сторінок, поворот бічних сканів і зміна порядку розділів
|
||||
- Розділення великого PDF за межами розділів за допомогою наочних позначок
|
||||
- Швидке редагування сторінок без повноцінного редактора PDF
|
||||
|
||||
## Поради
|
||||
|
||||
- Система скасування та повторення відстежує кожну операцію. Користуйтеся нею вільно: випадково зіпсувати роботу неможливо.
|
||||
- Позначки розділення відображаються як пунктирні сині лінії між сторінками. Розмістіть їх там, де потрібно розділити документ, а потім експортуйте, щоб отримати ZIP.
|
||||
- Для простого об’єднання чи розділення окремі інструменти [Об’єднати PDF](./merge-pdf) або [Розділити PDF](./split-pdf) можуть бути швидшими. Мультиінструмент незамінний, коли в одному сеансі потрібно кілька операцій.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Об’єднати 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 (Bitmap). BMP є нестисненим форматом, тому результат піксель у піксель без втрати якості, але файли великі.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте PDF, натиснувши на область завантаження або перетягнувши файл.
|
||||
2. Натисніть **Конвертувати** для обробки файлу.
|
||||
3. Один файл `.bmp` або ZIP-архів завантажується автоматично.
|
||||
|
||||
## Параметри
|
||||
|
||||
Цей інструмент не має настроюваних параметрів. Сторінки відображаються у фіксованому масштабі 2x, тож зображення приблизно вдвічі більші за рідні розміри сторінки PDF.
|
||||
|
||||
## Формат результату
|
||||
|
||||
- **Одна сторінка**: `filename.bmp`
|
||||
- **Кілька сторінок**: `filename_bmps.zip`, що містить `page_1.bmp`, `page_2.bmp` тощо.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Передавання сторінок PDF у застарілі системи або обладнання, що приймають лише BMP.
|
||||
- Підготовка нестиснутих зображень для певних друкарських процесів.
|
||||
- Використання растрового результату як вводу для інструментів обробки зображень, що потребують сирих пікселів.
|
||||
|
||||
## Поради
|
||||
|
||||
- Файли 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 у файл CBZ (Comic Book Archive) для читалок коміксів, як-от Komga, Kavita, CDisplayEx і Calibre.
|
||||
---
|
||||
|
||||
# PDF у CBZ
|
||||
|
||||
Перетворює PDF на файл CBZ (Comic Book ZIP), стандартний формат цифрових коміксів і манґи. Кожна сторінка PDF стає зображенням в архіві. Інструмент створює метадані в трьох форматах для максимальної сумісності: ComicInfo.xml, metadata.opf і ComicBookInfo JSON.
|
||||
|
||||
## Як це працює
|
||||
|
||||
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").
|
||||
- **Номер (#)**: номер випуску в серії.
|
||||
- **Том**: номер тому.
|
||||
- **Автор(и)**: ім’я сценариста або творця.
|
||||
- **Видавець**: видавнича компанія.
|
||||
- **Теги / Жанр**: теги через кому (напр., "Action, Adventure").
|
||||
- **Рік видання**: рік публікації (1900–2100).
|
||||
- **Рейтинг**: оцінка спільноти від 0 до 5.
|
||||
|
||||
## Сумісність метаданих
|
||||
|
||||
Інструмент записує метадані в трьох форматах, щоб їх знайшла кожна читалка:
|
||||
|
||||
| Формат | Розташування | Підтримується в |
|
||||
| ------------------ | ------------------ | ------------------------------------------- |
|
||||
| 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 і експортуйте їх в один файл CSV. Працює з багатосторінковими PDF з автоматичним виявленням таблиць.
|
||||
---
|
||||
|
||||
# PDF у CSV
|
||||
|
||||
Витягує таблиці з PDF і експортує їх у файл CSV. Інструмент сканує кожну сторінку на табличні дані за допомогою механізму виявлення таблиць PyMuPDF, а потім записує всі знайдені рядки в один результат, розділений комами.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте PDF, натиснувши на область завантаження або перетягнувши файл.
|
||||
2. Натисніть **Конвертувати**, щоб почати витяг таблиць.
|
||||
3. Інструмент сканує кожну сторінку та автоматично визначає таблиці.
|
||||
4. Файл `.csv` завантажується з усіма витягнутими даними таблиць.
|
||||
|
||||
Таблиці з різних сторінок розділяються в результаті порожніми рядками. Клітинки з комами, лапками або переносами рядків коректно екрануються згідно з RFC 4180.
|
||||
|
||||
## Параметри
|
||||
|
||||
Цей інструмент не має настроюваних параметрів. Усі знайдені в документі таблиці витягуються й об’єднуються в один CSV.
|
||||
|
||||
## Формат результату
|
||||
|
||||
- Один файл `filename.csv`, що містить усі виявлені таблиці.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Перенесення фінансових даних із банківських виписок чи рахунків у PDF до електронної таблиці.
|
||||
- Витяг цінових таблиць із комерційних пропозицій постачальників для порівняння.
|
||||
- Перетворення табличних дослідницьких даних із PDF-статей на формат, придатний для інструментів аналізу.
|
||||
- Міграція даних зі застарілих PDF-звітів у бази даних.
|
||||
|
||||
## Поради
|
||||
|
||||
- Якщо таблиць не знайдено, інструмент показує повідомлення "Таблиць не знайдено". Зазвичай це означає, що PDF використовує текстове розташування, схоже на таблицю, але не є справжньою таблицею.
|
||||
- Для більшого контролю над окремими таблицями скористайтеся інструментом [Витяг таблиць з PDF](./extract-tables), що дає змогу обрати вивід у CSV, JSON або Markdown.
|
||||
- Якщо дані потрібні у форматі 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. Файл `.xlsx` завантажується з одним аркушем на кожну таблицю.
|
||||
|
||||
## Параметри
|
||||
|
||||
Цей інструмент не має настроюваних параметрів. Усі виявлені таблиці витягуються автоматично.
|
||||
|
||||
## Формат результату
|
||||
|
||||
- Один файл `filename.xlsx`.
|
||||
- **Одна таблиця**: один аркуш з назвою "Table".
|
||||
- **Кілька таблиць**: аркуші з назвами "Table 1 (Page 3)", "Table 2 (Page 5)" тощо. Назви аркушів обрізаються до 31 символу (обмеження Excel).
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Перетворення фінансових 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` завантажується з усіма сторінками, перетвореними на чорно-білі.
|
||||
|
||||
Усередині кожна сторінка відображається в масштабі 2x, дані пікселів проходять через фільтр відтінків сірого, потім кодуються як JPEG із якістю 90% і розміщуються в новому документі PDF.
|
||||
|
||||
## Параметри
|
||||
|
||||
Цей інструмент не має настроюваних параметрів. Перетворення у відтінки сірого використовує стандартну формулу яскравості, а якість JPEG фіксована на рівні 90%.
|
||||
|
||||
## Формат результату
|
||||
|
||||
- Один файл `greyscale.pdf`, що містить усі сторінки як зображення JPEG у відтінках сірого.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Підготовка документів до чорно-білого друку для економії на кольоровому тонері.
|
||||
- Виконання вимог до подання юридичних чи державних документів, що вимагають відтінків сірого.
|
||||
- Зменшення розміру файлу кольорових PDF (зображення JPEG у відтінках сірого менші за кольорові).
|
||||
- Створення єдиного візуального стилю для документів зі змішаними кольоровими й чорно-білими сторінками.
|
||||
|
||||
## Поради
|
||||
|
||||
- Оскільки кожна сторінка растеризується й повторно вбудовується як JPEG, результат складається із зображень. Текст початкового PDF більше не можна буде виділяти чи шукати. Якщо потім потрібен текст із пошуком, пропустіть результат через інструмент OCR.
|
||||
- Для точнішого керування кольорами (яскравість, контраст, насиченість) зверніть увагу на інструмент «Корекція кольору» або вузол Greyscale у [Конструкторі 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 із настроюваною якістю. Односторінкові PDF завантажуються напряму, багатосторінкові експортуються як ZIP.
|
||||
---
|
||||
|
||||
# PDF у JPG
|
||||
|
||||
Перетворює кожну сторінку PDF на зображення JPG. Односторінкові документи завантажуються як окремий файл `.jpg`. Багатосторінкові PDF створюють ZIP-архів з одним JPG на кожну сторінку.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте PDF, натиснувши на область завантаження або перетягнувши файл. Інструмент покаже ім’я файлу, його розмір і кількість сторінок.
|
||||
2. Налаштуйте повзунок **Якість**, щоб керувати стисненням JPG.
|
||||
3. Натисніть **Конвертувати**, щоб почати обробку.
|
||||
4. Результат завантажується автоматично: один JPG для односторінкового PDF або ZIP-файл для багатосторінкових документів.
|
||||
|
||||
## Параметри
|
||||
|
||||
- **Якість**: повзунок від 0% до 100% (за замовчуванням 90%). Вищі значення дають чіткіші зображення більшого розміру. Нижчі значення стискають агресивніше.
|
||||
|
||||
Усередині сторінки відображаються в масштабі 2x, тож роздільність результату вдвічі більша за розміри сторінки PDF. Стандартна сторінка формату Letter дає зображення приблизно 1 224 x 1 584 пікселів.
|
||||
|
||||
## Формат результату
|
||||
|
||||
- **Одна сторінка**: `filename.jpg`
|
||||
- **Кілька сторінок**: `filename_jpgs.zip`, що містить `page_1.jpg`, `page_2.jpg` тощо.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Створення мініатюр для системи керування документами.
|
||||
- Надсилання сторінки зі звіту в чаті чи листі, що не підтримує PDF.
|
||||
- Створення графічних ресурсів із PDF-діаграм чи ілюстрацій.
|
||||
- Архівування відсканованих документів як окремих зображень.
|
||||
|
||||
## Поради
|
||||
|
||||
- Для результату без втрат скористайтеся [PDF у PNG](./pdf-to-png).
|
||||
- Якість 80-90% забезпечує добрий баланс між розміром файлу та візуальною точністю.
|
||||
- Якщо для кожної сторінки потрібен певний формат, зверніть увагу на [Конструктор PDF-процесів](./pdf-workflow), де є вихідний вузол «PDF у зображення».
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [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: Конвертуйте файли PDF у структурований формат JSON за допомогою CPDF. Експортує внутрішню структуру PDF як машинозчитувані дані JSON.
|
||||
---
|
||||
|
||||
# PDF у JSON
|
||||
|
||||
Конвертує один чи кілька файлів PDF у формат JSON. Інструмент використовує CPDF (Coherent PDF), щоб серіалізувати внутрішню структуру кожного PDF у машинозчитуване представлення JSON. Результат завжди надається як ZIP-архів.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Оберіть один чи кілька файлів PDF у вікні вибору файлів.
|
||||
2. Натисніть **Конвертувати**, щоб почати обробку. Конвертація виконується у фоновому веб-воркері.
|
||||
3. Завантажується ZIP-архів, що містить по одному файлу JSON для кожного вхідного PDF.
|
||||
|
||||
Рядок стану показує перебіг етапів конвертації та створення ZIP.
|
||||
|
||||
## Параметри
|
||||
|
||||
Цей інструмент не має настроюваних параметрів. Кожен PDF конвертується в повне представлення JSON.
|
||||
|
||||
## Формат результату
|
||||
|
||||
- Файл `pdfs-to-json.zip`, що містить `filename.json` для кожного вхідного PDF.
|
||||
|
||||
Результат JSON відображає внутрішню структуру об’єктів PDF, зокрема дерева сторінок, посилання на шрифти, метадані та потоки вмісту.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Перевірка внутрішньої структури PDF для налагодження чи валідації.
|
||||
- Програмне отримання структурованих метаданих і властивостей сторінок.
|
||||
- Передавання даних про структуру PDF у власні конвеєри обробки.
|
||||
- Аудит PDF-документів на відповідність вимогам шляхом аналізу їхніх дерев об’єктів.
|
||||
|
||||
## Поради
|
||||
|
||||
- Цей інструмент виводить сиру структуру об’єктів PDF, а не витягнутий текстовий вміст. Якщо потрібен текст сторінок у форматі JSON, скористайтеся натомість [Підготовка PDF для ШІ](./prepare-pdf-for-ai).
|
||||
- Для витягу простого тексту [PDF у текст](./pdf-to-text) більш прямолінійний.
|
||||
- Великі PDF зі складною структурою дають дуже великі файли JSON.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [PDF у текст](./pdf-to-text)
|
||||
- [Підготовка PDF для ШІ](./prepare-pdf-for-ai)
|
||||
- [Витяг таблиць з PDF](./extract-tables)
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: PDF у Markdown
|
||||
description: Конвертуйте документи PDF у формат Markdown із необов’язковим витягом зображень. Підтримує пакетну конвертацію кількох файлів.
|
||||
---
|
||||
|
||||
# PDF у Markdown
|
||||
|
||||
Конвертує файли PDF у формат Markdown (`.md`), зберігаючи заголовки, абзаци, списки та базове форматування. За бажанням витягує й додає вбудовані зображення. Підтримує одиночну та пакетну конвертацію. Працює на PyMuPDF.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте один чи кілька PDF, натиснувши на область завантаження або перетягнувши файли.
|
||||
2. За бажанням увімкніть **Додати зображення**, щоб вбудувати витягнуті зображення в результат Markdown.
|
||||
3. Натисніть **Конвертувати**, щоб почати обробку.
|
||||
4. Один файл завантажується як `filename.md`. Кілька файлів створюють `markdown-files.zip`.
|
||||
|
||||
## Параметри
|
||||
|
||||
- **Додати зображення**: якщо позначено, вбудовані в PDF зображення витягуються й додаються як посилання в результат Markdown. Якщо не позначено, конвертується лише текстовий вміст.
|
||||
|
||||
## Формат результату
|
||||
|
||||
- **Один файл**: `filename.md`
|
||||
- **Кілька файлів**: `markdown-files.zip`, що містить по одному `.md` на кожен вхідний PDF.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Конвертація PDF-документації в Markdown для генератора статичних сайтів, як-от VitePress, Hugo чи Jekyll.
|
||||
- Перетворення PDF-статей на редагований Markdown для застосунків нотаток, як-от Obsidian.
|
||||
- Міграція застарілих баз знань у PDF у текстовий формат, зручний для Git.
|
||||
- Витяг структурованого вмісту з PDF-книг для переформатування.
|
||||
|
||||
## Поради
|
||||
|
||||
- Параметр «Додати зображення» корисний, коли PDF містить діаграми чи рисунки, важливі для змісту. Для текстових документів вимкніть його, щоб результат був чистішим.
|
||||
- Складні макети з бічними колонками, виносками чи багатоколонковим текстом можуть дати недосконалий Markdown. Перегляньте результат і за потреби відкоригуйте.
|
||||
- Для сирого тексту без форматування скористайтеся [PDF у текст](./pdf-to-text).
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [PDF у текст](./pdf-to-text)
|
||||
- [PDF у Word](./pdf-to-word)
|
||||
- [Підготовка 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, для довготривалого цифрового збереження. Цей інструмент конвертує ваші звичайні PDF у документи, що відповідають PDF/A, за допомогою Ghostscript, який працює безпосередньо у вашому браузері.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте один чи кілька файлів PDF.
|
||||
2. Оберіть **Версію PDF/A** у випадному списку.
|
||||
3. За бажанням увімкніть **Попереднє сплощення PDF** для складних файлів, які не конвертуються звичайним способом.
|
||||
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 обов’язковий для судових документів)
|
||||
- Подання документів до інституційних репозиторіїв або цифрових бібліотек
|
||||
- Збереження ділових записів, для яких початкового програмного забезпечення за десять років може не існувати
|
||||
- Підготовка рахунків до стандартів електронного виставлення, що вимагають PDF/A-3b із вкладеннями XML
|
||||
|
||||
## Поради
|
||||
|
||||
- Спершу спробуйте конвертацію без попереднього сплощення. Вмикайте його, лише якщо виникає помилка.
|
||||
- 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 використовує стиснення без втрат, тож результат зберігає кожну деталь оригінальної сторінки. Односторінкові PDF завантажуються як файл `.png`, багатосторінкові створюють ZIP.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте PDF, натиснувши на область завантаження або перетягнувши файл.
|
||||
2. Налаштуйте повзунок **Масштаб**, щоб керувати роздільністю результату.
|
||||
3. Натисніть **Конвертувати**, щоб почати обробку.
|
||||
4. Один PNG або ZIP-архів завантажується автоматично.
|
||||
|
||||
## Параметри
|
||||
|
||||
- **Масштаб**: від 1.0x до 3.0x (за замовчуванням 2.0x). При 2.0x стандартна сторінка формату Letter відображається приблизно як 1 224 x 1 584 пікселів. Вищі значення масштабу дають більші й чіткіші зображення ціною розміру файлу та часу обробки.
|
||||
|
||||
## Формат результату
|
||||
|
||||
- **Одна сторінка**: `filename.png`
|
||||
- **Кілька сторінок**: `filename_pngs.zip`, що містить `page_1.png`, `page_2.png` тощо.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Створення високоточних знімків сторінок PDF для презентацій.
|
||||
- Витяг діаграм чи схем, яким потрібні чіткі краї без артефактів стиснення.
|
||||
- Підготовка ресурсів для веб-дизайну з PDF-макетів.
|
||||
- Створення зображень сторінок без втрат для попередньої обробки перед 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. Завантажте один чи кілька PDF, натиснувши на область завантаження або перетягнувши файли. Можна додати кілька файлів і керувати ними окремо.
|
||||
2. Натисніть **Конвертувати**, щоб обробити всі завантажені файли.
|
||||
3. Конвертація одного файлу з однією сторінкою завантажується як окремий `.svg`. Решта випадків завантажуються як ZIP-архів.
|
||||
|
||||
## Параметри
|
||||
|
||||
Цей інструмент не має настроюваних параметрів. Кожна сторінка конвертується в SVG за допомогою рідного векторного експорту PyMuPDF.
|
||||
|
||||
## Формат результату
|
||||
|
||||
- **Один файл, одна сторінка**: `filename.svg`
|
||||
- **Один файл, кілька сторінок**: `filename_svg.zip`, що містить `page_1.svg`, `page_2.svg` тощо.
|
||||
- **Кілька файлів**: `pdf_to_svg.zip` з файлами, упорядкованими за назвою вихідного документа.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Витяг векторних діаграм, графіків чи ілюстрацій із PDF-звітів для використання на веб-сторінках.
|
||||
- Редагування вмісту сторінок PDF у векторному редакторі, як-от Inkscape чи Illustrator.
|
||||
- Вбудовування масштабованих попередніх переглядів сторінок в адаптивні веб-застосунки.
|
||||
- Витяг логотипів чи графіки з PDF-брошур зі збереженням чітких країв.
|
||||
|
||||
## Поради
|
||||
|
||||
- SVG найкраще працює з PDF, що містять векторний вміст. Скановані документи або PDF із великою кількістю зображень дадуть великі файли SVG із вбудованими растровими даними.
|
||||
- Для растрового результату PDF із великою кількістю зображень скористайтеся [PDF у PNG](./pdf-to-png) або [PDF у JPG](./pdf-to-jpg).
|
||||
- Цей інструмент підтримує пакетну конвертацію: завантажте кілька PDF одразу, щоб конвертувати їх за один запуск.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [PDF у PNG](./pdf-to-png)
|
||||
- [PDF у JPG](./pdf-to-jpg)
|
||||
- [PDF у Markdown](./pdf-to-markdown)
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: PDF у текст
|
||||
description: Витягуйте простий текст із файлів PDF. Підтримує пакетний витяг із кількох PDF з виводом у файли TXT.
|
||||
---
|
||||
|
||||
# PDF у текст
|
||||
|
||||
Витягує весь текстовий вміст із файлів PDF і зберігає його як прості файли `.txt`. Підтримує пакетну обробку: завантажте кілька PDF і отримайте текст кожного за одну операцію. Працює на PyMuPDF.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте один чи кілька PDF, натиснувши на область завантаження або перетягнувши файли. Керуйте списком файлів кнопками «Додати ще» та «Очистити».
|
||||
2. Натисніть **Витягти**, щоб почати обробку.
|
||||
3. Один файл завантажується як `filename.txt`. Кілька файлів створюють архів `pdf-to-text.zip`.
|
||||
|
||||
## Параметри
|
||||
|
||||
Цей інструмент не має настроюваних параметрів. Увесь текст витягується з кожної сторінки в порядку читання.
|
||||
|
||||
## Формат результату
|
||||
|
||||
- **Один файл**: `filename.txt`
|
||||
- **Кілька файлів**: `pdf-to-text.zip`, що містить по одному `.txt` на кожен вхідний PDF.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Витяг основного тексту з PDF-звітів для індексації повнотекстового пошуку.
|
||||
- Конвертація PDF-книг чи статей у простий текст для читання на пристроях з е-чорнилом.
|
||||
- Отримання тексту з договорів чи юридичних документів для аналізу за ключовими словами.
|
||||
- Видалення форматування з PDF, щоб отримати чистий текст для скриптів обробки даних.
|
||||
- Підготовка текстового корпусу з PDF-архівів для обробки природної мови.
|
||||
|
||||
## Поради
|
||||
|
||||
- Скановані PDF (лише зображення) дадуть порожні текстові файли, бо текстового шару для витягу немає. Спершу пропустіть скановані документи через OCR.
|
||||
- Результат зберігає порядок читання, як його інтерпретує PyMuPDF, зазвичай зліва направо й згори вниз. Багатоколонкові макети можуть давати перемішаний текст.
|
||||
- Для структурованого результату із заголовками та форматуванням спробуйте [PDF у Markdown](./pdf-to-markdown). Для структурованого JSON, готового для ШІ, скористайтеся [Підготовка PDF для ШІ](./prepare-pdf-for-ai).
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [PDF у Markdown](./pdf-to-markdown)
|
||||
- [Підготовка 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 є стандартним форматом для поліграфії, факсових систем і архівування документів. Інструмент використовує стиснення PackBits для кодування TIFF і повертається до PNG, якщо сторінку закодувати не вдалося.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте PDF, натиснувши на область завантаження або перетягнувши файл.
|
||||
2. Натисніть **Конвертувати** для обробки файлу.
|
||||
3. Один файл TIFF або ZIP-архів завантажується автоматично.
|
||||
|
||||
## Параметри
|
||||
|
||||
Цей інструмент не має настроюваних параметрів. Сторінки відображаються у фіксованому масштабі 2x.
|
||||
|
||||
## Формат результату
|
||||
|
||||
- **Одна сторінка**: `filename.tiff`
|
||||
- **Кілька сторінок**: `filename_tiffs.zip`, що містить `page_1.tiff`, `page_2.tiff` тощо.
|
||||
|
||||
Якщо кодування TIFF для певної сторінки не вдалося (через проблеми зі стисненням), ця сторінка зберігається як файл `.png`. У такому разі ZIP міститиме суміш файлів TIFF і PNG.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Подання документів до державних органів чи юридичних систем, що вимагають формат TIFF.
|
||||
- Підготовка сторінок до передавання факсом через цифрові факсові сервіси.
|
||||
- Архівування відсканованих документів у широко підтримуваному форматі без втрат.
|
||||
- Передавання сторінок у корпоративні системи керування документами.
|
||||
|
||||
## Поради
|
||||
|
||||
- Файли TIFF великі. Якщо вам потрібна якість без втрат лише для вебу чи екрана, краще підійде [PDF у PNG](./pdf-to-png).
|
||||
- Перевірте вміст ZIP, якщо для деяких сторінок знадобився запасний PNG: можливо, їх варто конвертувати окремо.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [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 зазвичай дає файли на 25-35% менші за JPG при тій самій сприйнятій якості, що робить його вдалим вибором для вебу.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте PDF, натиснувши на область завантаження або перетягнувши файл.
|
||||
2. Налаштуйте повзунок **Якість**.
|
||||
3. Натисніть **Конвертувати** для обробки файлу.
|
||||
4. Один файл `.webp` або ZIP-архів завантажується автоматично.
|
||||
|
||||
## Параметри
|
||||
|
||||
- **Якість**: повзунок від 0% до 100% (за замовчуванням 85%). Керує рівнем стиснення з втратами. Вищі значення зберігають більше деталей.
|
||||
|
||||
Усередині сторінки відображаються в масштабі 2x, тож зображення приблизно вдвічі більші за рідні розміри PDF.
|
||||
|
||||
## Формат результату
|
||||
|
||||
- **Одна сторінка**: `filename.webp`
|
||||
- **Кілька сторінок**: `filename_webps.zip`, що містить `page_1.webp`, `page_2.webp` тощо.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Підготовка попередніх переглядів сторінок для сайтів, де важлива пропускна здатність.
|
||||
- Створення легких зображень листівок чи брошур для соціальних мереж.
|
||||
- Пакетна конвертація багатосторінкових документів в оптимізований для вебу набір зображень.
|
||||
|
||||
## Поради
|
||||
|
||||
- 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. Завантажте один чи кілька PDF, натиснувши на область завантаження або перетягнувши файли. Можна додати ще файли або видалити окремі зі списку.
|
||||
2. Натисніть **Конвертувати**, щоб почати обробку.
|
||||
3. Один файл завантажується як `filename.docx`. Кілька файлів пакуються в `converted-documents.zip`.
|
||||
|
||||
## Параметри
|
||||
|
||||
Цей інструмент не має настроюваних параметрів. Кожен PDF конвертується в DOCX вбудованим рушієм конвертації PyMuPDF.
|
||||
|
||||
## Формат результату
|
||||
|
||||
- **Один файл**: `filename.docx`
|
||||
- **Кілька файлів**: `converted-documents.zip`, що містить по одному `.docx` на кожен вхідний PDF.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Редагування тексту в отриманому PDF, який потрібно змінити.
|
||||
- Перетворення архівних PDF-звітів на формат, який колеги можуть редагувати в Microsoft Word чи Google Docs.
|
||||
- Перенесення вмісту PDF-договорів чи пропозицій у Word для правок.
|
||||
- Міграція застарілої PDF-документації в редагований формат.
|
||||
|
||||
## Поради
|
||||
|
||||
- Складні макети з багатоколонковим текстом, вбудованими формами чи насиченою графікою можуть конвертуватися неідеально. Перегляньте результат і відкоригуйте форматування в текстовому редакторі.
|
||||
- Скановані PDF (лише зображення) дадуть порожні або мінімальні файли DOCX. Спершу пропустіть їх через OCR, щоб додати текстовий шар.
|
||||
- Пакетний режим ефективний для конвертації цілих тек із PDF: завантажте їх усі одразу.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [PDF у текст](./pdf-to-text)
|
||||
- [PDF у Markdown](./pdf-to-markdown)
|
||||
- [Конструктор PDF-процесів](./pdf-workflow)
|
||||
@@ -0,0 +1,41 @@
|
||||
---
|
||||
title: PDF у ZIP
|
||||
description: Пакуйте кілька файлів PDF в один ZIP-архів для зручного обміну та зберігання.
|
||||
---
|
||||
|
||||
# PDF у ZIP
|
||||
|
||||
Зберіть кілька файлів PDF в один ZIP-архів. Це простий інструмент пакування: жодної конвертації, стиснення чи зміни самих PDF.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте кілька файлів PDF в області завантаження.
|
||||
2. Перегляньте список файлів. Видаліть ті, які не потрібно включати.
|
||||
3. Натисніть кнопку обробки.
|
||||
4. ZIP-архів з усіма завантаженими PDF одразу завантажується.
|
||||
|
||||
## Можливості
|
||||
|
||||
- Приймає будь-яку кількість файлів PDF
|
||||
- Видалення окремих файлів перед створенням архіву
|
||||
- Зберігає початкові імена файлів усередині ZIP
|
||||
- Без змін вмісту PDF: файли пакуються як є
|
||||
- Показує ім’я та розмір кожного завантаженого PDF
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Об’єднання набору рахунків чи квитанцій для вкладення в лист
|
||||
- Пакування результатів проєкту (кількох PDF-звітів) для передавання
|
||||
- Створення єдиного завантаження для колекції форм чи шаблонів
|
||||
- Архівування пакета документів в один стиснений файл
|
||||
|
||||
## Поради
|
||||
|
||||
- ZIP-файл використовує початкові імена PDF. Якщо у вас є файли з однаковими іменами, перейменуйте їх перед завантаженням, щоб уникнути конфліктів.
|
||||
- Цей інструмент не стискає самі PDF. Щоб зменшити розмір файлів, спершу пропустіть їх через «Стиснення PDF», а потім запакуйте цим інструментом.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Об’єднати PDF](./merge-pdf)
|
||||
- [Розділити PDF](./split-pdf)
|
||||
- [Стиснення PDF](./compress-pdf)
|
||||
@@ -0,0 +1,95 @@
|
||||
---
|
||||
title: Конструктор PDF-процесів
|
||||
description: 'Візуально створюйте власні конвеєри обробки PDF, з’єднуючи вузли на полотні. Ланцюжіть операції: об’єднання, стиснення, водяний знак і експорт.'
|
||||
---
|
||||
|
||||
# Конструктор PDF-процесів
|
||||
|
||||
Конструктор процесів дає змогу об’єднати кілька операцій з PDF в один автоматизований конвеєр. Замість запуску інструментів по одному ви збираєте візуальний граф із вузлів (вхід, обробка, вихід) і виконуєте все одним кліком. Ваші файли ніколи не залишають браузер.
|
||||
|
||||
## Як це працює
|
||||
|
||||
Інтерфейс поділено на три панелі: **набір вузлів** ліворуч, **полотно** в центрі та **панель налаштувань** праворуч, яка з’являється після вибору вузла.
|
||||
|
||||
1. **Додавайте вузли**, натискаючи на них у лівій бічній панелі або перетягуючи прямо на полотно. Скористайтеся рядком пошуку вгорі набору, щоб фільтрувати за назвою.
|
||||
2. **З’єднуйте вузли**, перетягуючи від вихідного гнізда (унизу вузла) до вхідного гнізда (угорі іншого вузла). З’єднання йдуть згори вниз.
|
||||
3. **Налаштовуйте параметри**, натиснувши на вузол, щоб відкрити його панель налаштувань праворуч. Кожен тип вузла має власні параметри (діапазони сторінок, повзунки якості, паролі тощо).
|
||||
4. **Запускайте процес**, натиснувши кнопку **Запустити** на панелі інструментів. Рушій виконує вузли в топологічному порядку, обробляючи кожен послідовно. Рядок стану внизу показує прогрес.
|
||||
5. **Завантажуйте результати**: кінцевий вузол Завантажити зберігає підсумковий PDF (або ZIP, якщо створено кілька файлів).
|
||||
|
||||
## Категорії вузлів
|
||||
|
||||
Вузли організовано в шість категорій, кожна позначена власним кольором на полотні:
|
||||
|
||||
- **Ввід** (синій): Введення PDF, Вхідне зображення, Word/Excel/PowerPoint у PDF та понад 15 інших конвертерів форматів, що передають файли в конвеєр.
|
||||
- **Редагування та анотації** (індиго): Обрізати PDF, PDF у відтінки сірого, Інвертувати кольори, Додати водяний знак, Нумерація сторінок, Колонтитули, Ефект сканера, Корекція кольору, Колір фону, Видалити порожні сторінки, Видалити анотації.
|
||||
- **Організація та керування** (фіолетовий): Об’єднати PDF, Розділити PDF, Витяг сторінок, Повернути PDF, Видалити сторінки, Зворотний порядок сторінок, Додати порожню сторінку, Розділити сторінки, N-Up PDF, Вирівняти розмір сторінок, Об’єднати в одну сторінку, PDF-буклет, Постеризація PDF, Редагувати метадані, Зміст, OCR PDF.
|
||||
- **Оптимізація та відновлення** (бурштиновий): Стиснення PDF, Растеризація PDF, Лінеаризація PDF, Вирівнювання PDF, PDF у PDF/A, Шрифти у контури, Відновити PDF.
|
||||
- **Захист PDF** (рожево-червоний): Зашифрувати, Розшифрувати, Очистити PDF, Сплющити PDF, Цифровий підпис, Закреслити.
|
||||
- **Вивід** (бірюзовий): Завантажити (автоматично визначає один PDF чи ZIP), PDF у зображення, PDF у текст, PDF у DOCX, PDF у XLSX, PDF у CSV, PDF у SVG, PDF у Markdown, Витяг зображень.
|
||||
|
||||
## Збереження та завантаження процесів
|
||||
|
||||
Панель інструментів пропонує чотири способи збереження:
|
||||
|
||||
- **Зберегти**: зберігає поточний процес як іменований шаблон у локальному сховищі вашого браузера. Можна зберегти кілька шаблонів.
|
||||
- **Завантажити**: відкриває вікно зі списком усіх збережених шаблонів. Натисніть «Завантажити», щоб відновити шаблон, або видаліть непотрібні.
|
||||
- **Експорт**: завантажує процес як файл `.json`, щоб ним можна було поділитися або створити резервну копію.
|
||||
- **Імпорт**: завантажує файл процесу `.json` з диска, відновлюючи всі вузли, їхні позиції та з’єднання.
|
||||
|
||||
Шаблони зберігаються між сеансами в локальному сховищі. Експортовані файли JSON переносяться між браузерами та пристроями.
|
||||
|
||||
## Модель виконання
|
||||
|
||||
Рушій будує граф залежностей із ваших з’єднань і виконує вузли в топологічному порядку. Якщо будь-який вузол завершується помилкою, виконання зупиняється, а вузол із помилкою позначається червоним. Кілька правил, які варто пам’ятати:
|
||||
|
||||
- Кожному процесу потрібен принаймні один вузол **Ввід** і один вузол **Вивід**.
|
||||
- Рушій виявляє циклічні залежності та блокує виконання з помилкою.
|
||||
- Вузол **Зашифрувати** має бути останнім кроком обробки перед вихідним вузлом. Розміщення його раніше спричинить попередження валідації, бо наступні вузли не можуть працювати із зашифрованими даними.
|
||||
- Для PDF із паролем під час виконання з’являється запит пароля.
|
||||
- Підтримуються вхідні дані з кількох PDF: вузол Об’єднати PDF може їх об’єднати, а вузли пакетної обробки обробляють кожен PDF окремо.
|
||||
|
||||
## Типи гнізд
|
||||
|
||||
З’єднання використовують типізовані гнізда, щоб запобігти неправильним підключенням:
|
||||
|
||||
- **PDF** (індиго): один документ PDF.
|
||||
- **MultiPDF** (бурштиновий): кілька документів PDF, зібраних разом.
|
||||
- **Image** (зелений): блоб зображення.
|
||||
|
||||
## Параметри
|
||||
|
||||
Кожен вузол має власну конфігурацію, доступну через праву панель налаштувань. Типові приклади:
|
||||
|
||||
- **Діапазони сторінок** у вузлах Розділити PDF, Витяг сторінок, Видалити сторінки
|
||||
- **Повзунки якості** у вихідних вузлах перетворення на зображення
|
||||
- **Поля пароля** у вузлах Зашифрувати і Розшифрувати
|
||||
- **Текстові поля** для Додати водяний знак, Колонтитули, Редагувати метадані
|
||||
- **Кути повороту** у вузлі Повернути PDF
|
||||
- **Рівень стиснення** у вузлі Стиснення PDF
|
||||
- **Вибір мови OCR** у вузлі OCR PDF
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- **Конвеєр обробки рахунків**: Введення PDF -> OCR PDF -> Витяг таблиць з PDF -> Завантажити як CSV.
|
||||
- **Стандартизація звітів**: Word у PDF -> Вирівняти розмір сторінок -> Нумерація сторінок -> Додати водяний знак -> Стиснення PDF -> Завантажити.
|
||||
- **Підготовка до архівування**: Введення PDF -> Відновити PDF -> Сплющити PDF -> Очистити PDF -> PDF у PDF/A -> Завантажити.
|
||||
- **Пакетний витяг зображень**: Введення PDF (кілька файлів) -> Витяг зображень -> Завантажити ZIP.
|
||||
- **Буклети, готові до друку**: Введення PDF -> PDF-буклет -> Обрізати PDF -> Стиснення PDF -> Завантажити.
|
||||
- **Захищене розповсюдження**: Введення PDF -> Закреслити -> Видалити анотації -> Зашифрувати -> Завантажити.
|
||||
|
||||
## Поради
|
||||
|
||||
- Використовуйте **Delete** або **Backspace**, щоб видалити вибраний вузол із полотна.
|
||||
- Натисніть кнопку **X** на рядку стану вузла, щоб видалити його напряму.
|
||||
- Переміщуйте полотно, натискаючи й перетягуючи на порожньому місці. Під час переміщення курсор змінюється на іконку руки.
|
||||
- На мобільних пристроях використовуйте кнопку **+** на панелі інструментів, щоб перемикати набір вузлів.
|
||||
- Якщо процес створює кілька вихідних файлів, вузол Завантажити автоматично пакує їх у ZIP.
|
||||
- Починайте з простого: збудуйте й перевірте конвеєр із двох вузлів, перш ніж ускладнювати.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [PDF у текст](./pdf-to-text)
|
||||
- [PDF у Excel](./pdf-to-excel)
|
||||
- [Витяг зображень](./extract-images)
|
||||
- [PDF у Markdown](./pdf-to-markdown)
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
title: PNG у PDF
|
||||
description: Конвертуйте одне чи кілька зображень PNG у документ PDF із настроюваною якістю повністю у вашому браузері.
|
||||
---
|
||||
|
||||
# PNG у PDF
|
||||
|
||||
Конвертуйте зображення PNG у PDF зі збереженням повної роздільності. Кожен PNG стає окремою сторінкою розміром, що відповідає початковому зображенню. Прозорість обробляється автоматично.
|
||||
|
||||
## Підтримувані формати
|
||||
|
||||
| Формат | Розширення |
|
||||
| :----- | :--------- |
|
||||
| PNG | `.png` |
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Натисніть на область завантаження або перетягніть файли PNG. Можна вибрати одразу кілька.
|
||||
2. Керуйте списком файлів: видаляйте зайві або додавайте нові.
|
||||
3. Оберіть рівень **Якості PDF** у випадному списку.
|
||||
4. Натисніть **Конвертувати у PDF**. Результат завантажується як `from_jpgs.pdf`.
|
||||
|
||||
Інструмент використовує pdf-lib, щоб вбудовувати кожне зображення напряму. Якщо PNG неможливо вбудувати рідним способом (наприклад, через незвичний профіль кольору), він повторно відображається через canvas як JPEG.
|
||||
|
||||
## Параметри
|
||||
|
||||
**Якість PDF** керує стисненням, що застосовується перед вбудовуванням:
|
||||
|
||||
- **Висока якість**: мінімальне стиснення, найбільший розмір файлу.
|
||||
- **Середня якість** (за замовчуванням): добрий баланс розміру та чіткості.
|
||||
- **Низька якість**: максимальне стиснення, найменший результат.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Перетворення знімків екрана на багатосторінковий PDF для звітів про помилки чи документації
|
||||
- Пакування експорту UI-дизайну в один файл для рецензування
|
||||
- Перетворення експорту діаграм (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. Завантажте файл PDF.
|
||||
2. Задайте кількість **рядків** і **стовпців**, щоб визначити сітку (наприклад, 2 рядки x 2 стовпці розділяють кожну сторінку на 4 підсторінки).
|
||||
3. За потреби вкажіть діапазон сторінок, щоб обмежити, які сторінки буде постеризовано.
|
||||
4. На полотні попереднього перегляду показано накладену сітку на поточній сторінці, щоб ви бачили лінії розрізу.
|
||||
5. Перемикайтеся між сторінками, щоб перевірити сітку на різних сторінках.
|
||||
6. Натисніть кнопку обробки. Кожна клітинка сітки стане окремою сторінкою у вихідному PDF.
|
||||
|
||||
## Можливості
|
||||
|
||||
- Налаштовувана кількість рядків і стовпців для гнучких розмірів сітки
|
||||
- Попередній перегляд у реальному часі з накладеною сіткою, що точно показує, де сторінки будуть розділені
|
||||
- Фільтр діапазону сторінок для постеризації лише певних сторінок
|
||||
- Посторінкова навігація в попередньому перегляді
|
||||
- Кешовані знімки сторінок для швидкої навігації в попередньому перегляді
|
||||
- Червоні пунктирні лінії сітки чітко позначають межі розрізу
|
||||
|
||||
## Параметри
|
||||
|
||||
| Параметр | Опис |
|
||||
| --------------------- | ------------------------------------------------------ |
|
||||
| **Рядки** | Кількість горизонтальних поділів (за замовчуванням: 1) |
|
||||
| **Стовпці** | Кількість вертикальних поділів (за замовчуванням: 1) |
|
||||
| **Діапазон сторінок** | Які сторінки постеризувати (порожньо = усі сторінки) |
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Друк PDF розміром з постер на стандартних аркушах A4 або Letter для збирання на стіні
|
||||
- Створення великих банерів з одностороннього PDF-макета
|
||||
- Розділення завеликих технічних креслень на придатні для друку фрагменти
|
||||
- Великоформатний друк без доступу до широкоформатного принтера
|
||||
|
||||
## Поради
|
||||
|
||||
- Сітка 2x2 перетворює одну сторінку на 4 сторінки. Сітка 3x3 перетворює одну сторінку на 9. Плануйте сітку залежно від того, наскільки великим має бути зібраний результат.
|
||||
- Накладена сітка в попередньому перегляді допомагає переконатися, що важливий вміст не потрапляє на лінію розрізу. За потреби змініть кількість рядків і стовпців.
|
||||
- Для зворотної операції (розміщення кількох сторінок на одному аркуші) скористайтеся [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. Кожен слайд стає сторінкою вихідного документа, а текст, зображення, фігури та переходи відтворюються через рушій LibreOffice, що працює в браузері. Підтримуються як сучасні, так і застарілі формати PowerPoint, а також формат OpenDocument Presentation.
|
||||
|
||||
## Підтримувані формати
|
||||
|
||||
| Формат | Розширення |
|
||||
| :------------------------ | :--------- |
|
||||
| PowerPoint (сучасний) | `.pptx` |
|
||||
| PowerPoint (застарілий) | `.ppt` |
|
||||
| OpenDocument Presentation | `.odp` |
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Натисніть область завантаження або перетягніть файли презентацій.
|
||||
2. Перегляньте список файлів. Додайте інші або видаліть зайві.
|
||||
3. Натисніть **Конвертувати в PDF**. Рушій LibreOffice завантажується під час першого використання, потім конвертує кожен файл.
|
||||
4. Один файл завантажується одразу як PDF. Кілька файлів пакуються в `powerpoint-converted.zip`.
|
||||
|
||||
## Параметри
|
||||
|
||||
Цей інструмент не має додаткових налаштувань. Слайди відтворюються у своїх початкових розмірах.
|
||||
|
||||
## Результат
|
||||
|
||||
| Кількість вхідних файлів | Результат |
|
||||
| :----------------------- | :----------------------------------------------------------------- |
|
||||
| 1 файл | Одне завантаження PDF (початкова назва файлу з розширенням `.pdf`) |
|
||||
| 2+ файли | Архів ZIP (`powerpoint-converted.zip`) з одним PDF на кожен файл |
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Конвертація презентації в PDF перед відправкою аудиторії, яка може не мати PowerPoint
|
||||
- Створення версії слайдів для друку як роздатковий матеріал для конференції чи воркшопу
|
||||
- Архівування презентацій у форматі, що однаково відображається на кожному пристрої
|
||||
- Пакетна конвертація бібліотеки презентацій ODP з LibreOffice Impress у PDF
|
||||
- Створення PDF-версії pitch deck для вкладення в електронний лист
|
||||
|
||||
## Поради
|
||||
|
||||
- Анімації та переходи слайдів у PDF не передаються. Кожен слайд зберігається як статична сторінка.
|
||||
- Вбудовані відео у вихідному файлі не відображатимуться. За потреби замініть їх знімком екрана або зображенням-заповнювачем.
|
||||
- Нотатки доповідача не входять до стандартного експорту в PDF. Якщо нотатки потрібні, спершу експортуйте з власного режиму «Друк нотаток» у PowerPoint.
|
||||
- Рушій LibreOffice кешується після першого завантаження, тому конвертація другої презентації в тому ж сеансі набагато швидша.
|
||||
|
||||
## Пов’язані інструменти
|
||||
|
||||
- [Word у PDF](./word-to-pdf)
|
||||
- [Excel у PDF](./excel-to-pdf)
|
||||
- [Зображення у PDF](./image-to-pdf)
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
title: Підготовка PDF для AI
|
||||
description: Витягніть вміст PDF у структурований JSON, оптимізований для LLM і AI-конвеєрів, як-от LlamaIndex. Підтримує пакетну обробку.
|
||||
---
|
||||
|
||||
# Підготовка PDF для AI
|
||||
|
||||
Витягує вміст із файлів PDF і структурує його як JSON, оптимізований для споживання великими мовними моделями (LLM) і AI-фреймворками, як-от LlamaIndex. Вміст кожної сторінки витягується й організовується у структурований формат, готовий для конвеєрів RAG, чат-ботів або систем семантичного пошуку.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте один або кілька PDF, натиснувши зону перетягування або перетягнувши файли на неї.
|
||||
2. Натисніть **Витягти**, щоб почати обробку.
|
||||
3. Один файл завантажується як `filename_llm.json`. Кілька файлів дають архів `pdf-for-ai.zip`.
|
||||
|
||||
Інструмент використовує інтеграцію PyMuPDF з LlamaIndex, щоб витягти вміст на рівні сторінок з метаданими, отримуючи результат, який можна напряму завантажувати в AI-фреймворки.
|
||||
|
||||
## Параметри
|
||||
|
||||
Цей інструмент не має налаштовуваних параметрів. Усі сторінки витягуються з повним текстом і метаданими.
|
||||
|
||||
## Формат результату
|
||||
|
||||
- **Один файл**: `filename_llm.json`
|
||||
- **Кілька файлів**: `pdf-for-ai.zip` з одним `_llm.json` на кожен вхідний PDF.
|
||||
|
||||
JSON-результат відповідає схемі документів LlamaIndex з текстовим вмістом кожної сторінки та полями метаданих.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Підготовка документів PDF для конвеєрів генерації з доповненням пошуком (RAG).
|
||||
- Створення бази знань з пошуком з архівів PDF для AI-чат-бота.
|
||||
- Передача звітів 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: Захистіть файли PDF паролем із 256-бітним шифруванням AES. Задайте паролі користувача й власника з налаштовуваними обмеженнями використання.
|
||||
---
|
||||
|
||||
# Захистити PDF
|
||||
|
||||
Заблокуйте PDF паролем, щоб відкрити його могли лише уповноважені люди. BentoPDF використовує 256-бітне шифрування AES, той самий стандарт, що й банки та державні установи, і застосовує його повністю у вашому браузері через QPDF.
|
||||
|
||||
## Як це працює
|
||||
|
||||
1. Завантажте файл PDF.
|
||||
2. Введіть **Пароль користувача** (обов’язково). Цей пароль потрібен, щоб відкрити файл.
|
||||
3. За потреби введіть **Пароль власника**. Якщо його задано, PDF отримує обмеження використання, що забороняють друк, редагування, копіювання та анотування.
|
||||
4. Натисніть **Зашифрувати PDF**.
|
||||
5. Завантажте зашифрований файл.
|
||||
|
||||
## Типи паролів
|
||||
|
||||
### Пароль користувача (обов’язковий)
|
||||
|
||||
Пароль користувача вводять одержувачі, щоб відкрити PDF. Без нього документ повністю недоступний. Кожен зашифрований PDF повинен його мати.
|
||||
|
||||
### Пароль власника (необов’язковий)
|
||||
|
||||
Пароль власника визначає, що може робити авторизований користувач після відкриття файлу. Якщо ви задаєте окремий пароль власника, BentoPDF автоматично застосовує найсуворіший набір обмежень:
|
||||
|
||||
- Зміна заборонена
|
||||
- Вилучення/копіювання заборонено
|
||||
- Друк заборонено
|
||||
- Анотування заборонено
|
||||
- Заповнення форм заборонено
|
||||
- Збирання документа заборонено
|
||||
|
||||
Якщо залишити пароль власника порожнім, PDF зашифровано (для відкриття все одно потрібен пароль користувача), але після відкриття обмежень використання немає.
|
||||
|
||||
## Відомості про шифрування
|
||||
|
||||
- **Алгоритм**: AES-256 (256-бітний Advanced Encryption Standard)
|
||||
- **Довжина ключа**: 256 біт
|
||||
- **Стандарт**: шифрування PDF 2.0 (реалізація QPDF)
|
||||
|
||||
Підібрати ключ AES-256 перебором за сучасних технологій обчислювально неможливо. Безпека вашого зашифрованого PDF повністю залежить від надійності пароля.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Захист конфіденційних фінансових звітів перед надсиланням електронною поштою
|
||||
- Захист юридичних документів, якими обмінюються з протилежною стороною
|
||||
- Додавання пароля до медичних карток або персональних даних
|
||||
- Розповсюдження платного вмісту (електронні книги, звіти) з контролем доступу
|
||||
- Дотримання політик захисту даних, що вимагають шифрування даних у стані спокою
|
||||
|
||||
## Поради
|
||||
|
||||
- Використовуйте надійний унікальний пароль. Ідеальна парольна фраза має понад 12 символів з великими й малими літерами, цифрами та символами.
|
||||
- Передавайте пароль окремим каналом (телефон, SMS), ніколи в тому самому листі, що й 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 дає один PDF. Якщо завантажити кілька файлів PSD, вони об’єднуються в один багатосторінковий PDF з назвою `psd_to_pdf.pdf`, де кожен PSD стає однією сторінкою.
|
||||
|
||||
## Параметри
|
||||
|
||||
Налаштування не потрібні. Конвертер використовує сплющені дані зображення з файлу PSD.
|
||||
|
||||
## Сценарії використання
|
||||
|
||||
- Перегляд дизайнів Photoshop без відкриття Photoshop
|
||||
- Надсилання дизайнерських проєктів клієнтам, які не мають Adobe Creative Suite
|
||||
- Друк ілюстрацій високої роздільної здатності з файлів PSD
|
||||
- Створення PDF-портфоліо з кількох дизайнерських файлів PSD: кожен стає сторінкою єдиного документа
|
||||
|
||||
## Поради
|
||||
|
||||
- Під час конвертації відтворюється зведений (сплющений) вигляд PSD. Окремі шари, коригувальні шари та ефекти шарів не зберігаються в PDF як окремі елементи.
|
||||
- Кілька файлів PSD об’єднуються в один багатосторінковий PDF, а не в окремі 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