mirror of
https://github.com/alam00000/bentopdf.git
synced 2026-11-13 17:54:19 +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 @@
|
||||
# Bidra
|
||||
|
||||
Tack för ditt intresse av att bidra till BentoPDF! Den här guiden hjälper dig att komma igång.
|
||||
|
||||
## Komma igång
|
||||
|
||||
### Förutsättningar
|
||||
|
||||
- Node.js 18+
|
||||
- npm 9+
|
||||
- Git
|
||||
|
||||
### Installation
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
## Projektstruktur
|
||||
|
||||
```
|
||||
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
|
||||
```
|
||||
|
||||
## Lägga till ett nytt verktyg
|
||||
|
||||
### Steg 1: Skapa logikfilen
|
||||
|
||||
Skapa `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
|
||||
});
|
||||
```
|
||||
|
||||
### Steg 2: Skapa HTML-sidan
|
||||
|
||||
Skapa `src/pages/your-tool.html` efter mönster från de befintliga verktygsmallarna.
|
||||
|
||||
### Steg 3: Registrera verktyget
|
||||
|
||||
Lägg till i `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.',
|
||||
}
|
||||
```
|
||||
|
||||
### Steg 4: Lägg till i bygginställningarna
|
||||
|
||||
Lägg till sidan i `vite.config.ts`:
|
||||
|
||||
```typescript
|
||||
'your-tool': resolve(__dirname, 'src/pages/your-tool.html'),
|
||||
```
|
||||
|
||||
### Steg 5: Lägg till översättningar
|
||||
|
||||
Lägg till poster i alla språkfiler i `public/locales/`:
|
||||
|
||||
```json
|
||||
{
|
||||
"yourTool": {
|
||||
"name": "Your Tool",
|
||||
"subtitle": "Description"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Kodstil
|
||||
|
||||
- Använd TypeScript för all ny kod
|
||||
- Följ befintliga mönster för att hålla koden enhetlig
|
||||
- Kör `npm run format` innan du committar
|
||||
- Inga kommentarer i produktionskod (kommentarer tas bort vid bygget)
|
||||
|
||||
## Pull request-process
|
||||
|
||||
1. Skapa en funktionsgren: `git checkout -b feature/your-feature`
|
||||
2. Gör dina ändringar
|
||||
3. Testa noggrant: `npm run build`
|
||||
4. Skicka in en PR med en tydlig beskrivning
|
||||
|
||||
## Översättning
|
||||
|
||||
Se [TRANSLATION.md](https://github.com/alam00000/bentopdf/blob/main/TRANSLATION.md) för hur du lägger till nya språk.
|
||||
|
||||
## Licensavtal för bidragsgivare
|
||||
|
||||
Innan din PR kan slås ihop måste du signera vårt CLA:
|
||||
|
||||
- [Individual CLA (ICLA)](https://github.com/alam00000/bentopdf/blob/main/ICLA.md)
|
||||
- [Corporate CLA (CCLA)](https://github.com/alam00000/bentopdf/blob/main/CCLA.md)
|
||||
|
||||
## Få hjälp
|
||||
|
||||
- [GitHub Issues](https://github.com/alam00000/bentopdf/issues)
|
||||
- [Discord-community](https://discord.gg/Bgq3Ay3f2w)
|
||||
|
||||
## Licens
|
||||
|
||||
BentoPDF har dubbel licensiering:
|
||||
|
||||
- **AGPL-3.0** för öppen källkod-projekt där du delar hela din källkod offentligt
|
||||
- **Kommersiell licens** för proprietära program med sluten källkod - [Skaffa livstidslicens för $79](https://buy.polar.sh/polar_cl_ThDfffbl733x7oAodcIryCzhlO57ZtcWPq6HJ1qMChd)
|
||||
|
||||
Genom att bidra godkänner du att dina bidrag licensieras enligt dessa villkor.
|
||||
@@ -0,0 +1,80 @@
|
||||
# Kom igång
|
||||
|
||||
Välkommen till BentoPDF! Den här guiden hjälper dig att komma igång snabbt.
|
||||
|
||||
## Vad är BentoPDF?
|
||||
|
||||
BentoPDF är ett gratis PDF-verktyg med öppen källkod som sätter integriteten först och körs **helt i din webbläsare**. Dina filer lämnar aldrig din enhet, all bearbetning sker lokalt med hjälp av WebAssembly (WASM).
|
||||
|
||||
## Snabbstart
|
||||
|
||||
### Alternativ 1: Använd den hostade versionen
|
||||
|
||||
Besök [bentopdf.com](https://www.bentopdf.com) för att använda BentoPDF direkt, ingen installation krävs.
|
||||
|
||||
### Alternativ 2: Självhosta med Docker
|
||||
|
||||
> [!IMPORTANT]
|
||||
> Konvertering av Office-filer kräver `SharedArrayBuffer`, vilket kräver både:
|
||||
>
|
||||
> - `Cross-Origin-Opener-Policy: same-origin`
|
||||
> - `Cross-Origin-Embedder-Policy: require-corp`
|
||||
> - en säker kontext
|
||||
>
|
||||
> `http://localhost` fungerar för lokal testning eftersom webbläsare betraktar loopback som betrodd. `http://192.168.x.x` och andra LAN-adresser gör det oftast inte, så konvertering av Word/Excel/PowerPoint kräver HTTPS när du kommer åt tjänsten från andra enheter i ditt nätverk.
|
||||
|
||||
```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 levereras i två byggen: **Self-Hosted-bygget** (`bentopdf-simple`, används ovan) för interna driftsättningar i team och organisationer, och **Commercial-bygget** (`bentopdf:latest`) som används av bentopdf.com själv och av innehavare av kommersiell licens som kör publika driftsättningar. Båda innehåller samma PDF-verktyg. Commercial-bygget lägger till hero-sektionen, FAQ, omdömen och sidfoten från bentopdf.com. Är du osäker, använd Self-Hosted-bygget.
|
||||
|
||||
Öppna sedan `http://localhost:3000` i din webbläsare.
|
||||
|
||||
> [!NOTE]
|
||||
> Om du förbereder en OCR-driftsättning i en luftgappad miljö måste du även hosta OCR-textlagrets typsnitt internt, utöver Tesseract-workern, kärnkörmiljön och traineddata-filerna. Hela uppsättningen beskrivs i [Självhosting](/sv/self-hosting/), inklusive `VITE_OCR_FONT_BASE_URL` och den medföljande katalogen `ocr-fonts/`.
|
||||
|
||||
### Alternativ 3: Bygg från källkod
|
||||
|
||||
```bash
|
||||
# Clone the repository
|
||||
git clone https://github.com/alam00000/bentopdf.git
|
||||
cd bentopdf
|
||||
|
||||
# Install dependencies
|
||||
npm install
|
||||
|
||||
# Start development server
|
||||
npm run dev
|
||||
```
|
||||
|
||||
## Funktioner i korthet
|
||||
|
||||
| Kategori | Verktyg |
|
||||
| --------------------------- | -------------------------------------------------------------- |
|
||||
| **Konvertera till PDF** | Word, Excel, PowerPoint, bilder, Markdown, EPUB, MOBI och mer |
|
||||
| **Konvertera från PDF** | JPG, PNG, text, Excel, SVG och mer |
|
||||
| **Redigera och kommentera** | Signera, markera, maskera, fyll i formulär, lägg till stämplar |
|
||||
| **Organisera** | Slå ihop, dela, rotera, ta bort sidor, ändra ordning |
|
||||
| **Optimera** | Komprimera, reparera, platta ut, OCR |
|
||||
| **Säkerhet** | Kryptera, dekryptera, ta bort begränsningar |
|
||||
|
||||
## Webbläsarstöd
|
||||
|
||||
BentoPDF fungerar bäst i moderna webbläsare:
|
||||
|
||||
- ✅ Chrome/Edge 90+
|
||||
- ✅ Firefox 90+
|
||||
- ✅ Safari 15+
|
||||
|
||||
## Nästa steg
|
||||
|
||||
- [Utforska alla verktyg](/sv/tools/)
|
||||
- [Självhosta BentoPDF](/sv/self-hosting/)
|
||||
- [Bidra till projektet](/sv/contributing)
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
# https://vitepress.dev/reference/default-theme-home-page
|
||||
layout: home
|
||||
|
||||
hero:
|
||||
name: 'BentoPDF'
|
||||
text: 'Gratis PDF-verktyg med öppen källkod'
|
||||
tagline: Bearbeta PDF-filer helt i din webbläsare. Inga uppladdningar. Inga servrar. Fullständig integritet.
|
||||
actions:
|
||||
- theme: brand
|
||||
text: Kom igång
|
||||
link: /sv/getting-started
|
||||
- theme: alt
|
||||
text: Visa verktyg
|
||||
link: /sv/tools/
|
||||
- theme: alt
|
||||
text: Självhosta
|
||||
link: /sv/self-hosting/
|
||||
- theme: alt
|
||||
text: Kommersiell licens
|
||||
link: /sv/licensing
|
||||
|
||||
features:
|
||||
- icon: 🔒
|
||||
title: 100% privat
|
||||
details: Dina filer lämnar aldrig din enhet. All bearbetning sker lokalt i din webbläsare med WebAssembly.
|
||||
- icon: ⚡
|
||||
title: Snabbt och gratis
|
||||
details: Ingen registrering, inga begränsningar, inga vattenstämplar. Bearbeta obegränsat med PDF-filer gratis, för alltid.
|
||||
- icon: 🛠️
|
||||
title: Över 50 verktyg
|
||||
details: Konvertera, redigera, slå ihop, dela, komprimera, signera, OCR och mer. Allt du behöver på ett ställe.
|
||||
|
||||
- icon: 🌐
|
||||
title: Kan självhostas
|
||||
details: Driftsätt på din egen infrastruktur. Docker, Vercel, Netlify, AWS eller helt luftgappade miljöer med självhostade OCR-workers, språkdata och typsnitt för textlager.
|
||||
---
|
||||
|
||||
## Offline-OCR
|
||||
|
||||
Om du självhostar BentoPDF i en luftgappad eller offline-miljö behöver OCR mer än Tesseract-workern och traineddata-filerna. För att få sökbara PDF-filer måste även OCR-textlagrets typsnitt serveras internt.
|
||||
Se [Självhosting](/sv/self-hosting/) för hela uppsättningen, inklusive `VITE_OCR_FONT_BASE_URL`, den medföljande katalogen `ocr-fonts/` och det uppdaterade arbetsflödet för luftgappade miljöer.
|
||||
@@ -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](/sv/self-hosting/#wasm-konfiguration-agpl-komponenter) 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 @@
|
||||
# Driftsätt med Apache
|
||||
|
||||
Hosta BentoPDF med Apache HTTP Server.
|
||||
|
||||
## Förutsättningar
|
||||
|
||||
- Apache 2.4+
|
||||
- mod_rewrite aktiverat
|
||||
- SSL-certifikat (rekommenderas)
|
||||
|
||||
## Steg 1: Bygg projektet
|
||||
|
||||
```bash
|
||||
git clone https://github.com/alam00000/bentopdf.git
|
||||
cd bentopdf
|
||||
npm install
|
||||
npm run build
|
||||
```
|
||||
|
||||
För att anpassa varumärket, ange miljövariabler innan bygget:
|
||||
|
||||
```bash
|
||||
VITE_BRAND_NAME="AcmePDF" VITE_BRAND_LOGO="images/acme-logo.svg" npm run build
|
||||
```
|
||||
|
||||
## Steg 2: Kopiera filer
|
||||
|
||||
```bash
|
||||
sudo mkdir -p /var/www/bentopdf
|
||||
sudo cp -r dist/* /var/www/bentopdf/
|
||||
sudo chown -R www-data:www-data /var/www/bentopdf
|
||||
```
|
||||
|
||||
## Steg 3: Apache-konfiguration
|
||||
|
||||
Skapa `/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>
|
||||
```
|
||||
|
||||
## Steg 4: .htaccess för routing
|
||||
|
||||
Skapa `/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
|
||||
```
|
||||
|
||||
## Steg 5: Aktivera nödvändiga moduler
|
||||
|
||||
```bash
|
||||
sudo a2enmod rewrite
|
||||
sudo a2enmod ssl
|
||||
sudo a2enmod headers
|
||||
sudo a2enmod expires
|
||||
sudo a2enmod deflate
|
||||
```
|
||||
|
||||
## Steg 6: Aktivera webbplatsen
|
||||
|
||||
```bash
|
||||
sudo a2ensite bentopdf.conf
|
||||
sudo apache2ctl configtest
|
||||
sudo systemctl reload apache2
|
||||
```
|
||||
|
||||
## Driftsättning i en underkatalog
|
||||
|
||||
För att hosta på `/pdf/`:
|
||||
|
||||
1. Bygg med bas-URL:
|
||||
|
||||
```bash
|
||||
BASE_URL=/pdf/ npm run build
|
||||
```
|
||||
|
||||
2. Uppdatera `.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
|
||||
```
|
||||
|
||||
## Felsökning
|
||||
|
||||
### WASM 404-fel
|
||||
|
||||
Kontrollera att MIME-typen är konfigurerad:
|
||||
|
||||
```apache
|
||||
AddType application/wasm .wasm
|
||||
```
|
||||
|
||||
### Signera PDF eller Formulärifyllare visar en tom visare (`.mjs` MIME-fel)
|
||||
|
||||
Om webbläsarens konsol visar:
|
||||
|
||||
```
|
||||
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.
|
||||
```
|
||||
|
||||
…och den misslyckade förfrågan slutar på `.mjs`, saknar din Apache-konfiguration mappningen `.mjs → application/javascript`. Den medföljande PDF-visaren levereras med ES-modulfiler med filändelsen `.mjs`, och Apaches standardfil `mime.types` innehåller dem inte som standard.
|
||||
|
||||
Lägg till i din VirtualHost eller `.htaccess`:
|
||||
|
||||
```apache
|
||||
AddType application/javascript .mjs
|
||||
```
|
||||
|
||||
Ladda sedan om Apache:
|
||||
|
||||
```bash
|
||||
sudo apache2ctl configtest && sudo systemctl reload apache2
|
||||
```
|
||||
|
||||
För att bekräfta: leta i webbläsarens DevTools → fliken Nätverk upp den misslyckade `.mjs`-förfrågan och kontrollera svarshuvudet `Content-Type`. Det ska nu vara `application/javascript`, inte `application/octet-stream`.
|
||||
|
||||
### Rewrite fungerar inte
|
||||
|
||||
Kontrollera att mod_rewrite är aktiverat:
|
||||
|
||||
```bash
|
||||
sudo a2enmod rewrite
|
||||
```
|
||||
|
||||
### Word/ODT/Excel till PDF fungerar inte
|
||||
|
||||
LibreOffice WASM kräver `SharedArrayBuffer`, vilket kräver dessa rubriker:
|
||||
|
||||
```apache
|
||||
Header always set Cross-Origin-Embedder-Policy "require-corp"
|
||||
Header always set Cross-Origin-Opener-Policy "same-origin"
|
||||
```
|
||||
|
||||
Det kräver också en säker kontext. `http://localhost` fungerar för lokal testning, men `http://192.168.x.x` och andra LAN-adresser kräver oftast HTTPS. Om rubrikerna finns men `window.crossOriginIsolated` fortfarande är `false`, kontrollera om sidan öppnas över vanlig HTTP på ett ursprung som inte är loopback.
|
||||
|
||||
De förkomprimerade filerna `.wasm.gz` och `.data.gz` behöver också rätt `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>
|
||||
```
|
||||
|
||||
Kontrollera att `mod_headers` är aktiverat: `sudo a2enmod headers`
|
||||
|
||||
### Åtkomst nekad
|
||||
|
||||
```bash
|
||||
sudo chown -R www-data:www-data /var/www/bentopdf
|
||||
sudo chmod -R 755 /var/www/bentopdf
|
||||
```
|
||||
@@ -0,0 +1,200 @@
|
||||
# Driftsätt på AWS S3 + CloudFront
|
||||
|
||||
Hosta BentoPDF på AWS för maximal kontroll och skalbarhet.
|
||||
|
||||
## Arkitektur
|
||||
|
||||
```
|
||||
User → CloudFront (CDN) → S3 (Static Files)
|
||||
```
|
||||
|
||||
## Steg 1: Skapa S3-bucket
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
## Steg 2: Bygg och ladda upp
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
## Steg 3: Skapa CloudFront-distribution
|
||||
|
||||
```bash
|
||||
aws cloudfront create-distribution \
|
||||
--origin-domain-name your-bentopdf-bucket.s3.amazonaws.com \
|
||||
--default-root-object index.html
|
||||
```
|
||||
|
||||
Eller använd AWS Console:
|
||||
|
||||
1. Gå till CloudFront → Create distribution
|
||||
2. Origin domain: välj din S3-bucket
|
||||
3. Aktivera "Origin Access Control"
|
||||
4. Default root object: `index.html`
|
||||
5. Skapa distributionen
|
||||
|
||||
## Steg 3b: Response Headers Policy (krävs för LibreOffice WASM)
|
||||
|
||||
LibreOffice-baserade konverteringar (Word, Excel, PowerPoint till PDF) kräver `SharedArrayBuffer`, vilket kräver specifika svarsrubriker. Skapa en CloudFront Response Headers Policy:
|
||||
|
||||
1. Gå till CloudFront → Policies → Response headers
|
||||
2. Skapa en anpassad policy med dessa rubriker:
|
||||
|
||||
| Rubrik | Värde |
|
||||
| ------------------------------ | -------------- |
|
||||
| `Cross-Origin-Embedder-Policy` | `require-corp` |
|
||||
| `Cross-Origin-Opener-Policy` | `same-origin` |
|
||||
| `Cross-Origin-Resource-Policy` | `cross-origin` |
|
||||
|
||||
3. Koppla policyn till din distributions standardbeteende för cache
|
||||
|
||||
Eller via 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}
|
||||
]
|
||||
}
|
||||
}'
|
||||
```
|
||||
|
||||
## Steg 3c: S3-metadata för förkomprimerade WASM-filer
|
||||
|
||||
LibreOffice WASM-filerna är förkomprimerade (`.wasm.gz`, `.data.gz`). Ange rätt Content-Type och Content-Encoding så att webbläsare packar upp dem:
|
||||
|
||||
```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 Viktigt
|
||||
Utan policyn för svarsrubriker är `SharedArrayBuffer` inte tillgängligt och LibreOffice WASM-konverteringar hänger sig vid cirka 55%. Utan rätt Content-Encoding på `.gz`-filerna får webbläsaren råa gzip-byte och WASM-kompileringen misslyckas.
|
||||
:::
|
||||
|
||||
## Steg 4: S3 Bucket Policy
|
||||
|
||||
Ge CloudFront åtkomst till bucketen:
|
||||
|
||||
```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"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Steg 5: Anpassade felsidor
|
||||
|
||||
Konfigurera 404 så att den returnerar `index.html` för SPA-routing:
|
||||
|
||||
1. CloudFront → Error pages
|
||||
2. Skapa ett anpassat felsvar:
|
||||
- HTTP error code: 404
|
||||
- Response page path: `/index.html`
|
||||
- HTTP response code: 200
|
||||
|
||||
## Kostnadsuppskattning
|
||||
|
||||
| Resurs | Uppskattad kostnad |
|
||||
| ---------------------------- | ------------------ |
|
||||
| S3-lagring (~500MB) | ~$0.01/månad |
|
||||
| CloudFront (1TB överföring) | ~$85/månad |
|
||||
| CloudFront (10GB överföring) | ~$0.85/månad |
|
||||
|
||||
::: tip
|
||||
Använd S3 Intelligent Tiering för att optimera kostnaden för filer som sällan används.
|
||||
:::
|
||||
|
||||
## Automatisering med 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 @@
|
||||
# Driftsätt på Cloudflare Pages
|
||||
|
||||
[Cloudflare Pages](https://pages.cloudflare.com) erbjuder snabb, global hosting av statiska webbplatser med obegränsad bandbredd.
|
||||
|
||||
## Snabb driftsättning
|
||||
|
||||
1. Gå till [Cloudflare Pages](https://dash.cloudflare.com/?to=/:account/pages)
|
||||
2. Klicka på "Create a project"
|
||||
3. Anslut ditt GitHub-repository
|
||||
|
||||
## Byggkonfiguration
|
||||
|
||||
| Inställning | Värde |
|
||||
| ---------------------- | --------------- |
|
||||
| Framework preset | None |
|
||||
| Build command | `npm run build` |
|
||||
| Build output directory | `dist` |
|
||||
| Root directory | `/` |
|
||||
|
||||
## Miljövariabler
|
||||
|
||||
Lägg till dessa under Settings → Environment variables:
|
||||
|
||||
| Variabel | Värde |
|
||||
| ----------------------- | ----------------------------------------------------- |
|
||||
| `NODE_VERSION` | `18` |
|
||||
| `SIMPLE_MODE` | `false` (valfritt) |
|
||||
| `VITE_BRAND_NAME` | Eget varumärkesnamn (valfritt) |
|
||||
| `VITE_BRAND_LOGO` | Logotypens sökväg relativt `public/` (valfritt) |
|
||||
| `VITE_FOOTER_TEXT` | Egen sidfots-/upphovsrättstext (valfritt) |
|
||||
| `VITE_DEFAULT_LANGUAGE` | Standardspråk för gränssnittet, t.ex. `fr` (valfritt) |
|
||||
|
||||
## Konfigurationsfil
|
||||
|
||||
Skapa `_headers` i din `public`-mapp:
|
||||
|
||||
```
|
||||
# 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 Viktigt
|
||||
Rubrikerna `Cross-Origin-Embedder-Policy` och `Cross-Origin-Opener-Policy` krävs för konvertering av Word/ODT/Excel/PowerPoint till PDF. Utan dem är `SharedArrayBuffer` inte tillgängligt och LibreOffice WASM-motorn kan inte initieras.
|
||||
:::
|
||||
|
||||
Skapa `_redirects` för SPA-routing:
|
||||
|
||||
```
|
||||
/* /index.html 200
|
||||
```
|
||||
|
||||
## Egen domän
|
||||
|
||||
1. Gå till ditt Pages-projekt
|
||||
2. Klicka på "Custom domains"
|
||||
3. Lägg till din domän
|
||||
4. Cloudflare konfigurerar DNS automatiskt om domänen finns hos Cloudflare
|
||||
|
||||
## Fördelar
|
||||
|
||||
- **Gratis obegränsad bandbredd**
|
||||
- **Globalt CDN** med över 300 edge-platser
|
||||
- **Automatisk HTTPS**
|
||||
- **Förhandsdriftsättningar** för pull requests
|
||||
- **Snabba byggen**
|
||||
|
||||
## Felsökning
|
||||
|
||||
### Uppladdning av stora filer
|
||||
|
||||
Cloudflare Pages stöder filer upp till 25 MB. WASM-moduler bör fungera bra, men om du når gränserna kan du överväga:
|
||||
|
||||
```bash
|
||||
# Split large files during build
|
||||
npm run build
|
||||
```
|
||||
|
||||
### Storleksgränser för Workers
|
||||
|
||||
Om du använder Cloudflare Workers för avancerad routing, notera gränsen på 1 MB för gratisplaner.
|
||||
|
||||
## CORS-proxy-Worker (för digitala signaturer)
|
||||
|
||||
Verktyget för digitala signaturer kräver en CORS-proxy för att hämta certifikatkedjor. Driftsätt den medföljande workern:
|
||||
|
||||
```bash
|
||||
cd cloudflare
|
||||
npx wrangler login
|
||||
npx wrangler deploy
|
||||
```
|
||||
|
||||
### Säkerhetsfunktioner
|
||||
|
||||
| Funktion | Beskrivning |
|
||||
| ---------------------------- | ------------------------------------------- |
|
||||
| **URL-begränsningar** | Endast certifikat-URL:er tillåts |
|
||||
| **Filstorleksgräns** | Max 10MB per förfrågan |
|
||||
| **Hastighetsbegränsning** | 60 förfr./IP/min (kräver KV) |
|
||||
| **Blockering av privata IP** | Blockerar localhost och interna IP-adresser |
|
||||
|
||||
### Aktivera hastighetsbegränsning
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
### Bygg med proxy-URL
|
||||
|
||||
```bash
|
||||
VITE_CORS_PROXY_URL=https://your-worker.workers.dev npm run build
|
||||
```
|
||||
|
||||
Eller med 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 .
|
||||
```
|
||||
|
||||
> **Obs:** Se [README](https://github.com/alam00000/bentopdf#digital-signature-cors-proxy-required) för hur du ställer in HMAC-signaturer.
|
||||
@@ -0,0 +1,180 @@
|
||||
# CORS-proxy för hämtning av certifikat
|
||||
|
||||
Verktyget för digitala signaturer använder en CORS-proxy för att hämta utfärdarcertifikat från externa certifikatutfärdare (CA). Det behövs eftersom många CA-servrar inte inkluderar CORS-rubriker i sina svar, vilket hindrar direkt hämtning från webbläsaren.
|
||||
|
||||
Dessutom serverar många CA-servrar certifikat över vanlig HTTP. När din BentoPDF-instans hostas över HTTPS blockerar webbläsare dessa HTTP-förfrågningar (policy för blandat innehåll). CORS-proxyn löser båda problemen genom att dirigera förfrågningar via en HTTPS-ändpunkt med rätt rubriker.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
När du signerar en PDF med ett certifikat:
|
||||
|
||||
1. Biblioteket `zgapdfsigner` försöker bygga en komplett certifikatkedja
|
||||
2. Det hämtar utfärdarcertifikat från URL:er som finns i ditt certifikats AIA-tillägg (Authority Information Access)
|
||||
3. Förfrågningarna dirigeras via en CORS-proxy som lägger till de nödvändiga `Access-Control-Allow-Origin`-rubrikerna
|
||||
4. Proxyn returnerar certifikatdata till webbläsaren
|
||||
|
||||
## Självhosta CORS-proxyn
|
||||
|
||||
Om du självhostar BentoPDF måste du driftsätta din egen CORS-proxy för att digitala signaturer ska fungera med certifikat som kräver hämtning av kedjan.
|
||||
|
||||
### Alternativ 1: Cloudflare Workers (rekommenderas)
|
||||
|
||||
1. **Installera Wrangler CLI**:
|
||||
|
||||
```bash
|
||||
npm install -g wrangler
|
||||
```
|
||||
|
||||
2. **Logga in på Cloudflare**:
|
||||
|
||||
```bash
|
||||
wrangler login
|
||||
```
|
||||
|
||||
3. **Klona BentoPDF och uppdatera tillåtna ursprung**:
|
||||
|
||||
```bash
|
||||
git clone https://github.com/alam00000/bentopdf.git
|
||||
cd bentopdf/cloudflare
|
||||
```
|
||||
|
||||
Öppna `cors-proxy-worker.js` och ändra arrayen `ALLOWED_ORIGINS` till din domän:
|
||||
|
||||
```js
|
||||
const ALLOWED_ORIGINS = [
|
||||
'https://your-domain.com',
|
||||
'https://www.your-domain.com',
|
||||
];
|
||||
```
|
||||
|
||||
::: warning Viktigt
|
||||
Utan den här ändringen avvisar proxyn alla förfrågningar från din webbplats med felet **403 Forbidden**. Standardinställningen tillåter bara förfrågningar från `bentopdf.com`.
|
||||
:::
|
||||
|
||||
4. **Driftsätt proxyn**:
|
||||
|
||||
```bash
|
||||
wrangler deploy
|
||||
```
|
||||
|
||||
Anteckna din worker-URL (t.ex. `https://bentopdf-cors-proxy.your-subdomain.workers.dev`).
|
||||
|
||||
5. **Bygg om BentoPDF med proxy-URL:en**:
|
||||
|
||||
Om du använder 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 .
|
||||
```
|
||||
|
||||
Om du bygger från källkod:
|
||||
|
||||
```bash
|
||||
VITE_CORS_PROXY_URL=https://your-worker.workers.dev npm run build
|
||||
```
|
||||
|
||||
### Alternativ 2: Egen backend-proxy
|
||||
|
||||
Du kan också skapa din egen proxy-ändpunkt. Kraven är:
|
||||
|
||||
1. Ta emot GET-förfrågningar med en frågeparameter `url`
|
||||
2. Hämta URL:en från din server (inga CORS-begränsningar på serversidan)
|
||||
3. Returnera svaret med dessa rubriker:
|
||||
- `Access-Control-Allow-Origin: https://your-domain.com`
|
||||
- `Access-Control-Allow-Methods: GET, OPTIONS`
|
||||
- `X-Content-Type-Options: nosniff`
|
||||
|
||||
Exempel på en implementation i 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' });
|
||||
}
|
||||
});
|
||||
```
|
||||
|
||||
## Säkerhetsaspekter
|
||||
|
||||
Den medföljande Cloudflare Worker har flera säkerhetsåtgärder:
|
||||
|
||||
| Funktion | Beskrivning |
|
||||
| ---------------------------- | ------------------------------------------------------------------------------------------------------ |
|
||||
| **Ursprungsvalidering** | Tillåter bara förfrågningar från domäner i `ALLOWED_ORIGINS` |
|
||||
| **URL-begränsningar** | Tillåter bara certifikat-URL:er (`.crt`, `.cer`, `.pem`, `/certs/`, `/ocsp`, `/crl`) |
|
||||
| **Blockering av privata IP** | Blockerar privata IPv4/IPv6-intervall, link-local, loopback, decimala IP-adresser och moln-metadata |
|
||||
| **Content-Type-säkerhet** | Returnerar bara säkra MIME-typer för certifikat och blockerar injektion av content-type från uppströms |
|
||||
| **Filstorleksgräns** | Strömmar svaret med 10MB-gräns och avbryter nedladdningen om den överskrids |
|
||||
| **Hastighetsbegränsning** | 60 förfrågningar per minut per IP eller IPv6 /64 (kräver KV, tillåter vid KV-fel) |
|
||||
| **HMAC-signaturer** | Valfri signering på klientsidan (avskräcker enkelt missbruk) |
|
||||
|
||||
### DNS rebinding (självhosting utanför Cloudflare)
|
||||
|
||||
Workern avvisar alla URL:er som löser till en privat eller intern IP. Den kan inte använda en fast tillåtelselista med värdar, eftersom URL:erna i certifikatkedjor pekar på den CA som utfärdade certifikatet (FNMT, företags-CA:er och så vidare), så destinationerna är inte kända i förväg. Det lämnar ett litet rebinding-fönster: den som kör DNS för sin egen domän kan ge en publik IP till säkerhetskontrollen och en privat IP till den riktiga förfrågan ett ögonblick senare.
|
||||
|
||||
På Cloudflare går detta inte att utnyttja: Workers kan inte nå privata IP-adresser eller metadata-ändpunkten `169.254.169.254`, så en rebind leder ingenstans. Ge bara inte workern en väg in: koppla inte på en Tunnel, Service eller privat nätverksbindning (den behöver bara `RATE_LIMIT_KV`).
|
||||
|
||||
Om du kör detta utanför Cloudflare (workerd, Node och liknande) inuti ett VPC _kan_ körmiljön nå interna IP-adresser. Sätt en egress-brandvägg framför och blockera de privata intervallen: `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` och deras IPv6-motsvarigheter. Appkod kan inte upprätthålla det när du inte längre är på Cloudflare.
|
||||
|
||||
## Inaktivera proxyn
|
||||
|
||||
Om du inte vill använda en CORS-proxy, sätt miljövariabeln till en tom sträng:
|
||||
|
||||
```
|
||||
VITE_CORS_PROXY_URL=
|
||||
```
|
||||
|
||||
**Obs**: Utan proxyn misslyckas signering med certifikat som kräver extern hämtning av kedjan (som FNMT eller vissa företags-CA:er) med felet "Failed to fetch".
|
||||
|
||||
## Felsökning
|
||||
|
||||
### "Signing error: TypeError: Failed to fetch"
|
||||
|
||||
Det betyder oftast något av följande:
|
||||
|
||||
1. **Ingen CORS-proxy konfigurerad**: ange `VITE_CORS_PROXY_URL` och bygg om
|
||||
2. **Blandat innehåll blockerat**: din webbplats använder HTTPS men certifikatets utfärdar-URL använder HTTP. CORS-proxyn löser detta.
|
||||
3. **CORS-proxyn avvisar ditt ursprung**: kontrollera att din domän finns i arrayen `ALLOWED_ORIGINS` i `cors-proxy-worker.js`
|
||||
|
||||
### "403 Forbidden" från proxyn
|
||||
|
||||
Din domän finns inte i listan `ALLOWED_ORIGINS`. Redigera `cors-proxy-worker.js`:
|
||||
|
||||
```js
|
||||
const ALLOWED_ORIGINS = ['https://your-domain.com'];
|
||||
```
|
||||
|
||||
Driftsätt sedan igen: `npx wrangler deploy`
|
||||
|
||||
### Testa proxyn
|
||||
|
||||
```bash
|
||||
curl -H "Origin: https://your-domain.com" \
|
||||
"https://your-proxy.workers.dev?url=http://www.cert.fnmt.es/certs/ACUSU.crt"
|
||||
```
|
||||
|
||||
### Certifikat som fungerar utan proxy
|
||||
|
||||
Vissa certifikat innehåller hela kedjan i P12/PFX-filen och kräver ingen extern hämtning:
|
||||
|
||||
- Självsignerade certifikat
|
||||
- Vissa kommersiella CA:er som paketerar mellancertifikat
|
||||
- Certifikat som du själv har satt ihop med hela kedjan
|
||||
@@ -0,0 +1,622 @@
|
||||
# Driftsätt med Docker / Podman
|
||||
|
||||
Det enklaste sättet att självhosta BentoPDF i en produktionsmiljö.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> **Obligatoriska rubriker för konvertering av Office-filer**
|
||||
>
|
||||
> LibreOffice-baserade verktyg (konvertering av Word, Excel och PowerPoint) kräver dessa HTTP-rubriker för stöd för `SharedArrayBuffer`:
|
||||
>
|
||||
> - `Cross-Origin-Opener-Policy: same-origin`
|
||||
> - `Cross-Origin-Embedder-Policy: require-corp`
|
||||
>
|
||||
> Sidan måste dessutom serveras från en säker kontext. `http://localhost` fungerar för lokal testning, men `http://192.168.x.x` och andra LAN-adresser kvalificerar sig oftast inte, så Office-konvertering över vanlig HTTP misslyckas även om rubrikerna finns.
|
||||
>
|
||||
> De officiella containerbilderna inkluderar dessa rubriker. Om du använder en reverse proxy (Traefik, Caddy m.fl.), se till att rubrikerna bevaras eller läggs till, och använd HTTPS för åtkomst som inte är loopback.
|
||||
|
||||
> [!TIP]
|
||||
> **Podman-användare:** Alla `docker`-kommandon fungerar med Podman om du ersätter `docker` med `podman` och `docker-compose` med `podman-compose`.
|
||||
|
||||
## Snabbstart
|
||||
|
||||
> [!TIP]
|
||||
> BentoPDF levereras i två byggen:
|
||||
>
|
||||
> - **Self-Hosted-bygget**: `ghcr.io/alam00000/bentopdf-simple:latest`. Alla PDF-verktyg, **utan** marknadsföringsdelarna (ingen hero, FAQ, omdömen eller sidfot). Använd detta för interna driftsättningar i team och organisationer. Det är **inte** en "lite"-version med färre funktioner.
|
||||
> - **Commercial-bygget**: `ghcr.io/alam00000/bentopdf:latest`. Hela marknadsföringssajten, som används av bentopdf.com själv och av innehavare av kommersiell licens som kör publika driftsättningar.
|
||||
>
|
||||
> Är du osäker: hämta Self-Hosted-bygget.
|
||||
|
||||
```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
|
||||
|
||||
Skapa `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
|
||||
```
|
||||
|
||||
Kör:
|
||||
|
||||
```bash
|
||||
# Docker Compose
|
||||
docker compose up -d
|
||||
|
||||
# Podman Compose
|
||||
podman-compose up -d
|
||||
```
|
||||
|
||||
## Bygg din egen image
|
||||
|
||||
```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;"]
|
||||
```
|
||||
|
||||
Bygg och kör:
|
||||
|
||||
```bash
|
||||
docker build -t bentopdf:custom .
|
||||
docker run -d -p 3000:8080 bentopdf:custom
|
||||
```
|
||||
|
||||
## Miljövariabler
|
||||
|
||||
| Variabel | Beskrivning | Standard |
|
||||
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------- |
|
||||
| `SIMPLE_MODE` | Bygg Self-Hosted-varianten (döljer marknadsföringsdelarna från bentopdf.com: hero, FAQ, omdömen, sidfot). Alla PDF-verktyg finns kvar. | `false` |
|
||||
| `BASE_URL` | Driftsätt i en underkatalog | `/` |
|
||||
| `VITE_WASM_PYMUPDF_URL` | URL till PyMuPDF WASM-modulen | `https://cdn.jsdelivr.net/npm/@bentopdf/pymupdf-wasm@0.11.16/` |
|
||||
| `VITE_WASM_GS_URL` | URL till Ghostscript WASM-modulen | `https://cdn.jsdelivr.net/npm/@bentopdf/gs-wasm@0.1.1/assets/` |
|
||||
| `VITE_WASM_CPDF_URL` | URL till CoherentPDF WASM-modulen | `https://cdn.jsdelivr.net/npm/coherentpdf@2.5.5/dist/` |
|
||||
| `VITE_TESSERACT_WORKER_URL` | URL till OCR-workerskriptet | _(tom; använd Tesseract.js standard-CDN)_ |
|
||||
| `VITE_TESSERACT_CORE_URL` | Katalog för OCR-kärnkörmiljön | _(tom; använd Tesseract.js standard-CDN)_ |
|
||||
| `VITE_TESSERACT_LANG_URL` | Katalog för OCR traineddata | _(tom; använd Tesseract.js standard-CDN)_ |
|
||||
| `VITE_TESSERACT_AVAILABLE_LANGUAGES` | Kommaseparerade OCR-språk som visas i gränssnittet | _(tom; visa hela katalogen)_ |
|
||||
| `VITE_OCR_FONT_BASE_URL` | Katalog för typsnitt till OCR-textlager | _(tom; använd externa Noto-typsnitts-URL:er)_ |
|
||||
| `VITE_DEFAULT_LANGUAGE` | Standardspråk för gränssnittet | `en` |
|
||||
| `VITE_BRAND_NAME` | Eget varumärkesnamn | `BentoPDF` |
|
||||
| `VITE_BRAND_LOGO` | Logotypens sökväg relativt `public/` | `images/favicon-no-bg.svg` |
|
||||
| `VITE_FOOTER_TEXT` | Egen sidfots-/upphovsrättstext | `© 2026 BentoPDF. All rights reserved.` |
|
||||
| `DISABLE_TOOLS` | Kommaseparerade verktygs-ID:n som ska döljas | _(tom; alla verktyg aktiverade)_ |
|
||||
| `DISABLE_GITHUB_STARS` | Hoppa över hämtningen av GitHub-stjärnor vid sidladdning och ta bort `api.github.com` från CSP. Simple Mode-byggen hoppar alltid över den. | `false` |
|
||||
| `SITE_URL` | Publik URL som skrivs in i canonical-, hreflang- och sitemap-länkar. Behåll standardvärdet om du inte vill att sökmotorer ska behandla din driftsättning som en egen webbplats. | `https://www.bentopdf.com` |
|
||||
| `ALLOW_INDEXING` | Med en egen `SITE_URL` markeras varje sida `noindex` så att din kopia inte konkurrerar med bentopdf.com i sökresultaten. Sätt till `true` för att låta sökmotorer indexera den. | `false` |
|
||||
|
||||
WASM-modulernas URL:er är förkonfigurerade med CDN-standardvärden, så alla avancerade funktioner fungerar direkt. Åsidosätt dem för luftgappade eller självhostade driftsättningar.
|
||||
|
||||
### Sökmotorer
|
||||
|
||||
Som standard pekar varje sida sökmotorer till bentopdf.com som originalet, så att din driftsättning inte visas som en dubblett. Du behöver inte ändra något för en privat eller intern instans.
|
||||
|
||||
- **Håll din instans helt borta från sökresultat:** kör containern med `-e ROBOTS_NOINDEX=true`. Det kräver bara en omstart, inte ett nytt bygge.
|
||||
- **Gör din instans till en egen webbplats i sökresultaten:** bygg med `--build-arg SITE_URL=https://your-domain.example --build-arg ALLOW_INDEXING=true`. Utan `ALLOW_INDEXING=true` markerar en egen `SITE_URL` varje sida `noindex`.
|
||||
|
||||
### Content-Security-Policy
|
||||
|
||||
Nginx-imagen levereras med en tillämpad `Content-Security-Policy`-rubrik. CSP:ns direktiv `script-src`, `connect-src` och `font-src` **genereras vid bygget** från URL-variablerna `VITE_*` ovan: alla värdar du anger via `--build-arg` läggs automatiskt till i policyn.
|
||||
|
||||
Det innebär att:
|
||||
|
||||
- Om du åsidosätter `VITE_CORS_PROXY_URL` eller `VITE_WASM_*_URL` vid bygget tillåter CSP dessa ursprung automatiskt, ingen extra konfiguration behövs.
|
||||
- För URL:er på `cdn.jsdelivr.net` tillåter `script-src` bara den exakta versionerade paketmappen, till exempel `https://cdn.jsdelivr.net/npm/@bentopdf/pymupdf-wasm@0.11.16/`, inte hela CDN:et. jsDelivr serverar alla publika npm-paket och GitHub-repositorier, så om hela värden tilläts kunde vilket som helst av dem köras på din instans. URL:er på andra värdar tillåts per ursprung.
|
||||
- Om du konfigurerar egna WASM-URL:er vid _körning_ via sidan Avancerade inställningar i appen finns dessa ursprung **inte** i CSP och webbläsaren blockerar hämtningar från dem. Detta gäller även en annan version av samma paket på `cdn.jsdelivr.net`, eftersom bara den version som angavs vid bygget tillåts. Konfiguration vid körning är avsedd för experiment; för permanenta egna URL:er, ange motsvarande `VITE_*` build arg.
|
||||
- Luftgappade driftsättningar som åsidosätter alla tre `VITE_WASM_*_URL`-värden får även dessa paketmappar på `cdn.jsdelivr.net` borttagna från CSP (varje standardvärde ersätts, läggs inte till). Tesseract OCR-standardvärdena på `cdn.jsdelivr.net` finns kvar i policyn tills du även anger de tre `VITE_TESSERACT_*`-värdena. På samma sätt ersätter `VITE_CORS_PROXY_URL` den publika standardadressen `bentopdf-cors-proxy.bentopdf.workers.dev`.
|
||||
|
||||
CSP innehåller `'unsafe-eval'` i `script-src` eftersom LibreOffice WASM-körmiljön (som används av verktygen för konvertering av Word/Excel/PowerPoint) och bildbiblioteket wasm-vips (som används av PDF till TIFF) kompilerar intern dispatch-kod via `new Function()`. Att ta bort det skulle bryta dessa verktyg. Om du bygger i `SIMPLE_MODE` (utan LibreOffice) och inte behöver PDF till TIFF kan du manuellt redigera den genererade `security-headers.conf` och ta bort `'unsafe-eval'` för en striktare policy.
|
||||
|
||||
För OCR, lämna variablerna `VITE_TESSERACT_*` tomma för att använda de förvalda onlineresurserna, eller ange alla tre tillsammans för självhostad/offline-OCR. Partiella OCR-åsidosättningar avvisas eftersom workern, kärnkörmiljön och traineddata-katalogen måste matcha varandra. För sökbara PDF-filer helt offline, ange även `VITE_OCR_FONT_BASE_URL` så att OCR-textlagrets typsnitt laddas från din interna server i stället för de publika Noto-typsnitts-URL:erna.
|
||||
|
||||
`VITE_DEFAULT_LANGUAGE` anger gränssnittsspråk för förstagångsbesökare. Värden som stöds: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`. Användare kan fortfarande byta språk, det är bara standardvärdet som ändras.
|
||||
|
||||
Exempel:
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
### Eget varumärke
|
||||
|
||||
Ersätt standardlogotypen, namnet och sidfotstexten för BentoPDF med dina egna. Lägg din logotypfil i mappen `public/` (eller använd en befintlig bild) och ange sedan varumärkesvariablerna vid bygget:
|
||||
|
||||
```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 .
|
||||
```
|
||||
|
||||
Varumärkesanpassning fungerar i både fullt läge och Simple Mode och kan kombineras med alla andra alternativ vid bygget.
|
||||
|
||||
### Inaktivera specifika verktyg
|
||||
|
||||
Dölj verktyg i gränssnittet av efterlevnads- eller säkerhetsskäl. Inaktiverade verktyg tas bort från startsidan, sökresultat, kortkommandon och arbetsflödesbyggaren. Direkt åtkomst via URL visar en sida om att verktyget inte är tillgängligt.
|
||||
|
||||
Verktygs-ID:n är sidans URL utan `.html`. Om verktyget till exempel finns på `bentopdf.com/edit-pdf.html` är ID:t `edit-pdf`.
|
||||
|
||||
#### Hitta verktygs-ID:n
|
||||
|
||||
Det enklaste sättet: öppna ett verktyg i BentoPDF och titta på URL:en. Sista delen av sökvägen (utan `.html`) är verktygets ID.
|
||||
|
||||
<details>
|
||||
<summary>Fullständig lista över verktygs-ID:n</summary>
|
||||
|
||||
**Redigera och kommentera:** `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`
|
||||
|
||||
**Konvertera till 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`
|
||||
|
||||
**Konvertera från 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`
|
||||
|
||||
**Organisera och hantera:** `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`
|
||||
|
||||
**Optimera och reparera:** `compress-pdf`, `pdf-to-pdfa`, `fix-page-size`, `linearize-pdf`, `remove-restrictions`, `repair-pdf`, `rasterize-pdf`, `deskew-pdf`, `font-to-outline`
|
||||
|
||||
**Säkerhet:** `encrypt-pdf`, `sanitize-pdf`, `decrypt-pdf`, `flatten-pdf`, `remove-metadata`, `change-permissions`, `digital-sign-pdf`, `validate-signature-pdf`, `timestamp-pdf`
|
||||
|
||||
</details>
|
||||
|
||||
#### Alternativ 1: Vid bygget (Docker build arg)
|
||||
|
||||
```bash
|
||||
docker build \
|
||||
--build-arg DISABLE_TOOLS="edit-pdf,sign-pdf,encrypt-pdf" \
|
||||
-t bentopdf .
|
||||
```
|
||||
|
||||
Detta bakar in listan över inaktiverade verktyg i JavaScript-paketet. Ändringar kräver ett nytt bygge.
|
||||
|
||||
#### Alternativ 2: Vid körning (config.json)
|
||||
|
||||
Montera en `config.json`-fil i den serverade katalogen, inget nytt bygge behövs:
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
Eller med 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
|
||||
```
|
||||
|
||||
Båda metoderna kan kombineras, listorna slås ihop. Om ett verktyg finns i någon av dem inaktiveras det.
|
||||
|
||||
#### Inaktivera redigeringsfunktioner
|
||||
|
||||
Du kan också inaktivera specifika funktioner i PDF-redigeraren (t.ex. maskering, kommentarer, formulär) utan att inaktivera hela redigeringsverktyget. Lägg till `editorDisabledCategories` i din `config.json`:
|
||||
|
||||
```json
|
||||
{
|
||||
"editorDisabledCategories": ["redaction", "annotation-stamp"]
|
||||
}
|
||||
```
|
||||
|
||||
<details>
|
||||
<summary>Fullständig lista över redigerarkategorier</summary>
|
||||
|
||||
**Zoom:** `zoom`, `zoom-in`, `zoom-out`, `zoom-fit-page`, `zoom-fit-width`, `zoom-marquee`, `zoom-level`
|
||||
|
||||
**Kommentarer:** `annotation`, `annotation-markup`, `annotation-highlight`, `annotation-underline`, `annotation-strikeout`, `annotation-squiggly`, `annotation-ink`, `annotation-text`, `annotation-stamp`
|
||||
|
||||
**Former:** `annotation-shape`, `annotation-rectangle`, `annotation-circle`, `annotation-line`, `annotation-arrow`, `annotation-polygon`, `annotation-polyline`
|
||||
|
||||
**Formulär:** `form`, `form-textfield`, `form-checkbox`, `form-radio`, `form-select`, `form-listbox`, `form-fill-mode`
|
||||
|
||||
**Maskering:** `redaction`, `redaction-area`, `redaction-text`, `redaction-apply`, `redaction-clear`
|
||||
|
||||
**Dokument:** `document`, `document-open`, `document-close`, `document-print`, `document-capture`, `document-export`, `document-fullscreen`, `document-protect`
|
||||
|
||||
**Sida:** `page`, `spread`, `rotate`, `scroll`, `navigation`
|
||||
|
||||
**Panel:** `panel`, `panel-sidebar`, `panel-search`, `panel-comment`
|
||||
|
||||
**Verktyg:** `tools`, `pan`, `pointer`, `capture`
|
||||
|
||||
**Markering:** `selection`, `selection-copy`
|
||||
|
||||
**Historik:** `history`, `history-undo`, `history-redo`
|
||||
|
||||
</details>
|
||||
|
||||
Kategorierna är hierarkiska: om du inaktiverar en överordnad kategori (t.ex. `annotation`) inaktiveras alla underordnade.
|
||||
|
||||
### Inaktivera GitHub-stjärnräknaren
|
||||
|
||||
Navigeringsfältet visar ett live-antal GitHub-stjärnor som hämtas från `api.github.com` vid sidladdning. Det är den enda externa förfrågan som inte tjänar en PDF-funktion. Inaktivera den vid bygget för att ta bort hämtningskoden från paketet och ta bort `api.github.com` från Content-Security-Policy:
|
||||
|
||||
```bash
|
||||
docker build --build-arg DISABLE_GITHUB_STARS=true -t bentopdf .
|
||||
```
|
||||
|
||||
Simple Mode-byggen (`bentopdf-simple`) hoppar alltid över stjärnräknaren, flaggan behövs bara för Commercial-bygget eller egna fullständiga byggen.
|
||||
|
||||
### Egna WASM-URL:er (luftgappat / självhostat)
|
||||
|
||||
> [!IMPORTANT]
|
||||
> WASM-URL:erna bakas in i JavaScript vid **bygget**. WASM-filerna laddas ned av **användarens webbläsare** vid körning, Docker laddar inte ned dem under bygget. För luftgappade nätverk måste du hosta WASM-filerna på en intern server som webbläsare kan nå.
|
||||
|
||||
**Fullständigt arbetsflöde för luftgappade miljöer:**
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
Använd koderna som skrivs ut av `bash scripts/prepare-airgap.sh --list-ocr-languages`, eller sök på namn med `bash scripts/prepare-airgap.sh --search-ocr-language <term>`, för `--ocr-languages`. När du bygger med en begränsad uppsättning OCR-språk, ange samma koder till `VITE_TESSERACT_AVAILABLE_LANGUAGES` så att appen bara visar medföljande språk. För fullständig OCR offline, hosta även den medföljande katalogen `ocr-fonts/` och peka `VITE_OCR_FONT_BASE_URL` mot den.
|
||||
|
||||
Sätt en variabel till en tom sträng för att inaktivera den modulen (användare måste då konfigurera manuellt via Avancerade inställningar).
|
||||
|
||||
## Egen port
|
||||
|
||||
Som standard lyssnar BentoPDF på port `8080` i containern. För att ändra detta, ange miljövariabeln `PORT` vid körning:
|
||||
|
||||
```bash
|
||||
docker run -p 3000:9090 -e PORT=9090 ghcr.io/alam00000/bentopdf-simple:latest
|
||||
```
|
||||
|
||||
| Variabel | Beskrivning | Standard |
|
||||
| -------- | -------------------------------- | -------- |
|
||||
| `PORT` | Nginx lyssningsport i containern | `8080` |
|
||||
|
||||
Detta fungerar med både standard-Dockerfile och nonroot-Dockerfile.
|
||||
|
||||
## Eget användar-ID (PUID/PGID)
|
||||
|
||||
För miljöer som kräver att köra som en specifik icke-root-användare (NAS-enheter, Kubernetes med säkerhetskontexter, organisationspolicyer) tillhandahåller BentoPDF en separat Dockerfile med PUID/PGID-stöd i LSIO-stil.
|
||||
|
||||
### Bygg och kör
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
### Miljövariabler
|
||||
|
||||
| Variabel | Beskrivning | Standard |
|
||||
| -------------- | ------------------------ | -------- |
|
||||
| `PUID` | Användar-ID att köra som | `1000` |
|
||||
| `PGID` | Grupp-ID att köra som | `1000` |
|
||||
| `PORT` | Nginx lyssningsport | `8080` |
|
||||
| `DISABLE_IPV6` | Inaktivera IPv6-lyssnare | `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
|
||||
```
|
||||
|
||||
### Så fungerar det
|
||||
|
||||
Containern startar som root, skapar en användare med angivet PUID/PGID, justerar ägarskapet för alla skrivbara kataloger och släpper sedan behörigheter med `su-exec`. Nginx-processen körs helt som din angivna användare.
|
||||
|
||||
> [!NOTE]
|
||||
> Standard-`Dockerfile` använder `nginx-unprivileged` (UID 101) och rekommenderas för de flesta driftsättningar. Använd `Dockerfile.nonroot` bara när du behöver ett specifikt UID/GID.
|
||||
|
||||
> [!WARNING]
|
||||
> PUID/PGID kan inte vara `0` (root). Entrypoint validerar indata och avslutas med ett fel vid ogiltiga värden.
|
||||
|
||||
## Med Traefik (reverse proxy)
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
## Med Caddy (reverse proxy)
|
||||
|
||||
```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"
|
||||
}
|
||||
```
|
||||
|
||||
## Resursgränser
|
||||
|
||||
```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-integration)
|
||||
|
||||
[Quadlet](https://docs.podman.io/en/latest/markdown/podman-systemd.unit.5.html) låter dig köra Podman-containrar som systemd-tjänster. Det är idealiskt för produktionsdriftsättningar på Linux-system.
|
||||
|
||||
### Grundläggande Quadlet-uppsättning
|
||||
|
||||
Skapa en container unit-fil i `~/.config/containers/systemd/bentopdf.container` (användare) eller `/etc/containers/systemd/bentopdf.container` (system):
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
### Aktivera och starta
|
||||
|
||||
```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]
|
||||
> För driftsättning på systemnivå, använd `systemctl` utan flaggan `--user` och placera filen i `/etc/containers/systemd/`.
|
||||
|
||||
### Quadlet med hälsokontroll
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
### Automatisk uppdatering med Quadlet
|
||||
|
||||
Podman kan uppdatera containrar automatiskt när nya images finns:
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
### Nätverkskonfiguration för Quadlet
|
||||
|
||||
För egen nätverkskonfiguration, skapa en nätverksfil `bentopdf.network`:
|
||||
|
||||
```ini
|
||||
[Network]
|
||||
Subnet=10.89.0.0/24
|
||||
Gateway=10.89.0.1
|
||||
```
|
||||
|
||||
Referera sedan till den i din containerfil:
|
||||
|
||||
```ini
|
||||
[Container]
|
||||
Image=ghcr.io/alam00000/bentopdf-simple:latest
|
||||
ContainerName=bentopdf
|
||||
PublishPort=3000:8080
|
||||
Network=bentopdf.network
|
||||
```
|
||||
|
||||
## Uppdatera
|
||||
|
||||
```bash
|
||||
# Pull latest image
|
||||
docker compose pull
|
||||
|
||||
# Recreate container
|
||||
docker compose up -d
|
||||
```
|
||||
@@ -0,0 +1,266 @@
|
||||
# Driftsätt på Hostinger
|
||||
|
||||
[Hostinger](https://hostinger.com) är en populär leverantör av delad hosting. Den här guiden beskriver hur du driftsätter BentoPDF på Hostingers delade hosting.
|
||||
|
||||
## Förutsättningar
|
||||
|
||||
- Ett Hostinger-hostingpaket med åtkomst till filhanteraren
|
||||
- Node.js installerat lokalt för bygget
|
||||
|
||||
## Steg 1: Bygg projektet
|
||||
|
||||
```bash
|
||||
git clone https://github.com/alam00000/bentopdf.git
|
||||
cd bentopdf
|
||||
npm install
|
||||
npm run build
|
||||
```
|
||||
|
||||
De byggda filerna hamnar i mappen `dist`.
|
||||
|
||||
## Steg 2: Ladda upp till Hostinger
|
||||
|
||||
### Driftsättning på rotdomänen
|
||||
|
||||
1. Logga in på ditt Hostinger-konto
|
||||
2. Gå till **File Manager** → **public_html**
|
||||
3. **Ta bort** befintliga filer (gör en säkerhetskopia vid behov)
|
||||
4. **Ladda upp** hela innehållet i din lokala `dist`-mapp till `public_html`
|
||||
|
||||
### Driftsättning i en underkatalog
|
||||
|
||||
Om du driftsätter i en underkatalog (t.ex. `yourdomain.com/pdf-tools/`):
|
||||
|
||||
1. Bygg med rätt bas-URL:
|
||||
|
||||
```bash
|
||||
BASE_URL=/pdf-tools/ npm run build
|
||||
```
|
||||
|
||||
2. Skapa mappen i Hostinger:
|
||||
- Gå till **File Manager** → **public_html**
|
||||
- Skapa en ny mapp: `pdf-tools`
|
||||
3. Ladda upp hela innehållet i `dist` till `public_html/pdf-tools/`
|
||||
|
||||
## Steg 3: Skapa .htaccess-filen
|
||||
|
||||
Skapa en `.htaccess`-fil i roten av din driftsättningsmapp (`public_html` eller `public_html/pdf-tools/`):
|
||||
|
||||
::: warning Viktigt
|
||||
Vid driftsättning i en underkatalog, ändra `RewriteBase /` till `RewriteBase /pdf-tools/` (eller ditt mappnamn).
|
||||
:::
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
## Exempel på .htaccess för underkatalog
|
||||
|
||||
För `yourdomain.com/pdf-tools/`, uppdatera dessa rader:
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
## Felsökning
|
||||
|
||||
### WASM-filer laddas inte
|
||||
|
||||
Kontrollera att MIME-typerna är rätt angivna i `.htaccess`:
|
||||
|
||||
```apache
|
||||
AddType application/wasm .wasm
|
||||
```
|
||||
|
||||
### LibreOffice-verktyg fungerar inte
|
||||
|
||||
Säkerhetsrubrikerna är avgörande för SharedArrayBuffer:
|
||||
|
||||
```apache
|
||||
Header always set Cross-Origin-Opener-Policy "same-origin"
|
||||
Header always set Cross-Origin-Embedder-Policy "require-corp"
|
||||
```
|
||||
|
||||
Om rubrikerna inte tillämpas, kontakta Hostingers support för att aktivera `mod_headers`.
|
||||
|
||||
### 404-fel vid omladdning av sidan
|
||||
|
||||
Kontrollera att regeln för filändelsen `.html` och språkrouterna är rätt konfigurerade. BentoPDF använder statiska HTML-filer, inte SPA-routing:
|
||||
|
||||
```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]
|
||||
```
|
||||
|
||||
### Gränser för filuppladdning
|
||||
|
||||
Hostinger kan ha gränser för filstorlek. Ladda upp WASM-filerna separat om massuppladdning misslyckas.
|
||||
@@ -0,0 +1,538 @@
|
||||
# Guide för självhosting
|
||||
|
||||
BentoPDF kan självhostas på din egen infrastruktur. Den här guiden går igenom olika distributionsalternativ.
|
||||
|
||||
## Snabbstart med Docker / Podman
|
||||
|
||||
Det snabbaste sättet att självhosta BentoPDF:
|
||||
|
||||
> [!TIP]
|
||||
> BentoPDF levereras i två byggen:
|
||||
>
|
||||
> - **Självhostat bygge**: `ghcr.io/alam00000/bentopdf-simple:latest`. Alla PDF-verktyg, **utan** marknadsföringsdelarna (ingen hero, FAQ, omdömen eller sidfot). Använd detta för interna distributioner i team och organisationer. Det är **inte** en funktionsbegränsad "lite"-version.
|
||||
> - **Kommersiellt bygge**: `ghcr.io/alam00000/bentopdf:latest`. Hela marknadsföringswebbplatsen, som används av bentopdf.com själv och av innehavare av kommersiell licens med publika distributioner.
|
||||
>
|
||||
> Om du är osäker: hämta det självhostade bygget.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> Konvertering av Office-filer kräver `SharedArrayBuffer`, vilket innebär att appen måste vara både cross-origin-isolerad och levereras från en säker kontext. Den officiella avbildningen skickar redan de nödvändiga COOP/COEP-huvudena, men webbläsare inaktiverar ändå `SharedArrayBuffer` på vanliga HTTP-ursprung i lokala nätverk, som `http://192.168.x.x`.
|
||||
>
|
||||
> Använd `http://localhost` bara för tester på samma enhet. Om användare når BentoPDF via en LAN-IP eller ett värdnamn ska du avsluta anslutningen med 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
|
||||
```
|
||||
|
||||
Eller med 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)
|
||||
|
||||
Kör BentoPDF som en systemd-tjänst. Skapa `~/.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
|
||||
```
|
||||
|
||||
Se [Docker-distributionsguiden](/sv/self-hosting/docker) för fullständig dokumentation om Quadlet.
|
||||
|
||||
## Bygga från källkod
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
## Konfigurationsalternativ
|
||||
|
||||
### Självhostat bygge (Simple Mode)
|
||||
|
||||
Det självhostade bygget (avbildningen `bentopdf-simple`, även kallat Simple Mode) är **funktionellt identiskt** med det kommersiella bygget: alla PDF-verktyg finns med och beter sig likadant. Det döljer bara marknadsföringsdelarna som bara är rimliga på bentopdf.com självt eller i en kommersiell publik distribution. **Det är inte en funktionsbegränsad eller "lite"-version.**
|
||||
|
||||
**Vad det självhostade bygget döljer** (enbart kosmetiskt, inga PDF-funktioner tas bort):
|
||||
|
||||
- Navigeringsfält, hero-sektion, funktionssektion, FAQ, omdömen, sidfot
|
||||
- Uppdaterar sidtiteln till "PDF-verktyg"
|
||||
|
||||
**Vad det självhostade bygget behåller** (allt som faktiskt hanterar PDF-arbete):
|
||||
|
||||
- Alla PDF-verktyg (slå ihop, dela, redigera, signera, OCR, Office-konvertering m.m.)
|
||||
- Stöd för eget varumärke, all konfiguration vid bygge och körning
|
||||
|
||||
Det kommersiella bygget (`ghcr.io/alam00000/bentopdf:latest`) driver bentopdf.com självt och används av innehavare av kommersiell licens med publika distributioner. Det lägger till hero, FAQ, omdömen och sidfot, som inte vore rimliga i ett internt verktyg.
|
||||
|
||||
Om du självhostar BentoPDF för ditt team, din organisation eller som ett internt verktyg hämtar du det självhostade bygget:
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
Se [SIMPLE_MODE.md](https://github.com/alam00000/bentopdf/blob/main/SIMPLE_MODE.md) för fullständig information.
|
||||
|
||||
### Kommersiellt bygge (publika distributioner med eget varumärke)
|
||||
|
||||
Det kommersiella bygget (avbildningen `bentopdf`, utan suffixet `-simple`) driver bentopdf.com självt. Det innehåller hela marknadsföringswebbplatsen (hero, funktioner, FAQ, omdömen, sidfot) ovanpå alla PDF-verktyg. Använd det här bygget när du vill **distribuera BentoPDF som en publik PDF-tjänst under ditt eget varumärke**, till exempel:
|
||||
|
||||
- Du kör BentoPDF som en hostad SaaS för slutanvändare på din egen domän
|
||||
- Du vill ha upplevelsen med målsida (marknadsföringssektioner + verktyg), inte bara själva verktygsytan
|
||||
- Du är innehavare av kommersiell licens och bäddar in BentoPDF i en kommersiell produkt
|
||||
|
||||
**Kör det som det är** (med BentoPDF-varumärke, användbart för att förhandsgranska bygget):
|
||||
|
||||
```bash
|
||||
docker run -p 3000:8080 ghcr.io/alam00000/bentopdf:latest
|
||||
```
|
||||
|
||||
**Bygg med ditt eget varumärke** (det typiska kommersiella arbetsflödet):
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
Alla andra alternativ vid bygget (`BASE_URL`, `VITE_DEFAULT_LANGUAGE`, `DISABLE_TOOLS`, åsidosättning av WASM-URL:er m.m.) fungerar på samma sätt som i det självhostade bygget.
|
||||
|
||||
::: warning Licensiering
|
||||
Det är tillåtet att köra det kommersiella bygget under något av BentoPDF:s två licensalternativ:
|
||||
|
||||
- **AGPL-3.0** (gratis): tillåtet om din distribution publicerar hela sin källkod under AGPL, inklusive varumärkesändringar och omgivande affärslogik.
|
||||
- **Kommersiell licens** (79 USD engångsavgift): krävs för distributioner med sluten källkod eller proprietära distributioner där du inte öppnar källkoden för din varumärkesfork eller affärskod.
|
||||
|
||||
Se [licenssidan](https://www.bentopdf.com/licensing) för en fullständig jämförelse. AGPL-licensierade WASM-moduler (PyMuPDF, Ghostscript, CoherentPDF) laddas från ett CDN vid körning, så de hamnar inte i din avbildning och påverkar inte din licenssituation.
|
||||
:::
|
||||
|
||||
### Bas-URL
|
||||
|
||||
Distribuera till en underkatalog:
|
||||
|
||||
```bash
|
||||
BASE_URL=/pdf-tools/ npm run build
|
||||
```
|
||||
|
||||
### Eget varumärke
|
||||
|
||||
Ersätt BentoPDF:s standardlogotyp, namn och sidfotstext med dina egna vid bygget:
|
||||
|
||||
| Variabel | Beskrivning | Standard |
|
||||
| ------------------ | ---------------------------------------------- | --------------------------------------- |
|
||||
| `VITE_BRAND_NAME` | Varumärkesnamn som visas i sidhuvud och sidfot | `BentoPDF` |
|
||||
| `VITE_BRAND_LOGO` | Logotypsökväg relativt `public/` | `images/favicon-no-bg.svg` |
|
||||
| `VITE_FOOTER_TEXT` | Egen sidfots-/upphovsrättstext | `© 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
|
||||
```
|
||||
|
||||
Eller via 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 .
|
||||
```
|
||||
|
||||
Varumärkesanpassning fungerar i både fullt läge och Simple Mode och kan kombineras med alla andra alternativ vid bygget (`BASE_URL`, `SIMPLE_MODE`, `VITE_DEFAULT_LANGUAGE`).
|
||||
|
||||
### Inaktivera specifika verktyg
|
||||
|
||||
Dölj enskilda verktyg av efterlevnads- eller säkerhetsskäl. Inaktiverade verktyg tas bort från startsidan, sökningen, genvägarna, arbetsflödesbyggaren och direkt URL-åtkomst.
|
||||
|
||||
Verktygs-ID:n är sidans URL utan `.html`: öppna ett verktyg och titta på URL:en (t.ex. `edit-pdf`, `sign-pdf`, `encrypt-pdf`).
|
||||
|
||||
**Vid bygget** (inbakat i paketet):
|
||||
|
||||
```bash
|
||||
DISABLE_TOOLS="edit-pdf,sign-pdf" npm run build
|
||||
```
|
||||
|
||||
**Vid körning** (ingen ombyggnad behövs, montera en `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
|
||||
```
|
||||
|
||||
Båda metoderna kan kombineras: listorna slås ihop.
|
||||
|
||||
Du kan också inaktivera specifika funktioner i PDF-redigeraren (t.ex. maskering) utan att inaktivera hela verktyget genom att lägga till `editorDisabledCategories` i `config.json`. Se [Docker-guiden](/sv/self-hosting/docker#inaktivera-redigeringsfunktioner) för en fullständig lista över kategorier.
|
||||
|
||||
## Distributionsguider
|
||||
|
||||
Välj din plattform:
|
||||
|
||||
- [Vercel](/sv/self-hosting/vercel)
|
||||
- [Netlify](/sv/self-hosting/netlify)
|
||||
- [Cloudflare Pages](/sv/self-hosting/cloudflare)
|
||||
- [AWS S3 + CloudFront](/sv/self-hosting/aws)
|
||||
- [Hostinger](/sv/self-hosting/hostinger)
|
||||
- [Nginx](/sv/self-hosting/nginx)
|
||||
- [Apache](/sv/self-hosting/apache)
|
||||
- [Docker](/sv/self-hosting/docker)
|
||||
- [Kubernetes](/sv/self-hosting/kubernetes)
|
||||
- [CORS-proxy](/sv/self-hosting/cors-proxy) - Krävs för digitala signaturer
|
||||
|
||||
## Vanliga problem
|
||||
|
||||
### Word / ODT / Excel / PowerPoint till PDF hänger sig (SharedArrayBuffer otillgängligt)
|
||||
|
||||
**Symptom**: LibreOffice-baserade dokumentkonverteringar (Word, ODT, Excel, PowerPoint till PDF) hänger sig vid ca 55 % eller startar inte. Webbläsarkonsolen kan visa:
|
||||
|
||||
> `ReferenceError: SharedArrayBuffer is not defined`
|
||||
|
||||
…eller så rapporterar `window.crossOriginIsolated` `false`, eller så rapporterar WASM-kompileringen `expected magic word 00 61 73 6d, found 1f 8b 08 08`.
|
||||
|
||||
**Orsak**: LibreOffice WASM kräver `SharedArrayBuffer`, som webbläsaren bara aktiverar när sidan är **cross-origin-isolerad** OCH levereras från en **säker kontext**. Det innebär att två saker måste stämma:
|
||||
|
||||
1. Varje svar innehåller båda huvudena:
|
||||
- `Cross-Origin-Embedder-Policy: require-corp`
|
||||
- `Cross-Origin-Opener-Policy: same-origin`
|
||||
2. Sidan levereras från `https://...` eller `http://localhost`. Vanlig HTTP på en LAN-IP (t.ex. `http://192.168.x.x`) räknas INTE som säker: webbläsare inaktiverar `SharedArrayBuffer` där.
|
||||
|
||||
Skillnaden mellan `00 61 73 6d` och `1f 8b 08 08` är ett separat delsymptom: de förkomprimerade filerna `.wasm.gz` / `.data.gz` saknar svarshuvudet `Content-Encoding: gzip`, så webbläsaren får rå gzip-data i stället för uppackad WASM.
|
||||
|
||||
**Lösning**: se din plattformsspecifika distributionsguide för exakt konfiguration:
|
||||
|
||||
- [Nginx →](/sv/self-hosting/nginx#signera-pdf-eller-formularifyllare-visar-en-tom-lasare-mime-fel-for-mjs)
|
||||
- [Apache →](/sv/self-hosting/apache#signera-pdf-eller-formularifyllare-visar-en-tom-visare-mjs-mime-fel)
|
||||
- [AWS S3 + CloudFront →](/sv/self-hosting/aws#steg-3b-response-headers-policy-kravs-for-libreoffice-wasm)
|
||||
- [Cloudflare Pages →](/sv/self-hosting/cloudflare#konfigurationsfil) (filen `_headers`)
|
||||
- [Netlify →](/sv/self-hosting/netlify#word-odt-excel-till-pdf-fastnar-pa-55) (`netlify.toml`)
|
||||
- [Vercel →](/sv/self-hosting/vercel#word-odt-excel-till-pdf-fungerar-inte) (`vercel.json`)
|
||||
- [Hostinger →](/sv/self-hosting/hostinger#libreoffice-verktyg-fungerar-inte) (`.htaccess`)
|
||||
- [Kubernetes →](/sv/self-hosting/kubernetes#mime-typfel-for-mjs-tom-iframe-i-signera-pdf-formularifyllare)
|
||||
- **Docker**: hanteras automatiskt av den medföljande nginx-konfigurationen, ingen åtgärd behövs.
|
||||
|
||||
**Verifiera**: öppna DevTools Console på valfri BentoPDF-sida och kör:
|
||||
|
||||
```js
|
||||
console.log(window.crossOriginIsolated); // should be true
|
||||
console.log(typeof SharedArrayBuffer); // should be "function"
|
||||
```
|
||||
|
||||
Om sidan levereras via HTTPS eller `http://localhost` OCH båda COEP/COOP-huvudena finns på varje svar klarar båda kontrollerna. Om du använder `http://192.168.x.x` eller ett annat HTTP-ursprung som inte är loopback avslutar du anslutningen med HTTPS: det finns ingen lösning enbart med huvuden.
|
||||
|
||||
### `.mjs`-filer levereras som `application/octet-stream`
|
||||
|
||||
**Symptom**: Signera PDF / Formulärifyllare / vissa andra verktyg visar en tom läsare eller laddas inte. Webbläsarkonsolen rapporterar:
|
||||
|
||||
> `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.`
|
||||
|
||||
**Orsak**: Din webbserver eller omvända proxy saknar en MIME-typsmappning för `.mjs`-filer (den medföljande PDF-läsaren levereras med ES-moduler med den filändelsen). Många standardkonfigurationer av servrar använder `application/octet-stream` för okända filändelser, och webbläsare vägrar köra sådana som ES-moduler.
|
||||
|
||||
**Lösning**: se din plattformsspecifika distributionsguide för exakt kodsnutt:
|
||||
|
||||
- [Nginx →](/sv/self-hosting/nginx#signera-pdf-eller-formularifyllare-visar-en-tom-lasare-mime-fel-for-mjs)
|
||||
- [Apache →](/sv/self-hosting/apache#signera-pdf-eller-formularifyllare-visar-en-tom-visare-mjs-mime-fel)
|
||||
- [AWS S3 + CloudFront →](/sv/self-hosting/aws#steg-2-bygg-och-ladda-upp) (se `aws s3 cp ... --include "*.mjs"`)
|
||||
- [Kubernetes →](/sv/self-hosting/kubernetes#mime-typfel-for-mjs-tom-iframe-i-signera-pdf-formularifyllare)
|
||||
- **Docker, Vercel, Netlify, Cloudflare Pages, Hostinger**: hanteras automatiskt, ingen åtgärd behövs.
|
||||
|
||||
**Verifiera**: öppna DevTools → fliken Network, hitta den misslyckade `.mjs`-begäran och kontrollera svarshuvudet `Content-Type`. Det ska vara `application/javascript`. Om det fortfarande är `application/octet-stream` kan en yttre omvänd proxy eller ett CDN avläsa typen på nytt: kontrollera varje lager i din leveranskedja.
|
||||
|
||||
## WASM-konfiguration (AGPL-komponenter)
|
||||
|
||||
BentoPDF **bundlar inte** AGPL-licensierade bearbetningsbibliotek i sin källkod, men **förkonfigurerar CDN-URL:er** så att alla funktioner fungerar direkt, utan manuell konfiguration.
|
||||
|
||||
::: tip Nollkonfiguration som standard
|
||||
Från och med v2.0.0 är WASM-modulerna förkonfigurerade att laddas från jsDelivr CDN via miljövariabler. Alla avancerade funktioner fungerar direkt utan någon konfiguration från användaren.
|
||||
:::
|
||||
|
||||
| Komponent | Licens | Funktioner |
|
||||
| --------------- | -------- | --------------------------------------------------------------------- |
|
||||
| **PyMuPDF** | AGPL-3.0 | EPUB/MOBI/FB2/XPS-konvertering, bildextrahering, tabellextrahering |
|
||||
| **Ghostscript** | AGPL-3.0 | PDF/A-konvertering, komprimering, rakning av snedskanning, rastrering |
|
||||
| **CoherentPDF** | AGPL-3.0 | Innehållsförteckning, bilagor, PDF-sammanslagning med bokmärken |
|
||||
|
||||
### Standardmiljövariabler
|
||||
|
||||
Dessa är satta i `.env.production` och inbakade i bygget:
|
||||
|
||||
```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=
|
||||
```
|
||||
|
||||
### Åsidosätta WASM-URL:er
|
||||
|
||||
Du kan åsidosätta standardvärdena vid bygget för anpassade distributioner:
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
För att inaktivera en modul helt (kräver manuell konfiguration av användaren i Avancerade inställningar) sätter du dess variabel till en tom sträng.
|
||||
|
||||
För OCR låter du antingen alla `VITE_TESSERACT_*`-variabler vara tomma och behåller de förvalda onlinetillgångarna, eller sätter URL:erna för worker, core och språkdata tillsammans för självhostad/offline OCR. Om du bara bundlar specifika OCR-språk sätter du också `VITE_TESSERACT_AVAILABLE_LANGUAGES` till samma kommaseparerade koder så att gränssnittet bara erbjuder installerade språk och ej stödda val ger ett beskrivande fel. För helt offline sökbar PDF-utdata sätter du också `VITE_OCR_FONT_BASE_URL` till den interna katalog som levererar de medföljande OCR-teckensnitten.
|
||||
|
||||
Användare kan också när som helst åsidosätta dessa standardvärden via **Avancerade inställningar** i gränssnittet: användarens åsidosättningar som lagras i webbläsaren har företräde framför miljövärdena.
|
||||
|
||||
### Distribution utan internet (air-gapped / offline)
|
||||
|
||||
För nätverk utan internetåtkomst (myndigheter, sjukvård, finans m.fl.). WASM-URL:erna bakas in i JavaScript vid **bygget**: själva WASM-filerna laddas ner av **användarens webbläsare** vid körning. Du behöver därför förbereda allt på en dator med internet och sedan överföra det till det isolerade nätverket.
|
||||
|
||||
#### Automatiskt skript (rekommenderas)
|
||||
|
||||
Det medföljande skriptet `prepare-airgap.sh` automatiserar hela processen: det laddar ner WASM-paketen, bygger Docker-avbildningen och skapar ett fristående paket med ett installationsskript.
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
Detta skapar en paketkatalog:
|
||||
|
||||
```
|
||||
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
|
||||
```
|
||||
|
||||
Överför paketet till det isolerade nätverket via USB, internt artefaktarkiv eller någon godkänd metod. Kör sedan det medföljande installationsskriptet:
|
||||
|
||||
```bash
|
||||
cd bentopdf-airgap-bundle
|
||||
bash setup.sh
|
||||
```
|
||||
|
||||
Installationsskriptet läser in Docker-avbildningen, packar upp WASM-filerna och startar på begäran containern.
|
||||
|
||||
**Skriptalternativ:**
|
||||
|
||||
| Flagga | Beskrivning | Standard |
|
||||
| ------------------------------ | ---------------------------------------------------------------- | ------------------------------------------- |
|
||||
| `--wasm-base-url <url>` | Var WASM-filerna hostas internt | _(obligatorisk, efterfrågas om den saknas)_ |
|
||||
| `--image-name <name>` | Docker-avbildningens tagg | `bentopdf` |
|
||||
| `--output-dir <path>` | Utdatakatalog för paketet | `./bentopdf-airgap-bundle` |
|
||||
| `--simple-mode` | Aktivera Simple Mode | av |
|
||||
| `--base-url <path>` | Bas-URL för underkatalog (t.ex. `/pdf/`) | `/` |
|
||||
| `--language <code>` | Standardspråk för gränssnittet (t.ex. `fr`, `de`) | _(ingen)_ |
|
||||
| `--brand-name <name>` | Eget varumärkesnamn | _(ingen)_ |
|
||||
| `--brand-logo <path>` | Logotypsökväg relativt `public/` | _(ingen)_ |
|
||||
| `--footer-text <text>` | Egen sidfotstext | _(ingen)_ |
|
||||
| `--ocr-languages <list>` | Kommaseparerade OCR-språk att bundla | `eng` |
|
||||
| `--list-ocr-languages` | Skriv ut stödda OCR-koder och namn, avsluta sedan | av |
|
||||
| `--search-ocr-language <term>` | Sök OCR-koder efter namn eller förkortning | av |
|
||||
| `--dockerfile <path>` | Dockerfile som ska användas | `Dockerfile` |
|
||||
| `--skip-docker` | Hoppa över Docker-bygge och export | av |
|
||||
| `--skip-wasm` | Hoppa över WASM-nedladdning (återanvänd befintliga `.tgz`-filer) | av |
|
||||
|
||||
Den interaktiva prompten accepterar också `list` för att skriva ut hela listan över stödda Tesseract-koder och `search <term>` för att hitta träffar som `search german` eller `search chi`.
|
||||
|
||||
::: warning Krav på samma ursprung
|
||||
WASM-filer måste levereras från **samma ursprung** som BentoPDF-appen. Web Workers använder `importScripts()`, som inte kan ladda skript mellan olika ursprung. Om BentoPDF till exempel körs på `https://internal.example.com` bör WASM-bas-URL:en också vara `https://internal.example.com/wasm`.
|
||||
:::
|
||||
|
||||
#### Manuella steg
|
||||
|
||||
<details>
|
||||
<summary>Om du föredrar att göra det manuellt utan skriptet</summary>
|
||||
|
||||
**Steg 1: Ladda ner WASM- och OCR-paketen** (på en dator med internet)
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
**Steg 2: Bygg Docker-avbildningen med interna URL:er**
|
||||
|
||||
```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 .
|
||||
```
|
||||
|
||||
**Steg 3: Exportera Docker-avbildningen**
|
||||
|
||||
```bash
|
||||
docker save bentopdf -o bentopdf.tar
|
||||
```
|
||||
|
||||
**Steg 4: Överför till det isolerade nätverket**
|
||||
|
||||
Kopiera via USB, internt artefaktarkiv eller annan godkänd överföringsmetod:
|
||||
|
||||
- `bentopdf.tar`: Docker-avbildningen
|
||||
- De fem `.tgz`-paketen för WASM/OCR från steg 1
|
||||
- Katalogen `tesseract-langdata/` från steg 1
|
||||
- Katalogen `ocr-fonts/` från steg 1
|
||||
|
||||
**Steg 5: Konfigurera inne i det isolerade nätverket**
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
Se till att filerna är åtkomliga på de URL:er som du konfigurerade i steg 2, inklusive `.../ocr/worker.min.js`, `.../ocr/core`, `.../ocr/lang-data` och `.../ocr/fonts`.
|
||||
|
||||
</details>
|
||||
|
||||
::: info Bygger du från källkod i stället för Docker?
|
||||
Sätt variablerna i `.env.production` innan du kör `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
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
### Hosta din egen WASM-proxy
|
||||
|
||||
Om du behöver leverera AGPL-WASM-filer med rätt CORS-huvuden kan du distribuera en enkel proxy. Se [guiden för Cloudflare WASM-proxy](https://github.com/alam00000/bentopdf/blob/main/cloudflare/WASM-PROXY.md) för ett exempel på implementation.
|
||||
|
||||
::: tip Varför separat?
|
||||
Denna separation säkerställer:
|
||||
|
||||
- Tydlig laglig efterlevnad för kommersiella användare
|
||||
- BentoPDF:s kärna förblir under sin dubbla licens (AGPL-3.0 / kommersiell)
|
||||
- WASM-filer laddas vid körning och bundlas inte i källkoden
|
||||
:::
|
||||
|
||||
## Systemkrav
|
||||
|
||||
| Krav | Minimum |
|
||||
| ------- | --------------------------------- |
|
||||
| Lagring | ~100 MB (kärna utan AGPL-moduler) |
|
||||
| RAM | 512 MB |
|
||||
| CPU | Valfri modern processor |
|
||||
|
||||
::: tip
|
||||
BentoPDF är en statisk webbplats, så ingen databas eller backend-server behövs!
|
||||
:::
|
||||
@@ -0,0 +1,211 @@
|
||||
# Distribuera med Kubernetes
|
||||
|
||||
Kubernetes kan vara överdrivet för en statisk webbplats, men det kan passa utmärkt om du redan standardiserar på Helm + GitOps.
|
||||
|
||||
> [!IMPORTANT]
|
||||
> **Obligatoriska huvuden för konvertering av Office-filer**
|
||||
>
|
||||
> LibreOffice-baserade verktyg (konvertering av Word, Excel, PowerPoint) kräver dessa HTTP-huvuden för stöd för `SharedArrayBuffer`:
|
||||
>
|
||||
> - `Cross-Origin-Opener-Policy: same-origin`
|
||||
> - `Cross-Origin-Embedder-Policy: require-corp`
|
||||
>
|
||||
> De officiella nginx-avbildningarna för BentoPDF innehåller dessa huvuden. I Kubernetes är **Ingress-/Gateway-kontrollerare också omvända proxyservrar**, så se till att huvudena bevaras (eller lägg till dem vid kanten).
|
||||
|
||||
## Förutsättningar
|
||||
|
||||
- Kubernetes-kluster
|
||||
- Helm v3
|
||||
- En nginx-avbildning för BentoPDF (t.ex. `ghcr.io/alam00000/bentopdf:<tag>`) som levererar på **port 8080**
|
||||
|
||||
## Distribuera med Helm
|
||||
|
||||
### Installera från det här repositoryt (lokalt chart)
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
### Installera från GHCR (OCI-chart)
|
||||
|
||||
Om chartet är publicerat på GHCR som en OCI-artefakt:
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
## Exponera tjänsten
|
||||
|
||||
### Port-forward (snabbtest)
|
||||
|
||||
```bash
|
||||
kubectl -n bentopdf port-forward deploy/bentopdf 8080:8080
|
||||
```
|
||||
|
||||
### Ingress (valfritt)
|
||||
|
||||
Aktivera Ingress (exempel för nginx-ingress):
|
||||
|
||||
```yaml
|
||||
ingress:
|
||||
enabled: true
|
||||
className: nginx
|
||||
hosts:
|
||||
- host: pdf.example.com
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
```
|
||||
|
||||
### Gateway API (valfritt)
|
||||
|
||||
Det här chartet stöder Gateway API `Gateway` + `HTTPRoute`.
|
||||
|
||||
Exempel (Cloudflare Gateway API operator):
|
||||
|
||||
```yaml
|
||||
gateway:
|
||||
enabled: true
|
||||
name: bento-tunnel
|
||||
namespace: bentopdf
|
||||
gatewayClassName: cloudflare
|
||||
|
||||
httpRoute:
|
||||
enabled: true
|
||||
parentRefs:
|
||||
- name: bento-tunnel
|
||||
namespace: bentopdf
|
||||
sectionName: http
|
||||
hostnames:
|
||||
- pdfs.example.com
|
||||
```
|
||||
|
||||
## Se till att SharedArrayBuffer-huvudena fortfarande fungerar (Ingress/Gateway)
|
||||
|
||||
### Vad som "borde" hända
|
||||
|
||||
BentoPDF:s nginx-konfiguration sätter de nödvändiga svarshuvudena. De flesta Ingress-/Gateway-kontrollerare **skickar vidare uppströmssvarens huvuden oförändrade**.
|
||||
|
||||
### Vad som kan gå sönder
|
||||
|
||||
- En kontrollerare eller kantpolicy som **skriver över** eller **tar bort** svarshuvuden
|
||||
- Ett mellanlager för "säkerhetshuvuden" som sätter andra COOP/COEP-värden
|
||||
|
||||
### Så verifierar du
|
||||
|
||||
Kör detta mot din publika slutpunkt:
|
||||
|
||||
```bash
|
||||
curl -I https://pdf.example.com/ | egrep -i 'cross-origin-opener-policy|cross-origin-embedder-policy'
|
||||
```
|
||||
|
||||
Du bör se:
|
||||
|
||||
- `Cross-Origin-Opener-Policy: same-origin`
|
||||
- `Cross-Origin-Embedder-Policy: require-corp`
|
||||
|
||||
### Om din Ingress-kontrollerare inte bevarar dem
|
||||
|
||||
Lägg till huvudena vid kanten (kontrollerarspecifikt). Exempel för **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-typfel för `.mjs` (tom iframe i Signera PDF / Formulärifyllare)
|
||||
|
||||
Om webbläsarkonsolen visar `Failed to load module script: ... non-JavaScript MIME type "application/octet-stream"` för en `.mjs`-begäran ersätter en Ingress-/Gateway-kontrollerare framför BentoPDF:s nginx huvudet `Content-Type` från uppströmsservern med `application/octet-stream`.
|
||||
|
||||
Nginx i BentoPDF-avbildningen levererar redan `.mjs` som `application/javascript`. Lösningen är att hindra kontrollern från att ta bort eller ersätta det. För nginx-ingress:
|
||||
|
||||
```yaml
|
||||
ingress:
|
||||
annotations:
|
||||
nginx.ingress.kubernetes.io/configuration-snippet: |
|
||||
location ~* \.mjs$ {
|
||||
types {} default_type application/javascript;
|
||||
}
|
||||
```
|
||||
|
||||
Eller använd ett `ResponseHeaderModifier`-filter i Gateway API för att sätta `Content-Type: application/javascript` för `.mjs`-sökvägar. Verifiera med DevTools → fliken Network: den misslyckade `.mjs`-begäran ska nu visa `content-type: application/javascript`.
|
||||
|
||||
### Om du använder Gateway API och vill tvinga fram huvuden
|
||||
|
||||
Gateway API stöder ett `ResponseHeaderModifier`-filter. Du kan koppla det i `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
|
||||
```
|
||||
|
||||
Stödet för specifika filter beror på din Gateway-kontrollerare. Om ett filter ignoreras lägger du till huvudena i kant- eller kontrollerarlagret i stället.
|
||||
|
||||
## Inaktivera specifika verktyg
|
||||
|
||||
Använd en ConfigMap för att inaktivera verktyg vid körning utan att bygga om avbildningen:
|
||||
|
||||
```yaml
|
||||
apiVersion: v1
|
||||
kind: ConfigMap
|
||||
metadata:
|
||||
name: bentopdf-config
|
||||
namespace: bentopdf
|
||||
data:
|
||||
config.json: |
|
||||
{
|
||||
"disabledTools": ["edit-pdf", "sign-pdf", "encrypt-pdf"]
|
||||
}
|
||||
```
|
||||
|
||||
Montera den i den levererade mappen:
|
||||
|
||||
```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
|
||||
```
|
||||
|
||||
Verktygs-ID:n är sidans URL utan `.html`: öppna ett verktyg och titta på URL:en (t.ex. `edit-pdf`, `merge-pdf`, `compress-pdf`). Inaktiverade verktyg döljs från startsidan, sökningen, genvägarna, arbetsflödesbyggaren och direkt URL-åtkomst. Se [Docker-guiden](/sv/self-hosting/docker#inaktivera-specifika-verktyg) för en fullständig lista över alternativ.
|
||||
@@ -0,0 +1,139 @@
|
||||
# Distribuera till Netlify
|
||||
|
||||
[Netlify](https://netlify.com) erbjuder utmärkt hosting av statiska webbplatser med en generös gratisnivå.
|
||||
|
||||
## Distribuera med ett klick
|
||||
|
||||
[](https://app.netlify.com/start/deploy?repository=https://github.com/alam00000/bentopdf)
|
||||
|
||||
## Manuell distribution
|
||||
|
||||
### Steg 1: Anslut repositoryt
|
||||
|
||||
1. Logga in på [Netlify](https://app.netlify.com)
|
||||
2. Klicka på "Add new site" → "Import an existing project"
|
||||
3. Anslut ditt GitHub-konto
|
||||
4. Välj din BentoPDF-fork
|
||||
|
||||
### Steg 2: Konfigurera bygginställningar
|
||||
|
||||
| Inställning | Värde |
|
||||
| ----------------- | --------------- |
|
||||
| Build command | `npm run build` |
|
||||
| Publish directory | `dist` |
|
||||
| Node version | 18+ |
|
||||
|
||||
### Steg 3: Distribuera
|
||||
|
||||
Klicka på "Deploy site" och vänta tills bygget är klart.
|
||||
|
||||
## Konfigurationsfil
|
||||
|
||||
Skapa `netlify.toml` i projektets rotmapp:
|
||||
|
||||
```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 Viktigt
|
||||
Huvudena `Cross-Origin-Embedder-Policy` och `Cross-Origin-Opener-Policy` krävs för konvertering av Word/ODT/Excel/PowerPoint till PDF. Utan dem är `SharedArrayBuffer` otillgängligt och LibreOffice WASM-motorn kan inte initieras.
|
||||
|
||||
Huvudena `Content-Encoding: gzip` på filerna `.wasm.gz` och `.data.gz` får webbläsaren att packa upp dem automatiskt. Utan dem får webbläsaren rå gzip-data och WASM-kompileringen misslyckas.
|
||||
:::
|
||||
|
||||
## Miljövariabler
|
||||
|
||||
Ange dessa under Site settings → Environment variables:
|
||||
|
||||
| Variabel | Beskrivning |
|
||||
| ----------------------- | ------------------------------------------------------------- |
|
||||
| `SIMPLE_MODE` | Sätt till `true` för ett minimalt bygge |
|
||||
| `VITE_BRAND_NAME` | Eget varumärkesnamn (ersätter "BentoPDF") |
|
||||
| `VITE_BRAND_LOGO` | Logotypsökväg relativt `public/` (t.ex. `images/my-logo.svg`) |
|
||||
| `VITE_FOOTER_TEXT` | Egen sidfots-/upphovsrättstext |
|
||||
| `VITE_DEFAULT_LANGUAGE` | Standardspråk för gränssnittet (t.ex. `fr`, `de`, `es`) |
|
||||
|
||||
## Egen domän
|
||||
|
||||
1. Gå till Site settings → Domain management
|
||||
2. Klicka på "Add custom domain"
|
||||
3. Följ anvisningarna för DNS-konfiguration
|
||||
|
||||
## Stora mediefiler
|
||||
|
||||
För stora WASM-filer kan du överväga att aktivera [Netlify Large Media](https://docs.netlify.com/large-media/overview/):
|
||||
|
||||
```bash
|
||||
netlify lm:setup
|
||||
git lfs track "*.wasm"
|
||||
```
|
||||
|
||||
## Felsökning
|
||||
|
||||
### Word/ODT/Excel till PDF fastnar på 55 %
|
||||
|
||||
Om dokumentkonverteringar hänger sig på 55 % öppnar du DevTools Console och kontrollerar:
|
||||
|
||||
```js
|
||||
console.log(window.crossOriginIsolated); // should be true
|
||||
console.log(typeof SharedArrayBuffer); // should be "function"
|
||||
```
|
||||
|
||||
Om `crossOriginIsolated` är `false` tillämpas inte COEP/COOP-huvudena från din `netlify.toml`. Se till att filen ligger i projektets rotmapp och distribuera om.
|
||||
|
||||
Om du ser `expected magic word 00 61 73 6d, found 1f 8b 08 08` i konsolen saknar filerna `.wasm.gz` huvudet `Content-Encoding: gzip`. Kontrollera att blocken `[[headers]]` för `soffice.wasm.gz` och `soffice.data.gz` finns i din `netlify.toml`.
|
||||
|
||||
### Bygget misslyckas
|
||||
|
||||
Kontrollera att Node-versionen är kompatibel:
|
||||
|
||||
```toml
|
||||
[build.environment]
|
||||
NODE_VERSION = "20"
|
||||
```
|
||||
|
||||
### Långsam första laddning
|
||||
|
||||
Aktivera tillgångsoptimering under Site settings → Build & deploy → Asset optimization.
|
||||
@@ -0,0 +1,232 @@
|
||||
# Distribuera med Nginx
|
||||
|
||||
Hosta BentoPDF på din egen server med Nginx.
|
||||
|
||||
## Förutsättningar
|
||||
|
||||
- Ubuntu/Debian-server
|
||||
- Nginx installerat
|
||||
- SSL-certifikat (rekommenderat: Let's Encrypt)
|
||||
|
||||
## Steg 1: Bygg projektet
|
||||
|
||||
```bash
|
||||
git clone https://github.com/alam00000/bentopdf.git
|
||||
cd bentopdf
|
||||
npm install
|
||||
npm run build
|
||||
```
|
||||
|
||||
För att anpassa varumärket sätter du miljövariabler före bygget:
|
||||
|
||||
```bash
|
||||
VITE_BRAND_NAME="AcmePDF" VITE_BRAND_LOGO="images/acme-logo.svg" npm run build
|
||||
```
|
||||
|
||||
## Steg 2: Kopiera filer
|
||||
|
||||
```bash
|
||||
sudo mkdir -p /var/www/bentopdf
|
||||
sudo cp -r dist/* /var/www/bentopdf/
|
||||
sudo chown -R www-data:www-data /var/www/bentopdf
|
||||
```
|
||||
|
||||
## Steg 3: Nginx-konfiguration
|
||||
|
||||
Skapa `/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;
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Steg 4: Aktivera webbplatsen
|
||||
|
||||
```bash
|
||||
sudo ln -s /etc/nginx/sites-available/bentopdf /etc/nginx/sites-enabled/
|
||||
sudo nginx -t
|
||||
sudo systemctl reload nginx
|
||||
```
|
||||
|
||||
## Steg 5: SSL med Let's Encrypt
|
||||
|
||||
```bash
|
||||
sudo apt install certbot python3-certbot-nginx
|
||||
sudo certbot --nginx -d your-domain.com
|
||||
```
|
||||
|
||||
## Distribution i en underkatalog
|
||||
|
||||
För att hosta på `/pdf/`:
|
||||
|
||||
```nginx
|
||||
location /pdf/ {
|
||||
alias /var/www/bentopdf/;
|
||||
try_files $uri $uri/ /pdf/index.html;
|
||||
}
|
||||
```
|
||||
|
||||
Bygg med:
|
||||
|
||||
```bash
|
||||
BASE_URL=/pdf/ npm run build
|
||||
```
|
||||
|
||||
## Prestandajustering
|
||||
|
||||
Lägg till i `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;
|
||||
}
|
||||
```
|
||||
|
||||
## Felsökning
|
||||
|
||||
### WASM laddas inte
|
||||
|
||||
Se till att MIME-typen är angiven:
|
||||
|
||||
```nginx
|
||||
types {
|
||||
application/wasm wasm;
|
||||
}
|
||||
```
|
||||
|
||||
### Signera PDF eller Formulärifyllare visar en tom läsare (MIME-fel för `.mjs`)
|
||||
|
||||
Om webbläsarkonsolen visar:
|
||||
|
||||
```
|
||||
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.
|
||||
```
|
||||
|
||||
…och den misslyckade begäran slutar på `.mjs` saknar din nginx mappningen `.mjs → application/javascript`. Den medföljande PDF-läsaren (som används av Signera PDF, Formulärifyllare och några andra verktyg) levereras med ES-modulfiler med filändelsen `.mjs`, och nginx standardfil `mime.types` innehåller dem inte som standard.
|
||||
|
||||
Åtgärda det genom att lägga till `mjs` på den befintliga raden `application/javascript` i `/etc/nginx/mime.types`:
|
||||
|
||||
```nginx
|
||||
application/javascript js mjs;
|
||||
```
|
||||
|
||||
> Lägg INTE till en _andra_ rad med `application/javascript`: nginx tolkar `mime.types` rad för rad och bara en mappning från typ till filändelse gäller, så en andra rad ignoreras tyst i vissa versioner. Redigera den befintliga raden så att `mjs` står bredvid `js`.
|
||||
|
||||
Eller åsidosätt lokalt i ditt serverblock (ingen global filändring):
|
||||
|
||||
```nginx
|
||||
types {
|
||||
application/javascript js mjs;
|
||||
application/wasm wasm;
|
||||
}
|
||||
```
|
||||
|
||||
Ladda om nginx efter ändringen:
|
||||
|
||||
```bash
|
||||
sudo nginx -t && sudo systemctl reload nginx
|
||||
```
|
||||
|
||||
För att bekräfta: leta i webbläsarens DevTools → fliken Network upp den misslyckade `.mjs`-begäran och kontrollera svarshuvudet `Content-Type`. Det ska nu vara `application/javascript`, inte `application/octet-stream`.
|
||||
|
||||
### Word/ODT/Excel till PDF fungerar inte
|
||||
|
||||
LibreOffice WASM kräver `SharedArrayBuffer`, som kräver huvudena `Cross-Origin-Embedder-Policy` och `Cross-Origin-Opener-Policy`. Det kräver också en säker kontext, så `http://localhost` fungerar för lokal testning men `http://192.168.x.x` eller andra LAN-adresser kräver oftast HTTPS. Observera att nginx-direktiv av typen `add_header` i ett `location`-block **åsidosätter** `add_header`-direktiv på servernivå: de slås inte ihop. Varje `location`-block med egna `add_header` måste innehålla COEP/COOP-huvudena.
|
||||
|
||||
Verifiera med:
|
||||
|
||||
```bash
|
||||
curl -I https://your-domain.com/ | grep -i cross-origin
|
||||
```
|
||||
|
||||
Om du använder en omvänd proxy framför nginx ser du till att den bevarar dessa huvuden.
|
||||
|
||||
### 502 Bad Gateway
|
||||
|
||||
Kontrollera Nginx felloggar:
|
||||
|
||||
```bash
|
||||
sudo tail -f /var/log/nginx/error.log
|
||||
```
|
||||
@@ -0,0 +1,122 @@
|
||||
# Distribuera till Vercel
|
||||
|
||||
[Vercel](https://vercel.com) erbjuder den enklaste distributionsupplevelsen för statiska webbplatser.
|
||||
|
||||
## Distribuera med ett klick
|
||||
|
||||
[](https://vercel.com/new/clone?repository-url=https://github.com/alam00000/bentopdf)
|
||||
|
||||
## Manuell distribution
|
||||
|
||||
### Steg 1: Forka repositoryt
|
||||
|
||||
Forka [bentopdf/bentopdf](https://github.com/alam00000/bentopdf) till ditt GitHub-konto.
|
||||
|
||||
### Steg 2: Importera till Vercel
|
||||
|
||||
1. Gå till [vercel.com/new](https://vercel.com/new)
|
||||
2. Välj ditt forkade repository
|
||||
3. Konfigurera projektet:
|
||||
|
||||
| Inställning | Värde |
|
||||
| ---------------- | --------------- |
|
||||
| Framework Preset | Vite |
|
||||
| Build Command | `npm run build` |
|
||||
| Output Directory | `dist` |
|
||||
| Install Command | `npm install` |
|
||||
|
||||
### Steg 3: Miljövariabler (valfritt)
|
||||
|
||||
Lägg till dessa vid behov:
|
||||
|
||||
| Variabel | Beskrivning |
|
||||
| ----------------------- | ------------------------------------------------------------- |
|
||||
| `SIMPLE_MODE` | Sätt till `true` för minimalt gränssnitt |
|
||||
| `VITE_BRAND_NAME` | Eget varumärkesnamn (ersätter "BentoPDF") |
|
||||
| `VITE_BRAND_LOGO` | Logotypsökväg relativt `public/` (t.ex. `images/my-logo.svg`) |
|
||||
| `VITE_FOOTER_TEXT` | Egen sidfots-/upphovsrättstext |
|
||||
| `VITE_DEFAULT_LANGUAGE` | Standardspråk för gränssnittet (t.ex. `fr`, `de`, `es`) |
|
||||
|
||||
### Steg 4: Distribuera
|
||||
|
||||
Klicka på "Deploy" och vänta tills bygget är klart.
|
||||
|
||||
## Egen domän
|
||||
|
||||
1. Gå till projektinställningarna
|
||||
2. Navigera till "Domains"
|
||||
3. Lägg till din egen domän
|
||||
4. Konfigurera DNS enligt anvisningarna
|
||||
|
||||
## Begränsningar
|
||||
|
||||
::: warning Stora filer
|
||||
Vercels serverlösa funktioner har en gräns på 50 MB. Eftersom BentoPDF är en statisk webbplats ska detta inte påverka dig, men WASM-modulerna är stora (cirka 100 MB totalt). Se till att de levereras från mappen `/public`.
|
||||
:::
|
||||
|
||||
## Felsökning
|
||||
|
||||
### Tidsgräns för bygget överskrids
|
||||
|
||||
Om bygget överskrider tidsgränsen, prova:
|
||||
|
||||
```json
|
||||
// vercel.json
|
||||
{
|
||||
"buildCommand": "npm run build",
|
||||
"outputDirectory": "dist"
|
||||
}
|
||||
```
|
||||
|
||||
### 404 vid omladdning
|
||||
|
||||
Lägg till en `vercel.json` för SPA-routing:
|
||||
|
||||
```json
|
||||
{
|
||||
"rewrites": [{ "source": "/(.*)", "destination": "/index.html" }]
|
||||
}
|
||||
```
|
||||
|
||||
### Word/ODT/Excel till PDF fungerar inte
|
||||
|
||||
LibreOffice WASM-konverteringar kräver `SharedArrayBuffer`, som kräver dessa svarshuvuden på alla sidor:
|
||||
|
||||
- `Cross-Origin-Embedder-Policy: require-corp`
|
||||
- `Cross-Origin-Opener-Policy: same-origin`
|
||||
|
||||
De förkomprimerade filerna `.wasm.gz` och `.data.gz` behöver också `Content-Encoding: gzip` så att webbläsaren packar upp dem.
|
||||
|
||||
Lägg till dessa i din `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" }
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
För att verifiera öppnar du DevTools Console och kör `console.log(window.crossOriginIsolated)`. Det ska returnera `true`.
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
title: Lägg till bilagor
|
||||
description: Bädda in filer av valfri typ i en PDF på dokumentnivå eller kopplade till specifika sidor.
|
||||
---
|
||||
|
||||
# Lägg till bilagor
|
||||
|
||||
Bädda in en eller flera filer direkt i ett PDF-dokument. Bilagor kan läggas till på dokumentnivå (synliga i bilagepanelen i alla PDF-läsare) eller kopplas till specifika sidor.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp PDF-filen som du vill bifoga filer till.
|
||||
2. Använd bilageytan för att välja de filer du vill bädda in (valfri filtyp).
|
||||
3. Välj bilagenivå: **Dokument** (standard) eller **Sida**.
|
||||
4. Om du väljer sidnivå anger du ett sidintervall (t.ex. `1-3` eller `5`).
|
||||
5. Klicka på bearbetningsknappen. Den ändrade PDF-filen laddas ner med dina filer inbäddade.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Bifoga valfri filtyp: bilder, kalkylblad, arkiv, körbara filer, vad som helst
|
||||
- Placering av bilagor på dokumentnivå eller sidnivå
|
||||
- Flera filer kan bifogas i en och samma åtgärd
|
||||
- Visar filnamn och storlek för alla valda bilagor
|
||||
- Resultatet behåller det ursprungliga PDF-innehållet med de inbäddade filerna tillagda
|
||||
|
||||
## Alternativ
|
||||
|
||||
| Alternativ | Beskrivning |
|
||||
| ---------------- | --------------------------------------------------------------------- |
|
||||
| **Dokumentnivå** | Bifogar filer till PDF-filen som helhet, åtkomliga från bilagepanelen |
|
||||
| **Sidnivå** | Bifogar filer till specifika sidor, angivna med ett sidintervall |
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Samla underlagsdata (Excel-filer, CSV) tillsammans med en PDF-rapport
|
||||
- Bifoga originalbilder till en PDF med ett fotoportfolio
|
||||
- Bädda in stödjande dokument i ett avtal eller ett förslag
|
||||
- Lägga till kompletterande material på specifika sidor i en utbildningsmanual
|
||||
|
||||
## Tips
|
||||
|
||||
- Bilagor på dokumentnivå stöds bredast i PDF-läsare. Bilagor på sidnivå kanske inte syns i alla läsare.
|
||||
- Det finns ingen storleksgräns för bilagor, men mycket stora inbäddade filer ökar PDF-filens storlek i motsvarande grad.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Extrahera bilagor](./extract-attachments)
|
||||
- [Redigera bilagor](./edit-attachments)
|
||||
- [Slå ihop PDF](./merge-pdf)
|
||||
@@ -0,0 +1,40 @@
|
||||
---
|
||||
title: Lägg till tom sida
|
||||
description: Infoga en eller flera tomma sidor på valfri position i ett PDF-dokument.
|
||||
---
|
||||
|
||||
# Lägg till tom sida
|
||||
|
||||
Infoga tomma sidor i en PDF på en position som du anger. Du styr var de tomma sidorna hamnar och hur många som läggs till.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en PDF-fil. Verktyget visar antalet sidor.
|
||||
2. Ange **positionen** där de tomma sidorna ska infogas. Använd `0` för att infoga allra först, eller det totala antalet sidor för att lägga till i slutet.
|
||||
3. Ange **antalet** tomma sidor som ska läggas till (standard är 1).
|
||||
4. Klicka på bearbetningsknappen. Den ändrade PDF-filen laddas ner med de tomma sidorna infogade.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Infoga på valfri position: i början, mitten eller slutet av dokumentet
|
||||
- Lägg till flera tomma sidor i en och samma åtgärd
|
||||
- Positionstipset uppdateras dynamiskt utifrån antalet sidor i den uppladdade PDF-filen
|
||||
- Tomma sidor i standardformatet A4
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Lägga till en tom avskiljande sida mellan avsnitt i ett sammanställt dokument
|
||||
- Infoga tomma sidor för att få rätt placering vid dubbelsidig utskrift
|
||||
- Lämna plats för handskrivna anteckningar i en utskriven studiehandledning
|
||||
- Fylla ut ett dokument så att det når ett minsta antal sidor
|
||||
|
||||
## Tips
|
||||
|
||||
- Position `0` infogar före första sidan. En position som är lika med det totala antalet sidor lägger till efter sista sidan.
|
||||
- Om du behöver infoga innehåll (inte bara tomma sidor) på en viss position kan du använda [PDF-multiverktyg](./pdf-multi-tool) för att infoga en annan PDF efter en angiven sida.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Organisera och duplicera](./organize-pdf)
|
||||
- [PDF-multiverktyg](./pdf-multi-tool)
|
||||
- [Slå ihop PDF](./merge-pdf)
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
title: Lägg till sidetiketter
|
||||
description: Lägg till PDF-sidetiketter med romerska siffror, bokstavsprefix, anpassad numrering och flera regler per dokument.
|
||||
---
|
||||
|
||||
# Lägg till sidetiketter
|
||||
|
||||
Sidetiketter styr hur sidnummer visas i PDF-läsare (numret som visas i verktygsfältet, inte det som är tryckt på sidan). Med det här verktyget kan du ge olika sidintervall olika etikettscheman: romerska siffror för inledande sidor, vanliga tal för huvuddelen, bokstavsmärkta bilagor och mer.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp din PDF-fil.
|
||||
2. Alternativpanelen visas med en etikettregel som standard.
|
||||
3. Konfigurera varje regel med sidintervall, stil, valfritt prefix och startvärde.
|
||||
4. Klicka på **Lägg till regel** för att skapa fler regler för olika avsnitt.
|
||||
5. Klicka på **Lägg till sidetiketter** för att tillämpa alla regler och ladda ner resultatet.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Varje etikettregel har följande inställningar:
|
||||
|
||||
- **Sidintervall**: Vilka sidor regeln gäller för. Lämna tomt för alla sidor. Stöder intervall som `1-4`, `7`, `odd` eller `1-9,30-40`.
|
||||
- **Etikettstil**: Decimala arabiska siffror, små romerska siffror (i, ii, iii), stora romerska siffror (I, II, III), små bokstäver (a, b, c), stora bokstäver (A, B, C) eller ingen etikett (endast prefix).
|
||||
- **Etikettprefix**: Valfri text som läggs framför varje etikett, till exempel "A-" för att skapa etiketter som A-1, A-2, A-3.
|
||||
- **Startvärde**: Talet som räkningen börjar på. Standard är 1. Ange 0 för nollbaserad numrering.
|
||||
- **Fortsätt numreringen över åtskilda intervall**: Aktivera detta när en regel gäller sidor som inte följer på varandra (som `1-9,30-40` eller `odd`) och du vill att numreringen ska fortsätta i följd.
|
||||
- **Ta bort befintliga sidetiketter**: Markerat som standard. Rensar tidigare etiketter innan dina nya regler tillämpas.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Flera etikettregler per dokument för komplexa numreringsscheman
|
||||
- Sex etikettstilar som täcker alla vanliga numreringssystem
|
||||
- Stöd för egna prefix för avsnittsbaserad märkning
|
||||
- Stöd för åtskilda intervall med löpande numrering
|
||||
- Möjlighet att behålla eller ta bort befintliga etiketter
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Ange etiketter med romerska siffror (i, ii, iii) för en boks förord och decimala etiketter för huvudtexten
|
||||
- Märka bilagesidor med bokstavsprefix som "A-1", "A-2", "B-1", "B-2"
|
||||
- Rätta sidetiketter i ett skannat dokument där de fysiska sidnumren inte stämmer med PDF-ordningen
|
||||
- Lägga till nollbaserad numrering för tekniska dokument
|
||||
|
||||
## Tips
|
||||
|
||||
- Sidetiketter är metadata som PDF-läsare visar i sitt navigeringsfält. De skrivs inte ut på själva sidan. För synliga nummer använder du [Sidnummer](./page-numbers).
|
||||
- Det här verktyget kräver att CoherentPDF (CPDF) är konfigurerat i dina WASM-inställningar. Om det inte är konfigurerat uppmanas du att göra det.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Sidnummer](./page-numbers)
|
||||
- [Bates-numrering](./bates-numbering)
|
||||
- [Redigera bokmärken](./bookmark)
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
title: Lägg till stämplar
|
||||
description: Lägg till bildstämplar på dina PDF-sidor med ett integrerat anteckningsverktygsfält och användarnamn som avsändare.
|
||||
---
|
||||
|
||||
# Lägg till stämplar
|
||||
|
||||
Placera bildstämplar på dina PDF-sidor med en inbäddad läsare och ett verktygsfält för stämpelanteckningar. Stämplar kan innehålla ditt namn som avsändare, vilket är praktiskt för godkännandeflöden, granskningsprocesser och märkning av dokument.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ange ditt namn i fältet **Stämpelns användarnamn**. Namnet visas på stämplar som du skapar.
|
||||
2. Ladda upp din PDF-fil genom att klicka eller dra den till släppytan.
|
||||
3. Stämpelredigeraren öppnas med ditt dokument inläst i en läsare.
|
||||
4. Använd verktygsfältets bildstämpelverktyg för att välja och placera stämplar på valfri sida.
|
||||
5. Placera och ändra storlek på stämplarna efter behov.
|
||||
6. Klicka på **Spara stämplad PDF** för att ladda ner resultatet.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Integrerad PDF-läsare med ett stämpelspecifikt verktygsfält för anteckningar
|
||||
- Användarnamn som avsändare på skapade stämplar
|
||||
- Placering av bildstämplar på valfri sida
|
||||
- Positionering och storleksändring med dra och släpp
|
||||
- Automatisk anpassning av läsarens storlek efter sidans proportioner
|
||||
- Filvisning med namn och storlek
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Lägga till bildstämplarna "GODKÄND" eller "GRANSKAD" på dokument i ett granskningsflöde
|
||||
- Placera bilder av företagsstämplar eller notariestämplar på officiella dokument
|
||||
- Märka sidor med stämplar som "MOTTAGEN" inklusive granskarens namn
|
||||
- Lägga till kvalitetskontrollstämplar på inspektionsrapporter
|
||||
|
||||
## Tips
|
||||
|
||||
- Ange stämpelns användarnamn innan du laddar upp PDF-filen. Användarnamnet bäddas in i stämpelns metadata.
|
||||
- Läsaren justerar sin höjd efter förstasidans proportioner för bästa visning.
|
||||
- För textbaserade vattenstämplar i stället för bildstämplar använder du verktyget [Lägg till vattenstämpel](./add-watermark).
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Signera PDF](./sign-pdf)
|
||||
- [Lägg till vattenstämpel](./add-watermark)
|
||||
- [PDF-redigerare](./edit-pdf)
|
||||
@@ -0,0 +1,79 @@
|
||||
---
|
||||
title: Lägg till vattenstämpel
|
||||
description: Lägg text- eller bildvattenstämplar på PDF-sidor med en visuell dra och släpp-redigerare och liveförhandsvisning.
|
||||
---
|
||||
|
||||
# Lägg till vattenstämpel
|
||||
|
||||
Lägg till text- eller bildvattenstämplar på dina PDF-sidor med en visuell redigerare. Du kan placera vattenstämpeln genom att dra den direkt i förhandsvisningen, ändra storlek med hörnhandtagen och ställa in opacitet, rotation, teckensnitt och färg. Varje sida kan ha sin egen vattenstämpelposition, eller så kan du tillämpa samma vattenstämpel på alla sidor på en gång.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp din PDF-fil.
|
||||
2. Redigeraren öppnas med en liveförhandsvisning av första sidan och en flyttbar vattenstämpel.
|
||||
3. Välj mellan läget **Text** eller **Bild** med växlingsknapparna.
|
||||
4. Konfigurera vattenstämpelns inställningar i sidopanelen.
|
||||
5. Dra vattenstämpeln i förhandsvisningen till exakt rätt plats. Använd hörnhandtagen för att ändra storlek.
|
||||
6. Bläddra mellan sidorna för att ställa in vattenstämplar per sida, eller låt **Tillämpa på alla sidor** vara markerat.
|
||||
7. Klicka på **Lägg till vattenstämpel** för att bearbeta och ladda ner.
|
||||
|
||||
## Alternativ
|
||||
|
||||
**Inställningar för textvattenstämpel:**
|
||||
|
||||
- **Text**: Vattenstämpelns text (t.ex. "KONFIDENTIELLT", "UTKAST").
|
||||
- **Teckenstorlek**: Från 10 till 200 punkter. Standard är 72.
|
||||
- **Färg**: Valfri färg via färgväljaren.
|
||||
- **Opacitet**: Styr genomskinligheten från helt genomskinlig till helt ogenomskinlig.
|
||||
- **Rotation**: Rotera vattenstämpelns text från -180 till 180 grader.
|
||||
|
||||
**Inställningar för bildvattenstämpel:**
|
||||
|
||||
- **Bilduppladdning**: Ladda upp en PNG-, JPG- eller annan bildfil som ska användas som vattenstämpel.
|
||||
- **Opacitet**: Styr bildens genomskinlighet.
|
||||
- **Skala**: Ändra storlek på bildvattenstämpeln.
|
||||
|
||||
**Layoutinställningar:**
|
||||
|
||||
- **Enkel**: En vattenstämpel per sida, placerad genom att dra den eller med positionsförinställningarna.
|
||||
- **Plattad**: Upprepar vattenstämpeln över hela sidan i ett diagonalt rutnät som följer rotationsvinkeln, så att märket täcker dokumentet från kant till kant.
|
||||
- **Horisontellt avstånd**: Avståndet mellan brickor längs textriktningen, som en procentandel av vattenstämpelns bredd (endast i plattat läge).
|
||||
- **Vertikalt avstånd**: Avståndet mellan brickrader, som en procentandel av vattenstämpelns höjd (endast i plattat läge).
|
||||
|
||||
**Allmänna inställningar:**
|
||||
|
||||
- **Tillämpa på alla sidor**: När det är markerat gäller samma vattenstämpel för varje sida. Avmarkera för att ställa in enskilda vattenstämplar per sida.
|
||||
- **Sidintervall**: Ange vilka sidor som får vattenstämpeln (t.ex. "1-3, 5, 7-9" eller "all").
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Visuell positionering med dra och släpp på en PDF-liveförhandsvisning
|
||||
- Vattenstämpel som går att skala med hörnhandtag
|
||||
- Lägen för text- och bildvattenstämplar
|
||||
- Enkel eller plattad (upprepad) layout över hela sidan med justerbart avstånd
|
||||
- Vattenstämpel per sida eller global
|
||||
- Sida för sida-navigering i förhandsvisningen
|
||||
- Reglage för opacitet och rotation
|
||||
- Filtrering på sidintervall
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Märka utkast med "UTKAST" innan de skickas ut för granskning
|
||||
- Lägga till vattenstämplar med "KONFIDENTIELLT" på känsliga ekonomiska rapporter
|
||||
- Profilera dokument med en vattenstämpel i form av en företagslogotyp
|
||||
- Stämpla "EXEMPEL" på produktdokumentation som delas med potentiella kunder
|
||||
- Lägga till upphovsrättsmeddelanden på distribuerat PDF-material
|
||||
|
||||
## Tips
|
||||
|
||||
- För diagonala vattenstämplar över sidan ställer du in en rotation på omkring 45 grader och ökar teckenstorleken.
|
||||
- Plattat läge gör ett dokument mycket svårare att återanvända efter beskärning, eftersom dussintals märken finns kvar även om ett tas bort. Sänk opaciteten när du använder plattat läge så att texten under förblir läsbar.
|
||||
- Bildvattenstämplar med genomskinlig bakgrund (PNG-format) smälter in bättre i dokumentets innehåll.
|
||||
- Om du vill ha olika vattenstämpeltext på olika sidor avmarkerar du "Tillämpa på alla sidor" och bläddrar sida för sida.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Sidhuvud och sidfot](./header-footer)
|
||||
- [Lägg till stämplar](./add-stamps)
|
||||
- [Bates-numrering](./bates-numbering)
|
||||
- [Signera PDF](./sign-pdf)
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
title: Justera färger
|
||||
description: Finjustera ljusstyrka, kontrast, mättnad, nyans, temperatur, färgton, gamma och sepia i din PDF.
|
||||
---
|
||||
|
||||
# Justera färger
|
||||
|
||||
Ett komplett verktyg för färgkorrigering av PDF-filer. Justera åtta oberoende parametrar (ljusstyrka, kontrast, mättnad, nyansförskjutning, temperatur, färgton, gamma och sepia) med en liveförhandsvisning som uppdateras när du flyttar varje reglage.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp din PDF-fil.
|
||||
2. Redigeraren öppnas med en förhandsvisning av första sidan och en panel för färginställningar.
|
||||
3. Flytta reglagen för att justera varje färgparameter. Förhandsvisningen uppdateras i realtid.
|
||||
4. Klicka på **Återställ** för att sätta alla reglage tillbaka till standardlägena.
|
||||
5. Klicka på **Tillämpa** för att bearbeta alla sidor och ladda ner den justerade PDF-filen.
|
||||
|
||||
## Alternativ
|
||||
|
||||
- **Ljusstyrka**: Gör hela sidan ljusare eller mörkare (-100 till +100).
|
||||
- **Kontrast**: Ökar eller minskar skillnaden mellan ljusa och mörka partier (-100 till +100).
|
||||
- **Mättnad**: Förstärker eller minskar färgintensiteten (-100 till +100). Vid -100 blir resultatet gråskala.
|
||||
- **Nyansförskjutning**: Roterar färghjulet för att förskjuta alla färger lika mycket.
|
||||
- **Temperatur**: Förskjuter färgerna mot varmare (gult/orange) eller kallare (blått).
|
||||
- **Färgton**: Lägger till en grön eller magenta färgstick.
|
||||
- **Gamma**: Justerar mellantonernas ljusstyrka med en gammakurva. Värden under 1,0 mörkar mellantoner, värden över 1,0 gör dem ljusare.
|
||||
- **Sepia**: Tillämpar en klassisk sepiaeffekt. Högre värden ger en starkare brun ton.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Åtta oberoende justerbara färgparametrar
|
||||
- Liveförhandsvisning som reagerar direkt på reglagen
|
||||
- Återställningsknapp för att snabbt gå tillbaka till standardvärdena
|
||||
- Bearbetar alla sidor i dokumentet
|
||||
- Fungerar med allt PDF-innehåll (text, bilder, grafik)
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Göra en mörk skanning ljusare eller korrigera överexponerade sidor
|
||||
- Minska mättnaden i ett färgglatt dokument för att spara bläck före utskrift
|
||||
- Lägga på en sepiaton för att ge intyg eller utmärkelser ett antikt utseende
|
||||
- Korrigera färgtemperaturen på foton som är inbäddade i en PDF
|
||||
- Öka kontrasten i bleka eller lågkvalitativa skannade dokument
|
||||
|
||||
## Tips
|
||||
|
||||
- För en snabb gråskaleomvandling drar du mättnadsreglaget hela vägen till -100.
|
||||
- Gammareglaget är särskilt användbart för att förbättra läsbarheten i skannade dokument där mellantonerna är för mörka eller för ljusa.
|
||||
- Precis som de andra bildeffektverktygen rastrerar det här verktyget varje sida. Resultatet blir bildbaserat, så texten går inte att markera.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Invertera färger](./invert-colors)
|
||||
- [Skannereffekt](./scanner-effect)
|
||||
- [Bakgrundsfärg](./background-color)
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: Alternera & blanda sidor
|
||||
description: Slå ihop PDF-filer genom att varva sidor från varje fil i växlande ordning, med bevarade bokmärken.
|
||||
---
|
||||
|
||||
# Alternera & blanda sidor
|
||||
|
||||
Varva sidor från flera PDF-filer så att sidorna växlar mellan dokumenten. Det här är verktyget du behöver när en vanlig sammanslagning bara skulle lägga filerna efter varandra, men du vill ha sida 1 från fil A, sedan sida 1 från fil B, sedan sida 2 från fil A och så vidare.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp minst två PDF-filer via släppytan.
|
||||
2. Verktyget visar varje fil med sidantal och filstorlek.
|
||||
3. Dra i greppen för att ändra vilken fils sidor som kommer först i växlingsordningen.
|
||||
4. Klicka på **Blanda sidor** för att skapa det varvade resultatet.
|
||||
5. Resultatet laddas ner som `alternated-mixed.pdf`.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Varvar sidor över valfritt antal PDF-filer (minst två)
|
||||
- Ändra filernas ordning med dra och släpp för att styra växlingsprioriteten
|
||||
- Bevarar bokmärken från källdokumenten
|
||||
- Visar sidantal och filstorlek för varje uppladdad fil
|
||||
- Bearbetar i en dedikerad webbarbetare för ett responsivt gränssnitt
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Sätta ihop dubbelsidiga skanningar där udda och jämna sidor skannades separat
|
||||
- Kombinera frågeblad med facit så att varje fråga följs av sitt svar
|
||||
- Slå ihop tvåspråkiga dokument sida för sida (t.ex. engelska på ena sidan och översättningen på nästa)
|
||||
- Varva fram- och baksidor från en enkelsidig skanner
|
||||
|
||||
## Tips
|
||||
|
||||
- Om dina käll-PDF-filer har olika antal sidor tar sidorna i det kortare dokumentet slut först, och de återstående sidorna från det längre dokumentet hamnar sist.
|
||||
- Filernas ordning spelar roll: den första filen i listan bidrar med resultatets första sida. Dra för att ordna om vid behov.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Slå ihop PDF](./merge-pdf)
|
||||
- [Organisera och duplicera](./organize-pdf)
|
||||
- [Dela PDF](./split-pdf)
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
title: Bakgrundsfärg
|
||||
description: Ändra bakgrundsfärgen på varje sida i din PDF och behåll allt innehåll ovanpå.
|
||||
---
|
||||
|
||||
# Bakgrundsfärg
|
||||
|
||||
Ange en enfärgad bakgrund bakom allt befintligt innehåll i din PDF. Verktyget skapar en färgad rektangel på varje sida och lägger det ursprungliga innehållet ovanpå, så att text, bilder och grafik förblir fullt synliga mot den nya bakgrunden.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp din PDF-fil.
|
||||
2. Välj en bakgrundsfärg med färgväljaren. Standard är en ljusgul färg (#FFFFCC).
|
||||
3. Klicka på **Ändra bakgrundsfärg** för att bearbeta.
|
||||
4. Den uppdaterade PDF-filen laddas ner automatiskt.
|
||||
|
||||
## Alternativ
|
||||
|
||||
- **Bakgrundsfärg**: En vanlig färgväljare för att välja valfri enfärgad ton. Standard är ljusgul.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Tillämpar en enhetlig bakgrundsfärg på varje sida
|
||||
- Bevarar allt originalinnehåll (text, bilder, vektorgrafik) ovanpå det färgade lagret
|
||||
- Behåller de ursprungliga sidmåtten
|
||||
- Fungerar med dokument med valfritt antal sidor
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Lägga till en ljus kräm- eller elfenbensfärgad bakgrund för att ge dokument ett mjukare, papperslikt utseende
|
||||
- Färgkoda dokumentuppsättningar genom att ge olika kategorier olika bakgrundsfärger
|
||||
- Skapa visuellt åtskilda versioner av samma dokument för olika målgrupper
|
||||
- Lägga till en ljus bakgrundston för bättre läsbarhet när dokument visas på skärm
|
||||
|
||||
## Tips
|
||||
|
||||
- Ljusa, dämpade färger fungerar bäst. En mycket mörk bakgrund kan göra texten svårläst om inte texten redan är ljus.
|
||||
- Om du vill ändra både bakgrunds- och textfärg tillämpar du först bakgrundsfärgen och använder sedan [Ändra textfärg](./text-color) på resultatet.
|
||||
- Det här verktyget arbetar på PDF-ets strukturella nivå (inte genom rastrering), så texten förblir markerbar och sökbar i resultatet.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Ändra textfärg](./text-color)
|
||||
- [Invertera färger](./invert-colors)
|
||||
- [Justera färger](./adjust-colors)
|
||||
@@ -0,0 +1,62 @@
|
||||
---
|
||||
title: Bates-numrering
|
||||
description: Tillämpa Bates-nummer på en eller flera PDF-filer med anpassningsbara mallar, nollutfyllnad, teckensnitt och placering.
|
||||
---
|
||||
|
||||
# Bates-numrering
|
||||
|
||||
Bates-numrering stämplar löpande identifierare på varje sida i dina PDF-filer. Det är standardmetoden för att märka dokument i rättsliga processer, revisioner och efterlevnadsarbete. Verktyget stöder flera filer och anpassningsbara mallar, och ger antingen individuellt numrerade PDF-filer eller ett enda ZIP-arkiv.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en eller flera PDF-filer. Du kan dra flera filer samtidigt.
|
||||
2. Välj en stilförinställning eller skapa en egen mall.
|
||||
3. Konfigurera position, teckensnitt, storlek, färg och startnummer.
|
||||
4. Klicka på **Tillämpa Bates-nummer** för att bearbeta.
|
||||
5. En enskild fil laddas ner direkt. Flera filer laddas ner som ett ZIP-arkiv.
|
||||
|
||||
## Alternativ
|
||||
|
||||
- **Stilförinställning**: Välj bland inbyggda format:
|
||||
- Exhibit + Case + Bates + Page (t.ex. "Exhibit 1 Case XYZ 000001 Page 1")
|
||||
- Exhibit + Case + Bates (utan sidnummer)
|
||||
- Case + Bates
|
||||
- Endast Bates-nummer (t.ex. "000001")
|
||||
- Anpassad (skriv din egen mall)
|
||||
- **Anpassa stil**: En mallsträng med platshållare: `[BATES]`, `[PAGE]`, `[FILE]`, `[FILENAME]`.
|
||||
- **Bates-utfyllnad**: Antal siffror (3 till 6) för Bates-nummer med inledande nollor. Visas bara i anpassat läge.
|
||||
- **Position**: Sidhuvud eller sidfot, vänster, mitten eller höger.
|
||||
- **Bates börjar från**: Det första Bates-numret. Standard är 1. Numreringen fortsätter över filerna.
|
||||
- **Filräknaren börjar från**: Startnumret för platshållaren `[FILE]`.
|
||||
- **Teckensnitt**: Helvetica, Times New Roman eller Courier.
|
||||
- **Teckenstorlek**: Storleken på den stämplade texten.
|
||||
- **Färg**: Färgväljare för texten i Bates-numret.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Liveförhandsvisning som visar hur Bates-numren ser ut över alla uppladdade filer
|
||||
- Stöd för flera filer med sammanhängande numrering över dokumenten
|
||||
- Ändra filernas ordning med dra och släpp för att styra numreringsföljden
|
||||
- Sex positionsalternativ (sidhuvud/sidfot, vänster/mitten/höger)
|
||||
- Adaptiv marginalberäkning som tar hänsyn till olika sidstorlekar
|
||||
- ZIP-utdata för batcher med flera filer
|
||||
- Mallplatshållare för maximal flexibilitet
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Stämpla bevisdokument inför rättegång med löpande exhibit-nummer
|
||||
- Numrera revisionsunderlag som omfattar dussintals filer
|
||||
- Tillämpa myndighetsreferensnummer på efterlevnadsdokumentation
|
||||
- Märka bilagor till patentansökningar med ärendespecifika identifierare
|
||||
|
||||
## Tips
|
||||
|
||||
- Dra filerna i fillistan för att ändra ordning innan du bearbetar. Bates-numreringen följer denna ordning.
|
||||
- Använd platshållaren `[FILENAME]` för att ta med det ursprungliga filnamnet i stämpeln, vilket gör det lättare att spåra sidor tillbaka till källdokumenten.
|
||||
- Förhandsvisningsrutan uppdateras i realtid när du ändrar inställningar, så du kan kontrollera formatet innan du bearbetar.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Sidnummer](./page-numbers)
|
||||
- [Lägg till sidetiketter](./add-page-labels)
|
||||
- [Sidhuvud och sidfot](./header-footer)
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: BMP till PDF
|
||||
description: Konvertera BMP-bitmappsbilder till PDF direkt i webbläsaren, utan uppladdning till någon server.
|
||||
---
|
||||
|
||||
# BMP till PDF
|
||||
|
||||
Konvertera Windows Bitmap-filer (BMP) till PDF. BMP är ett okomprimerat bildformat som fortfarande förekommer i äldre system, medicinsk bildbehandling och industriella skannrar. Det här verktyget konverterar dem till PDF utan att du behöver installera något.
|
||||
|
||||
## Format som stöds
|
||||
|
||||
| Format | Filändelser |
|
||||
| :----- | :---------- |
|
||||
| BMP | `.bmp` |
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Klicka på uppladdningsytan eller dra och släpp dina BMP-filer.
|
||||
2. Granska fillistan. Lägg till fler filer eller ta bort oönskade.
|
||||
3. Klicka på **Konvertera till PDF**. Resultatet laddas ner som `from_bmps.pdf`.
|
||||
|
||||
Varje BMP ritas på en canvas, exporteras som PNG och bäddas sedan in i PDF-filen med pdf-lib. Sidstorleken motsvarar den ursprungliga bildens mått.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Det här verktyget har inga extra kvalitetsinställningar. Bilderna bäddas in i sin ursprungliga upplösning som förlustfri PNG i PDF-filen.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Konvertera äldre skannade dokument som lagrats som BMP till arkiverbara PDF-filer
|
||||
- Göra om BMP-skärmbilder från äldre Windows-program till delbara dokument
|
||||
- Bearbeta utdata från medicinska eller industriella skannrar som använder BMP som standard
|
||||
- Migrera gamla bildarkiv till ett mer portabelt format
|
||||
|
||||
## Tips
|
||||
|
||||
- BMP-filer är okomprimerade och därför ofta stora. Den resulterande PDF-filen blir betydligt mindre eftersom bilderna kodas om internt som PNG.
|
||||
- Om du har BMP-filer tillsammans med andra bildformat kan du använda verktyget [Bilder till PDF](./image-to-pdf) för att konvertera allt i en enda batch.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Bilder till PDF](./image-to-pdf)
|
||||
- [PNG till PDF](./png-to-pdf)
|
||||
- [TIFF till PDF](./tiff-to-pdf)
|
||||
@@ -0,0 +1,57 @@
|
||||
---
|
||||
title: Redigera bokmärken
|
||||
description: Lägg till, redigera, importera, exportera och ta bort PDF-bokmärken med en visuell redigerare och stöd för CSV/JSON.
|
||||
---
|
||||
|
||||
# Redigera bokmärken
|
||||
|
||||
Bokmärkesredigeraren ger dig full kontroll över PDF-bokmärken för navigering (även kallade konturer). Du kan lägga till nya bokmärken, redigera befintliga, ändra hierarkin och importera eller exportera bokmärkesdata i formaten CSV och JSON.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp din PDF genom att klicka eller dra en fil till släppytan.
|
||||
2. Markera eventuellt **Extrahera befintliga bokmärken automatiskt** för att hämta dokumentets nuvarande bokmärkesträd.
|
||||
3. Redigeraren öppnas i delad vy: PDF-visaren till vänster och bokmärkespanelen till höger.
|
||||
4. Skriv en bokmärkestitel och klicka på **Lägg till på sidan** för att skapa ett nytt bokmärke som pekar på den aktuella sidan.
|
||||
5. Använd verktygsfältets knappar för att ordna om, formatera eller ta bort bokmärken.
|
||||
6. Klicka på **Spara PDF med bokmärken** för att ladda ner den uppdaterade filen.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Visuell PDF-visare med sidnavigering, zoomkontroller och fält för att gå till en sida
|
||||
- Lägg till bokmärken på valfri sida med ett enda klick
|
||||
- Klicka direkt på PDF-filen för att ange en exakt bokmärkesdestination (väljarläge)
|
||||
- Nästlad bokmärkeshierarki med omordning via dra och släpp
|
||||
- Batchåtgärder: markera flera bokmärken för att ändra färg, stil eller ta bort dem på en gång
|
||||
- Bokmärkessökning för att snabbt hitta poster i stora träd
|
||||
- Ångra och gör om för alla ändringar
|
||||
- Importera bokmärken från CSV (titel, sida, nivå) eller JSON-filer
|
||||
- Exportera bokmärken till CSV eller JSON för extern redigering
|
||||
- Bokmärkesformatering: färg (röd, blå, grön, gul, lila) och teckenstil (fet, kursiv, fet kursiv)
|
||||
- Snabb navigering: bläddra mellan sidor med sida upp/ned-tangenterna
|
||||
|
||||
## Alternativ
|
||||
|
||||
- **Extrahera befintliga bokmärken automatiskt**: När det är markerat läser verktyget in och visar PDF-filens nuvarande bokmärken vid inladdning.
|
||||
- **Batchläge**: Slå på för att markera flera bokmärken och tillämpa massändringar av färg, stil eller borttagning.
|
||||
- **Expandera/dölj alla**: Visa eller dölj snabbt nästlade underbokmärken.
|
||||
|
||||
## Användningsfall
|
||||
|
||||
- Lägga till en innehållsförteckning i en lärobok eller manual som saknar bokmärken
|
||||
- Strukturera om bokmärken i ett skannat dokument efter OCR-bearbetning
|
||||
- Exportera bokmärken till CSV, redigera dem i ett kalkylblad och sedan importera dem igen
|
||||
- Rensa upp automatiskt genererade bokmärken med felaktiga sidhänvisningar
|
||||
- Lägga till färgade bokmärken för att markera viktiga avsnitt i en juridisk inlaga
|
||||
|
||||
## Tips
|
||||
|
||||
- Använd CSV-import för att skapa många bokmärken på en gång. Formatet är enkelt: `title,page,level` där nivå 1 är högsta nivån.
|
||||
- Väljarläget låter dig klicka på en exakt plats på PDF-sidan för att ange bokmärkets destination, vilket är mer exakt än att bara ange ett sidnummer.
|
||||
- Exportera dina bokmärken innan du gör stora ändringar så att du har en säkerhetskopia.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Innehållsförteckning](./table-of-contents)
|
||||
- [PDF-redigerare](./edit-pdf)
|
||||
- [Lägg till sidetiketter](./add-page-labels)
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
title: CBZ till PDF
|
||||
description: Konvertera CBZ- och CBR-serietidningsarkiv till PDF i webbläsaren. Gratis, privat, ingen uppladdning behövs.
|
||||
---
|
||||
|
||||
# CBZ till PDF
|
||||
|
||||
Förvandla serietidningsarkiv till PDF-filer. CBZ och CBR är standardformaten för digitala serier. De är bara ZIP- eller RAR-arkiv fyllda med bilder. Det här verktyget extraherar varje sida, bevarar läsordningen och skapar en ren PDF där varje bild blir en sida i full storlek.
|
||||
|
||||
## Format som stöds
|
||||
|
||||
| Format | Filändelse | Anmärkningar |
|
||||
| :----- | :--------- | :------------------------------------------------------------ |
|
||||
| CBZ | `.cbz` | ZIP-baserat serietidningsarkiv (bearbetas lokalt med pdf-lib) |
|
||||
| CBR | `.cbr` | RAR-baserat serietidningsarkiv (bearbetas via PyMuPDF-motorn) |
|
||||
|
||||
CBZ-konverteraren känner igen bilder i formaten JPEG, PNG, GIF, BMP, WebP, AVIF, TIFF, HEIC och JXL i arkivet. Format som inte är standard konverteras automatiskt till PNG före inbäddning.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Klicka på uppladdningsytan eller dra och släpp dina CBZ- eller CBR-filer. Du kan blanda båda formaten i samma batch.
|
||||
2. Granska de listade filerna. Ta bort de du inte behöver, eller klicka på **Lägg till fler filer** för att lägga till fler.
|
||||
3. Klicka på **Konvertera till PDF**. För CBZ-filer packar verktyget upp arkivet, sorterar bildfilerna efter namn i naturlig ordning, identifierar varje bilds faktiska format och bäddar in dem i en PDF med pdf-lib. CBR-filer går i stället via PyMuPDF-motorn.
|
||||
4. En enskild fil laddas ner som en PDF. Flera filer ger ett ZIP-arkiv med namnet `comic-converted.zip`.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Ingen konfiguration krävs. Varje bild blir en sida med samma mått som originalet, så dubbelsidor förblir breda och enkelsidor förblir smala.
|
||||
|
||||
## Användningsfall
|
||||
|
||||
- Läsa serier på en surfplatta eller i en mobilapp som stöder PDF men inte CBZ/CBR
|
||||
- Skriva ut vissa sidor från en digital serie
|
||||
- Arkivera en seriesamling i ett format som alla filvisare kan öppna
|
||||
- Dela en serie med någon som inte har en särskild serieläsare
|
||||
|
||||
## Tips
|
||||
|
||||
- Bilderna i arkivet sorteras i naturlig ordning (så `page2.jpg` kommer före `page10.jpg`). Namnge filerna med enhetlig numrering för rätt sidordning.
|
||||
- Konverteraren identifierar bildformat utifrån deras binära signaturer, inte filändelser. En PNG som av misstag fått namnet `.jpg` bäddas ändå in korrekt.
|
||||
- CBZ-filer bearbetas helt i webbläsaren utan att PyMuPDF-motorn läses in, så de konverteras snabbare än CBR-filer.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [EPUB till PDF](./epub-to-pdf)
|
||||
- [MOBI till PDF](./mobi-to-pdf)
|
||||
- [Bilder till PDF](./image-to-pdf)
|
||||
@@ -0,0 +1,61 @@
|
||||
---
|
||||
title: Ändra behörigheter
|
||||
description: Ange eller ändra PDF-behörigheter för utskrift, kopiering, redigering och kommentarer. Använder 256-bitars AES-kryptering.
|
||||
---
|
||||
|
||||
# Ändra behörigheter
|
||||
|
||||
Finjustera vad mottagarna kan göra med din PDF. Till skillnad från enkel kryptering som bara låser filen bakom ett lösenord låter det här verktyget dig selektivt tillåta eller förbjuda utskrift, kopiering, redigering, kommentarer, ifyllning av formulär, dokumentsammansättning och sidextrahering, allt framtvingat genom 256-bitars AES-kryptering.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en PDF-fil.
|
||||
2. Om PDF-filen redan är krypterad, ange **Nuvarande lösenord**.
|
||||
3. Ange ett **Nytt användarlösenord** (krävs för att öppna) och/eller ett **Nytt ägarlösenord** (styr behörigheterna).
|
||||
4. Slå på eller av enskilda behörigheter med kryssrutorna.
|
||||
5. Klicka på **Ändra behörigheter**.
|
||||
6. Ladda ner den uppdaterade PDF-filen.
|
||||
|
||||
Om du lämnar båda fälten för nya lösenord tomma dekrypterar verktyget PDF-filen helt och tar bort all kryptering och alla begränsningar.
|
||||
|
||||
## Behörighetskontroller
|
||||
|
||||
| Behörighet | Vad den styr |
|
||||
| --------------------------------- | -------------------------------------------------------- |
|
||||
| **Tillåt utskrift** | Om dokumentet får skrivas ut |
|
||||
| **Tillåt kopiering** | Om text och bilder får markeras och kopieras |
|
||||
| **Tillåt ändringar** | Om dokumentets innehåll får redigeras |
|
||||
| **Tillåt kommentarer** | Om kommentarer, markeringar och stämplar får läggas till |
|
||||
| **Tillåt ifyllning av formulär** | Om interaktiva formulärfält får fyllas i |
|
||||
| **Tillåt dokumentsammansättning** | Om sidor får infogas, tas bort eller roteras |
|
||||
| **Tillåt sidextrahering** | Om enskilda sidor får extraheras |
|
||||
|
||||
Alla behörigheter kräver ett ägarlösenord för att kunna framtvingas. Utan ägarlösenord ignoreras behörighetsflaggorna av de flesta PDF-läsare.
|
||||
|
||||
## Så fungerar behörigheter i PDF
|
||||
|
||||
PDF-behörigheter är en del av krypteringsspecifikationen. De lagras som bitflaggor i krypteringsordlistan och framtvingas av kompatibla PDF-läsare. Den viktiga skillnaden:
|
||||
|
||||
- **Användarlösenord**: Krävs för att över huvud taget öppna filen.
|
||||
- **Ägarlösenord**: Krävs för att ändra behörigheter eller ta bort begränsningar. Utan det styr behörighetsflaggorna vilka åtgärder användaren kan utföra.
|
||||
|
||||
Om du bara anger ett ägarlösenord (inget användarlösenord) kan vem som helst öppna filen men är begränsad till de tillåtna åtgärderna. Om du anger båda kräver filen ett lösenord för att öppnas och är begränsad efter autentisering.
|
||||
|
||||
## Användningsfall
|
||||
|
||||
- Distribuera en rapport som kan visas och skrivas ut men inte redigeras eller kopieras
|
||||
- Dela en avtalsmall som mottagarna kan fylla i men inte ändra
|
||||
- Publicera en PDF-katalog där kopiering av bilder är avstängd
|
||||
- Tillåta kommentarer i ett granskningsutkast samtidigt som strukturella ändringar förhindras
|
||||
|
||||
## Tips
|
||||
|
||||
- För att vara effektiv bör du alltid ange ett ägarlösenord. Behörigheter utan ägarlösenord går inte att framtvinga.
|
||||
- Vissa PDF-verktyg från tredje part ignorerar behörighetsflaggor. För starkare skydd kan du överväga att rasterisera PDF-filen eller använda DRM.
|
||||
- Använd det här verktyget för att uppgradera gamla RC4-krypterade PDF-filer till AES-256.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Skydda PDF](./protect-pdf): enkelt lösenordsskydd utan detaljerade behörigheter
|
||||
- [Lås upp PDF](./unlock-pdf): ta bort krypteringen helt
|
||||
- [Ta bort begränsningar](./remove-restrictions): ta bort alla begränsningar när du har ägarlösenordet
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
title: Kombinera till en sida
|
||||
description: Foga ihop alla sidor i en PDF till en enda sammanhängande vertikal eller horisontell rullning.
|
||||
---
|
||||
|
||||
# Kombinera till en sida
|
||||
|
||||
Slå ihop varje sida i en PDF till en enda lång sida. Sidorna fogas ihop vertikalt (som en rulle) eller horisontellt (sida vid sida), vilket ger en sammanhängande sida i utdata.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en PDF-fil.
|
||||
2. Välj layoutriktning: **Vertikal** (sidor staplade uppifrån och ned) eller **Horisontell** (sidor placerade sida vid sida).
|
||||
3. Ange avståndet mellan sidorna i punkter.
|
||||
4. Välj en bakgrundsfärg för mellanrummen mellan sidorna.
|
||||
5. Aktivera eventuellt avdelare (tunna linjer mellan sidorna) och ställ in deras tjocklek och färg.
|
||||
6. Klicka på bearbetningsknappen. Utdata är en PDF med en enda sida.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Vertikal eller horisontell sammanfogning av sidor
|
||||
- Konfigurerbart avstånd mellan sidorna
|
||||
- Färgväljare för bakgrunden i mellanrummen
|
||||
- Valfria avdelarlinjer med justerbar tjocklek och färg
|
||||
- Återger varje originalsida i full upplösning på den kombinerade ytan
|
||||
|
||||
## Alternativ
|
||||
|
||||
| Alternativ | Beskrivning |
|
||||
| ----------------------- | ---------------------------------------------------- |
|
||||
| **Orientering** | Vertikal (staplad) eller horisontell (sida vid sida) |
|
||||
| **Sidavstånd** | Mellanrum mellan sidorna i punkter |
|
||||
| **Bakgrundsfärg** | Färg på området mellan sidorna |
|
||||
| **Lägg till avdelare** | Slå på tunna linjer mellan sidorna |
|
||||
| **Avdelarens tjocklek** | Linjetjocklek i punkter |
|
||||
| **Avdelarens färg** | Färg på avdelarlinjerna |
|
||||
|
||||
## Användningsfall
|
||||
|
||||
- Skapa en enda lång bild av en flersidig wireframe eller designmockup
|
||||
- Generera en sammanhängande rullbar vy av ett dokument för inbäddning på webben
|
||||
- Foga ihop en flersidig serie eller storyboard till en enda remsa
|
||||
- Skapa en panoramavy av på varandra följande sidor för granskning
|
||||
|
||||
## Tips
|
||||
|
||||
- Vertikal orientering fungerar bäst för dokument med stående sidor. Horisontell passar bättre för innehåll i liggande format.
|
||||
- Stora dokument med många sidor ger en mycket hög eller bred utdata. Vissa PDF-visare kan få problem med extremt stora enskilda sidor.
|
||||
- Avdelare i kontrasterande färg gör det lätt att se var en originalsida slutar och nästa börjar.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [N-Up PDF](./n-up-pdf)
|
||||
- [Sammanfoga PDF](./merge-pdf)
|
||||
- [Dela sidor](./divide-pages)
|
||||
@@ -0,0 +1,60 @@
|
||||
---
|
||||
title: 'Jämför PDF:er'
|
||||
description: Jämför två PDF-dokument sida vid sida eller i överlagringsläge med detaljerad ändringsidentifiering och kategorisering.
|
||||
---
|
||||
|
||||
# Jämför PDF:er
|
||||
|
||||
Ladda upp två PDF-filer och se exakt vad som har ändrats mellan dem. Verktyget parar ihop sidor på ett smart sätt, identifierar skillnader i text, bilder, kommentarer, sidhuvuden och formatering och visar dem i en vy sida vid sida eller i överlagring.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp två PDF-filer: originalet (till vänster) och den reviderade versionen (till höger).
|
||||
2. Verktyget parar ihop sidor mellan dokumenten med hjälp av innehållssignaturer.
|
||||
3. Välj visningsläge: **Sida vid sida** eller **Överlagring**.
|
||||
4. Navigera mellan sidpar med sidnumreringskontrollerna.
|
||||
5. Skillnader markeras och kategoriseras. Använd filterpanelen för att fokusera på vissa typer av ändringar.
|
||||
6. Exportera eventuellt jämförelsen som en PDF-rapport.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Automatisk sidparning baserad på innehållslikhet
|
||||
- Jämförelsevyer sida vid sida och i överlagring
|
||||
- Ändringskategorisering: text, bild, sidhuvud/sidfot, kommentar, formatering, bakgrund
|
||||
- Filterreglage per kategori för att visa eller dölja vissa typer av ändringar
|
||||
- Sökning bland textändringar med frågefilter
|
||||
- OCR-stöd för jämförelse av skannade dokument
|
||||
- Zoomkontroller för detaljgranskning
|
||||
- Synkroniserad rullning mellan panelerna i läget sida vid sida
|
||||
- Exportera jämförelseresultat som en PDF
|
||||
|
||||
## Alternativ
|
||||
|
||||
| Alternativ | Beskrivning |
|
||||
| ------------------ | -------------------------------------------------------------------------------------------------- |
|
||||
| **Visningsläge** | Sida vid sida eller överlagring |
|
||||
| **OCR** | Aktivera/inaktivera OCR för jämförelse av skannade dokument |
|
||||
| **OCR-språk** | Språk för OCR-textextrahering |
|
||||
| **Kategorifilter** | Växla synligheten för ändringar i text, bild, sidhuvud/sidfot, kommentar, formatering och bakgrund |
|
||||
| **Ändringsomfång** | I överlagringsläge: filtrera mellan alla ändringar eller endast innehåll |
|
||||
| **Zoom** | Justera förstoringsnivån för detaljgranskning |
|
||||
|
||||
## Användningsfall
|
||||
|
||||
- Granska avtalsrevisioner för att se exakt vad som ändrats mellan versioner
|
||||
- Jämföra designmockups för att kontrollera att PDF-exporter motsvarar förväntningarna
|
||||
- Granska dokumentändringar i reglerade branscher där varje ändring måste spåras
|
||||
- Kontrollera att en PDF-konvertering har bevarat originalinnehållet korrekt
|
||||
- Kontrollera översättningsdokument mot källan för layoutändringar
|
||||
|
||||
## Tips
|
||||
|
||||
- Överlagringsvyn lägger båda dokumenten ovanpå varandra, så rumsliga skillnader (förflyttade element, storleksändrade bilder) syns direkt.
|
||||
- Aktivera OCR när du jämför skannade dokument som saknar textlager. Jämförelsemotorn extraherar då text från sidbilderna.
|
||||
- Använd kategorifilter för att fokusera på det som är viktigt. Dölj till exempel formateringsändringar när du bara bryr dig om skillnader i textinnehåll.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Visa metadata](./view-metadata)
|
||||
- [OCR PDF](./ocr-pdf)
|
||||
- [Sammanfoga PDF](./merge-pdf)
|
||||
@@ -0,0 +1,73 @@
|
||||
---
|
||||
title: Komprimera PDF
|
||||
description: Minska PDF-filens storlek med upp till 90 % med motorn Hyper Compress. Stöder målstorlekar, batchbearbetning och anpassade kvalitetsinställningar.
|
||||
---
|
||||
|
||||
# Komprimera PDF
|
||||
|
||||
Krymp dina PDF-filer utan att förstöra dem. Komprimera PDF drivs av [Hyper Compress](https://www.bentopdf.com/hyper-compress), BentoPDF:s egen komprimeringsmotor. Den komprimerar om bilder, skapar delmängder av och slår ihop typsnitt och tar bort onödig vikt som inbäddade miniatyrer och privata programdata. PDF-filen förblir fullt fungerande: texten kan fortfarande markeras, och länkar och formulärfält fortsätter att fungera.
|
||||
|
||||
Hyper Compress är kompilerad till WebAssembly och levereras med BentoPDF, så komprimeringen fungerar offline och i isolerade miljöer utan extra konfiguration.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en eller flera PDF-filer genom att klicka på släppytan eller dra in filer.
|
||||
2. Välj en **Komprimeringsnivå**: Låg, Medel, Hög eller Förlustfri.
|
||||
3. Ange eventuellt en **Målfilstorlek**, eller expandera **Anpassade inställningar** för finjustering, inklusive **Konvertera till gråskala**.
|
||||
4. Klicka på **Komprimera PDF**. För flera filer får du en enda ZIP-nedladdning.
|
||||
|
||||
## Särskilda dokument
|
||||
|
||||
- **Digitalt signerade PDF-filer** returneras oförändrade, eftersom varje ändring skulle ogiltigförklara signaturen. Slå på **Åsidosätt innehållsskydd** under Anpassade inställningar för att ta bort signaturerna och komprimera dem. Den synliga signaturen finns kvar på sidan, men filen är inte längre signerad.
|
||||
- **PDF/A-filer** förlorar sin PDF/A-märkning efter komprimering, så att filen aldrig påstår en överensstämmelse som den inte längre uppfyller. Slå på **Bevara PDF/A** under Anpassade inställningar för att i stället behålla överensstämmelsen.
|
||||
- **Lösenordsskyddade PDF-filer** får ett lösenordsfält på sitt filkort. Ange lösenordet där så öppnar Hyper Compress filen själv, utan ett separat upplåsningssteg. Med två eller fler låsta filer låser ett gemensamt fält upp alla filer som använder samma lösenord. Den komprimerade kopian har inget lösenord. Använd [Skydda PDF](./protect-pdf) för att lägga till ett igen.
|
||||
- **Skanningar utan textlager** kan krympa ännu mer med **Rasterisera sidor** under Anpassade inställningar, vilket ersätter varje sida med en optimerad bild. Det hoppas över för alla dokument som har markerbar text, inklusive OCR-behandlade skanningar, om inte **Åsidosätt innehållsskydd** är på. Då blir även textsidor bilder, så texten går inte längre att markera och länkar slutar fungera.
|
||||
|
||||
## Komprimeringsnivåer
|
||||
|
||||
| Nivå | Bildkvalitet | Max. upplösning | Bäst för |
|
||||
| -------------- | ------------- | --------------- | -------------------------------- |
|
||||
| **Låg** | 80 | 200 DPI | Bevara den visuella kvaliteten |
|
||||
| **Medel** | 50 | 150 DPI | Vardagsdokument |
|
||||
| **Hög** | 20 | 72 DPI | E-postbilagor, webbuppladdningar |
|
||||
| **Förlustfri** | Bilder orörda | Oförändrad | Arkivkopior |
|
||||
|
||||
Hög tar också bort inbäddningen av de 14 standardtypsnitten i PDF, samt liknande typsnitt som Arial när det är säkert.
|
||||
|
||||
## Målfilstorlek
|
||||
|
||||
Ange en storlek i KB eller MB så söker Hyper Compress efter den bästa bildkvalitet som ändå ryms, med utgångspunkt i den nivå du valde. Om dokumentet inte kan bli så litet får du den minsta version det kan skapa och ett meddelande om det. De särskilda sidorna, som [Komprimera PDF till 1 MB](https://www.bentopdf.com/compress-pdf-to-1mb), öppnas med målet redan ifyllt.
|
||||
|
||||
## Anpassade inställningar
|
||||
|
||||
Expandera panelen Anpassade inställningar för att justera Hyper Compress direkt. När du väljer en komprimeringsnivå återställs dessa till nivåns värden, och om du ändrar någon av dem växlar nivån till Anpassad.
|
||||
|
||||
- **Åsidosätt innehållsskydd**: som standard lämnar Hyper Compress signerade PDF-filer orörda och rasteriserar inte sidor som har text. När detta slås på kringgås båda. Det förblir på när du ändrar nivå.
|
||||
|
||||
- **Bilder**: bildkvalitet, maximal upplösning, tvingad omsampling, färgreducering, beskärning av osynliga bildområden, borttagning av alternativa bilder, förenkling av färgprofiler, JPEG 2000 och förlustfritt läge
|
||||
- **Typsnitt**: skapande av delmängder, sammanslagning av dubbletter och borttagning av inbäddning av standardtypsnitt och deras liknande typsnitt
|
||||
- **Innehåll**: platta till kommentarer, formulärfält eller länkar
|
||||
- **Rensning**: ta bort miniatyrer, programdata, artikeltrådar, webbinsamlingsinformation, strukturträdet eller utdataavsikter
|
||||
- **Rasterisera**: ersätta sidor med bilder, för skanningar som bara består av bilder. Hoppas över när dokumentet har markerbar text
|
||||
- **Utdata**: Bevara PDF/A och Brotli-komprimering för PDF 2.0-läsare som stöder det
|
||||
|
||||
## Användningsfall
|
||||
|
||||
- Få en rapport på 50 MB under gränsen för e-postbilagor
|
||||
- Få en skanning under en portals strikta uppladdningsgräns med en målfilstorlek
|
||||
- Optimera marknadsförings-PDF:er för snabbare nedladdning från webbplatser
|
||||
- Arkivera stora dokumentsamlingar där lagringskostnaden spelar roll
|
||||
- Minska mobildataanvändningen när du delar PDF-filer via meddelandeappar
|
||||
|
||||
## Tips
|
||||
|
||||
- Börja med Medel. Om resultatet fortfarande är för stort, ange en målfilstorlek eller gå upp till Hög.
|
||||
- För en skanning utan textlager, slå på Rasterisera sidor under Anpassade inställningar.
|
||||
- Konvertera till gråskala, under Anpassade inställningar, kan minska filstorleken för färgtunga dokument.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Linjärisera PDF](./linearize-pdf): optimera den komprimerade PDF-filen för snabb visning på webben
|
||||
- [Rasterisera PDF](./rasterize-pdf): konvertera sidor till bilder med en viss DPI, även sidor med text
|
||||
- [Reparera PDF](./repair-pdf): fixa en PDF som gick sönder vid komprimering någon annanstans
|
||||
- [Ta bort metadata](./remove-metadata): ta bort dold data för integritetens skull
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: Beskär PDF
|
||||
description: Beskär PDF-sidor visuellt genom att rita ett beskärningsområde på varje sida med en redigerare baserad på Cropper.js.
|
||||
---
|
||||
|
||||
# Beskär PDF
|
||||
|
||||
Trimma marginalerna på dina PDF-sidor med ett visuellt beskärningsgränssnitt. Rita en beskärningsrektangel direkt på varje sida, förhandsgranska resultatet och tillämpa beskärningen. Du kan ange olika beskärningsområden för olika sidor eller tillämpa samma beskärning på hela dokumentet.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp din PDF-fil.
|
||||
2. Beskärningsredigeraren öppnas och visar den första sidan med ett dragbart beskärningsöverlägg.
|
||||
3. Justera beskärningsrektangeln genom att dra i dess kanter eller hörn.
|
||||
4. Använd sidnavigeringsknapparna för att flytta mellan sidor och ange beskärningsområden för var och en.
|
||||
5. Klicka på **Beskär** för att tillämpa beskärningen och ladda ner resultatet.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Visuell beskärningsredigerare baserad på Cropper.js med handtag för exakt justering
|
||||
- Navigering sida för sida för att ange enskilda beskärningsområden
|
||||
- Sparar beskärningsinställningar per sida så att du kan ange olika beskärningar för olika sidor
|
||||
- Liveförhandsgranskning av det valda beskärningsområdet
|
||||
- Stöder PDF-filer med valfri sidstorlek eller orientering
|
||||
|
||||
## Användningsfall
|
||||
|
||||
- Ta bort breda marginaler från skannade dokument för att fokusera på innehållsytan
|
||||
- Trimma bort skrivarens beskärningsmärken eller passmärken från PDF-filer för tryckförberedelse
|
||||
- Beskära föreläsningsbilder för att ta bort området för talaranteckningar
|
||||
- Ta bort sidhuvuden eller sidfötter från varje sida innan ett dokumentutdrag delas
|
||||
- Ändra storlek på sidor för att passa en viss skärm eller utskriftslayout
|
||||
|
||||
## Tips
|
||||
|
||||
- Beskärningsöverlägget kan ändras i storlek och flyttas fritt. Dra i hörnen för proportionell storleksändring eller i kanterna för justering längs en axel.
|
||||
- För dokument där varje sida behöver samma beskärning, ange den på första sidan. Verktyget kommer ihåg ditt beskärningsområde medan du navigerar mellan sidor.
|
||||
- Om du behöver standardisera sidstorlekar i stället för att beskära visuellt kan verktyget Fixa sidstorlek passa bättre.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [PDF-redigerare](./edit-pdf)
|
||||
- [Sidnummer](./page-numbers)
|
||||
- [Ta bort tomma sidor](./remove-blank-pages)
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
title: CSV till PDF
|
||||
description: Konvertera CSV-kalkylbladsfiler till formaterade PDF-tabeller direkt i webbläsaren.
|
||||
---
|
||||
|
||||
# CSV till PDF
|
||||
|
||||
Förvandla CSV-filer till rena, formaterade PDF-dokument. Varje CSV-fil tolkas och återges som en tabell i PDF-utdata. Det är användbart när du behöver skriva ut eller dela tabelldata utan att mottagaren behöver ha kalkylprogram.
|
||||
|
||||
## Format som stöds
|
||||
|
||||
| Format | Filändelser |
|
||||
| :----- | :---------- |
|
||||
| CSV | `.csv` |
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Klicka på uppladdningsytan eller dra och släpp en eller flera CSV-filer.
|
||||
2. Granska fillistan. Lägg till fler filer eller ta bort oönskade.
|
||||
3. Klicka på **Konvertera till PDF**. En förloppsindikator visar konverteringens status.
|
||||
4. En enskild fil laddas ner direkt som en PDF. Flera filer paketeras i `csv-converted.zip`.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Det här verktyget har ingen ytterligare konfiguration. CSV-filen tolkas och formateras automatiskt som en tabell.
|
||||
|
||||
## Utdata
|
||||
|
||||
| Antal indata | Utdata |
|
||||
| :----------- | :------------------------------------------------- |
|
||||
| 1 fil | Enskild PDF-nedladdning (t.ex. `data.pdf`) |
|
||||
| 2+ filer | ZIP-arkiv (`csv-converted.zip`) med en PDF per fil |
|
||||
|
||||
## Användningsfall
|
||||
|
||||
- Konvertera exporterade databasrapporter till utskrivbara PDF-tabeller
|
||||
- Dela finansiella data eller lagerlistor med personer som inte har Excel
|
||||
- Skapa PDF-versioner av CSV-loggfiler för efterlevnadsdokumentation
|
||||
- Skriva ut adresslistor, betygsblad eller andra tabelldata som lagras som CSV
|
||||
|
||||
## Tips
|
||||
|
||||
- För bästa resultat bör din CSV använda vanliga kommatecken som avgränsare. Verktyget följer vanliga konventioner för CSV-tolkning.
|
||||
- Om din CSV har många kolumner kan tabellen komprimeras för att passa sidbredden. Överväg att dela upp breda datamängder i flera filer.
|
||||
- För Excel-filer (`.xls`, `.xlsx`), använd verktyget [Excel till PDF](./excel-to-pdf), som bevarar kalkylbladsformatering och flera blad.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Excel till PDF](./excel-to-pdf)
|
||||
- [Text till PDF](./txt-to-pdf)
|
||||
- [JSON till PDF](./json-to-pdf)
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: Ta bort sidor
|
||||
description: Ta bort vissa sidor från en PDF efter sidnummer, intervall eller visuellt val av miniatyrer.
|
||||
---
|
||||
|
||||
# Ta bort sidor
|
||||
|
||||
Ta bort oönskade sidor från ett PDF-dokument. Ange vilka sidor som ska tas bort genom att skriva sidnummer eller intervall, eller klicka direkt på sidminiatyrer för att markera dem för borttagning.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en PDF-fil. Verktyget återger miniatyrförhandsvisningar av varje sida.
|
||||
2. Ange sidorna som ska tas bort i textfältet med intervallsyntax (t.ex. `2, 5-8`), eller klicka på miniatyrer för att växla dem.
|
||||
3. Markerade sidor framhävs visuellt så att du kan bekräfta ditt val.
|
||||
4. Klicka på bearbetningsknappen. En ny PDF skapas utan de valda sidorna.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Textbaserat sidval med intervallsyntax (`2, 5-8, 12`)
|
||||
- Visuellt miniatyrrutnät för borttagning genom klick
|
||||
- Förhandsgranskning i realtid som framhäver sidor markerade för borttagning
|
||||
- Indatavalidering mot det faktiska sidantalet
|
||||
- Behåller alla sidor som inte tas bort i ursprunglig ordning
|
||||
|
||||
## Användningsfall
|
||||
|
||||
- Ta bort tomma sidor eller utfyllnadssidor från ett skannat dokument
|
||||
- Ta bort omslagssidor eller bilagor innan ett dokument delas
|
||||
- Rensa bort utkastsidor som av misstag lämnats kvar i en slutlig PDF
|
||||
- Ta bort sidor med känslig information före distribution
|
||||
|
||||
## Tips
|
||||
|
||||
- Att ta bort sidor påverkar inte innehållet eller formateringen på de återstående sidorna. Utdata är en trogen kopia av originalet utan de borttagna sidorna.
|
||||
- Om du vill behålla bara vissa sidor i stället för att ta bort vissa passar [Extrahera sidor](./extract-pages) bättre.
|
||||
- Miniatyrvyn läses in stegvis, så stora dokument förblir responsiva.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Extrahera sidor](./extract-pages)
|
||||
- [Duplicera & organisera](./organize-pdf)
|
||||
- [Dela PDF](./split-pdf)
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
title: Räta upp PDF
|
||||
description: Räta automatiskt upp lutande sidor i skannade PDF-filer med OpenCV-skevhetsdetektering. Justerbara inställningar för tröskel och DPI.
|
||||
---
|
||||
|
||||
# Räta upp PDF
|
||||
|
||||
Skannade dokument är sällan helt raka. Även en liten lutning gör OCR mindre exakt och utskrifter slarviga. Det här verktyget använder OpenCV:s bildbehandlingsalgoritmer för att upptäcka varje sidas skevhetsvinkel och rotera tillbaka den till vågrätt.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en eller flera skannade PDF-filer.
|
||||
2. Ange **Skevhetströskel**. Sidor med en upptäckt skevhet under detta värde lämnas orörda.
|
||||
3. Välj **Bearbetningskvalitet (DPI)**. Högre DPI ger bättre detekteringsnoggrannhet men tar längre tid.
|
||||
4. Klicka på **Räta upp PDF**.
|
||||
5. Efter bearbetningen visar en resultatpanel varje sidas upptäckta vinkel och om den korrigerades.
|
||||
|
||||
## Alternativ
|
||||
|
||||
| Inställning | Värden | Standard |
|
||||
| -------------------- | ------------------------- | -------- |
|
||||
| **Skevhetströskel** | 0,1, 0,5, 1,0, 2,0 grader | 0,5 |
|
||||
| **Bearbetnings-DPI** | 100, 150, 200, 300 | 150 |
|
||||
|
||||
## Så fungerar skevhetsdetektering
|
||||
|
||||
Verktyget återger varje sida som en bild med vald DPI och använder sedan OpenCV för att upptäcka dominerande linjevinklar i innehållet. Om den upptäckta skevheten överstiger tröskeln roteras sidan med den omvända vinkeln för att räta upp den. Sidor under tröskeln förs vidare oförändrade.
|
||||
|
||||
## Användningsfall
|
||||
|
||||
- Rensa upp batchskannade avtal eller juridiska dokument
|
||||
- Förbereda skannade kvitton eller fakturor för OCR-bearbetning
|
||||
- Räta upp sidor från en planskanner där pappret placerats ojämnt
|
||||
- Förbättra den visuella kvaliteten på digitaliserat arkivmaterial
|
||||
|
||||
## Tips
|
||||
|
||||
- Sänk tröskeln till 0,1 grader om du behöver pixelperfekt justering för OCR.
|
||||
- 150 DPI är snabbt och exakt för de flesta dokument. Använd 300 DPI för mycket liten text eller sidor med fina detaljer.
|
||||
- Uträtning fungerar bäst på dokument med tydliga horisontella textrader. Det kan ha svårt med sidor som mest består av bilder eller diagonala designelement.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Rasterisera PDF](./rasterize-pdf): konvertera den uträtade utdatan till en platt, bildbaserad PDF
|
||||
- [Komprimera PDF](./compress-pdf): minska filstorleken efter uträtning
|
||||
- [Reparera PDF](./repair-pdf): åtgärda strukturella problem i skannade PDF-filer
|
||||
@@ -0,0 +1,65 @@
|
||||
---
|
||||
title: Digital signatur
|
||||
description: Lägg till kryptografiska digitala signaturer i PDF-filer med X.509-certifikat. Stöder formaten PKCS#12 och PEM med alternativ för synlig signatur.
|
||||
---
|
||||
|
||||
# Digital signatur
|
||||
|
||||
En digital signatur är kryptografiskt bevis på att en viss person har undertecknat ett dokument och att dokumentet inte har ändrats sedan dess. Till skillnad från en ritad signatur (som bara är en bild) använder en digital signatur X.509-certifikat och PKCS#7-standarder för att ge verifierbar äkthet och integritet.
|
||||
|
||||
BentoPDF tillämpar digitala signaturer helt i din webbläsare. Din privata nyckel lämnar aldrig din enhet.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en PDF-fil.
|
||||
2. Ladda upp din certifikatfil (.pfx, .p12 eller .pem).
|
||||
3. Ange certifikatets lösenord för att låsa upp det. Verktyget visar certifikatets ämne, utfärdare och giltighetstid.
|
||||
4. Konfigurera eventuellt signaturens metadata (orsak, plats, kontaktinformation).
|
||||
5. Aktivera eventuellt en **synlig signatur** med anpassning av position, storlek, bild och text.
|
||||
6. Klicka på **Signera PDF**.
|
||||
|
||||
## Certifikatformat som stöds
|
||||
|
||||
| Format | Filändelser | Beskrivning |
|
||||
| ----------- | ----------- | -------------------------------------------------------------------------------------------------------------------------- |
|
||||
| **PKCS#12** | .pfx, .p12 | Branschstandardpaket med den privata nyckeln och certifikatkedjan. Det vanligaste formatet. |
|
||||
| **PEM** | .pem | Textbaserat format. Måste innehålla både certifikatet och den privata nyckeln i en fil. Stöder krypterade privata nycklar. |
|
||||
|
||||
## Alternativ för synlig signatur
|
||||
|
||||
När det är aktiverat återges ett synligt signaturblock på PDF-sidan:
|
||||
|
||||
- **Position**: X/Y-koordinater samt bredd/höjd i punkter
|
||||
- **Sida**: Första sidan, sista sidan, alla sidor eller ett visst sidnummer
|
||||
- **Bild**: Ladda upp en PNG-, JPG- eller WebP-bild (din handskrivna signatur, företagsstämpel osv.)
|
||||
- **Text**: Anpassad text med konfigurerbar färg och teckenstorlek. Om ingen bild eller text anges genererar verktyget automatiskt text från certifikatets Common Name och dagens datum.
|
||||
|
||||
## Signaturmetadata
|
||||
|
||||
- **Orsak**: Varför dokumentet signerades (t.ex. "Godkänt", "Granskat")
|
||||
- **Plats**: Var signeringen ägde rum (t.ex. "Stockholm")
|
||||
- **Kontaktinformation**: Hur du når undertecknaren (t.ex. e-postadress)
|
||||
|
||||
## Anmärkning om internetanslutning
|
||||
|
||||
Signering kan kräva en internetanslutning. Signeringsbiblioteket hämtar certifikatkedjan från URL:er som finns i certifikatets tillägg Authority Information Access (AIA). Om dessa servrar inte kan nås misslyckas signeringen för certifikat som kräver kedjevalidering.
|
||||
|
||||
## Användningsfall
|
||||
|
||||
- Signera avtal, offerter och överenskommelser med juridiskt bindande digitala signaturer
|
||||
- Certifiera officiella dokument i arbetsflöden som kräver PKI-baserad autentisering
|
||||
- Signera PDF-fakturor för regelefterlevnad (många EU-länder kräver digitalt signerade e-fakturor)
|
||||
- Lägga till organisatoriskt godkännande på ritningar eller kvalitetsdokument
|
||||
|
||||
## Tips
|
||||
|
||||
- Självsignerade certifikat fungerar för testning men ger varningar i Adobe Reader. Använd ett certifikat från en betrodd certifikatutfärdare för produktionsdokument.
|
||||
- Den synliga signaturen är enbart visuell. Den kryptografiska signaturen bäddas in oavsett om det synliga blocket är aktiverat.
|
||||
- Verifiera din signerade PDF med verktyget Validera PDF-signatur för att bekräfta att signaturen är intakt.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Validera PDF-signatur](./validate-signature-pdf): verifiera digitala signaturer i signerade PDF-filer
|
||||
- [Platta till PDF](./flatten-pdf): platta till formulär före signering för att förhindra ändringar
|
||||
- [Skydda PDF](./protect-pdf): lägg till lösenordsskydd ovanpå den digitala signaturen
|
||||
- [Ta bort metadata](./remove-metadata): ta bort metadata före signering
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: Dela sidor
|
||||
description: Dela PDF-sidor horisontellt eller vertikalt i mindre delsidor.
|
||||
---
|
||||
|
||||
# Dela sidor
|
||||
|
||||
Skär enskilda PDF-sidor i halvor genom att dela dem horisontellt eller vertikalt. Det är användbart när en enda sida innehåller material som bör delas upp i separata sidor, till exempel en tvåkolumnslayout som skannats som en bred sida.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en PDF-fil.
|
||||
2. Välj delningsriktning: **Vertikal** (vänster/höger halva) eller **Horisontell** (övre/nedre halva).
|
||||
3. Ange eventuellt ett sidintervall för att begränsa vilka sidor som delas. Lämna tomt för att dela alla sidor.
|
||||
4. Klicka på bearbetningsknappen för att skapa den delade PDF-filen.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Vertikal delning: delar varje sida i en vänster och en höger halva
|
||||
- Horisontell delning: delar varje sida i en övre och en nedre halva
|
||||
- Sidintervallfilter för att selektivt dela vissa sidor
|
||||
- Sidor som inte omfattas förs vidare oförändrade
|
||||
- Bevarar innehållskvaliteten utan omrendering
|
||||
|
||||
## Användningsfall
|
||||
|
||||
- Separera skannade sidor med två sidor per ark (t.ex. en boksökning med vänster och höger sida på samma ark)
|
||||
- Dela en liggande PDF med innehåll sida vid sida i enskilda stående sidor
|
||||
- Dela höga infografiker eller affischer i separata övre och nedre delar
|
||||
- Förbereda bredformatsdokument för utskrift på standardpapper
|
||||
|
||||
## Tips
|
||||
|
||||
- Om innehållet på dina sidor är ojämnt fördelat sker delningen ändå exakt på mittpunkten. För asymmetriska delningar kan du i stället överväga [Beskär PDF](./crop-pdf).
|
||||
- Kombinera det här verktyget med [Rotera PDF](./rotate-pdf) om dina sidor behöver roteras före eller efter delningen.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Dela PDF](./split-pdf)
|
||||
- [Beskär PDF](./crop-pdf)
|
||||
- [N-Up PDF](./n-up-pdf)
|
||||
- [Postera PDF](./posterize-pdf)
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
title: Sortera dubbelsidig skanning
|
||||
description: Ordna om PDF-filer från dubbelsidig skanning där framsidor och baksidor ligger i separata block till rätt ordning för fram- och baksidor.
|
||||
---
|
||||
|
||||
# Sortera dubbelsidig skanning
|
||||
|
||||
Sortera dubbelsidig skanning är avsett för ADF-skanningsflöden där en PDF innehåller två block med sidor:
|
||||
|
||||
- alla framsidor först
|
||||
- alla baksidor sedan
|
||||
|
||||
I stället för att manuellt dela upp och sätta ihop igen flätar det här verktyget ihop de två blocken till naturlig läsordning: framsida1, baksida1, framsida2, baksida2 och så vidare.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en enda PDF som skapats genom skanning av en dubbelsidig bunt.
|
||||
2. Ange delningspunkten där framsideblocket slutar.
|
||||
3. Välj hur baksideblocket hanteras:
|
||||
- **Vänd baksideblocket** (vanligt när bunten vänds innan baksidorna skannas)
|
||||
- **Behåll baksideblocket som det är**
|
||||
4. Klicka på **Sortera PDF** för att ladda ner det omordnade resultatet.
|
||||
|
||||
## Alternativ
|
||||
|
||||
- **Identifiera delning automatiskt (hälften)**: sätter delningspunkten till `ceil(totalPages / 2)`.
|
||||
- **Varning för udda sidantal**: varnar när det totala antalet sidor är udda (ofta ett skanningsfel).
|
||||
- **Bekräftelse vid ojämna block**: ber om bekräftelse när fram- och baksideblockens storlekar skiljer sig åt.
|
||||
- **Grupperad export**: dela upp den sorterade utdatan i separata PDF-filer baserat på det ursprungliga dokumentets sidantal och ladda ner som ZIP.
|
||||
|
||||
## Utdatabeteende
|
||||
|
||||
- **Standard**: en utdata-PDF (en indata-PDF ger en utdata-PDF).
|
||||
- **Grupperat läge**: utdatan delas upp efter ditt värde för sidor per dokument. Om flera delar skapas laddas de ner som en ZIP, annars laddas en enda PDF ner.
|
||||
|
||||
Om blockstorlekarna är ojämna sorteras de parade sidorna först, och återstående oparade sidor läggs till i slutet.
|
||||
|
||||
## Vanliga användningsfall
|
||||
|
||||
- Återställa ordningen efter att en hög dubbelsidiga formulär skannats i två omgångar.
|
||||
- Bygga upp fram-/baksidepaket från kontorsskannrar som matar ut alla framsidor och sedan alla baksidor.
|
||||
- Efterbearbeta arkivskanningar innan de delas upp i filer per dokument.
|
||||
|
||||
## Tips
|
||||
|
||||
- De flesta dubbelsidiga batcher bör ha ett jämnt totalt sidantal.
|
||||
- Om baksidorna ser omvända ut, växla mellan **Vänd baksideblocket** och **Behåll baksideblocket som det är**.
|
||||
- För original med 2 sidor (fram- och baksida), använd grupperad export med `2` sidor per dokument.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Alternera & blanda sidor](./alternate-merge)
|
||||
- [Dela PDF](./split-pdf)
|
||||
- [Sammanfoga PDF](./merge-pdf)
|
||||
- [Duplicera & organisera](./organize-pdf)
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: Redigera bilagor
|
||||
description: Visa och ta selektivt bort filbilagor som är inbäddade i ett PDF-dokument.
|
||||
---
|
||||
|
||||
# Redigera bilagor
|
||||
|
||||
Granska och hantera filbilagorna i en PDF. Verktyget listar varje inbäddad fil med namn och bilagenivå och låter dig sedan markera enskilda bilagor för borttagning eller ta bort alla på en gång.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en PDF-fil.
|
||||
2. Verktyget söker automatiskt efter bilagor och visar dem i en lista.
|
||||
3. Varje bilaga visar sitt filnamn och om den är en bilaga på dokumentnivå eller sidnivå.
|
||||
4. Klicka på papperskorgsikonen bredvid en bilaga för att markera den för borttagning (klicka igen för att avmarkera).
|
||||
5. Använd knappen **Ta bort alla bilagor** för att markera allt på en gång, eller **Avmarkera alla** för att rensa dina val.
|
||||
6. Klicka på bearbetningsknappen för att spara en ny PDF där de valda bilagorna har tagits bort.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Listar alla bilagor på dokument- och sidnivå
|
||||
- Borttagning av enskilda bilagor eller i bulk
|
||||
- Slå markeringen på och av innan ändringarna genomförs
|
||||
- Visuell genomstrykning och ändrad opacitet för objekt markerade för borttagning
|
||||
- Laddar ner den ändrade PDF-filen utan de valda bilagorna
|
||||
|
||||
## Användningsfall
|
||||
|
||||
- Ta bort föråldrade eller felaktiga filer som bäddats in i ett dokument innan det distribueras på nytt
|
||||
- Ta bort känsliga bilagor (finansiella data, personlig information) från en PDF innan den delas
|
||||
- Minska PDF-filens storlek genom att ta bort stora inbäddade filer som inte längre behövs
|
||||
- Granska inbäddat innehåll och rensa ett dokument före arkivering
|
||||
|
||||
## Tips
|
||||
|
||||
- Bilagor markerade för borttagning visas med en visuell genomstrykning. Du kan växla tillbaka dem före bearbetningen om du ändrar dig.
|
||||
- Om inga bilagor hittas visar verktyget ett tydligt meddelande om att inga bilagor hittades. PDF-filen innehåller helt enkelt inga inbäddade filer.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Lägg till bilagor](./add-attachments)
|
||||
- [Extrahera bilagor](./extract-attachments)
|
||||
- [Visa metadata](./view-metadata)
|
||||
@@ -0,0 +1,58 @@
|
||||
---
|
||||
title: Redigera metadata
|
||||
description: Visa och ändra PDF-metadatafält, inklusive titel, författare, nyckelord, datum och anpassade egenskaper.
|
||||
---
|
||||
|
||||
# Redigera metadata
|
||||
|
||||
Redigera metadatan som är inbäddad i en PDF-fil. Verktyget fyller i ett formulär med dokumentets befintliga metadata, låter dig ändra vilket fält som helst och sparar ändringarna i en ny PDF.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en PDF-fil. Verktyget läser dess nuvarande metadata och fyller i formuläret.
|
||||
2. Redigera något av standardfälten: Titel, Författare, Ämne, Nyckelord, Skapare, Producent.
|
||||
3. Justera Skapandedatum och Ändringsdatum med datum- och tidväljarna.
|
||||
4. Lägg till anpassade metadatafält genom att klicka på lägg till-knappen och ange ett nyckel-värde-par.
|
||||
5. Klicka på bearbetningsknappen för att spara den ändrade PDF-filen.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Fyller i all befintlig metadata från den uppladdade PDF-filen
|
||||
- Standardfält: Titel, Författare, Ämne, Nyckelord, Skapare, Producent
|
||||
- Datum- och tidväljare för Skapandedatum och Ändringsdatum
|
||||
- Anpassade nyckel-värde-metadatafält för valfria egenskaper
|
||||
- Sparar ändringar direkt i PDF-filens dokumentinformationsordlista
|
||||
|
||||
## Redigerbara fält
|
||||
|
||||
| Fält | Beskrivning |
|
||||
| ------------------ | ----------------------------------------------------- |
|
||||
| **Titel** | Dokumenttiteln som visas i PDF-läsare |
|
||||
| **Författare** | Personen eller organisationen som skapade dokumentet |
|
||||
| **Ämne** | En kort beskrivning av dokumentets ämne |
|
||||
| **Nyckelord** | Kommaseparerade termer för sökning och kategorisering |
|
||||
| **Skapare** | Programmet som ursprungligen skapade innehållet |
|
||||
| **Producent** | Programmet som genererade PDF-filen |
|
||||
| **Skapandedatum** | När dokumentet ursprungligen skapades |
|
||||
| **Ändringsdatum** | När dokumentet senast ändrades |
|
||||
| **Anpassade fält** | Alla ytterligare nyckel-värde-par som du definierar |
|
||||
|
||||
## Användningsfall
|
||||
|
||||
- Ange en korrekt titel och författare innan ett dokument publiceras
|
||||
- Lägga till nyckelord för att förbättra sökbarheten i dokumenthanteringssystem
|
||||
- Uppdatera ändringsdatumet så att det speglar den aktuella revisionen
|
||||
- Lägga till anpassade metadatafält som Avdelning, Projekt-ID eller Klassificering
|
||||
- Rensa upp metadata som lämnats kvar av det ursprungliga skrivprogrammet
|
||||
|
||||
## Tips
|
||||
|
||||
- Anpassade fält skrivs direkt i PDF-filens informationsordlista. Vissa PDF-läsare visar kanske inte anpassade fält, men de bevaras i filen.
|
||||
- Lämna ett fält tomt för att rensa det från metadatan. Bearbetningsknappen sparar det som finns i formuläret.
|
||||
- För att visa metadata utan att redigera, använd [Visa metadata](./view-metadata). För att ta bort all metadata helt, använd Ta bort metadata.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Visa metadata](./view-metadata)
|
||||
- [PDF OCG](./pdf-layers)
|
||||
- [Komprimera PDF](./compress-pdf)
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
title: PDF-redigerare
|
||||
description: Kommentera, markera, maskera, lägg till former och bilder, sök och visa PDF-filer direkt i webbläsaren.
|
||||
---
|
||||
|
||||
# PDF-redigerare
|
||||
|
||||
BentoPDF:s PDF-redigerare låter dig kommentera, markera, maskera, kommentera i text, lägga till former och bilder och söka i dina PDF-filer. Den läser in en fullfjädrad redigerare direkt i webbläsaren utan serveruppladdningar.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp din PDF genom att klicka på släppytan eller dra en fil dit.
|
||||
2. Den inbäddade PDF-redigeraren öppnas automatiskt med ditt dokument inläst.
|
||||
3. Använd verktygsfältet för att kommentera, markera, maskera, lägga till text, rita former eller infoga bilder.
|
||||
4. Klicka på **Ladda ner redigerad PDF** för att spara dina ändringar.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Fullständigt kommentarsverktygsfält med markering, understrykning, genomstrykning och frihandsritning
|
||||
- Textinfogning och kommentarer
|
||||
- Maskeringsverktyg som permanent tar bort markerat innehåll när du tillämpar maskeringen. Om några markeringar inte har tillämpats när du klickar på **Ladda ner redigerad PDF** erbjuder redigeraren att tillämpa dem först.
|
||||
- Formverktyg för rektanglar, cirklar, linjer och pilar
|
||||
- Bildinfogning på PDF-sidor
|
||||
- Inbyggd textsökning i hela dokumentet
|
||||
- Stöd för flera dokument med flikar (upp till 10 dokument öppna samtidigt)
|
||||
- Filinläsning med dra och släpp
|
||||
|
||||
## Användningsfall
|
||||
|
||||
- Granska avtal och markera ändringar med markeringar och kommentarer
|
||||
- Maskera konfidentiell information som personnummer eller finansiella data innan delning
|
||||
- Lägga till kommentarer på arkitektritningar eller tekniska ritningar
|
||||
- Infoga företagslogotyper eller stämplar på dokumentsidor
|
||||
- Söka efter vissa termer i långa juridiska dokument
|
||||
|
||||
## Tips
|
||||
|
||||
- Du kan öppna flera PDF-filer samtidigt och växla mellan dem med flikfältet högst upp i redigeraren.
|
||||
- Redigeraren bevarar den ursprungliga PDF-strukturen, så typsnitt, layouter och formulärfält förblir intakta.
|
||||
- Att markera text eller ett område för maskering tar inte bort något förrän maskeringen tillämpas. När du maskerar markerad text tas även kopior av den i filens egenskaper, bokmärken, kommentarer och bilagor bort från nedladdningen, om inte filen är krypterad.
|
||||
- För massvis med vattenstämplar eller sidnumrering, använd de särskilda verktygen i stället för mer kontroll över formateringen.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Lägg till vattenstämpel](./add-watermark)
|
||||
- [Signera PDF](./sign-pdf)
|
||||
- [Lägg till stämplar](./add-stamps)
|
||||
- [Ta bort anteckningar](./remove-annotations)
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
title: E-post till PDF
|
||||
description: Konvertera e-postfiler i formaten EML och MSG till PDF i webbläsaren. Bevarar sidhuvuden, brödtext och bilagelista.
|
||||
---
|
||||
|
||||
# E-post till PDF
|
||||
|
||||
Konvertera sparade e-postfiler till rena, utskrivbara PDF-filer. Verktyget tolkar EML- och MSG-filer, extraherar hela meddelandet (sidhuvuden, brödtext och bilagemetadata) och återger allt i en strukturerad PDF. Användbart för juridisk bevisinsamling, arkivering eller bara för att skriva ut ett viktigt e-postmeddelande.
|
||||
|
||||
## Format som stöds
|
||||
|
||||
| Format | Filändelse | Anmärkningar |
|
||||
| :----- | :--------- | :----------------------------------------------------------------------- |
|
||||
| EML | `.eml` | Standardformat för MIME-e-post (exporteras från de flesta e-postprogram) |
|
||||
| MSG | `.msg` | Microsoft Outlooks egna format |
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Klicka på uppladdningsytan eller dra och släpp dina EML- eller MSG-filer. Du kan blanda båda formaten i samma batch.
|
||||
2. Granska fillistan. Ta bort oönskade poster med papperskorgsikonen, eller klicka på **Lägg till fler filer** för att ta med fler e-postmeddelanden.
|
||||
3. Konfigurera konverteringsalternativen (se nedan).
|
||||
4. Klicka på **Konvertera till PDF**. Verktyget tolkar varje e-postmeddelande, återger innehållet som formaterad HTML och konverterar det till PDF via PyMuPDF-motorn.
|
||||
5. Ett enskilt e-postmeddelande laddas ner direkt som en PDF. Flera e-postmeddelanden paketeras i `emails-converted.zip`.
|
||||
|
||||
## Alternativ
|
||||
|
||||
| Alternativ | Standard | Beskrivning |
|
||||
| :------------------------ | :------- | :----------------------------------------------------------------------------------------------------- |
|
||||
| **Sidstorlek** | A4 | Välj mellan sidmåtten A4, Letter eller Legal. |
|
||||
| **Inkludera Cc och Bcc** | På | När det är aktiverat visas mottagarlistorna för Cc och Bcc i e-postens sidhuvudsavsnitt i PDF-filen. |
|
||||
| **Inkludera bilagelista** | På | När det är aktiverat visas en lista över e-postens filbilagor (med filnamn och storlekar) i PDF-filen. |
|
||||
|
||||
## Användningsfall
|
||||
|
||||
- Arkivera viktig affärskorrespondens som PDF för efterlevnad eller revision
|
||||
- Skriva ut e-posttrådar för rättsliga förfaranden eller begäranden om bevisinsamling
|
||||
- Skapa en permanent post över orderbekräftelser, kvitton eller avtal som mottagits via e-post
|
||||
- Säkerhetskopiera Outlook MSG-filer i ett format som inte kräver Outlook för att läsas
|
||||
- Dokumentera kundsupportärenden från exporterade EML-filer
|
||||
|
||||
## Tips
|
||||
|
||||
- Både EML (används av Thunderbird, Apple Mail och de flesta e-postprogram) och Outlook MSG-filer stöds. Exportera e-postmeddelanden från ditt e-postprogram och släpp dem direkt i verktyget.
|
||||
- HTML-formaterade e-postmeddelanden behåller sin formatering i PDF-filen. E-postmeddelanden i ren text återges med en ren och läsbar formatering.
|
||||
- Bilagelistan visar filnamn och storlekar men bäddar inte in själva bilagefilerna i PDF-filen.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [XML till PDF](./xml-to-pdf)
|
||||
- [XPS till PDF](./xps-to-pdf)
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: EPUB till PDF
|
||||
description: Konvertera EPUB-e-böcker till PDF i webbläsaren. Gratis, ingen uppladdning krävs, konvertering med integriteten främst.
|
||||
---
|
||||
|
||||
# EPUB till PDF
|
||||
|
||||
Konvertera EPUB-e-böcker till PDF-filer utan att lämna webbläsaren. EPUB är den öppna standarden för digitala böcker, men ibland behöver du en PDF med fast layout för utskrift, kommentarer eller delning med personer som inte har en e-boksläsare.
|
||||
|
||||
## Format som stöds
|
||||
|
||||
| Format | Filändelse | Anmärkningar |
|
||||
| :----- | :--------- | :----------------------- |
|
||||
| EPUB | `.epub` | EPUB 2- och EPUB 3-filer |
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Klicka på uppladdningsytan eller dra och släpp dina EPUB-filer. Flera filer kan väljas samtidigt.
|
||||
2. Granska de uppladdade filerna. Ta bort oönskade poster med papperskorgsikonen, eller klicka på **Lägg till fler filer** för att utöka batchen.
|
||||
3. Klicka på **Konvertera till PDF**. PyMuPDF-motorn återger EPUB-innehållet (text, bilder och formatering) som sidindelad PDF-utdata.
|
||||
4. En enskild EPUB laddas ner direkt som en PDF. Flera filer paketeras i ett ZIP-arkiv med namnet `epub-converted.zip`.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Konverteringen körs med rimliga standardvärden och kräver ingen konfiguration. Texten flödar om till standardmått för sidor, och inbäddade typsnitt och bilder förs över till PDF-filen.
|
||||
|
||||
## Användningsfall
|
||||
|
||||
- Skriva ut en DRM-fri e-bok för läsning bort från skärmar
|
||||
- Skicka in ett EPUB-manus som en PDF med fast layout för granskning
|
||||
- Arkivera digitala böcker i ett format som alla operativsystem kan öppna direkt
|
||||
- Dela ett kapitel med en kollega som inte har en EPUB-läsare
|
||||
- Konvertera teknisk dokumentation som distribueras som EPUB till PDF-filer som går att kommentera
|
||||
|
||||
## Tips
|
||||
|
||||
- EPUB 3-funktioner som inbäddat ljud och video förs inte över till PDF, men all text, alla bilder och tabeller konverteras rent.
|
||||
- För bästa resultat med kraftigt formaterade EPUB-filer, kontrollera de första sidorna i utdatan för att bekräfta att layouten är trogen.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [MOBI till PDF](./mobi-to-pdf)
|
||||
- [FB2 till PDF](./fb2-to-pdf)
|
||||
- [CBZ till PDF](./cbz-to-pdf)
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
title: Excel till PDF
|
||||
description: Konvertera Excel-kalkylblad (XLS, XLSX), ODS- och CSV-filer till PDF med bevarad formatering.
|
||||
---
|
||||
|
||||
# Excel till PDF
|
||||
|
||||
Konvertera kalkylbladsfiler till PDF. Verktyget hanterar moderna Excel-filer, det äldre XLS-formatet, OpenDocument-kalkylblad och till och med CSV, allt återgivet genom en webbläsarbaserad LibreOffice-motor som bevarar cellformatering, formler (som beräknade värden), diagram och layouter med flera blad.
|
||||
|
||||
## Format som stöds
|
||||
|
||||
| Format | Filändelser |
|
||||
| :---------------------- | :---------- |
|
||||
| Excel (modernt) | `.xlsx` |
|
||||
| Excel (äldre) | `.xls` |
|
||||
| OpenDocument-kalkylblad | `.ods` |
|
||||
| CSV | `.csv` |
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Klicka på uppladdningsytan eller dra och släpp dina kalkylbladsfiler.
|
||||
2. Granska fillistan. Lägg till fler filer eller ta bort oönskade.
|
||||
3. Klicka på **Konvertera till PDF**. LibreOffice-motorn startas vid första användningen och bearbetar sedan varje fil.
|
||||
4. En enskild fil laddas ner direkt som en PDF. Flera filer levereras som `excel-converted.zip`.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Det här verktyget har ingen ytterligare konfiguration. LibreOffice-motorn bestämmer sidlayout, skalning och utskriftsområde utifrån kalkylbladets inbyggda inställningar.
|
||||
|
||||
## Utdata
|
||||
|
||||
| Antal indata | Utdata |
|
||||
| :----------- | :----------------------------------------------------------------- |
|
||||
| 1 fil | Enskild PDF-nedladdning (originalfilnamnet med filändelsen `.pdf`) |
|
||||
| 2+ filer | ZIP-arkiv (`excel-converted.zip`) med en PDF per fil |
|
||||
|
||||
## Användningsfall
|
||||
|
||||
- Konvertera finansiella rapporter eller budgetar från Excel till PDF för distribution
|
||||
- Skapa utskriftsklara PDF-filer från kalkylblad med lager eller produktkataloger
|
||||
- Dela dataanalysresultat med intressenter som inte har Excel installerat
|
||||
- Arkivera kvartalsrapporter i ett format som inte kan redigeras
|
||||
- Konvertera ODS-filer från LibreOffice Calc till PDF
|
||||
|
||||
## Tips
|
||||
|
||||
- Diagram som är inbäddade i kalkylbladet återges i PDF-filen. Kontrollera att de ser rätt ut i källfilen innan du konverterar.
|
||||
- Om ditt kalkylblad har flera blad ingår alla blad i PDF-utdatan.
|
||||
- För enkel CSV-data utan formatering ger verktyget [CSV till PDF](./csv-to-pdf) en lättare konvertering. Använd Excel till PDF när du behöver bevara formatering, diagram eller flera blad.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [CSV till PDF](./csv-to-pdf)
|
||||
- [Word till PDF](./word-to-pdf)
|
||||
- [PowerPoint till PDF](./powerpoint-to-pdf)
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: Extrahera bilagor
|
||||
description: Extrahera alla inbäddade filbilagor från en eller flera PDF-filer och ladda ner dem som ett ZIP-arkiv.
|
||||
---
|
||||
|
||||
# Extrahera bilagor
|
||||
|
||||
Hämta ut varje inbäddad bilaga från en eller flera PDF-filer. Alla extraherade filer paketeras i ett enda ZIP-arkiv för nedladdning.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en eller flera PDF-filer som innehåller inbäddade bilagor.
|
||||
2. Klicka på **Extrahera bilagor**.
|
||||
3. Verktyget söker igenom varje PDF efter bilagor på dokument- och sidnivå.
|
||||
4. Alla hittade filer paketeras i ett ZIP-arkiv och laddas ner automatiskt.
|
||||
5. Ett statusmeddelande bekräftar hur många bilagor som hittades och deras totala storlek.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Batchextrahering från flera PDF-filer på en gång
|
||||
- Extraherar både bilagor på dokumentnivå och sidnivå
|
||||
- Ger en enda ZIP-fil med alla extraherade filer
|
||||
- Visar totalt antal bilagor och sammanlagd filstorlek
|
||||
- Tydliga statusmeddelanden om inga bilagor hittas
|
||||
|
||||
## Användningsfall
|
||||
|
||||
- Återskapa datafiler som är inbäddade i en rapport-PDF
|
||||
- Hämta ut bildresurser ur en portfölj eller ett specifikationsdokument
|
||||
- Extrahera kompletterande material från utbildnings- eller efterlevnads-PDF:er
|
||||
- Granska vilka filer som är inbäddade i en grupp PDF-filer
|
||||
|
||||
## Tips
|
||||
|
||||
- Om verktyget rapporterar att inga bilagor finns kan PDF-filen i stället innehålla inbäddade bilder eller formulärdata, vilka inte är filbilagor. Använd [Extrahera bilder](./extract-images) för inbäddade bilder.
|
||||
- När flera PDF-filer bearbetas hamnar alla bilagor från varje fil i en ZIP. Filnamnen bevaras från de ursprungliga inbäddningarna.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Lägg till bilagor](./add-attachments)
|
||||
- [Redigera bilagor](./edit-attachments)
|
||||
- [Extrahera bilder](./extract-images)
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
title: Extrahera bilder
|
||||
description: Extrahera alla inbäddade bilder från PDF-filer. Förhandsgranska dem i ett rutnät och ladda ner dem enskilt eller som ett ZIP-arkiv.
|
||||
---
|
||||
|
||||
# Extrahera bilder
|
||||
|
||||
Hämtar ut alla inbäddade bilder från en eller flera PDF-filer. Extraherade bilder visas i ett förhandsgranskningsrutnät där du kan ladda ner dem enskilt, eller ta allt på en gång som en ZIP. Drivs av PyMuPDF.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en eller flera PDF-filer genom att klicka på släppytan eller dra filer dit. Lägg till fler filer eller ta bort enskilda efter behov.
|
||||
2. Klicka på **Extrahera** för att starta bearbetningen.
|
||||
3. Verktyget söker igenom varje sida i varje uppladdad PDF och hittar och extraherar inbäddade bilder.
|
||||
4. Extraherade bilder visas i ett rutnät med miniatyrer. Varje bild har en nedladdningsknapp.
|
||||
5. Klicka på **Ladda ner alla** för att spara allt som ett ZIP-arkiv.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Det här verktyget har inga konfigurerbara alternativ. Alla inbäddade bilder extraheras i sitt ursprungliga format (vanligtvis PNG, JPEG eller vilket format som användes när bilden bäddades in i PDF-filen).
|
||||
|
||||
## Utdataformat
|
||||
|
||||
- Bilder visas i ett förhandsgranskningsrutnät med namnen `image_1.png`, `image_2.jpg` osv.
|
||||
- **Ladda ner alla** ger `extracted-images.zip` med alla bilder.
|
||||
- Enskilda bilder kan laddas ner en i taget från rutnätet.
|
||||
|
||||
## Användningsfall
|
||||
|
||||
- Återskapa foton eller grafik från en PDF för återanvändning i ett annat projekt.
|
||||
- Extrahera produktbilder från en katalog-PDF för en e-handelsannons.
|
||||
- Hämta ut diagram från teknisk dokumentation för användning i presentationer.
|
||||
- Granska vilka bilder som är inbäddade i ett dokument innan det delas.
|
||||
|
||||
## Tips
|
||||
|
||||
- Verktyget extraherar bilder precis som de lagras i PDF-filen. Det återger inte sidor som bilder. För det, använd [PDF till PNG](./pdf-to-png) eller [PDF till JPG](./pdf-to-jpg).
|
||||
- Om verktyget rapporterar "Inga bilder hittades" kan PDF-filen använda vektorgrafik i stället för inbäddade rasterbilder, eller så kan det vara ett skannat dokument där hela sidan är en enda stor bild.
|
||||
- Batchbearbetning fungerar över flera PDF-filer. Alla bilder från alla filer kombineras i ett enda rutnät och en enda ZIP.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [PDF till PNG](./pdf-to-png)
|
||||
- [PDF till JPG](./pdf-to-jpg)
|
||||
- [PDF-arbetsflödesbyggare](./pdf-workflow)
|
||||
@@ -0,0 +1,41 @@
|
||||
---
|
||||
title: Extrahera sidor
|
||||
description: Spara ett visst sidintervall från en PDF som ett nytt dokument.
|
||||
---
|
||||
|
||||
# Extrahera sidor
|
||||
|
||||
Hämta ut en uppsättning sidor ur en PDF och spara dem som en ny fil. Ange exakt vilka sidor du vill ha med intervallsyntax, så skapar verktyget en ren PDF som bara innehåller de sidorna.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en PDF-fil. Verktyget visar filnamn, storlek och totalt sidantal.
|
||||
2. Ange sidorna du vill extrahera med intervallsyntax (t.ex. `1-5`, `3, 7, 10-12`).
|
||||
3. Välj eventuellt att ladda ner varje intervall som en separat PDF i ett ZIP-arkiv.
|
||||
4. Klicka på bearbetningsknappen. De extraherade sidorna laddas ner som en ny PDF (eller ZIP).
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Flexibel syntax för sidintervall: enskilda sidor, intervall eller kommaseparerade kombinationer
|
||||
- Visar totalt sidantal efter uppladdning för enkel referens
|
||||
- Alternativ att mata ut en enda kombinerad PDF eller separata filer i en ZIP
|
||||
- Bevarar originalsidornas innehåll och formatering
|
||||
|
||||
## Användningsfall
|
||||
|
||||
- Hämta ut sammanfattningen (de första sidorna) ur en lång rapport
|
||||
- Extrahera ett enskilt kapitel ur en läroboks-PDF
|
||||
- Spara vissa sidor från ett formulärpaket som fristående dokument
|
||||
- Skapa ett exempeldokument av utvalda sidor från en större fil
|
||||
|
||||
## Tips
|
||||
|
||||
- Sidnumren börjar på 1. Använd `1` för första sidan, inte `0`.
|
||||
- För att ta bort sidor i stället för att extrahera dem, använd [Ta bort sidor](./delete-pages), som är den omvända åtgärden.
|
||||
- Om du behöver visuellt sidval med miniatyrer, använd [Dela PDF](./split-pdf) i läget Visuellt val.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Dela PDF](./split-pdf)
|
||||
- [Ta bort sidor](./delete-pages)
|
||||
- [Sammanfoga PDF](./merge-pdf)
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
title: Extrahera PDF-tabeller
|
||||
description: Identifiera och extrahera tabeller från PDF-dokument. Exportera som CSV, JSON eller Markdown med tabell för tabell.
|
||||
---
|
||||
|
||||
# Extrahera PDF-tabeller
|
||||
|
||||
Identifierar alla tabeller i en PDF och låter dig exportera dem i valfritt format: CSV, JSON eller Markdown. Varje tabell extraheras enskilt med metadata om sida och position. Drivs av PyMuPDF:s tabelldetekteringsmotor.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en PDF genom att klicka på släppytan eller dra en fil dit.
|
||||
2. Välj önskat **exportformat**: CSV, JSON eller Markdown.
|
||||
3. Klicka på **Extrahera** för att starta bearbetningen.
|
||||
4. Om en tabell hittas laddas den ner som en enskild fil. Flera tabeller ger ett ZIP-arkiv med en fil per tabell.
|
||||
|
||||
## Alternativ
|
||||
|
||||
- **Exportformat**: välj mellan:
|
||||
- **CSV**: kommaseparerade värden med korrekt citering för fält som innehåller kommatecken, citattecken eller radbrytningar. Lämpligt för kalkylblad och databaser.
|
||||
- **JSON**: struktur med matris av matriser, formaterad med 2 blanksteg indrag. Lämpligt för programmatisk användning.
|
||||
- **Markdown**: tabellformat avgränsat med lodräta streck, återgivet av PyMuPDF. Lämpligt för dokumentation och README-filer.
|
||||
|
||||
## Utdataformat
|
||||
|
||||
- **En tabell**: `filename_table.csv` (eller `.json` / `.md`)
|
||||
- **Flera tabeller**: `filename_tables.zip` med filer som heter `table_1_page3.csv`, `table_2_page5.csv` osv.
|
||||
|
||||
## Användningsfall
|
||||
|
||||
- Extrahera vissa tabeller från långa PDF-rapporter utan att hämta ut hela dokumentets data.
|
||||
- Få tabeller i Markdown-format för att klistra in direkt i GitHub-ärenden, wikis eller dokumentation.
|
||||
- Hämta ut strukturerad JSON-data från PDF-tabeller för API-integrationer eller skript.
|
||||
- Jämföra tabeller mellan olika PDF-versioner genom att exportera båda till CSV och jämföra skillnaderna.
|
||||
|
||||
## Tips
|
||||
|
||||
- Det här verktyget ger dig kontroll per tabell. Om du bara vill ha alla tabeller samlade i en enda CSV, använd [PDF till CSV](./pdf-to-csv). För en hel Excel-arbetsbok, använd [PDF till Excel](./pdf-to-excel).
|
||||
- Tabeller som sträcker sig över flera sidor kan identifieras som separata tabeller per sida. Du kan behöva sätta ihop dem manuellt.
|
||||
- Om inga tabeller upptäcks kan PDF-filen vara en skannad bild. Kör den genom OCR först för att lägga till ett textlager.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [PDF till CSV](./pdf-to-csv)
|
||||
- [PDF till Excel](./pdf-to-excel)
|
||||
- [PDF till text](./pdf-to-text)
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: FB2 till PDF
|
||||
description: Konvertera FictionBook-e-böcker (FB2) till PDF i webbläsaren. Gratis, privat, ingen uppladdning till server.
|
||||
---
|
||||
|
||||
# FB2 till PDF
|
||||
|
||||
Konvertera FictionBook 2-filer (FB2) till PDF-dokument. FB2 är ett XML-baserat e-boksformat som är populärt i Ryssland och Östeuropa. Det stöds väl på vissa plattformar men är nästan okänt på andra. Genom att konvertera till PDF blir dina böcker läsbara överallt.
|
||||
|
||||
## Format som stöds
|
||||
|
||||
| Format | Filändelse | Anmärkningar |
|
||||
| :------------ | :--------- | :----------------------- |
|
||||
| FictionBook 2 | `.fb2` | XML-baserat e-boksformat |
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Klicka på uppladdningsytan eller dra och släpp dina FB2-filer. Du kan välja flera filer på en gång.
|
||||
2. Granska fillistan. Använd papperskorgsikonen för att ta bort enskilda poster, eller **Lägg till fler filer** för att lägga till fler.
|
||||
3. Klicka på **Konvertera till PDF**. PyMuPDF-motorn tolkar FB2:s XML-struktur och återger den som paginerat PDF-innehåll.
|
||||
4. En fil laddas ned direkt som PDF. Flera konverteringar paketeras i `fb2-converted.zip`.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Ingen konfiguration behövs. Konverteraren hanterar FB2:s XML-struktur automatiskt och bevarar kapitelbrytningar, formatering och eventuella inbäddade bilder.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Läsa FB2-e-böcker på enheter eller appar som bara stöder PDF
|
||||
- Skriva ut rysk litteratur som distribueras i FB2-format
|
||||
- Arkivera ett FB2-bibliotek i ett format som stöds överallt
|
||||
- Dela en bok med någon vars läsare inte stöder FictionBook
|
||||
|
||||
## Tips
|
||||
|
||||
- FB2-filer är vanlig XML, så de är oftast små och konverteras snabbt även i webbläsaren.
|
||||
- Om dina FB2-filer är komprimerade som `.fb2.zip` ska du packa upp dem innan du laddar upp dem.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [EPUB till PDF](./epub-to-pdf)
|
||||
- [MOBI till PDF](./mobi-to-pdf)
|
||||
- [XML till PDF](./xml-to-pdf)
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: Fixa sidstorlek
|
||||
description: Standardisera alla sidor i en PDF till en enhetlig storlek. Välj bland vanliga pappersstorlekar eller ange egna mått.
|
||||
---
|
||||
|
||||
# Fixa sidstorlek
|
||||
|
||||
PDF-filer som sätts ihop från flera källor får ofta sidor med olika storlek: vissa Letter, vissa A4, vissa helt ostandardiserade. Det här verktyget tvingar alla sidor till en enda målstorlek och skalar innehållet så att det passar eller fyller sidan.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en PDF-fil.
|
||||
2. Välj en **Målsidstorlek** i listan (A4, Letter, Legal, A3, A5, Tabloid eller Anpassad).
|
||||
3. Välj **Orientering**: Auto behåller varje sidas ursprungliga orientering, eller så kan du tvinga Stående eller Liggande.
|
||||
4. Välj ett **Innehållsskalningsläge**: Anpassa (bevarar allt innehåll, kan lägga till marginaler) eller Fyll (fyller sidan, kan beskära kanter).
|
||||
5. Ställ eventuellt in en **Bakgrundsfärg** för tillagda marginaler.
|
||||
6. Klicka på **Fixa sidstorlek**.
|
||||
|
||||
## Alternativ
|
||||
|
||||
- **Standardstorlekar**: A4, Letter, Legal, A3, A5, Tabloid
|
||||
- **Egna mått**: Ange bredd och höjd i tum eller millimeter
|
||||
- **Orientering**: Auto, Stående, Liggande
|
||||
- **Skalningsläge**: Anpassa eller Fyll (beskär)
|
||||
- **Bakgrundsfärg**: Valfri färg för marginalutfyllnad
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Normalisera en sammanfogad PDF där sidorna kommer från olika skannrar
|
||||
- Konvertera ett US Letter-dokument till A4 för internationell distribution
|
||||
- Förbereda tryckklara PDF-filer som kräver en enhetlig beskärningsstorlek
|
||||
- Rätta till sidor som avviker något från standard (t.ex. 8,49 x 11,02 tum i stället för 8,5 x 11)
|
||||
|
||||
## Tips
|
||||
|
||||
- Använd läget Anpassa för att garantera att inget innehåll går förlorat. Läget Fyll ser renare ut men kan klippa kanter.
|
||||
- Kontrollera resultatet med verktyget Sidmått för att bekräfta att varje sida matchar målet.
|
||||
- Vit är standardbakgrundsfärg. Byt till en mörk färg om ditt dokument har mörka marginaler.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Sidmått](./page-dimensions): granska sidstorlekar före och efter åtgärden
|
||||
- [Komprimera PDF](./compress-pdf): minska filstorleken efter standardiseringen
|
||||
- [Beskär PDF](./crop-pdf): beskär sidor manuellt i stället för att skala automatiskt
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
title: Platta till PDF
|
||||
description: Platta till interaktiva formulär och anteckningar till statiskt innehåll. Gör formulärfält icke-redigerbara och bränner in anteckningar på sidan.
|
||||
---
|
||||
|
||||
# Platta till PDF
|
||||
|
||||
Utplattning slår ihop interaktiva element (formulärfält, listrutor, kryssrutor, anteckningar, markeringar, klisterlappar) direkt med sidinnehållet. Det visuella utseendet förblir detsamma, men inget går längre att redigera eller extrahera. Det är PDF-motsvarigheten till att skriva ut ett ifyllt formulär och skanna in det igen, fast kvaliteten förblir perfekt.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en eller flera PDF-filer.
|
||||
2. Klicka på **Platta till PDF**.
|
||||
3. En enskild fil laddas ned direkt. Flera filer ger ett ZIP-arkiv.
|
||||
|
||||
Verktyget använder pdf-lib för att platta till formulärfält (via `form.flatten()`) och en särskild anteckningsutplattare för att bränna in anteckningar i sidflödet. Båda åtgärderna sker i ett enda pass.
|
||||
|
||||
## Vad som plattas till
|
||||
|
||||
- **Formulärfält**: Textfält, kryssrutor, alternativknappar, listrutor, signaturfält
|
||||
- **Anteckningar**: Kommentarer, markeringar, genomstrykning, understrykning, klisterlappar, stämplar, pennanteckningar
|
||||
- **Interaktiva element**: Knappar, åtgärdsutlösare
|
||||
|
||||
## Vad som förblir oförändrat
|
||||
|
||||
- Textinnehåll (förblir markerbart och sökbart)
|
||||
- Bilder och grafik
|
||||
- Sidlayout och sidmått
|
||||
- Bokmärken och innehållsförteckning
|
||||
- Hyperlänkar (om de inte är anteckningsbaserade)
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Låsa ett ifyllt formulär så att mottagare inte kan ändra de inskickade svaren
|
||||
- Förbereda en PDF för arkivering där interaktiva element är onödiga
|
||||
- Åtgärda visningsproblem som orsakas av att anteckningar renderas olika i olika läsare
|
||||
- Säkerställa att ett signerat dokument inte kan ändras efter att signaturen lagts till
|
||||
- Minska filstorleken genom att ta bort formulärfältsdefinitioner och anteckningsobjekt
|
||||
|
||||
## Tips
|
||||
|
||||
- Platta till först när alla redigeringar är klara. Det går inte att ångra utplattningen av en PDF.
|
||||
- Om du behöver platta till och dessutom ta bort metadata, JavaScript och bilagor, använd verktyget Sanera PDF i stället. Det har utplattning som ett av sina alternativ.
|
||||
- Vissa PDF-filer rapporterar "inget formulär hittades". Det är normalt om dokumentet bara har anteckningar och inga formulärfält.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Sanera PDF](./sanitize-pdf): platta till formulär och ta bort metadata, skript och mer
|
||||
- [Rasterisera PDF](./rasterize-pdf): konvertera till bildbaserad PDF för maximal utplattning
|
||||
- [Typsnitt till kontur](./font-to-outline): platta till typsnitt till vektorbanor
|
||||
- [Skydda PDF](./protect-pdf): lås den utplattade PDF-filen med ett lösenord
|
||||
@@ -0,0 +1,52 @@
|
||||
---
|
||||
title: Typsnitt till kontur
|
||||
description: Konvertera alla typsnitt i en PDF till vektorkonturer för enhetlig rendering på alla enheter. Eliminerar problem med typsnittsberoende.
|
||||
---
|
||||
|
||||
# Typsnitt till kontur
|
||||
|
||||
När typsnitt konverteras till konturer omvandlas varje textteckens glyf till en vektorbana. PDF-filen är då inte längre beroende av några installerade typsnitt: den renderas identiskt på varje enhet, i varje operativsystem och på varje skrivare. Det är ett standardsteg i tryckförberedelser.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en eller flera PDF-filer.
|
||||
2. Klicka på **Konvertera till konturer**.
|
||||
3. Ghostscript konverterar all text till vektorbanor.
|
||||
4. Ladda ned resultatet. Flera filer ger ett ZIP-arkiv.
|
||||
|
||||
Det finns inga inställningar att konfigurera. Verktyget använder Ghostscript (WebAssembly) för att konvertera alla typsnittsreferenser till konturbanor i ett enda pass.
|
||||
|
||||
## Vad som ändras
|
||||
|
||||
- Teckentext blir vektorkurvor (bézierbanor)
|
||||
- Typsnittsinbäddning behövs inte längre, PDF-filen är självständig på glyfnivå
|
||||
- Filstorleken kan öka eftersom vektorbanor oftast är större än typsnittsreferenser
|
||||
- Det visuella utseendet bevaras exakt
|
||||
|
||||
## Vad du förlorar
|
||||
|
||||
- Textmarkering och kopiera-klistra
|
||||
- Textsökbarhet (Ctrl+F slutar fungera)
|
||||
- Möjligheten att redigera textinnehållet
|
||||
- Tillgänglighet för skärmläsare
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Skicka PDF-filer till ett tryckeri som kräver konturerade typsnitt
|
||||
- Dela dokument som använder egna eller licensierade typsnitt med personer som inte har dessa typsnitt
|
||||
- Förhindra typsnittsersättning som ändrar dokumentets utseende på andra system
|
||||
- Förbereda PDF-filer för lasergravyr eller CNC-skärning som kräver vektorindata
|
||||
- Säkerställa att en logotyptung PDF visas korrekt på alla plattformar
|
||||
|
||||
## Tips
|
||||
|
||||
- Behåll din ursprungliga PDF. Konturering går inte att ångra, du kan inte konvertera banor tillbaka till redigerbar text.
|
||||
- Om texten ska förbli sökbar kan du i stället överväga verktyget Rasterisera PDF med OCR som efterföljande steg.
|
||||
- Konturerade PDF-filer tenderar att bli större. Kör Komprimera PDF efteråt om filstorleken är viktig.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Platta till PDF](./flatten-pdf): platta till formulär och anteckningar utan att röra typsnitt
|
||||
- [Rasterisera PDF](./rasterize-pdf): konvertera till bildbaserad PDF i stället för vektorkonturer
|
||||
- [Komprimera PDF](./compress-pdf): minska filstorleken efter konturering
|
||||
- [PDF till PDF/A](./pdf-to-pdfa): konvertera för arkivering efter att typsnittsoberoende säkerställts
|
||||
@@ -0,0 +1,76 @@
|
||||
---
|
||||
title: Skapa PDF-formulär
|
||||
description: Bygg ifyllbara PDF-formulär med dra-och-släpp-textfält, kryssrutor, listrutor, alternativknappar med mera.
|
||||
---
|
||||
|
||||
# Skapa PDF-formulär
|
||||
|
||||
Designa professionella ifyllbara PDF-formulär från grunden eller genom att lägga till fält i en befintlig PDF. Den visuella redigeraren låter dig dra och släppa formulärelement (textfält, kryssrutor, listrutor, alternativknappar, signaturfält med mera) direkt på sidförhandsvisningar. Konfigurera fältegenskaper, ställ in regler för villkorlig synlighet och exportera ett fullt interaktivt PDF-formulär.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en befintlig PDF **eller** klicka på **Skapa tom PDF** för att börja från början.
|
||||
2. Om du skapar en tom PDF väljer du en sidstorlek (Letter, A4, A5, Legal, Tabloid, A3 eller egna mått).
|
||||
3. Formulärredigeraren öppnas med ett verktygsfält med fälttyper och ett sidförhandsvisningsområde.
|
||||
4. Välj en fälttyp i verktygsfältet och klicka sedan på sidan för att placera den.
|
||||
5. Dra fält för att flytta dem. Använd storlekshandtagen för att justera måtten.
|
||||
6. Klicka på ett fält för att öppna egenskapspanelen där du kan ange fältnamn, standardvärde, teckenstorlek, justering med mera.
|
||||
7. Navigera mellan sidor med sidkontrollerna.
|
||||
8. Klicka på **Spara** för att ladda ned den färdiga ifyllbara PDF-filen.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Placering av fält med dra och släpp och visuella handtag för storleksändring
|
||||
- Fälttyper: textfält, flerradig text, kryssruta, listruta, alternativknapp, signatur, datum, nummer och streckkod
|
||||
- Egenskapspanel för att konfigurera varje fälts namn, etikett, standardvärde, teckenstorlek, färg, justering och validering
|
||||
- Fältåtgärder och regler för villkorlig synlighet (visa/dölj fält baserat på andra fälts värden)
|
||||
- Sidnavigering för flersidiga formulär
|
||||
- Extrahering av befintliga fält: identifierar och importerar automatiskt formulärfält från uppladdade PDF-filer
|
||||
- Stöd för både uppladdade PDF-filer och tomma sidor som formulärunderlag
|
||||
- Flera förinställda sidstorlekar samt egna mått
|
||||
- Streckkodsgenerering med bwip-js
|
||||
- Hantering av grupper av alternativknappar
|
||||
|
||||
## Alternativ
|
||||
|
||||
**Förinställda sidstorlekar (för tomma PDF-filer):**
|
||||
|
||||
- Letter (8,5" x 11")
|
||||
- A4 (210 mm x 297 mm)
|
||||
- A5 (148 mm x 210 mm)
|
||||
- Legal (8,5" x 14")
|
||||
- Tabloid (11" x 17")
|
||||
- A3 (297 mm x 420 mm)
|
||||
- Anpassad (ange bredd och höjd)
|
||||
|
||||
**Fältegenskaper (varierar efter fälttyp):**
|
||||
|
||||
- Namn, etikett och platshållartext
|
||||
- Standardvärde
|
||||
- Teckensnittsfamilj, storlek och färg
|
||||
- Textjustering (vänster, center, höger)
|
||||
- Reglage för obligatoriskt fält
|
||||
- Reglage för skrivskydd
|
||||
- Maxlängd för textfält
|
||||
- Alternativlista för listrutor och alternativknappar
|
||||
- Åtgärder för villkorlig synlighet
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Bygga introduktionsformulär för nyanställda med textfält för personuppgifter och kryssrutor för bekräftelse av policyer
|
||||
- Skapa kundfrågeformulär med listrutor för val av tjänst
|
||||
- Designa beställningsformulär med beräknade fält och streckkodsidentifierare
|
||||
- Bygga inspektionschecklistor med alternativknappar för godkänt/underkänt
|
||||
- Skapa enkätformulär med villkorliga följdfrågor som visas utifrån svar
|
||||
|
||||
## Tips
|
||||
|
||||
- Om du laddar upp en befintlig PDF försöker verktyget extrahera de formulärfält som redan finns, så att du kan redigera eller lägga till i dem.
|
||||
- Använd funktionen för grupper av alternativknappar för att skapa ömsesidigt uteslutande val. Fält i samma grupp delar gruppnamn.
|
||||
- Testa ditt formulär genom att ladda ned det och öppna det i [Formulärifyllare](./form-filler) för att verifiera fältens beteende.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Formulärifyllare](./form-filler)
|
||||
- [Signera PDF](./sign-pdf)
|
||||
- [PDF-redigerare](./edit-pdf)
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
title: PDF-formulärifyllare
|
||||
description: Fyll i PDF-formulär, inklusive XFA-formulär, direkt i webbläsaren med en inbäddad visare.
|
||||
---
|
||||
|
||||
# PDF-formulärifyllare
|
||||
|
||||
Öppna en PDF med formulärfält och fyll i den direkt i en inbäddad visare. Verktyget stöder både vanliga AcroForm-fält och äldre XFA-formulär (XML Forms Architecture). När du har fyllt i formuläret laddar du ned den ifyllda versionen med ett enda klick.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en PDF som innehåller formulärfält.
|
||||
2. Dokumentet öppnas i en integrerad PDF-visare som återger formulärfält som interaktiva inmatningsfält.
|
||||
3. Klicka på textfält, kryssrutor, listrutor och alternativknappar för att fylla i dem.
|
||||
4. Klicka på **Spara och ladda ned ifyllt formulär** för att få den färdiga PDF-filen.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Inbäddad PDF.js-visare med full interaktion med formulärfält
|
||||
- Stöd för vanliga AcroForm-fält (textfält, kryssrutor, listrutor, alternativknappar)
|
||||
- XFA-formulärstöd för äldre XML-baserade formulär
|
||||
- Automatisk anpassning av visarens storlek efter sidmåtten
|
||||
- Filvisning med namn och storlek
|
||||
|
||||
## Alternativ
|
||||
|
||||
Det finns inga ytterligare konfigurationsalternativ. Ladda upp formuläret, fyll i det och ladda ned.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Fylla i skatteformulär, försäkringsansökningar eller myndighetsblanketter
|
||||
- Fylla i jobbansökningsformulär som mottagits som PDF-bilagor
|
||||
- Fylla i leverantörsregistreringar eller leverantörsenkäter
|
||||
- Intyga efterlevnadschecklistor med kryssrutefält
|
||||
- Fylla i medicinska anamnesformulär före ett besök
|
||||
|
||||
## Tips
|
||||
|
||||
- XFA-formulär är ett äldre format som bara stöds av vissa PDF-visare. Om du öppnar en XFA-PDF i Chrome eller de flesta andra verktyg och ser tomma sidor beror det på att dessa visare saknar XFA-stöd. BentoPDF:s Formulärifyllare och Firefox hanterar båda XFA korrekt.
|
||||
- För PDF-filer utan befintliga formulärfält, använd verktyget [Skapa PDF-formulär](./form-creator) för att lägga till fält först och fyll sedan i dem här.
|
||||
- Visaren anpassar automatiskt sin storlek efter PDF-filens sidmått.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Skapa PDF-formulär](./form-creator)
|
||||
- [Signera PDF](./sign-pdf)
|
||||
- [PDF-redigerare](./edit-pdf)
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
title: Sidhuvud & sidfot
|
||||
description: Lägg till anpassningsbar sidhuvuds- och sidfotstext på PDF-sidor med dynamiska variabler för sidnummer.
|
||||
---
|
||||
|
||||
# Sidhuvud & sidfot
|
||||
|
||||
Lägg till text på sex positioner på dina PDF-sidor: sidhuvud vänster, sidhuvud center, sidhuvud höger, sidfot vänster, sidfot center och sidfot höger. Verktyget stöder dynamiska variabler för sidnummer och totalt antal sidor, så att du kan skapa mallar som "Sida 3 av 10" som uppdateras automatiskt för varje sida.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp din PDF-fil.
|
||||
2. Alternativpanelen visas med formateringskontroller och sex textfält.
|
||||
3. Ange önskad text i valfri sidhuvuds- eller sidfotsposition.
|
||||
4. Använd platshållarna `{page}` och `{total}` för dynamisk sidnumrering.
|
||||
5. Justera teckenstorlek och teckenfärg, och begränsa eventuellt till ett specifikt sidintervall.
|
||||
6. Klicka på **Lägg till sidhuvud och sidfot** för att bearbeta och ladda ned.
|
||||
|
||||
## Alternativ
|
||||
|
||||
- **Sidintervall**: Begränsa eventuellt vilka sidor som får sidhuvud och sidfot. Lämna tomt för att tillämpa på alla sidor. Format: "1-3, 5" (kommaseparerade intervall).
|
||||
- **Teckenstorlek**: Mellan 6 och 24 punkter. Standard är 10.
|
||||
- **Teckenfärg**: Välj valfri färg med färgväljaren.
|
||||
- **Sidhuvud vänster / center / höger**: Textfält för toppen av varje sida.
|
||||
- **Sidfot vänster / center / höger**: Textfält för botten av varje sida.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Sex oberoende textpositioner per sida
|
||||
- Dynamisk variabel `{page}` som infogar aktuellt sidnummer
|
||||
- Dynamisk variabel `{total}` som infogar totalt antal sidor
|
||||
- Sidintervallfiltrering för att rikta in sig på specifika sidor
|
||||
- Anpassningsbar teckenstorlek och färg
|
||||
- Typsnittet Helvetica för ett rent, professionellt resultat
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Lägga till "Sida {page} av {total}" i sidfot center i en rapport
|
||||
- Placera ett företagsnamn i sidhuvud vänster och ett dokumentdatum i sidhuvud höger
|
||||
- Lägga till sekretessmeddelanden i sidfoten i juridiska dokument
|
||||
- Stämpla dokumentrevisionsnummer på specifika sidintervall
|
||||
|
||||
## Tips
|
||||
|
||||
- Kombinera `{page}` och `{total}` i ett enda fält för format som "Sida {page} av {total}" eller "{page}/{total}".
|
||||
- Du kan lämna de flesta fält tomma och bara fylla i de positioner du behöver. Tomma fält hoppas helt enkelt över.
|
||||
- För mer komplexa sidhuvuden med bilder eller logotyper, överväg att använda verktyget [Lägg till vattenstämpel](./add-watermark) placerat överst på sidan.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Sidnummer](./page-numbers)
|
||||
- [Lägg till vattenstämpel](./add-watermark)
|
||||
- [Bates-numrering](./bates-numbering)
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
title: HEIC till PDF
|
||||
description: Konvertera HEIC- och HEIF-bilder från iPhone och iPad till PDF direkt i webbläsaren.
|
||||
---
|
||||
|
||||
# HEIC till PDF
|
||||
|
||||
Konvertera HEIC/HEIF-bilder till PDF. HEIC har varit standardformatet för foton på iPhone och iPad sedan iOS 11. Med det här verktyget kan du göra om dessa foton till PDF-filer utan att installera någon skrivbordsprogramvara eller ladda upp filer till en server.
|
||||
|
||||
## Format som stöds
|
||||
|
||||
| Format | Filändelser |
|
||||
| :----- | :---------- |
|
||||
| HEIC | `.heic` |
|
||||
| HEIF | `.heif` |
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Klicka på uppladdningsytan eller dra och släpp dina HEIC/HEIF-filer.
|
||||
2. Granska fillistan och ta bort oönskade filer.
|
||||
3. Klicka på **Konvertera till PDF**. Resultatet laddas ned som `from_heic.pdf`.
|
||||
|
||||
Varje HEIC-fil avkodas med biblioteket heic2any, som konverterar den till PNG med 92 % kvalitet. PNG-filen bäddas sedan in i PDF-filen med pdf-lib, med varje bild på en egen sida i full upplösning.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Det här verktyget har inga ytterligare inställningar. HEIC-bilder konverteras med hög kvalitet (0,92) till PNG innan de bäddas in.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Skapa en PDF av iPhone-foton att bifoga till ett försäkringsärende eller en rapport
|
||||
- Konvertera HEIC-foton till en bostadsannons och samla dem i ett enda utskrivbart dokument
|
||||
- Göra om skärmbilder från iPad (HEIF-format) till en delbar PDF
|
||||
- Batchkonvertera semesterbilder till en resedagbok
|
||||
|
||||
## Tips
|
||||
|
||||
- HEIC-avkodningen sker helt i webbläsaren med WebAssembly. Den första konverteringen kan ta en stund medan avkodaren laddas.
|
||||
- Om du behöver blanda HEIC med andra bildformat (JPG, PNG osv.), använd verktyget [Bilder till PDF](./image-to-pdf), som hanterar HEIC tillsammans med alla andra format.
|
||||
- HEIC-filer från iPhone innehåller ofta EXIF-data, inklusive GPS-koordinater. PDF-resultatet för inte vidare dessa metadata.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Bilder till PDF](./image-to-pdf)
|
||||
- [JPG till PDF](./jpg-to-pdf)
|
||||
- [PNG till PDF](./png-to-pdf)
|
||||
@@ -0,0 +1,65 @@
|
||||
---
|
||||
title: Bilder till PDF
|
||||
description: Konvertera JPG, PNG, BMP, GIF, TIFF, SVG, HEIC, WebP, PSD och över 10 andra bildformat till en enda PDF-fil.
|
||||
---
|
||||
|
||||
# Bilder till PDF
|
||||
|
||||
Den universella konverteraren från bild till PDF. Ladda upp bilder i praktiskt taget vilket format som helst och kombinera dem till ett enda PDF-dokument. Varje bild får en egen sida, anpassad efter originalmåtten.
|
||||
|
||||
## Format som stöds
|
||||
|
||||
| Format | Filändelser |
|
||||
| :-------------- | :------------------------------------- |
|
||||
| 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` |
|
||||
|
||||
Det här är det bredaste formatstödet av alla bildkonverterare i BentoPDF. Om du bara behöver ett specifikt format kan du använda ett av de dedikerade verktygen i stället.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Klicka på uppladdningsytan eller dra och släpp dina bildfiler. Du kan välja flera filer på en gång.
|
||||
2. Granska fillistan. Ta bort oönskade filer med papperskorgsikonen, eller klicka på **Lägg till fler filer** för att lägga till fler bilder.
|
||||
3. Välj en **PDF-kvalitet** i listan.
|
||||
4. Klicka på **Konvertera till PDF**. Verktyget bearbetar bilderna med PyMuPDF-motorn och laddar ned resultatet som `images_to_pdf.pdf`.
|
||||
|
||||
## Alternativ
|
||||
|
||||
**PDF-kvalitet** styr den bildkomprimering som används när bilderna bäddas in i PDF-filen:
|
||||
|
||||
- **Hög kvalitet**: minimal komprimering, större filstorlek. Bäst för tryck eller arkivering.
|
||||
- **Medelhög kvalitet** (standard): balanserad komprimering. Passar de flesta ändamål.
|
||||
- **Låg kvalitet**: kraftig komprimering, minsta filstorlek. Lämplig för e-post eller snabb delning.
|
||||
|
||||
HEIC- och WebP-filer konverteras automatiskt till PNG innan de bäddas in. Det sker transparent och kräver inga extra steg.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Kombinera skannade kvitton eller dokument från en mobilkamera till en PDF
|
||||
- Skapa en fotoportfölj eller lookbook av bilder i blandade format
|
||||
- Konvertera iPhone-foton (HEIC) till en delbar PDF utan att installera skrivbordsprogramvara
|
||||
- Sätta ihop designskisser från PSD-exporter och skärmbilder till en kundleverans
|
||||
- Arkivera en mapp med äldre bildformat (PNM, JXR, JP2) som en enda PDF
|
||||
|
||||
## Tips
|
||||
|
||||
- Bildernas ordning i PDF-filen följer ordningen i fillistan. Ladda upp dem i den ordning du vill ha.
|
||||
- Välj Låg kvalitet för minsta möjliga filstorlek. Den visuella skillnaden är ofta försumbar för textrika skanningar.
|
||||
- Om du bara har ett bildformat ger de dedikerade konverterarna (JPG till PDF, PNG till PDF osv.) samma resultat med ett enklare gränssnitt.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [JPG till PDF](./jpg-to-pdf)
|
||||
- [PNG till PDF](./png-to-pdf)
|
||||
- [HEIC till PDF](./heic-to-pdf)
|
||||
- [WebP till PDF](./webp-to-pdf)
|
||||
@@ -0,0 +1,183 @@
|
||||
# Verktygsreferens
|
||||
|
||||
BentoPDF erbjuder **över 130 verktyg** för att arbeta med PDF-filer. Alla verktyg körs helt i din webbläsare: dina filer lämnar aldrig din enhet.
|
||||
|
||||
---
|
||||
|
||||
## Redigera & kommentera
|
||||
|
||||
Ändra, markera och förbättra dina PDF-dokument med en komplett uppsättning redigeringsverktyg.
|
||||
|
||||
<div class="tool-grid">
|
||||
|
||||
- [**PDF-redigerare**](./edit-pdf): Kommentera, markera, maskera, skriv kommentarer, lägg till former/bilder, sök och visa PDF-filer.
|
||||
- [**Redigera bokmärken**](./bookmark): Lägg till, redigera, importera, ta bort och extrahera PDF-bokmärken.
|
||||
- [**Innehållsförteckning**](./table-of-contents): Skapa en innehållsförteckningssida från PDF-bokmärken.
|
||||
- [**Sidnummer**](./page-numbers): Infoga sidnummer i ditt dokument.
|
||||
- [**Lägg till sidetiketter**](./add-page-labels): Använd PDF-sidetiketter med romerska siffror, prefix och egna startvärden.
|
||||
- [**Bates-numrering**](./bates-numbering): Lägg till löpande Bates-nummer i en eller flera PDF-filer.
|
||||
- [**Lägg till vattenstämpel**](./add-watermark): Stämpla text eller en bild över dina PDF-sidor.
|
||||
- [**Sidhuvud & sidfot**](./header-footer): Lägg till text överst och nederst på sidorna.
|
||||
- [**Invertera färger**](./invert-colors): Skapa en version av din PDF i mörkt läge.
|
||||
- [**Skannereffekt**](./scanner-effect): Få din PDF att se ut som ett skannat dokument.
|
||||
- [**Justera färger**](./adjust-colors): Finjustera ljusstyrka, kontrast, mättnad och mer.
|
||||
- [**Bakgrundsfärg**](./background-color): Ändra bakgrundsfärgen i din PDF.
|
||||
- [**Ändra textfärg**](./text-color): Ändra färgen på texten i din PDF.
|
||||
- [**Signera PDF**](./sign-pdf): Rita, skriv eller ladda upp din signatur.
|
||||
- [**Lägg till stämplar**](./add-stamps): Lägg till bildstämplar i din PDF med anteckningsverktygsfältet.
|
||||
- [**Ta bort anteckningar**](./remove-annotations): Ta bort kommentarer, markeringar och länkar.
|
||||
- [**Beskär PDF**](./crop-pdf): Trimma marginalerna på varje sida i din PDF.
|
||||
- [**PDF-formulärifyllare**](./form-filler): Fyll i formulär direkt i webbläsaren. Stöder även XFA-formulär.
|
||||
- [**Skapa PDF-formulär**](./form-creator): Skapa ifyllbara PDF-formulär med textfält som du drar och släpper.
|
||||
- [**Ta bort tomma sidor**](./remove-blank-pages): Identifiera och ta bort tomma sidor automatiskt.
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
## Konvertera till PDF
|
||||
|
||||
Gör om bilder, dokument, e-böcker och andra filformat till PDF.
|
||||
|
||||
<div class="tool-grid">
|
||||
|
||||
- [**Bilder till PDF**](./image-to-pdf): Konvertera JPG, PNG, BMP, GIF, TIFF, SVG, HEIC, WebP med flera till PDF.
|
||||
- [**JPG till PDF**](./jpg-to-pdf): Skapa en PDF från en eller flera JPG-bilder.
|
||||
- [**PNG till PDF**](./png-to-pdf): Skapa en PDF från en eller flera PNG-bilder.
|
||||
- [**WebP till PDF**](./webp-to-pdf): Skapa en PDF från en eller flera WebP-bilder.
|
||||
- [**SVG till PDF**](./svg-to-pdf): Skapa en PDF från en eller flera SVG-bilder.
|
||||
- [**BMP till PDF**](./bmp-to-pdf): Skapa en PDF från en eller flera BMP-bilder.
|
||||
- [**HEIC till PDF**](./heic-to-pdf): Skapa en PDF från en eller flera HEIC-bilder.
|
||||
- [**TIFF till PDF**](./tiff-to-pdf): Skapa en PDF från en eller flera TIFF-bilder.
|
||||
- [**Text till PDF**](./txt-to-pdf): Konvertera en vanlig textfil till en PDF.
|
||||
- [**Markdown till PDF**](./markdown-to-pdf): Konvertera Markdown till PDF med liveförhandsgranskning och syntaxmarkering.
|
||||
- [**JSON till PDF**](./json-to-pdf): Konvertera JSON-filer till PDF-format.
|
||||
- [**ODT till PDF**](./odt-to-pdf): Konvertera ODT-filer (OpenDocument Text) till PDF.
|
||||
- [**CSV till PDF**](./csv-to-pdf): Konvertera CSV-kalkylblad till PDF.
|
||||
- [**RTF till PDF**](./rtf-to-pdf): Konvertera RTF-dokument (Rich Text Format) till PDF.
|
||||
- [**Word till PDF**](./word-to-pdf): Konvertera Word-dokument (DOCX, DOC, ODT) till PDF.
|
||||
- [**Excel till PDF**](./excel-to-pdf): Konvertera Excel-kalkylblad (XLSX, XLS, ODS) till PDF.
|
||||
- [**PowerPoint till PDF**](./powerpoint-to-pdf): Konvertera PowerPoint-presentationer (PPTX, PPT, ODP) till PDF.
|
||||
- [**XPS till PDF**](./xps-to-pdf): Konvertera XPS/OXPS-dokument till PDF.
|
||||
- [**MOBI till PDF**](./mobi-to-pdf): Konvertera MOBI-e-böcker till PDF.
|
||||
- [**EPUB till PDF**](./epub-to-pdf): Konvertera EPUB-e-böcker till PDF.
|
||||
- [**FB2 till PDF**](./fb2-to-pdf): Konvertera FictionBook-e-böcker (FB2) till PDF.
|
||||
- [**CBZ till PDF**](./cbz-to-pdf): Konvertera serietidningsarkiv (CBZ/CBR) till PDF.
|
||||
- [**WPD till PDF**](./wpd-to-pdf): Konvertera WordPerfect-dokument (WPD) till PDF.
|
||||
- [**WPS till PDF**](./wps-to-pdf): Konvertera WPS Office-dokument till PDF.
|
||||
- [**XML till PDF**](./xml-to-pdf): Konvertera XML-dokument till PDF.
|
||||
- [**ODG till PDF**](./odg-to-pdf): Konvertera OpenDocument Graphics (ODG) till PDF.
|
||||
- [**ODS till PDF**](./ods-to-pdf): Konvertera OpenDocument Spreadsheet (ODS) till PDF.
|
||||
- [**ODP till PDF**](./odp-to-pdf): Konvertera OpenDocument Presentation (ODP) till PDF.
|
||||
- [**PUB till PDF**](./pub-to-pdf): Konvertera Microsoft Publisher (PUB) till PDF.
|
||||
- [**VSD till PDF**](./vsd-to-pdf): Konvertera Microsoft Visio (VSD, VSDX) till PDF.
|
||||
- [**PSD till PDF**](./psd-to-pdf): Konvertera Adobe Photoshop-filer (PSD) till PDF.
|
||||
- [**E-post till PDF**](./email-to-pdf): Konvertera e-postfiler (EML, MSG) till PDF-format.
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
## Konvertera från PDF
|
||||
|
||||
Extrahera innehåll från PDF-filer till bilder, dokument och dataformat.
|
||||
|
||||
<div class="tool-grid">
|
||||
|
||||
- [**PDF till JPG**](./pdf-to-jpg): Konvertera varje PDF-sida till en JPG-bild.
|
||||
- [**PDF till PNG**](./pdf-to-png): Konvertera varje PDF-sida till en PNG-bild.
|
||||
- [**PDF till WebP**](./pdf-to-webp): Konvertera varje PDF-sida till en WebP-bild.
|
||||
- [**PDF till BMP**](./pdf-to-bmp): Konvertera varje PDF-sida till en BMP-bild.
|
||||
- [**PDF till TIFF**](./pdf-to-tiff): Konvertera varje PDF-sida till en TIFF-bild.
|
||||
- [**PDF till CBZ**](./pdf-to-cbz): Konvertera en PDF till en CBZ (serietidningsarkiv) för serieläsare och Calibre.
|
||||
- [**PDF till SVG**](./pdf-to-svg): Konvertera varje PDF-sida till en skalbar vektorgrafik.
|
||||
- [**PDF till CSV**](./pdf-to-csv): Extrahera tabeller från PDF och konvertera till CSV-format.
|
||||
- [**PDF till Excel**](./pdf-to-excel): Extrahera tabeller från PDF och konvertera till Excel (XLSX).
|
||||
- [**PDF till gråskala**](./pdf-to-greyscale): Konvertera alla färger till svartvitt.
|
||||
- [**PDF till JSON**](./pdf-to-json): Konvertera PDF-filer till JSON-format.
|
||||
- [**PDF till Word**](./pdf-to-word): Konvertera PDF-filer till redigerbara Word-dokument.
|
||||
- [**Extrahera bilder**](./extract-images): Extrahera alla inbäddade bilder från dina PDF-filer.
|
||||
- [**PDF till Markdown**](./pdf-to-markdown): Konvertera PDF-text och tabeller till Markdown-format.
|
||||
- [**Förbered PDF för AI**](./prepare-pdf-for-ai): Extrahera PDF-innehåll som LlamaIndex JSON för RAG/LLM-pipelines.
|
||||
- [**PDF till text**](./pdf-to-text): Extrahera text från PDF-filer och spara som vanlig text.
|
||||
- [**Extrahera PDF-tabeller**](./extract-tables): Extrahera tabeller från PDF-filer som CSV, JSON eller Markdown.
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
## Organisera & hantera
|
||||
|
||||
Ordna om, kombinera, dela och hantera dina PDF-sidor och filer.
|
||||
|
||||
<div class="tool-grid">
|
||||
|
||||
- [**PDF-arbetsflödesbyggare**](./pdf-workflow): Bygg egna PDF-bearbetningskedjor med en visuell nodredigerare.
|
||||
- [**PDF multiverktyg**](./pdf-multi-tool): Fullfjädrad PDF-redigerare med sidhantering.
|
||||
- [**OCR PDF**](./ocr-pdf): Gör en PDF sökbar och kopierbar.
|
||||
- [**Sammanfoga PDF**](./merge-pdf): Kombinera flera PDF-filer till en fil.
|
||||
- [**Alternera & blanda sidor**](./alternate-merge): Sammanfoga PDF-filer genom att alternera sidor från varje PDF.
|
||||
- [**Sortera dubbelsidig skanning**](./duplex-collate): Ordna om block med fram-/baksidesskanningar till rätt sidföljd.
|
||||
- [**Duplicera & organisera**](./organize-pdf): Duplicera, ordna om och ta bort sidor.
|
||||
- [**Lägg till bilagor**](./add-attachments): Bädda in en eller flera filer i din PDF.
|
||||
- [**Extrahera bilagor**](./extract-attachments): Extrahera alla inbäddade filer från PDF-filer som en ZIP.
|
||||
- [**Redigera bilagor**](./edit-attachments): Visa eller ta bort bilagor i din PDF.
|
||||
- [**PDF OCG**](./pdf-layers): Visa, växla, lägg till och ta bort OCG-lager i din PDF.
|
||||
- [**Dela PDF**](./split-pdf): Extrahera ett sidintervall till en ny PDF.
|
||||
- [**Dela sidor**](./divide-pages): Dela sidor horisontellt eller vertikalt.
|
||||
- [**Extrahera sidor**](./extract-pages): Spara ett urval av sidor som nya filer.
|
||||
- [**Ta bort sidor**](./delete-pages): Ta bort specifika sidor från ditt dokument.
|
||||
- [**Lägg till tom sida**](./add-blank-page): Infoga en tom sida var som helst i din PDF.
|
||||
- [**Omvänd sidor**](./reverse-pages): Vänd på ordningen för alla sidor i ditt dokument.
|
||||
- [**Rotera PDF**](./rotate-pdf): Vrid sidor i steg om 90 grader.
|
||||
- [**Rotera efter anpassade grader**](./rotate-custom): Rotera sidor med valfri vinkel.
|
||||
- [**N-Up PDF**](./n-up-pdf): Placera flera sidor på ett enda ark.
|
||||
- [**PDF-broschyr**](./pdf-booklet): Ordna om sidor för dubbelsidig broschyrutskrift.
|
||||
- [**Kombinera till enskild sida**](./combine-single-page): Foga ihop alla sidor till en enda sammanhängande rullning.
|
||||
- [**Visa metadata**](./view-metadata): Granska de dolda egenskaperna i din PDF.
|
||||
- [**Redigera metadata**](./edit-metadata): Ändra författare, titel och andra egenskaper.
|
||||
- [**PDF:er till ZIP**](./pdf-to-zip): Paketera flera PDF-filer i ett ZIP-arkiv.
|
||||
- [**Jämför PDF:er**](./compare-pdfs): Jämför två PDF-filer sida vid sida.
|
||||
- [**Postera PDF**](./posterize-pdf): Dela en stor sida i flera mindre sidor.
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
## Optimera & reparera
|
||||
|
||||
Komprimera, åtgärda och optimera dina PDF-filer för bättre prestanda och kompatibilitet.
|
||||
|
||||
<div class="tool-grid">
|
||||
|
||||
- [**Komprimera PDF**](./compress-pdf): Minska filstorleken på din PDF.
|
||||
- [**PDF till PDF/A**](./pdf-to-pdfa): Konvertera PDF till PDF/A för långtidsarkivering.
|
||||
- [**Fixa sidstorlek**](./fix-page-size): Standardisera alla sidor till en enhetlig storlek.
|
||||
- [**Linjärisera PDF**](./linearize-pdf): Optimera PDF för snabb webbvisning.
|
||||
- [**Sidmått**](./page-dimensions): Analysera sidstorlek, orientering och enheter.
|
||||
- [**Ta bort begränsningar**](./remove-restrictions): Ta bort lösenordsskydd och säkerhetsbegränsningar.
|
||||
- [**Reparera PDF**](./repair-pdf): Återskapa data från skadade eller korrupta PDF-filer.
|
||||
- [**Rasterisera PDF**](./rasterize-pdf): Konvertera PDF till bildbaserad PDF. Platta till lager och ta bort markerbar text.
|
||||
- [**Räta upp PDF**](./deskew-pdf): Räta automatiskt upp sneda skannade sidor med OpenCV.
|
||||
- [**Typsnitt till kontur**](./font-to-outline): Konvertera alla typsnitt till vektorkonturer för enhetlig rendering.
|
||||
|
||||
</div>
|
||||
|
||||
---
|
||||
|
||||
## Säkra PDF
|
||||
|
||||
Skydda, kryptera och styr åtkomsten till dina PDF-dokument.
|
||||
|
||||
<div class="tool-grid">
|
||||
|
||||
- [**Kryptera PDF**](./protect-pdf): Lås din PDF genom att lägga till ett lösenord.
|
||||
- [**Sanera PDF**](./sanitize-pdf): Ta bort metadata, anteckningar, skript och mer.
|
||||
- [**Dekryptera PDF**](./unlock-pdf): Lås upp PDF genom att ta bort lösenordsskydd.
|
||||
- [**Platta till PDF**](./flatten-pdf): Gör formulärfält och anteckningar icke-redigerbara.
|
||||
- [**Ta bort metadata**](./remove-metadata): Ta bort dold data från din PDF.
|
||||
- [**Ändra behörigheter**](./change-permissions): Ange eller ändra användarbehörigheter för en PDF.
|
||||
- [**Digital signatur**](./digital-sign-pdf): Lägg till en kryptografisk digital signatur med X.509-certifikat.
|
||||
- [**Validera signatur**](./validate-signature-pdf): Verifiera digitala signaturer och visa certifikatinformation.
|
||||
|
||||
</div>
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: Invertera färger
|
||||
description: Invertera alla färger i din PDF för att skapa en mörkt läge-version av vilket dokument som helst.
|
||||
---
|
||||
|
||||
# Invertera färger
|
||||
|
||||
Vänd varje färg i din PDF till sin invers. Vita bakgrunder blir svarta, svart text blir vit och alla andra färger skiftar till sina komplementfärger. Det är det snabbaste sättet att skapa en version i "mörkt läge" av vilken PDF som helst.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp din PDF-fil.
|
||||
2. Klicka på **Invertera färger** för att bearbeta.
|
||||
3. Den inverterade PDF-filen laddas ned automatiskt.
|
||||
|
||||
Det finns inga ytterligare inställningar. Verktyget renderar varje sida som en bild, inverterar alla pixelfärger och sätter ihop resultatet till en ny PDF.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Färginvertering med ett klick för alla sidor
|
||||
- Bearbetar varje sida i dokumentet
|
||||
- Behåller ursprungliga sidmått och layout
|
||||
- Fungerar med vilken PDF som helst oavsett innehållstyp (text, bilder, blandat)
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Skapa versioner i mörkt läge av läroböcker eller manualer för bekväm kvällsläsning
|
||||
- Förbereda högkontrastversioner av dokument i tillgänglighetssyfte
|
||||
- Invertera skannade dokument som fångats med felaktig exponering
|
||||
- Generera negativa versioner av bildtunga PDF-filer för visuell analys
|
||||
|
||||
## Tips
|
||||
|
||||
- Eftersom verktyget rasteriserar sidorna för att åstadkomma effekten blir resultatet bildbaserat. Texten går då inte längre att markera eller söka i. Om du behöver sökbar text efter inverteringen kan du köra resultatet genom ett OCR-verktyg.
|
||||
- För mer detaljerade färgjusteringar (ljusstyrka, kontrast, mättnad), använd verktyget [Justera färger](./adjust-colors) i stället.
|
||||
- Stora PDF-filer med många sidor kan ta längre tid att bearbeta eftersom varje sida renderas och inverteras för sig.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Justera färger](./adjust-colors)
|
||||
- [Bakgrundsfärg](./background-color)
|
||||
- [Skannereffekt](./scanner-effect)
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
title: JPG till PDF
|
||||
description: Konvertera en eller flera JPG-, JPEG- och JPEG 2000-bilder till en enda PDF-fil direkt i webbläsaren.
|
||||
---
|
||||
|
||||
# JPG till PDF
|
||||
|
||||
Gör om JPG-bilder till en ren PDF. Ladda upp en fil eller flera JPG-filer på en gång. Varje bild blir en helsida i det färdiga dokumentet.
|
||||
|
||||
## Format som stöds
|
||||
|
||||
| Format | Filändelser |
|
||||
| :-------- | :-------------- |
|
||||
| JPEG | `.jpg`, `.jpeg` |
|
||||
| JPEG 2000 | `.jp2`, `.jpx` |
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Klicka på uppladdningsytan eller dra och släpp dina JPG-filer. Flera filer kan väljas samtidigt.
|
||||
2. Granska de uppladdade filerna. Använd papperskorgsikonen för att ta bort enskilda filer, eller klicka på **Lägg till fler filer** för att lägga till i listan.
|
||||
3. Välj en **PDF-kvalitet**.
|
||||
4. Klicka på **Konvertera till PDF**. Verktyget komprimerar bilderna enligt din kvalitetsinställning, konverterar dem med PyMuPDF-motorn och laddar ned `from_jpgs.pdf`.
|
||||
|
||||
## Alternativ
|
||||
|
||||
**PDF-kvalitet** justerar den komprimering som används på varje bild innan den bäddas in i PDF-filen:
|
||||
|
||||
- **Hög kvalitet**: bevarar maximal detaljrikedom. Använd för fotografi eller tryck.
|
||||
- **Medelhög kvalitet** (standard): en bra balans mellan tydlighet och filstorlek.
|
||||
- **Låg kvalitet**: kraftig komprimering för minsta möjliga resultat.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Konvertera skannade dokument som sparats som JPG till en enda PDF för inlämning
|
||||
- Paketera produktbilder i en katalog åt kunder
|
||||
- Göra om medicinska bilder eller satellitbilder i JPEG 2000 till en portabel PDF
|
||||
- Skapa ett utskrivbart fotoalbum av kameraexporter
|
||||
|
||||
## Tips
|
||||
|
||||
- JPEG 2000-filer (`.jp2`, `.jpx`) stöds fullt ut, inte bara vanlig JPEG. Det är användbart för medicinsk bilddiagnostik och geospatiala data.
|
||||
- Om dina JPG-filer kommer från en mobilkamera ger Medelhög kvalitet vanligtvis en fil som är 40-60 % mindre än Hög utan synlig skillnad på skärmen.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Bilder till PDF](./image-to-pdf)
|
||||
- [PNG till PDF](./png-to-pdf)
|
||||
- [WebP till PDF](./webp-to-pdf)
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
title: JSON till PDF
|
||||
description: Återskapa PDF-filer från BentoPDF:s JSON-format. Konvertera JSON-exporter tillbaka till sina ursprungliga PDF-dokument.
|
||||
---
|
||||
|
||||
# JSON till PDF
|
||||
|
||||
Återskapa PDF-dokument från JSON-filer som tidigare skapats med BentoPDF:s verktyg **PDF till JSON**. Det här är ett verktyg för tur-och-retur-konvertering: det tar den strukturerade JSON-representationen av en PDF och bygger upp det ursprungliga dokumentet igen.
|
||||
|
||||
::: warning
|
||||
Det här verktyget accepterar bara JSON-filer som skapats av BentoPDF:s PDF till JSON-konverterare. Vanliga JSON-filer från API:er, databaser eller andra verktyg stöds inte.
|
||||
:::
|
||||
|
||||
## Format som stöds
|
||||
|
||||
| Indata | Beskrivning |
|
||||
| :------ | :--------------------------------------------------------- |
|
||||
| `.json` | JSON-filer exporterade av BentoPDF:s verktyg PDF till JSON |
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Klicka på uppladdningsytan eller dra och släpp en eller flera JSON-filer.
|
||||
2. Fillistan visar varje vald fil med dess storlek.
|
||||
3. Klicka på **Konvertera till PDF**. Verktyget bearbetar alla filer med en Web Worker och CPDF-motorn.
|
||||
4. Resultatet laddas ned som `jsons-to-pdf.zip` med en PDF per JSON-fil.
|
||||
|
||||
Konverteringen körs i en Web Worker i bakgrunden, så att gränssnittet förblir responsivt även med stora filer.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Det här verktyget har inga konfigurerbara alternativ. JSON-strukturen bestämmer helt den resulterande PDF-filen.
|
||||
|
||||
## Resultat
|
||||
|
||||
När flera JSON-filer konverteras levereras resultaten som ett ZIP-arkiv. Varje PDF får namn efter sin JSON-källfil (t.ex. blir `report.json` till `report.pdf`).
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Återställa PDF-filer från en JSON-baserad säkerhetskopia eller arkiveringskedja
|
||||
- Skicka en PDF genom JSON för inspektion och sedan tillbaka till PDF
|
||||
- Bygga om dokument efter programmatiska ändringar i JSON-strukturen
|
||||
- Verifiera att en PDF till JSON-export fångade allt dokumentinnehåll genom att konvertera tillbaka det
|
||||
|
||||
## Tips
|
||||
|
||||
- Om du behöver konvertera godtycklig JSON-data (som API-svar eller konfigurationsfiler) till en formaterad PDF passar verktyget [Text till PDF](./txt-to-pdf) bättre. Klistra in JSON som text så renderas den med korrekt formatering.
|
||||
- WebAssembly-motorn CPDF måste vara tillgänglig för att det här verktyget ska fungera. Självhostade instanser behöver ha CPDF WASM-filerna konfigurerade.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Text till PDF](./txt-to-pdf)
|
||||
- [Markdown till PDF](./markdown-to-pdf)
|
||||
- [CSV till PDF](./csv-to-pdf)
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
title: Linjärisera PDF
|
||||
description: Optimera PDF-filer för snabb webbvisning med progressiv laddning. Också känt som "Fast Web View"-optimering.
|
||||
---
|
||||
|
||||
# Linjärisera PDF
|
||||
|
||||
Linearisering strukturerar om en PDF så att den första sidan kan visas innan hela filen har laddats ned. Adobe kallar detta "Fast Web View". Om du hostar PDF-filer på en webbplats eller levererar dem via en dokumentportal gör linearisering att de känns märkbart snabbare att öppna.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en eller flera PDF-filer.
|
||||
2. Klicka på **Linjärisera PDF**.
|
||||
3. Ladda ned resultaten som ett ZIP-arkiv med alla lineariserade filer.
|
||||
|
||||
Det finns inga inställningar att konfigurera. Verktyget använder QPDF:s flagga `--linearize`, som ordnar om PDF-filens interna struktur utan att ändra dess visuella innehåll.
|
||||
|
||||
## Vad linearisering gör
|
||||
|
||||
- Ordnar om PDF-objekt så att första sidans data hamnar i början av filen
|
||||
- Lägger till en lineariseringsordlista och tips-tabeller så att visare vet var varje sida finns
|
||||
- Möjliggör byte-range-förfrågningar: en webbläsare kan hämta bara första sidan utan att ladda ned hela filen
|
||||
- Städar upp korsreferenstabellen för effektiv slumpmässig åtkomst
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Batchbearbetning av flera PDF-filer i en enda åtgärd
|
||||
- Resultatet bevarar allt innehåll, alla typsnitt, bilder och interaktiva element
|
||||
- Använder QPDF (WebAssembly) för tillförlitlig, standardenlig linearisering
|
||||
- Resultaten paketeras i ett ZIP-arkiv för enkel nedladdning
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Hosta PDF-rapporter på en webbplats där användare förväntar sig omedelbar sidvisning
|
||||
- Bädda in PDF-filer i webbapplikationer med visare i webbläsaren
|
||||
- Publicera PDF-kataloger eller manualer som nås över långsamma mobila anslutningar
|
||||
- Förbereda dokument för innehållsleveransnätverk (CDN) som stöder byte-range-leverans
|
||||
|
||||
## Tips
|
||||
|
||||
- Linearisera efter att alla andra redigeringar är klara. Varje efterföljande ändring (sammanfogning, tillägg av sidor) bryter lineariseringen.
|
||||
- Kombinera med Komprimera PDF för de minsta och snabbast laddade PDF-filerna.
|
||||
- Linearisering lägger till en liten extra mängd i filstorleken (vanligtvis under 1 %).
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Komprimera PDF](./compress-pdf): minska filstorleken före linearisering
|
||||
- [Reparera PDF](./repair-pdf): åtgärda strukturproblem som hindrar linearisering
|
||||
- [Ta bort metadata](./remove-metadata): ta bort metadata före publicering online
|
||||
@@ -0,0 +1,59 @@
|
||||
---
|
||||
title: Markdown till PDF
|
||||
description: Skriv eller klistra in Markdown och exportera det som en professionellt formaterad PDF med liveförhandsgranskning och syntaxmarkering.
|
||||
---
|
||||
|
||||
# Markdown till PDF
|
||||
|
||||
En fullfjädrad Markdown-redigerare med liveförhandsgranskning och PDF-export med ett klick. Skriv från grunden, ladda upp en befintlig `.md`-fil eller klistra in innehåll från urklipp. Redigeraren renderar din Markdown i realtid och exporterar en formaterad PDF med webbläsarens inbyggda utskriftsmotor.
|
||||
|
||||
## Format som stöds
|
||||
|
||||
| Indata | Beskrivning |
|
||||
| :--------------- | :----------------------------------- |
|
||||
| `.md`-filer | Ladda upp med knappen Ladda upp |
|
||||
| Direkt inmatning | Skriv eller klistra in i redigeraren |
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Öppna verktyget Markdown till PDF. Redigeraren laddas med delad vy: Markdown-källa till vänster, renderad förhandsgranskning till höger.
|
||||
2. Skriv din Markdown, klistra in den eller klicka på **Ladda upp** för att läsa in en `.md`-fil.
|
||||
3. Växla mellan ljust och mörkt tema med temareglaget i verktygsfältet.
|
||||
4. Klicka på **Exportera PDF** (eller tryck på `Ctrl/Cmd + S`) för att skapa en PDF via webbläsarens utskriftsdialog.
|
||||
|
||||
## Funktioner
|
||||
|
||||
Redigeraren stöder en omfattande uppsättning Markdown-funktioner utöver grunderna:
|
||||
|
||||
- **Standard-Markdown**: rubriker, fet stil, kursiv stil, länkar, bilder, listor, blockcitat, horisontella linjer
|
||||
- **Kodblock** med syntaxmarkering för över 15 språk (JavaScript, TypeScript, Python, Go, Rust, SQL, Java, C#, C++, YAML, Bash med flera)
|
||||
- **Mermaid-diagram**: flödesscheman, sekvensdiagram, ER-diagram och andra Mermaid-diagramtyper renderas direkt i förhandsgranskningen
|
||||
- **Tabeller** med standardsyntax för Markdown-tabeller
|
||||
- **Uppgiftslistor** med kryssrutor
|
||||
- **Fotnoter**, **nedsänkt text**, **upphöjd text**
|
||||
- **Definitionslistor**, **förkortningar**
|
||||
- Stöd för **emoji** (`:smile:` renderas som emojin)
|
||||
- **Markeringar** (`==marked text==`) och **infogningar** (`++inserted text++`)
|
||||
- **Automatiskt länkade webbadresser**: vanliga webbadresser omvandlas till klickbara länkar
|
||||
- Generering av **innehållsförteckning**
|
||||
- **Ankarlänkar** på rubriker
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Skriva projektdokumentation och exportera en polerad PDF till intressenter
|
||||
- Skapa tekniska rapporter med kodexempel och Mermaid-arkitekturdiagram
|
||||
- Konvertera en GitHub-README till PDF för offlineanvändning eller utskrift
|
||||
- Skriva ett förslag eller en specifikation med uppgiftslistor och tabeller
|
||||
- Generera ett formaterat utdelningsblad från föreläsningsanteckningar skrivna i Markdown
|
||||
|
||||
## Tips
|
||||
|
||||
- PDF-resultatet använder webbläsarens funktion för att skriva ut till PDF. I Chrome kan du anpassa marginaler och skala i utskriftsdialogen innan du sparar.
|
||||
- Mermaid-diagram renderas i förhandsgranskningen men kan behöva en stund för att initieras vid första användningen.
|
||||
- Använd `Ctrl/Cmd + S` som kortkommando för att exportera utan att leta efter knappen.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Text till PDF](./txt-to-pdf)
|
||||
- [Word till PDF](./word-to-pdf)
|
||||
- [JSON till PDF](./json-to-pdf)
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
title: Sammanfoga PDF
|
||||
description: Kombinera flera PDF-filer till ett dokument med omordning via dra och släpp och kontroll på sidnivå.
|
||||
---
|
||||
|
||||
# Sammanfoga PDF
|
||||
|
||||
Kombinera flera PDF-filer till ett enda dokument. Du kan sammanfoga hela filer i en viss ordning, eller växla till Sidläge för detaljerad kontroll över enskilda sidor från varje uppladdad PDF.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp två eller flera PDF-filer genom att klicka på släppytan eller dra in dem.
|
||||
2. Välj mellan **Filläge** och **Sidläge** med reglaget överst.
|
||||
3. I Filläge drar du filerna för att ordna om dem och kan ange sidintervall (t.ex. `1-3, 5`) för varje fil. Lämna intervallet tomt för att ta med alla sidor.
|
||||
4. I Sidläge drar och släpper du enskilda sidminiatyrer för att bygga din exakta sidföljd.
|
||||
5. Klicka på **Sammanfoga PDF-filer** för att kombinera allt till en fil. Den sammanfogade PDF-filen laddas ned automatiskt.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Två sammanfogningslägen: Filläge för snabb sammanfogning av hela filer, Sidläge för kontroll per sida
|
||||
- Omordning med dra och släpp i båda lägena med mjuka animationer
|
||||
- Syntax för sidintervall (t.ex. `1-3, 5, 8-10`) låter dig välja sidor utan att byta till Sidläge
|
||||
- Latladdade sidminiatyrer håller gränssnittet responsivt även med stora dokument
|
||||
- Ingen gräns för antal filer eller totalt sidantal
|
||||
- Bevarar den ursprungliga PDF-kvaliteten utan omkodning
|
||||
|
||||
## Alternativ
|
||||
|
||||
| Alternativ | Beskrivning |
|
||||
| ----------- | ----------------------------------------------------------------------------------------------- |
|
||||
| **Filläge** | Sammanfoga hela filer i valfri ordning, med valfria sidintervallfilter per fil |
|
||||
| **Sidläge** | Visuellt rutnät med alla sidor från alla filer: dra miniatyrer för att bygga din exakta sekvens |
|
||||
| **Sidfält** | Textfält per fil som accepterar intervall som `1-3, 5` för att bara ta med specifika sidor |
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Kombinera separata kapitel-PDF:er till en enda bok eller rapport
|
||||
- Sammanfoga ett personligt brev och ett CV till ett ansökningsdokument
|
||||
- Hämta specifika sidor från flera källdokument till en samlad fil
|
||||
- Samla skannade kvitton eller fakturor i en arkiv-PDF
|
||||
- Skapa ett utdelningsmaterial från bilder i flera presentationer
|
||||
|
||||
## Tips
|
||||
|
||||
- Använd Sidläge när du behöver varva sidor från olika filer i stället för att lägga en fil efter en annan.
|
||||
- Du kan lägga till fler filer efter den första uppladdningen med knappen **Lägg till fler filer** utan att förlora din nuvarande ordning.
|
||||
- Sidintervall är 1-indexerade, så `1` avser den första sidan i den filen.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Dela PDF](./split-pdf)
|
||||
- [Duplicera & organisera](./organize-pdf)
|
||||
- [Alternera & blanda sidor](./alternate-merge)
|
||||
- [Ta bort sidor](./delete-pages)
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: MOBI till PDF
|
||||
description: Konvertera MOBI-e-boksfiler till PDF direkt i webbläsaren. Gratis, privat, inga filuppladdningar.
|
||||
---
|
||||
|
||||
# MOBI till PDF
|
||||
|
||||
Konvertera Amazon Kindle MOBI-e-böcker till PDF-dokument. MOBI-filer är knutna till Kindle-enheter och appar, vilket gör dem svåra att läsa på andra ställen. Genom att konvertera till PDF får du en portabel version som du kan öppna på vilken enhet som helst eller skriva ut.
|
||||
|
||||
## Format som stöds
|
||||
|
||||
| Format | Filändelse | Anmärkningar |
|
||||
| :----- | :--------- | :------------------------------- |
|
||||
| MOBI | `.mobi` | Kindle-e-boksformat (Mobipocket) |
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Klicka på uppladdningsytan eller dra och släpp en eller flera MOBI-filer.
|
||||
2. Granska fillistan. Ta bort oönskade filer med papperskorgsikonen, eller använd **Lägg till fler filer** för att lägga till fler e-böcker.
|
||||
3. Klicka på **Konvertera till PDF**. PyMuPDF-motorn tolkar MOBI-strukturen och renderar varje sida som PDF-innehåll.
|
||||
4. En enskild fil laddas ned som PDF. När flera filer konverteras får du ett ZIP-arkiv med namnet `mobi-converted.zip`.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Inga ytterligare inställningar behövs. Konverteringen bevarar textinnehåll, formatering och inbäddade bilder från den ursprungliga MOBI-filen.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Läsa innehåll köpt via Kindle på en e-läsare som inte är en Kindle och bara stöder PDF
|
||||
- Skriva ut kapitel ur en e-bok för offlinestudier eller anteckningar
|
||||
- Arkivera ditt personliga e-boksbibliotek i ett universellt format
|
||||
- Dela utdrag med någon som inte har Kindle-appen installerad
|
||||
|
||||
## Tips
|
||||
|
||||
- DRM-skyddade MOBI-filer kan inte konverteras. Verktyget fungerar bara med DRM-fria MOBI-filer.
|
||||
- Stora e-böcker med många inbäddade bilder kan ta några sekunder längre att bearbeta eftersom allt sker i webbläsaren.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [EPUB till PDF](./epub-to-pdf)
|
||||
- [FB2 till PDF](./fb2-to-pdf)
|
||||
- [CBZ till PDF](./cbz-to-pdf)
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
title: N-Up PDF
|
||||
description: Placera flera PDF-sidor på ett enda ark i ett rutnät för kompakt utskrift.
|
||||
---
|
||||
|
||||
# N-Up PDF
|
||||
|
||||
Placera flera sidor på ett enda ark i ett rutnät. Det minskar antalet utskrivna sidor genom att rymma 2, 4, 6, 8, 9 eller 16 sidor per ark. Verktyget hanterar skalning, placering och valfri konfiguration av sidstorlek.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en PDF-fil.
|
||||
2. Välj antal sidor per ark ("N"-värdet): 2, 4, 6, 8, 9 eller 16.
|
||||
3. Välj utdatasidans storlek (standard är A4) och orientering.
|
||||
4. Konfigurera eventuellt avstånd, ramfärg och bakgrundsfärg.
|
||||
5. Klicka på bearbetningsknappen. Verktyget skalar varje sida och lägger ut dem som plattor på nya ark.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Rutnätslayouter: 2-up, 4-up, 6-up, 8-up, 9-up och 16-up
|
||||
- Konfigurerbar storlek och orientering på utdatasidan
|
||||
- Valfritt avstånd mellan sidorna
|
||||
- Inställningar för bakgrunds- och ramfärg
|
||||
- Bevarar de ursprungliga sidornas proportioner vid skalning
|
||||
|
||||
## Alternativ
|
||||
|
||||
| Alternativ | Beskrivning |
|
||||
| ----------------- | ------------------------------------------------------------------------- |
|
||||
| **Sidor per ark** | Antal ursprungliga sidor som ryms på varje utdatasida (2, 4, 6, 8, 9, 16) |
|
||||
| **Sidstorlek** | Storlek på utdataarket (A4, Letter, Legal osv.) |
|
||||
| **Orientering** | Stående eller Liggande för utdataarket |
|
||||
| **Avstånd** | Mellanrum i punkter mellan sidorna |
|
||||
| **Bakgrundsfärg** | Fyllnadsfärg för utdatarkets bakgrund |
|
||||
| **Ramfärg** | Färg på ramarna runt varje sida |
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Skriva ut utdelningsmaterial med 4 bilder per sida för att spara papper
|
||||
- Skapa studieblad med flera referenssidor på ett ark
|
||||
- Producera kompakta dokumentarkiv för arkivering
|
||||
- Generera översiktsark med miniatyrer av ett långt dokument
|
||||
|
||||
## Tips
|
||||
|
||||
- Liggande orientering fungerar ofta bättre för 2-up-layouter, medan stående oftast är bäst för 4-up och uppåt.
|
||||
- Större avstånd förbättrar läsbarheten men minskar ytan för varje sida.
|
||||
- För den omvända åtgärden (dela en sida i flera), se [Postera PDF](./posterize-pdf).
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Postera PDF](./posterize-pdf)
|
||||
- [PDF-broschyr](./pdf-booklet)
|
||||
- [Kombinera till enskild sida](./combine-single-page)
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
title: OCR PDF
|
||||
description: Gör skannade PDF-filer sökbara och kopierbara med Tesseract OCR, med stöd för flera språk och teckenfiltrering.
|
||||
---
|
||||
|
||||
# OCR PDF
|
||||
|
||||
Gör skannade dokument till sökbara, kopierbara PDF-filer. Verktyget använder Tesseract OCR för att känna igen text i bilder och lägger ett osynligt textlager ovanpå de ursprungliga sidorna, så att det visuella utseendet bevaras medan innehållet blir fullt sökbart.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en skannad eller bildbaserad PDF-fil.
|
||||
2. Välj ett eller flera språk som förekommer i dokumentet i den sökbara språklistan.
|
||||
3. Justera eventuellt avancerade inställningar (upplösning, binarisering, vitlista).
|
||||
4. Klicka på **Starta OCR** och följ förloppet i förloppsindikatorn i realtid.
|
||||
5. När det är klart granskar du den extraherade texten och laddar sedan ned den sökbara PDF-filen eller en vanlig `.txt`-fil.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- OCR på flera språk med en sökbar språkväljare
|
||||
- Osynligt textlager bevarar dokumentets ursprungliga utseende
|
||||
- Förloppsindikator och loggutdata i realtid under bearbetningen
|
||||
- Ladda ned resultaten som en sökbar PDF eller en vanlig textfil
|
||||
- Kopiera extraherad text direkt till urklipp
|
||||
- Tre upplösningsnivåer för att balansera hastighet mot noggrannhet
|
||||
|
||||
## Alternativ
|
||||
|
||||
| Inställning | Värden | Standard | Syfte |
|
||||
| ------------------------------------- | ---------------------------------------------------------------------------------------------------- | -------- | -------------------------------------------------------------------------------------- |
|
||||
| **Upplösning** | Standard (192 DPI), Hög (288 DPI), Ultra (384 DPI) | Hög | Högre upplösning ger bättre noggrannhet på liten text men tar längre tid |
|
||||
| **Binarisera bild** | På / Av | Av | Förbättrar kontrasten för rena skanningar genom att konvertera till svartvitt |
|
||||
| **Förinställning för teckenvitlista** | Ingen, Alfanumerisk, Siffror + valuta, Endast bokstäver, Endast siffror, Faktura, Formulär, Anpassad | Ingen | Begränsar igenkända tecken för att förbättra noggrannheten för specifika dokumenttyper |
|
||||
| **Teckenvitlista** | Fri text | Tom | Manuell teckenuppsättning när förinställningen är Anpassad |
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Göra skannade avtal och fakturor sökbara så att du kan använda Ctrl+F i dem
|
||||
- Extrahera text från fotograferade dokument eller gamla pappersregister
|
||||
- Bearbeta kvitton med förinställningen Faktura för att korrekt fånga belopp och datum
|
||||
- Skapa tillgängliga PDF-filer från skanningar som bara består av bilder för att uppfylla efterlevnadskrav
|
||||
- Batchextrahera textinnehåll från skannade böcker eller manualer
|
||||
|
||||
## Tips
|
||||
|
||||
- Välj flera språk om ditt dokument innehåller blandat språk (t.ex. engelska rubriker med japansk brödtext).
|
||||
- Använd alternativet binarisera för dokument med bleknad text eller låg kontrast, det kan förbättra igenkänningen avsevärt.
|
||||
- Vitlistorna Faktura och Formulär minskar kraftigt antalet falska träffar i strukturerade dokument genom att ignorera irrelevanta teckenformer.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Extrahera PDF-tabeller](./extract-tables)
|
||||
- [Sammanfoga PDF](./merge-pdf)
|
||||
- [Komprimera PDF](./compress-pdf)
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: ODG till PDF
|
||||
description: Konvertera LibreOffice Draw-filer (ODG) till PDF i webbläsaren. Gratis, ingen uppladdning, helt privat.
|
||||
---
|
||||
|
||||
# ODG till PDF
|
||||
|
||||
Konvertera OpenDocument Graphics-filer till PDF. ODG är det inbyggda formatet för LibreOffice Draw och används för diagram, flödesscheman och vektorillustrationer. Genom att konvertera till PDF blir dessa ritningar enkla att dela, skriva ut och bädda in i andra dokument.
|
||||
|
||||
## Format som stöds
|
||||
|
||||
| Format | Filändelse | Anmärkningar |
|
||||
| :-------------------- | :--------- | :--------------------------------------- |
|
||||
| OpenDocument Graphics | `.odg` | LibreOffice Draw / OpenOffice Draw-filer |
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Klicka på uppladdningsytan eller dra och släpp dina ODG-filer. Flera filer kan läggas till på en gång.
|
||||
2. Granska fillistan. Ta bort enskilda poster med papperskorgsikonen, eller klicka på **Lägg till fler filer** för att lägga till fler ritningar.
|
||||
3. Klicka på **Konvertera till PDF**. En LibreOffice-baserad motor laddas i webbläsaren och konverterar varje ODG-fil och bevarar vektorgrafik, former och text.
|
||||
4. En fil laddas ned direkt som PDF. Flera filer ger ett ZIP-arkiv med namnet `odg-to-pdf.zip`.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Inga ytterligare inställningar krävs. Konverteringen bevarar de ursprungliga sidmåtten, formerna, kopplingarna och textrutorna från ODG-källan.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Dela LibreOffice Draw-diagram med kunder som inte har LibreOffice installerat
|
||||
- Skriva ut flödesscheman och nätverksdiagram skapade i Draw
|
||||
- Ta med ODG-illustrationer i en rapport eller presentation som inbäddade PDF-filer
|
||||
- Arkivera tekniska ritningar i ett format som förblir läsbart i årtionden
|
||||
|
||||
## Tips
|
||||
|
||||
- Vektorelement förblir vektorer i PDF-resultatet, så att det skalar rent till vilken utskriftsstorlek som helst.
|
||||
- LibreOffice-motorn behöver en stund för att initieras vid första användningen. Konverteringar i samma session därefter går snabbare.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [ODS till PDF](./ods-to-pdf)
|
||||
- [ODP till PDF](./odp-to-pdf)
|
||||
- [VSD till PDF](./vsd-to-pdf)
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: ODP till PDF
|
||||
description: Konvertera LibreOffice Impress-presentationer (ODP) till PDF i webbläsaren. Gratis, privat, ingen uppladdning.
|
||||
---
|
||||
|
||||
# ODP till PDF
|
||||
|
||||
Konvertera OpenDocument Presentation-filer till PDF. ODP är det inbyggda formatet för LibreOffice Impress och en standardexport från Google Slides. När presentationer görs om till PDF-filer kan vem som helst visa dem utan presentationsprogram, och bilderna skrivs ut rent.
|
||||
|
||||
## Format som stöds
|
||||
|
||||
| Format | Filändelse | Anmärkningar |
|
||||
| :------------------------ | :--------- | :----------------------------------------- |
|
||||
| OpenDocument Presentation | `.odp` | LibreOffice Impress / Google Slides-export |
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Klicka på uppladdningsytan eller dra och släpp dina ODP-filer. Du kan välja flera presentationer på en gång.
|
||||
2. Granska fillistan. Ta bort poster med papperskorgsikonen, eller använd **Lägg till fler filer** för att lägga till fler presentationer.
|
||||
3. Klicka på **Konvertera till PDF**. Den LibreOffice-baserade motorn bearbetar varje presentation och skapar en PDF där varje bild blir en sida.
|
||||
4. En enskild fil laddas ned som PDF. Flera filer levereras i ett ZIP-arkiv med namnet `odp-to-pdf.zip`.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Inga inställningar att konfigurera. Varje bild renderas i sina ursprungliga mått och bevarar text, bilder, former och bildbakgrunder.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Dela ut en presentation till en publik som PDF-utdelningsmaterial
|
||||
- Dela Google Slides-exporter med personer som föredrar PDF framför ODP
|
||||
- Arkivera konferensföredrag och föreläsningar i ett skrivskyddat format
|
||||
- Skriva ut bildspel för workshops på plats
|
||||
|
||||
## Tips
|
||||
|
||||
- Bildövergångar och animationer är rent visuella funktioner som inte följer med till PDF, men allt statiskt innehåll renderas korrekt.
|
||||
- Talaranteckningar ingår inte i PDF-resultatet. Om du behöver anteckningarna exporterar du dem separat från ditt presentationsprogram.
|
||||
- Precis som de andra LibreOffice-baserade verktygen laddas motorn vid första användningen och förblir cachad under sessionen.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [ODG till PDF](./odg-to-pdf)
|
||||
- [ODS till PDF](./ods-to-pdf)
|
||||
- [PUB till PDF](./pub-to-pdf)
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: ODS till PDF
|
||||
description: Konvertera LibreOffice Calc-kalkylblad (ODS) till PDF i webbläsaren. Gratis, privat, ingen registrering.
|
||||
---
|
||||
|
||||
# ODS till PDF
|
||||
|
||||
Konvertera OpenDocument Spreadsheet-filer till PDF. ODS är det inbyggda formatet i LibreOffice Calc och en vanlig exportmetod från Google Sheets. Verktyget renderar kalkylbladets data, formatering och diagram till en sidindelad PDF som du kan skriva ut eller dela.
|
||||
|
||||
## Format som stöds
|
||||
|
||||
| Format | Filändelse | Anmärkningar |
|
||||
| :----------------------- | :--------- | :-------------------------------------- |
|
||||
| OpenDocument Spreadsheet | `.ods` | LibreOffice Calc / Google Sheets-export |
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Klicka på uppladdningsytan eller dra och släpp dina ODS-filer. Flera filer stöds.
|
||||
2. Granska fillistan. Använd papperskorgsikonen för att ta bort filer, eller klicka på **Lägg till fler filer** för att utöka gruppen.
|
||||
3. Klicka på **Konvertera till PDF**. LibreOffice-motorn laddas i webbläsaren och renderar varje kalkylblad till PDF-sidor.
|
||||
4. Ett enskilt kalkylblad laddas ner som en PDF. Flera filer paketeras i `ods-to-pdf.zip`.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Ingen konfiguration krävs. Konverteraren använder kalkylbladets befintliga utskriftslayout, cellformatering och kolumnbredder i PDF-utdata.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Dela en budget eller rapport från LibreOffice Calc med någon som bara tar emot PDF-filer
|
||||
- Skriva ut en Google Sheets-export som laddats ner som ODS
|
||||
- Arkivera ekonomiska underlag i ett format som inte kan redigeras
|
||||
- Skicka in ODS-baserade formulär eller tidrapporter som dokument med fast layout
|
||||
|
||||
## Tips
|
||||
|
||||
- Om ditt kalkylblad har flera blad ingår alla blad i PDF-utdata.
|
||||
- Mycket breda kalkylblad kan sträcka sig över flera PDF-sidor på bredden. Justera kolumnbredderna i källfilen innan konverteringen om layouten är viktig.
|
||||
- LibreOffice-motorn initieras vid första användningen. Följande konverteringar i samma session går snabbare.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [ODG till PDF](./odg-to-pdf)
|
||||
- [ODP till PDF](./odp-to-pdf)
|
||||
- [XML till PDF](./xml-to-pdf)
|
||||
@@ -0,0 +1,51 @@
|
||||
---
|
||||
title: ODT till PDF
|
||||
description: Konvertera OpenDocument Text-filer (ODT) till PDF i webbläsaren med en LibreOffice-driven motor.
|
||||
---
|
||||
|
||||
# ODT till PDF
|
||||
|
||||
Konvertera OpenDocument Text-filer till PDF. ODT är det inbyggda formatet i LibreOffice Writer, Apache OpenOffice och andra ordbehandlare med öppen källkod. Verktyget använder en webbläsarbaserad LibreOffice-motor för exakta konverteringar som bevarar formatering, tabeller, bilder och stilar.
|
||||
|
||||
## Format som stöds
|
||||
|
||||
| Format | Filändelser |
|
||||
| :---------------- | :---------- |
|
||||
| OpenDocument Text | `.odt` |
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Klicka på uppladdningsytan eller dra och släpp en eller flera ODT-filer.
|
||||
2. Granska fillistan. Lägg till fler filer eller ta bort oönskade.
|
||||
3. Klicka på **Konvertera till PDF**. LibreOffice-motorn initieras (en förloppsindikator visar laddningsstatus) och därefter konverteras varje fil.
|
||||
4. En enskild fil laddas ner direkt som en PDF. Flera filer paketeras i `odt-converted.zip`.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Verktyget har ingen extra konfiguration. Konverteringen bevarar originaldokumentets formatering så noga som möjligt.
|
||||
|
||||
## Utdata
|
||||
|
||||
| Antal indatafiler | Utdata |
|
||||
| :---------------- | :--------------------------------------------------- |
|
||||
| 1 fil | Nedladdning av en enskild PDF (t.ex. `document.pdf`) |
|
||||
| 2+ filer | ZIP-arkiv (`odt-converted.zip`) med en PDF per fil |
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Konvertera LibreOffice Writer-dokument till PDF för att dela med användare av Microsoft Office
|
||||
- Skapa utskriftsklara PDF-filer från akademiska uppsatser skrivna i OpenDocument-format
|
||||
- Massomvandla en mapp med ODT-mallar till PDF-filer för distribution
|
||||
- Skapa PDF-filer från ODT-filer som genererats av automatiserade dokumentsystem
|
||||
|
||||
## Tips
|
||||
|
||||
- LibreOffice-motorn laddas vid första användningen och cachas för följande konverteringar. Den första laddningen tar några sekunder, därefter går konverteringarna snabbt.
|
||||
- Komplexa dokument med inbäddade OLE-objekt eller ovanliga teckensnitt kan återges något annorlunda än i LibreOffice på skrivbordet. Testa med ett prov innan du massomvandlar.
|
||||
- För Word-dokument (`.doc`, `.docx`), använd verktyget [Word till PDF](./word-to-pdf) i stället. Det använder också LibreOffice-motorn men tar emot Microsofts format direkt.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Word till PDF](./word-to-pdf)
|
||||
- [RTF till PDF](./rtf-to-pdf)
|
||||
- [Text till PDF](./txt-to-pdf)
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
title: Duplicera & organisera
|
||||
description: Ändra ordning på, duplicera och ta bort PDF-sidor med miniatyrer som du drar och släpper, eller ange en egen sidordning.
|
||||
---
|
||||
|
||||
# Duplicera & organisera
|
||||
|
||||
Ordna om, duplicera och ta bort sidor i en PDF med ett visuellt gränssnitt där du drar och släpper. Varje sida visas som en miniatyr som du kan flytta, klona eller ta bort innan resultatet sparas som en ny fil.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en enskild PDF-fil.
|
||||
2. Verktyget renderar ett miniatyrrutnät med alla sidor.
|
||||
3. Dra miniatyrer för att ändra ordning, klicka på den gröna dupliceringsknappen för att klona en sida eller på den röda borttagningsknappen för att ta bort en.
|
||||
4. Du kan också ange en egen sidordning i textfältet (t.ex. `3, 1, 2, 4`) och klicka på **Tillämpa** för att ordna om alla sidor på en gång.
|
||||
5. Klicka på bearbetningsknappen för att bygga och ladda ner den omorganiserade PDF-filen.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Omordning av sidor med dra och släpp och animerade övergångar
|
||||
- Knappar för att duplicera och ta bort enskilda sidor
|
||||
- Inmatning av egen sidordning för exakt omordning
|
||||
- Sidnummeretiketter som uppdateras automatiskt efter varje ändring
|
||||
- Hindrar att den sista återstående sidan tas bort
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Flytta en felplacerad sida till rätt plats i en rapport
|
||||
- Duplicera en formulärsida så att du får flera tomma kopior i en fil
|
||||
- Ta bort utkast eller platshållarsidor innan ett dokument distribueras
|
||||
- Vända eller blanda sidordningen inför utskrift
|
||||
- Bygga en egen sidföljd utan att sammanfoga separata filer på nytt
|
||||
|
||||
## Tips
|
||||
|
||||
- Fältet för egen sidordning förväntar sig kommaseparerade ursprungliga sidnummer. Det måste innehålla varje sida exakt en gång, utan utelämnade eller dubbla sidor.
|
||||
- När du har duplicerat en sida refererar båda kopiorna till samma ursprungliga sidindex. Du kan ordna om var och en för sig.
|
||||
- För massåtgärder över flera filer eller mer avancerade arbetsflöden, använd [PDF multiverktyg](./pdf-multi-tool) i stället.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Sammanfoga PDF](./merge-pdf)
|
||||
- [Ta bort sidor](./delete-pages)
|
||||
- [PDF multiverktyg](./pdf-multi-tool)
|
||||
- [Omvänd sidor](./reverse-pages)
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
title: Sidmått
|
||||
description: Analysera PDF-sidors storlek, orientering, bildformat och rotation. Upptäck dokument med blandade storlekar och exportera data till CSV.
|
||||
---
|
||||
|
||||
# Sidmått
|
||||
|
||||
Ett diagnostikverktyg som läser varje sida i din PDF och rapporterar exakta mått, orientering, standardstorlekens namn, bildformat, area och rotation. Användbart för att upptäcka sidor med blandade storlekar före utskrift eller för att dokumentera egenskaperna hos en PDF du fått.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en PDF-fil. Analysen startar automatiskt, ingen knapp behöver tryckas.
|
||||
2. En sammanfattningspanel visar totalt antal sidor, antal unika sidstorlekar och om dokumentet har blandade storlekar.
|
||||
3. Bläddra i hela resultattabellen med uppgifter per sida.
|
||||
4. Växla visningsenhet mellan punkter, tum, millimeter eller pixlar.
|
||||
5. Klicka på **Exportera till CSV** för att spara data.
|
||||
|
||||
## Rapporterade fält
|
||||
|
||||
| Kolumn | Beskrivning |
|
||||
| --------------- | ------------------------------------------------- |
|
||||
| Sida # | Löpande sidnummer |
|
||||
| Mått | Bredd x höjd i vald enhet |
|
||||
| Standardstorlek | Matchat namn (A4, Letter osv.) eller "Anpassad" |
|
||||
| Orientering | Stående eller liggande |
|
||||
| Bildformat | Förhållandet mellan bredd och höjd som decimaltal |
|
||||
| Area | Sidans area i vald enhet i kvadrat |
|
||||
| Rotation | Sidans rotation i grader |
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Automatisk identifiering av standardpappersstorlekar (A3, A4, A5, Letter, Legal, Tabloid med fler)
|
||||
- Varning för dokument med blandade storlekar, med en uppdelning av vilka storlekar som förekommer och hur många sidor som använder var och en
|
||||
- Enhetsomvandling mellan punkter, tum, millimeter och pixlar (vid 96 PPI)
|
||||
- CSV-export för användning i kalkylblad eller dokumentationssystem
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Kontrollera att alla sidor är A4 innan ett dokument skickas till ett tryckeri
|
||||
- Ta reda på varför en sammanfogad PDF skrivs ut med oväntade marginaler på vissa sidor
|
||||
- Dokumentera sidlayouten i ett stort PDF-arkiv för metadataregister
|
||||
- Hitta roterade sidor som behöver korrigeras
|
||||
|
||||
## Tips
|
||||
|
||||
- Om sammanfattningen visar "Blandade storlekar", använd verktyget Fixa sidstorlek för att standardisera före utskrift.
|
||||
- Rotationsfältet hjälper dig att hitta sidor som visas korrekt men har ett rotationsattribut som inte är noll, vilket kan orsaka problem i vissa arbetsflöden.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Fixa sidstorlek](./fix-page-size): standardisera sidor efter att du hittat blandade storlekar
|
||||
- [Komprimera PDF](./compress-pdf): optimera PDF-filen efter att sidproblem åtgärdats
|
||||
- [Rotera PDF](./rotate-pdf): korrigera roterade sidor
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
title: Sidnummer
|
||||
description: Lägg till anpassningsbara sidnummer på valfri plats på PDF-sidorna, med inställbart teckensnitt, storlek och färg.
|
||||
---
|
||||
|
||||
# Sidnummer
|
||||
|
||||
Lägg till synliga sidnummer på varje sida i din PDF. Du väljer placering, format, teckenstorlek och färg, verktyget sköter resten.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp din PDF-fil.
|
||||
2. Ställ in sidnumren i alternativpanelen som visas.
|
||||
3. Klicka på **Lägg till sidnummer** för att bearbeta.
|
||||
4. Den numrerade PDF-filen laddas ner automatiskt.
|
||||
|
||||
## Alternativ
|
||||
|
||||
- **Placering**: Välj var sidnumren visas: nere i mitten, nere till vänster, nere till höger, uppe i mitten, uppe till vänster eller uppe till höger.
|
||||
- **Format**: Välj mellan enkel numrering (1, 2, 3...) eller formatet "sida X av Y" (1 / 5, 2 / 5...).
|
||||
- **Teckenstorlek**: Ange storleken på sidnumrets text. Standardvärdet är 12.
|
||||
- **Färg**: Välj valfri färg för sidnumrets text med färgväljaren.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Sex placeringsalternativ som täcker alla hörn och mittpositioner
|
||||
- Två numreringsformat: enkel löpande numrering eller "sida X av Y"
|
||||
- Anpassningsbar teckenstorlek från 6 till 72 punkter
|
||||
- Fullständig färgväljare för textfärg
|
||||
- Automatisk marginalhantering som håller numren inom säkra områden oavsett sidstorlek
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Förbereda dokument för utskrift som behöver synliga sidhänvisningar
|
||||
- Lägga till sidnummer i en sammanfogad PDF som skapats av flera källfiler
|
||||
- Numrera presentationsutdrag innan de delas ut
|
||||
- Lägga till löpande numrering i juridiska dokument eller avtal
|
||||
|
||||
## Tips
|
||||
|
||||
- Formatet "sida X av Y" är användbart för dokument där läsaren behöver veta den totala längden, som offerter eller rapporter.
|
||||
- Om du behöver olika numreringsstilar för olika avsnitt (som romerska siffror för förstasidor), använd verktyget [Lägg till sidetiketter](./add-page-labels) i stället.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Lägg till sidetiketter](./add-page-labels)
|
||||
- [Bates-numrering](./bates-numbering)
|
||||
- [Sidhuvud & sidfot](./header-footer)
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: PDF-broschyr
|
||||
description: Ordna om PDF-sidor i broschyrordning (häftning) för att vika och hefta till en fysisk broschyr.
|
||||
---
|
||||
|
||||
# PDF-broschyr
|
||||
|
||||
Ordna om sidorna i en PDF enligt broschyrimposition. När den skrivs ut dubbelsidigt och viks på mitten hamnar sidorna i rätt läsordning. Det här är layouten som används för häftade broschyrer och zines.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en PDF-fil.
|
||||
2. Ställ in broschyrens inställningar: utdatans sidstorlek och orientering.
|
||||
3. Klicka på **Skapa förhandsvisning** för att se hur sidorna placeras på varje ark.
|
||||
4. Granska förhandsvisningen, som visar varje fysiskt ark med sidorna på fram- och baksidan.
|
||||
5. Klicka på **Ladda ner** för att spara den broschyrimponerade PDF-filen.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Automatisk omordning av sidor för häftning
|
||||
- Inställbar sidstorlek för utdata
|
||||
- Visuell förhandsvisning av broschyrlayouten före nedladdning
|
||||
- Hanterar udda sidantal genom att infoga tomma sidor där det behövs
|
||||
- Skalar källsidorna så att de passar broschyrarkets storlek
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Skapa utskrivbara broschyrer eller zines från en vanlig PDF
|
||||
- Förbereda konferensprogram eller evenemangsguider för egen utskrift
|
||||
- Göra vikta gratulationskort eller små kataloger
|
||||
- Producera småskrifter eller diktsamlingar för handbindning
|
||||
|
||||
## Tips
|
||||
|
||||
- Antalet sidor i din käll-PDF bör helst vara en multipel av 4 för en snygg broschyr. Om det inte är det läggs tomma sidor till automatiskt för att fylla det sista arket.
|
||||
- Skriv ut dubbelsidigt med skrivarens inställning "vänd på kortsidan", vik sedan alla ark tillsammans och hefta i ryggen.
|
||||
- Om du bara vill placera flera sidor på ett ark utan broschyrordning, använd [N-Up PDF](./n-up-pdf) i stället.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [N-Up PDF](./n-up-pdf)
|
||||
- [Rotera PDF](./rotate-pdf)
|
||||
- [Lägg till tom sida](./add-blank-page)
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
title: PDF OCG-lager
|
||||
description: Visa, växla, lägg till och ta bort Optional Content Group-lager (OCG) i ett PDF-dokument.
|
||||
---
|
||||
|
||||
# PDF OCG-lager
|
||||
|
||||
Hantera Optional Content Groups (OCG), vanligen kallade "lager", i en PDF. Du kan växla lagrens synlighet, lägga till nya lager (även underlager), ta bort lager och spara den ändrade PDF-filen.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en PDF-fil.
|
||||
2. Klicka på bearbetningsknappen för att läsa in dokumentet med PyMuPDF-motorn.
|
||||
3. Verktyget visar alla befintliga lager med synlighet, låsstatus och nästlad hierarki.
|
||||
4. Använd kryssrutorna för att visa eller dölja lager. Låsta lager kan inte växlas.
|
||||
5. Lägg till nya lager på översta nivån genom att skriva ett namn och klicka på lägg till-knappen, eller lägg till underlager under ett befintligt överordnat lager.
|
||||
6. Ta bort lager som du inte längre behöver.
|
||||
7. Klicka på **Spara** för att ladda ner den ändrade PDF-filen med dina lagerändringar.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Visar lagerhierarkin med korrekt indrag för nästlade lager
|
||||
- Slå på eller av lagrets synlighet
|
||||
- Indikator för låsta lager förhindrar oavsiktliga ändringar
|
||||
- Lägg till lager på översta nivån eller underlager med egna namn
|
||||
- Ta bort enskilda lager
|
||||
- Sparar alla ändringar i en ny PDF-fil
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Växla synligheten för markeringslager i arkitekt- eller konstruktionsritningar
|
||||
- Lägga till nya anteckningslager i ett designdokument med många lager
|
||||
- Ta bort föråldrade lager från en mall innan den distribueras
|
||||
- Undersöka vilka lager som finns i en komplex PDF från en tredje part
|
||||
|
||||
## Tips
|
||||
|
||||
- Om PDF-filen saknar lager visar verktyget ett tomt läge med en uppmaning att lägga till ett. Inte alla PDF-filer använder OCG-lager, de är vanligast i CAD-exporter och designfiler.
|
||||
- Underlager visas med indrag under sitt överordnade lager. Du kan nästla lager till valfritt djup.
|
||||
- Låsta lager visas med en låsikon och deras kryssrutor är inaktiverade. Låsningarna har angetts av PDF-filens skapare.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Visa metadata](./view-metadata)
|
||||
- [Redigera metadata](./edit-metadata)
|
||||
- [Duplicera & organisera](./organize-pdf)
|
||||
@@ -0,0 +1,52 @@
|
||||
---
|
||||
title: PDF-multiverktyg
|
||||
description: En allt-i-ett-sidhanterare för att sammanfoga, dela, rotera, duplicera, ta bort och ordna om PDF-sidor.
|
||||
---
|
||||
|
||||
# PDF-multiverktyg
|
||||
|
||||
En enhetlig arbetsyta för alla åtgärder på sidnivå i PDF. Ladda upp en eller flera PDF-filer och arbeta med alla deras sidor i ett enda visuellt rutnät. Rotera, ordna om, duplicera, ta bort, infoga nya PDF-filer, lägg till tomma sidor och dela resultatet, allt utan att lämna verktyget.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Klicka på **Ladda upp PDF:er** eller dra filer till uppladdningsytan. Flera filer stöds.
|
||||
2. Alla sidor från varje uppladdad fil visas i ett rullningsbart rutnät med miniatyrer.
|
||||
3. Använd verktygsfältet eller knapparna för varje sida för att hantera sidor.
|
||||
4. Markera sidor med kryssrutan på varje kort och tillämpa sedan massåtgärder.
|
||||
5. Markera delningspunkter med saxikonen för att dela upp utdata i separata filer.
|
||||
6. Klicka på **Exportera PDF** för att ladda ner slutresultatet. Om delningsmarkörer finns blir utdata en ZIP med flera PDF-filer.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- **Sammanfoga**: Ladda upp flera PDF-filer så kombineras de automatiskt till en arbetsyta
|
||||
- **Ordna om**: Dra och släpp sidkort för att ändra ordningen
|
||||
- **Rotera**: Rotation per sida eller i bulk i steg om 90 grader (vänster eller höger)
|
||||
- **Duplicera**: Klona valfri sida med ett klick
|
||||
- **Ta bort**: Ta bort enskilda sidor eller markerade sidor på en gång
|
||||
- **Infoga PDF**: Lägg till en ny PDF efter en viss sida
|
||||
- **Lägg till tom sida**: Lägg till en tom A4-sida i slutet
|
||||
- **Dela**: Placera delningsmarkörer mellan sidor och exportera sedan som en ZIP med separata PDF-filer
|
||||
- **Markera alla / Avmarkera alla**: Snabbt urval för massåtgärder
|
||||
- **Ångra / Gör om**: Fullständig ångra- och gör om-historik för varje åtgärd
|
||||
- **Ladda ner markerade**: Exportera bara de markerade sidorna som en fristående PDF
|
||||
- Reparerar skadade PDF-filer automatiskt innan de läses in
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Bygga ett eget dokument av sidor från flera käll-PDF:er
|
||||
- Städa upp ett skannat dokument genom att ta bort tomma sidor, rotera sidvända skanningar och ordna om avsnitt
|
||||
- Dela en stor PDF vid kapitelgränser med visuella delningsmarkörer
|
||||
- Snabb redigering på sidnivå utan att behöva en fullständig PDF-redigerare
|
||||
|
||||
## Tips
|
||||
|
||||
- Ångra- och gör om-systemet spårar varje åtgärd. Använd det fritt, du kan inte råka förstöra ditt arbete.
|
||||
- Delningsmarkörer visas som streckade blå linjer mellan sidor. Placera dem visuellt där du vill dela dokumentet och exportera sedan för att få en ZIP.
|
||||
- För enkla uppgifter som sammanfogning eller delning kan de särskilda verktygen [Sammanfoga PDF](./merge-pdf) eller [Dela PDF](./split-pdf) gå snabbare. Multiverktyget är bäst när du behöver flera åtgärder i en session.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Sammanfoga PDF](./merge-pdf)
|
||||
- [Dela PDF](./split-pdf)
|
||||
- [Duplicera & organisera](./organize-pdf)
|
||||
- [Rotera PDF](./rotate-pdf)
|
||||
@@ -0,0 +1,40 @@
|
||||
---
|
||||
title: PDF till BMP
|
||||
description: Konvertera PDF-sidor till okomprimerade BMP-bilder. Användbart för äldre system och utskriftsflöden som kräver bitmapp som indata.
|
||||
---
|
||||
|
||||
# PDF till BMP
|
||||
|
||||
Konverterar varje sida i en PDF till en BMP-bild (bitmapp). BMP är ett okomprimerat format, så utdata är pixelperfekt utan kvalitetsförlust, men filerna blir stora.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en PDF genom att klicka på släppytan eller dra en fil dit.
|
||||
2. Klicka på **Konvertera** för att bearbeta filen.
|
||||
3. En enskild `.bmp`-fil eller ett ZIP-arkiv laddas ner automatiskt.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Verktyget har inga inställbara alternativ. Sidor renderas i fast 2x-skala, vilket ger bilder med ungefär dubbla PDF-sidans ursprungliga mått.
|
||||
|
||||
## Utdataformat
|
||||
|
||||
- **En sida**: `filename.bmp`
|
||||
- **Flera sidor**: `filename_bmps.zip` med `page_1.bmp`, `page_2.bmp` osv.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Mata in PDF-sidor i äldre system eller hårdvara som bara tar emot BMP.
|
||||
- Förbereda okomprimerade bilder för vissa utskriftsflöden.
|
||||
- Använda bitmappsutdata som indata till bildbehandlingsverktyg som kräver råa pixeldata.
|
||||
|
||||
## Tips
|
||||
|
||||
- BMP-filer blir mycket stora eftersom de lagrar råa pixeldata utan komprimering. För de flesta ändamål ger [PDF till PNG](./pdf-to-png) förlustfri kvalitet med mycket mindre filer.
|
||||
- Om ditt målsystem accepterar PNG eller TIFF, välj hellre de formaten för att spara diskutrymme.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [PDF till PNG](./pdf-to-png)
|
||||
- [PDF till TIFF](./pdf-to-tiff)
|
||||
- [PDF till JPG](./pdf-to-jpg)
|
||||
@@ -0,0 +1,77 @@
|
||||
---
|
||||
title: PDF till CBZ
|
||||
description: Konvertera en PDF till en CBZ-fil (Comic Book Archive) för serieläsare som Komga, Kavita, CDisplayEx och Calibre.
|
||||
---
|
||||
|
||||
# PDF till CBZ
|
||||
|
||||
Konverterar en PDF till en CBZ-fil (Comic Book ZIP), standardformatet för digitala serier och manga. Varje PDF-sida blir en bild i arkivet. Verktyget skapar metadata i tre format för maximal kompatibilitet: ComicInfo.xml, metadata.opf och ComicBookInfo JSON.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en PDF genom att klicka på släppytan eller dra en fil dit.
|
||||
2. Välj bildformat, kvalitet, skala och valfri metadata.
|
||||
3. Klicka på **Konvertera** för att skapa CBZ-filen.
|
||||
4. Filen `.cbz` laddas ner automatiskt.
|
||||
|
||||
## Alternativ
|
||||
|
||||
| Alternativ | Värden | Standard | Beskrivning |
|
||||
| ------------------ | --------------- | -------- | ----------------------------------------------------------------------------------- |
|
||||
| Bildformat | JPEG, PNG, WebP | JPEG | JPEG för färgserier, PNG för förlustfri svartvit manga, WebP för bäst komprimering. |
|
||||
| Kvalitet | 50–100% | 85% | Styr JPEG/WebP-komprimeringen. Dold för PNG (alltid förlustfri). |
|
||||
| Skala | 1.0x–4.0x | 2.0x | Högre skala ger skarpare bilder för skärmar med hög upplösning. |
|
||||
| Gråskala | På/Av | Av | Konverterar sidor till gråskala. Minskar filstorleken för svartvitt innehåll. |
|
||||
| Mangaläge | På/Av | Av | Anger läsriktning från höger till vänster i metadata. |
|
||||
| Inkludera metadata | På/Av | På | Bäddar in ComicInfo.xml, metadata.opf och ComicBookInfo JSON. |
|
||||
|
||||
## Metadatafält
|
||||
|
||||
När metadata är aktiverat kan du fylla i:
|
||||
|
||||
- **Titel**: Identifieras automatiskt från PDF-filens namn.
|
||||
- **Serie**: Seriens namn (t.ex. "Naruto").
|
||||
- **Nummer (#)**: Utgåvans nummer i serien.
|
||||
- **Volym (Vol.)**: Volymnummer.
|
||||
- **Författare**: Manusförfattarens eller skaparens namn.
|
||||
- **Förlag**: Förlaget.
|
||||
- **Taggar / Genre**: Kommaseparerade taggar (t.ex. "Action, Äventyr").
|
||||
- **Utgivningsår**: Utgivningsår (1900–2100).
|
||||
- **Betyg**: Communityns betyg från 0 till 5.
|
||||
|
||||
## Metadatakompatibilitet
|
||||
|
||||
Verktyget skriver metadata i tre format så att varje läsare kan hitta den:
|
||||
|
||||
| Format | Plats | Stöds av |
|
||||
| ------------------ | ------------------ | ------------------------------------------- |
|
||||
| ComicInfo.xml | Fil i ZIP-arkivet | Komga, Kavita, CDisplayEx, Mylar, ComicRack |
|
||||
| metadata.opf | Fil i ZIP-arkivet | Calibre |
|
||||
| ComicBookInfo JSON | ZIP-kommentarsfält | Calibre (reserv) |
|
||||
|
||||
## Utdataformat
|
||||
|
||||
- `filename.cbz`: Ett ZIP-arkiv med numrerade sidbilder och metadatafiler.
|
||||
|
||||
Sidbilderna namnges med nollutfyllda nummer (`01.jpg`, `02.jpg` osv.) så att läsare visar dem i rätt ordning.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Konvertera manga- eller serie-PDF:er för användning i serieläsare.
|
||||
- Bygga ett digitalt serie-bibliotek i Komga, Kavita eller Calibre.
|
||||
- Konvertera inskannade serietidningar till ett läsarvänligt format.
|
||||
- Dela serier i ett format som bevarar läsriktning och metadata.
|
||||
|
||||
## Tips
|
||||
|
||||
- Använd **JPEG** för färgserier och **PNG** för svartvit manga, eftersom PNG komprimerar svartvitt innehåll mycket effektivt.
|
||||
- Aktivera **Gråskala** för manga för att minska filstorleken avsevärt.
|
||||
- Fyll i fälten **Serie** och **Nummer** så att biblioteksverktyg (Komga, Calibre) kan organisera din samling automatiskt.
|
||||
- **WebP** ger bäst komprimering, men äldre serieläsare kanske inte stöder det.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [PDF till JPG](./pdf-to-jpg)
|
||||
- [PDF till PNG](./pdf-to-png)
|
||||
- [PDF till TIFF](./pdf-to-tiff)
|
||||
- [Extrahera bilder](./extract-images)
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: PDF till CSV
|
||||
description: Extrahera tabeller från PDF-dokument och exportera dem som en enda CSV-fil. Hanterar PDF-filer med flera sidor med automatisk tabellidentifiering.
|
||||
---
|
||||
|
||||
# PDF till CSV
|
||||
|
||||
Extraherar tabeller från en PDF och exporterar dem som en CSV-fil. Verktyget söker igenom varje sida efter tabelldata med PyMuPDF:s tabellidentifiering och skriver alla hittade rader i en enda kommaseparerad utdatafil.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en PDF genom att klicka på släppytan eller dra en fil dit.
|
||||
2. Klicka på **Konvertera** för att starta tabellextraheringen.
|
||||
3. Verktyget söker igenom varje sida och identifierar tabeller automatiskt.
|
||||
4. En `.csv`-fil laddas ner med alla extraherade tabelldata.
|
||||
|
||||
Tabeller från olika sidor skiljs åt med tomma rader i utdata. Celler som innehåller kommatecken, citattecken eller radbrytningar escapas korrekt enligt RFC 4180.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Verktyget har inga inställbara alternativ. Alla tabeller som hittas i dokumentet extraheras och kombineras i en enda CSV.
|
||||
|
||||
## Utdataformat
|
||||
|
||||
- En enda `filename.csv`-fil med alla identifierade tabeller.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Hämta ekonomiska data från PDF-kontoutdrag eller fakturor till ett kalkylblad.
|
||||
- Extrahera pristabeller från leverantörsoffert för jämförelse.
|
||||
- Konvertera tabelldata från PDF-artiklar till ett format som passar analysverktyg.
|
||||
- Migrera data från äldre PDF-rapporter till databaser.
|
||||
|
||||
## Tips
|
||||
|
||||
- Om inga tabeller hittas visar verktyget meddelandet "Inga tabeller hittades". Det beror oftast på att PDF-filen har en textlayout som ser ut som en tabell men inte är uppbyggd som en riktig tabell.
|
||||
- För mer kontroll över enskilda tabeller, använd [Extrahera PDF-tabeller](./extract-tables), där du kan välja mellan CSV, JSON och Markdown som utdataformat.
|
||||
- Om du behöver data i Excel-format med separata blad för varje tabell, använd [PDF till Excel](./pdf-to-excel).
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [PDF till Excel](./pdf-to-excel)
|
||||
- [Extrahera PDF-tabeller](./extract-tables)
|
||||
- [PDF till text](./pdf-to-text)
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: PDF till Excel
|
||||
description: Extrahera tabeller från PDF-dokument till ett Excel-kalkylblad. Varje tabell får ett eget kalkylblad med sidhänvisning.
|
||||
---
|
||||
|
||||
# PDF till Excel
|
||||
|
||||
Extraherar tabeller från en PDF och sparar dem som ett Excel-kalkylblad (`.xlsx`). Varje identifierad tabell placeras på ett eget blad, märkt med tabellnummer och källsida. Drivs av PyMuPDF för tabellidentifiering och biblioteket SheetJS för att skapa Excel-filen.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en PDF genom att klicka på släppytan eller dra en fil dit.
|
||||
2. Klicka på **Konvertera** för att starta tabellextraheringen.
|
||||
3. Verktyget söker igenom varje sida efter tabeller och bygger sedan en Excel-arbetsbok.
|
||||
4. En `.xlsx`-fil laddas ner med ett blad per tabell.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Verktyget har inga inställbara alternativ. Alla identifierade tabeller extraheras automatiskt.
|
||||
|
||||
## Utdataformat
|
||||
|
||||
- En enda `filename.xlsx`-fil.
|
||||
- **En tabell**: ett enda blad med namnet "Table".
|
||||
- **Flera tabeller**: blad med namnen "Table 1 (Page 3)", "Table 2 (Page 5)" osv. Bladnamn kortas till 31 tecken (Excels gräns).
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Konvertera ekonomiska PDF-rapporter till redigerbara kalkylblad för vidare analys.
|
||||
- Extrahera lager- eller beställningstabeller från leverantörers PDF-filer.
|
||||
- Hämta strukturerade data från PDF-formulär eller kataloger till Excel för sortering och filtrering.
|
||||
- Arkivera tabelldata från PDF i ett format som kollegor utan teknisk bakgrund kan arbeta med.
|
||||
|
||||
## Tips
|
||||
|
||||
- Om verktyget rapporterar "Inga tabeller hittades" använder PDF-filen sannolikt en fri textlayout i stället för strukturerade tabeller. Prova [PDF till text](./pdf-to-text) för att hämta det råa innehållet.
|
||||
- För ett enklare platt format, använd [PDF till CSV](./pdf-to-csv). För nedladdning per tabell i flera format, använd [Extrahera PDF-tabeller](./extract-tables).
|
||||
- Titta på bladnamnen för att se vilken sida varje tabell kommer från.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [PDF till CSV](./pdf-to-csv)
|
||||
- [Extrahera PDF-tabeller](./extract-tables)
|
||||
- [PDF till text](./pdf-to-text)
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: PDF till gråskala
|
||||
description: Konvertera en PDF i färg till en gråskaleversion (svartvit). Skapar en ny PDF där all färg är borttagen från varje sida.
|
||||
---
|
||||
|
||||
# PDF till gråskala
|
||||
|
||||
Konverterar en PDF i färg till en gråskaleversion. Varje sida renderas, avmättas och bäddas in på nytt som en JPEG-bild i en ny PDF. Utdata bevarar de ursprungliga sidmåtten.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en PDF genom att klicka på släppytan eller dra en fil dit.
|
||||
2. Klicka på **Konvertera** för att bearbeta filen.
|
||||
3. En ny `greyscale.pdf` laddas ner med alla sidor konverterade till svartvitt.
|
||||
|
||||
Bakom kulisserna renderas varje sida i 2x-skala, pixeldata körs genom ett gråskalefilter och kodas sedan om som JPEG med 90 % kvalitet och placeras i ett nytt PDF-dokument.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Verktyget har inga inställbara alternativ. Gråskalekonverteringen använder en standardformel för luminans och JPEG-kvaliteten är fast på 90 %.
|
||||
|
||||
## Utdataformat
|
||||
|
||||
- En enda `greyscale.pdf`-fil med alla sidor som JPEG-bilder i gråskala.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Förbereda dokument för svartvit utskrift för att spara på färgbläck.
|
||||
- Uppfylla inlämningskrav för juridiska eller offentliga handlingar som kräver gråskala.
|
||||
- Minska filstorleken på färgtunga PDF-filer (JPEG-bilder i gråskala är mindre än färgbilder).
|
||||
- Skapa en enhetlig visuell stil i dokument med blandade färg- och svartvita sidor.
|
||||
|
||||
## Tips
|
||||
|
||||
- Eftersom varje sida rastreras och bäddas in som JPEG är utdata bildbaserad. Text i den ursprungliga PDF-filen går inte längre att markera eller söka i. Om du behöver sökbar text efteråt kan du köra utdata genom OCR-verktyget.
|
||||
- För mer kontroll över färgjusteringar (ljusstyrka, kontrast, mättnad), titta på verktyget Justera färger eller noden Gråskala i [PDF-arbetsflödesbyggare](./pdf-workflow).
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [PDF till JPG](./pdf-to-jpg)
|
||||
- [PDF till PNG](./pdf-to-png)
|
||||
- [PDF-arbetsflödesbyggare](./pdf-workflow)
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
title: PDF till JPG
|
||||
description: Konvertera PDF-sidor till JPG-bilder med justerbar kvalitet. PDF-filer med en sida laddas ner direkt, filer med flera sidor exporteras som ZIP.
|
||||
---
|
||||
|
||||
# PDF till JPG
|
||||
|
||||
Konverterar varje sida i en PDF till en JPG-bild. Dokument med en sida laddas ner som en fristående `.jpg`-fil. PDF-filer med flera sidor ger ett ZIP-arkiv med en JPG per sida.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en PDF genom att klicka på släppytan eller dra en fil dit. Verktyget visar filnamn, filstorlek och antal sidor.
|
||||
2. Justera reglaget **Kvalitet** för att styra JPG-komprimeringen.
|
||||
3. Klicka på **Konvertera** för att starta bearbetningen.
|
||||
4. Resultatet laddas ner automatiskt: en enda JPG för PDF-filer med en sida eller en ZIP-fil för dokument med flera sidor.
|
||||
|
||||
## Alternativ
|
||||
|
||||
- **Kvalitet**: ett reglage från 0 % till 100 % (standard 90 %). Högre värden ger skarpare bilder med större filer. Lägre värden komprimerar hårdare.
|
||||
|
||||
Sidor renderas internt i 2x-skala, så utdataupplösningen är dubbelt så stor som PDF-sidans mått. En vanlig sida i Letter-storlek ger en bild på ungefär 1 224 x 1 584 pixlar.
|
||||
|
||||
## Utdataformat
|
||||
|
||||
- **En sida**: `filename.jpg`
|
||||
- **Flera sidor**: `filename_jpgs.zip` med `page_1.jpg`, `page_2.jpg` osv.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Skapa förhandsminiatyrer för ett dokumenthanteringssystem.
|
||||
- Dela en sida från en rapport i en chatt eller ett e-postprogram som inte stöder PDF.
|
||||
- Skapa bildresurser från PDF-diagram eller illustrationer.
|
||||
- Arkivera skannade dokument som enskilda bilder.
|
||||
|
||||
## Tips
|
||||
|
||||
- För förlustfri utdata, använd [PDF till PNG](./pdf-to-png) i stället.
|
||||
- En kvalitetsinställning på 80-90 % ger en bra balans mellan filstorlek och visuell återgivning.
|
||||
- Om du behöver ett visst format per sida kan du använda [PDF-arbetsflödesbyggare](./pdf-workflow), som har en utdatanod för PDF till bilder.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [PDF till PNG](./pdf-to-png)
|
||||
- [PDF till WebP](./pdf-to-webp)
|
||||
- [PDF till BMP](./pdf-to-bmp)
|
||||
- [PDF till TIFF](./pdf-to-tiff)
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
title: PDF till JSON
|
||||
description: Konvertera PDF-filer till strukturerat JSON-format med CPDF. Exporterar PDF-filens interna struktur som maskinläsbara JSON-data.
|
||||
---
|
||||
|
||||
# PDF till JSON
|
||||
|
||||
Konverterar en eller flera PDF-filer till JSON-format. Verktyget använder CPDF (Coherent PDF) för att serialisera varje PDF-fils interna struktur till en maskinläsbar JSON-representation. Utdata levereras alltid som ett ZIP-arkiv.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Välj en eller flera PDF-filer med filväljaren.
|
||||
2. Klicka på **Konvertera** för att starta bearbetningen. Konverteringen körs i en webbworker i bakgrunden.
|
||||
3. Ett ZIP-arkiv laddas ner med en JSON-fil för varje PDF.
|
||||
|
||||
Statusraden visar förloppet genom konverteringen och skapandet av ZIP-filen.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Verktyget har inga inställbara alternativ. Varje PDF konverteras till sin fullständiga JSON-representation.
|
||||
|
||||
## Utdataformat
|
||||
|
||||
- En `pdfs-to-json.zip`-fil med `filename.json` för varje PDF.
|
||||
|
||||
JSON-utdata representerar PDF-filens interna objektstruktur, inklusive sidträd, typsnittsreferenser, metadata och innehållsströmmar.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Undersöka en PDF-fils interna struktur för felsökning eller validering.
|
||||
- Extrahera strukturerad metadata och sidegenskaper programmatiskt.
|
||||
- Mata in PDF-strukturdata i egna bearbetningskedjor.
|
||||
- Granska PDF-dokument för efterlevnad genom att analysera deras objektträd.
|
||||
|
||||
## Tips
|
||||
|
||||
- Verktyget ger den råa PDF-objektstrukturen, inte extraherat textinnehåll. Om du behöver sidtext i JSON-format, använd [Förbered PDF för AI](./prepare-pdf-for-ai) i stället.
|
||||
- För ren textextrahering är [PDF till text](./pdf-to-text) enklare.
|
||||
- Stora PDF-filer med komplex struktur ger mycket stora JSON-filer.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [PDF till text](./pdf-to-text)
|
||||
- [Förbered PDF för AI](./prepare-pdf-for-ai)
|
||||
- [Extrahera PDF-tabeller](./extract-tables)
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: PDF till Markdown
|
||||
description: Konvertera PDF-dokument till Markdown-format med valfri bildextrahering. Stöder batchkonvertering av flera filer.
|
||||
---
|
||||
|
||||
# PDF till Markdown
|
||||
|
||||
Konverterar PDF-filer till Markdown-format (`.md`) och bevarar rubriker, stycken, listor och enkel formatering. Kan även extrahera och inkludera inbäddade bilder. Stöder konvertering av enskilda filer och batchkonvertering. Drivs av PyMuPDF.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en eller flera PDF-filer genom att klicka på släppytan eller dra filer dit.
|
||||
2. Slå vid behov på **Inkludera bilder** för att bädda in extraherade bilder i Markdown-utdata.
|
||||
3. Klicka på **Konvertera** för att starta bearbetningen.
|
||||
4. En enskild fil laddas ner som `filename.md`. Flera filer ger en `markdown-files.zip`.
|
||||
|
||||
## Alternativ
|
||||
|
||||
- **Inkludera bilder**: när det är markerat extraheras inbäddade bilder från PDF-filen och refereras i Markdown-utdata. När det inte är markerat konverteras bara textinnehållet.
|
||||
|
||||
## Utdataformat
|
||||
|
||||
- **En fil**: `filename.md`
|
||||
- **Flera filer**: `markdown-files.zip` med en `.md` per PDF.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Konvertera PDF-dokumentation till Markdown för en statisk webbplatsgenerator som VitePress, Hugo eller Jekyll.
|
||||
- Göra PDF-forskningsartiklar till redigerbar Markdown för anteckningsappar som Obsidian.
|
||||
- Migrera äldre PDF-kunskapsbaser till ett Git-vänligt textformat.
|
||||
- Extrahera strukturerat innehåll från PDF-e-böcker för omformatering.
|
||||
|
||||
## Tips
|
||||
|
||||
- Alternativet Inkludera bilder är användbart när PDF-filen innehåller diagram eller figurer som är avgörande för innehållet. Stäng av det för textbaserade dokument så blir utdata renare.
|
||||
- Komplexa layouter med sidofält, fotnoter eller text i flera kolumner kan ge ofullständig Markdown. Granska och justera utdata vid behov.
|
||||
- För rå text utan formatering, använd [PDF till text](./pdf-to-text) i stället.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [PDF till text](./pdf-to-text)
|
||||
- [PDF till Word](./pdf-to-word)
|
||||
- [Förbered PDF för AI](./prepare-pdf-for-ai)
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
title: PDF till PDF/A
|
||||
description: Konvertera vanliga PDF-filer till PDF/A-format för långtidsarkivering. Stöder konformitetsnivåerna PDF/A-1b, PDF/A-2b och PDF/A-3b.
|
||||
---
|
||||
|
||||
# PDF till PDF/A
|
||||
|
||||
PDF/A är en ISO-standardiserad delmängd av PDF som utformats för långsiktig digital bevarande. Verktyget konverterar dina vanliga PDF-filer till PDF/A-kompatibla dokument med Ghostscript som körs direkt i webbläsaren.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en eller flera PDF-filer.
|
||||
2. Välj en **PDF/A-version** i rullgardinsmenyn.
|
||||
3. Aktivera vid behov **Platta till PDF i förväg** för komplexa filer som inte klarar en vanlig konvertering.
|
||||
4. Klicka på **Konvertera till PDF/A**. Flera filer ger ett ZIP-arkiv.
|
||||
|
||||
## PDF/A-versioner
|
||||
|
||||
| Version | Begränsningar | Bäst för |
|
||||
| ------------ | ----------------------------------------- | -------------------------------------------------- |
|
||||
| **PDF/A-1b** | Strängast. Ingen transparens, inga lager. | Maximal kompatibilitet med äldre arkivsystem |
|
||||
| **PDF/A-2b** | Tillåter transparens och JPEG2000. | Allmän arkivering (rekommenderas) |
|
||||
| **PDF/A-3b** | Tillåter inbäddade bilagor i alla format. | Arkivering av dokument med underliggande datafiler |
|
||||
|
||||
PDF/A-2b är förvalt och fungerar för de allra flesta arkiveringsbehov.
|
||||
|
||||
## Alternativet att platta till i förväg
|
||||
|
||||
Vissa PDF-filer innehåller funktioner som hindrar en ren PDF/A-konvertering, till exempel ovanliga typsnittskodningar, komplexa transparenslager eller trasiga interna strukturer. Om du aktiverar **Platta till i förväg** rastreras PDF-filen i 300 DPI före konverteringen, vilket garanterar efterlevnad men gör att texten inte längre går att markera. Använd det som reserv när den vanliga konverteringen ger fel.
|
||||
|
||||
Att platta till i förväg kräver PyMuPDF WASM-motorn.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Uppfylla offentliga eller juridiska arkivkrav (många jurisdiktioner kräver PDF/A för domstolshandlingar)
|
||||
- Lämna in dokument till institutionella arkiv eller digitala bibliotek
|
||||
- Bevara affärshandlingar där originalprogramvaran kanske inte finns om tio år
|
||||
- Förbereda fakturor för e-fakturastandarder som kräver PDF/A-3b med XML-bilagor
|
||||
|
||||
## Tips
|
||||
|
||||
- Prova konverteringen utan att platta till i förväg först. Aktivera det bara om du får ett fel.
|
||||
- PDF/A bäddar in alla typsnitt, så utdatafilerna blir ofta större än originalen.
|
||||
- Validera utdata i en särskild PDF/A-validerare om ditt arbetsflöde kräver strikt efterlevnad.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Komprimera PDF](./compress-pdf): minska filstorleken efter konverteringen
|
||||
- [Platta till PDF](./flatten-pdf): platta till formulär före konvertering till PDF/A
|
||||
- [Ta bort metadata](./remove-metadata): ta bort metadata före arkivering
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: PDF till PNG
|
||||
description: Konvertera PDF-sidor till förlustfria PNG-bilder med justerbar skala. Idealiskt för högkvalitativa skärmbilder och genomskinliga bakgrunder.
|
||||
---
|
||||
|
||||
# PDF till PNG
|
||||
|
||||
Konverterar varje sida i en PDF till en PNG-bild. PNG använder förlustfri komprimering, så utdata bevarar varje detalj på originalsidan. PDF-filer med en sida laddas ner som en `.png`-fil, filer med flera sidor ger en ZIP.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en PDF genom att klicka på släppytan eller dra en fil dit.
|
||||
2. Ställ in reglaget **Skala** för att styra utdataupplösningen.
|
||||
3. Klicka på **Konvertera** för att starta bearbetningen.
|
||||
4. En enskild PNG eller ett ZIP-arkiv laddas ner automatiskt.
|
||||
|
||||
## Alternativ
|
||||
|
||||
- **Skala**: från 1.0x till 3.0x (standard 2.0x). Vid 2.0x renderas en vanlig sida i Letter-storlek till ungefär 1 224 x 1 584 pixlar. Högre skalvärden ger större och skarpare bilder på bekostnad av filstorlek och bearbetningstid.
|
||||
|
||||
## Utdataformat
|
||||
|
||||
- **En sida**: `filename.png`
|
||||
- **Flera sidor**: `filename_pngs.zip` med `page_1.png`, `page_2.png` osv.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Ta högkvalitativa skärmbilder av PDF-sidor till presentationer.
|
||||
- Extrahera diagram eller illustrationer som behöver skarpa kanter och inga komprimeringsartefakter.
|
||||
- Förbereda resurser för webbdesign från PDF-skisser.
|
||||
- Skapa förlustfria sidbilder för OCR-förbehandling.
|
||||
|
||||
## Tips
|
||||
|
||||
- PNG-filer är betydligt större än JPG. Om filstorleken är viktigare än perfekt kvalitet, använd [PDF till JPG](./pdf-to-jpg) eller [PDF till WebP](./pdf-to-webp).
|
||||
- Vid skala 1.0x motsvarar utdata PDF-filens ursprungliga upplösning. Höj till 3.0x för exporter i utskriftskvalitet.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [PDF till JPG](./pdf-to-jpg)
|
||||
- [PDF till WebP](./pdf-to-webp)
|
||||
- [PDF till SVG](./pdf-to-svg)
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: PDF till SVG
|
||||
description: Konvertera PDF-sidor till skalbar SVG-vektorgrafik. Bevarar text och former som vektorbanor för oändlig skalning.
|
||||
---
|
||||
|
||||
# PDF till SVG
|
||||
|
||||
Konverterar varje sida i en PDF till en SVG-fil (Scalable Vector Graphics). Till skillnad från rasterformat bevarar SVG vektorbanor, text och former så att utdata kan skalas till vilken storlek som helst utan pixlighet. Drivs av PyMuPDF.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en eller flera PDF-filer genom att klicka på släppytan eller dra filer dit. Du kan lägga till flera filer och hantera dem var för sig.
|
||||
2. Klicka på **Konvertera** för att bearbeta alla uppladdade filer.
|
||||
3. Konverteringar av en enskild fil med en sida laddas ner som en fristående `.svg`. Allt annat laddas ner som ett ZIP-arkiv.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Verktyget har inga inställbara alternativ. Varje sida konverteras till SVG med PyMuPDF:s inbyggda vektorexport.
|
||||
|
||||
## Utdataformat
|
||||
|
||||
- **En fil, en sida**: `filename.svg`
|
||||
- **En fil, flera sidor**: `filename_svg.zip` med `page_1.svg`, `page_2.svg` osv.
|
||||
- **Flera filer**: `pdf_to_svg.zip` med filer ordnade efter källdokumentets namn.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Extrahera vektordiagram, grafer eller illustrationer från PDF-rapporter för användning på webbsidor.
|
||||
- Redigera PDF-sidors innehåll i en vektorredigerare som Inkscape eller Illustrator.
|
||||
- Bädda in skalbara sidförhandsvisningar i responsiva webbapplikationer.
|
||||
- Extrahera logotyper eller grafik från PDF-broschyrer med bevarade skarpa kanter.
|
||||
|
||||
## Tips
|
||||
|
||||
- SVG fungerar bäst med PDF-filer som innehåller vektorinnehåll. Skannade dokument eller bildtunga PDF-filer ger stora SVG-filer med inbäddade rasterdata.
|
||||
- För rasterutdata från bildtunga PDF-filer, använd [PDF till PNG](./pdf-to-png) eller [PDF till JPG](./pdf-to-jpg) i stället.
|
||||
- Verktyget stöder batchkonvertering: ladda upp flera PDF-filer samtidigt för att konvertera dem alla i en körning.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [PDF till PNG](./pdf-to-png)
|
||||
- [PDF till JPG](./pdf-to-jpg)
|
||||
- [PDF till Markdown](./pdf-to-markdown)
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: PDF till text
|
||||
description: Extrahera ren text från PDF-filer. Stöder batchextrahering av flera PDF-filer med TXT-filer som utdata.
|
||||
---
|
||||
|
||||
# PDF till text
|
||||
|
||||
Extraherar allt textinnehåll från PDF-filer och sparar det som rena `.txt`-filer. Stöder batchbearbetning: ladda upp flera PDF-filer och få varje fils text extraherad i en och samma åtgärd. Drivs av PyMuPDF.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en eller flera PDF-filer genom att klicka på släppytan eller dra filer dit. Hantera fillistan med knapparna Lägg till fler och Rensa.
|
||||
2. Klicka på **Extrahera** för att starta bearbetningen.
|
||||
3. En enskild fil laddas ner som `filename.txt`. Flera filer ger ett `pdf-to-text.zip`-arkiv.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Verktyget har inga inställbara alternativ. Allt textinnehåll extraheras från varje sida i läsordning.
|
||||
|
||||
## Utdataformat
|
||||
|
||||
- **En fil**: `filename.txt`
|
||||
- **Flera filer**: `pdf-to-text.zip` med en `.txt` per PDF.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Extrahera brödtext från PDF-rapporter för indexering av fulltextsökning.
|
||||
- Konvertera PDF-e-böcker eller artiklar till ren text för läsning på e-ink-enheter.
|
||||
- Hämta text från avtal eller juridiska dokument för nyckelordsanalys.
|
||||
- Ta bort formatering från PDF-filer för att få ren text till databehandlingsskript.
|
||||
- Förbereda textkorpusar från PDF-arkiv för språkteknologi.
|
||||
|
||||
## Tips
|
||||
|
||||
- Skannade PDF-filer (endast bild) ger tomma textfiler eftersom det inte finns något textlager att extrahera. Kör skannade dokument genom OCR först.
|
||||
- Utdata bevarar läsordningen så som PyMuPDF tolkar den, vilket oftast följer vänster till höger och uppifrån och ned. Layouter med flera kolumner kan ge text som blandas ihop.
|
||||
- För strukturerad utdata med rubriker och formatering, prova [PDF till Markdown](./pdf-to-markdown). För AI-färdig strukturerad JSON, använd [Förbered PDF för AI](./prepare-pdf-for-ai).
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [PDF till Markdown](./pdf-to-markdown)
|
||||
- [Förbered PDF för AI](./prepare-pdf-for-ai)
|
||||
- [PDF till Word](./pdf-to-word)
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: PDF till TIFF
|
||||
description: Konvertera PDF-sidor till TIFF-bilder, vanligt i tryck-, fax- och arkivflöden. Faller tillbaka på PNG om kodningen misslyckas.
|
||||
---
|
||||
|
||||
# PDF till TIFF
|
||||
|
||||
Konverterar varje sida i en PDF till en TIFF-bild. TIFF är standardformatet för tryckproduktion, faxsystem och dokumentarkivering. Verktyget använder PackBits-komprimering för TIFF-kodningen och faller tillbaka på PNG om en sida inte kan kodas.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en PDF genom att klicka på släppytan eller dra en fil dit.
|
||||
2. Klicka på **Konvertera** för att bearbeta filen.
|
||||
3. En enskild TIFF-fil eller ett ZIP-arkiv laddas ner automatiskt.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Verktyget har inga inställbara alternativ. Sidor renderas i fast 2x-skala.
|
||||
|
||||
## Utdataformat
|
||||
|
||||
- **En sida**: `filename.tiff`
|
||||
- **Flera sidor**: `filename_tiffs.zip` med `page_1.tiff`, `page_2.tiff` osv.
|
||||
|
||||
Om TIFF-kodningen misslyckas för en viss sida (på grund av komprimeringsproblem) sparas den sidan som en `.png`-fil i stället. ZIP-filen innehåller då en blandning av TIFF- och PNG-filer.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Lämna in dokument till myndigheter eller juridiska system som kräver TIFF-format.
|
||||
- Förbereda sidor för faxöverföring via digitala faxtjänster.
|
||||
- Arkivera skannade dokument i ett brett stött förlustfritt format.
|
||||
- Mata in sidor i dokumenthanteringssystem för företag.
|
||||
|
||||
## Tips
|
||||
|
||||
- TIFF-filer är stora. Om du bara behöver förlustfri kvalitet för webben eller skärmen är [PDF till PNG](./pdf-to-png) ett bättre val.
|
||||
- Kontrollera ZIP-filens innehåll om vissa sidor behövde PNG-reserven, eftersom du kanske vill konvertera dem separat.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [PDF till PNG](./pdf-to-png)
|
||||
- [PDF till BMP](./pdf-to-bmp)
|
||||
- [PDF till JPG](./pdf-to-jpg)
|
||||
@@ -0,0 +1,43 @@
|
||||
---
|
||||
title: PDF till WebP
|
||||
description: Konvertera PDF-sidor till WebP-bilder med justerbar kvalitet. Mindre filer än JPG vid jämförbar visuell kvalitet.
|
||||
---
|
||||
|
||||
# PDF till WebP
|
||||
|
||||
Konverterar varje sida i en PDF till en WebP-bild. WebP ger vanligtvis filer som är 25-35 % mindre än JPG vid samma upplevda kvalitet, vilket gör det till ett starkt val för webben.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en PDF genom att klicka på släppytan eller dra en fil dit.
|
||||
2. Justera reglaget **Kvalitet**.
|
||||
3. Klicka på **Konvertera** för att bearbeta filen.
|
||||
4. En enskild `.webp`-fil eller ett ZIP-arkiv laddas ner automatiskt.
|
||||
|
||||
## Alternativ
|
||||
|
||||
- **Kvalitet**: ett reglage från 0 % till 100 % (standard 85 %). Styr nivån på den förlustbringande komprimeringen. Högre värden behåller fler detaljer.
|
||||
|
||||
Sidor renderas internt i 2x-skala, vilket ger bilder med ungefär dubbla PDF-filens ursprungliga mått.
|
||||
|
||||
## Utdataformat
|
||||
|
||||
- **En sida**: `filename.webp`
|
||||
- **Flera sidor**: `filename_webps.zip` med `page_1.webp`, `page_2.webp` osv.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Förbereda sidförhandsvisningar för webbplatser där bandbredd spelar roll.
|
||||
- Skapa lätta bildversioner av flygblad eller broschyrer för sociala medier.
|
||||
- Batchkonvertera dokument med flera sidor till en webboptimerad bilduppsättning.
|
||||
|
||||
## Tips
|
||||
|
||||
- WebP stöds i alla moderna webbläsare. För äldre kompatibilitet, använd [PDF till JPG](./pdf-to-jpg) som reserv.
|
||||
- En kvalitet på 80-85 % går oftast inte att skilja från originalet på skärmen men håller nere filstorleken.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [PDF till JPG](./pdf-to-jpg)
|
||||
- [PDF till PNG](./pdf-to-png)
|
||||
- [PDF till BMP](./pdf-to-bmp)
|
||||
@@ -0,0 +1,42 @@
|
||||
---
|
||||
title: PDF till Word
|
||||
description: Konvertera PDF-filer till redigerbara Word-dokument (DOCX). Stöder batchkonvertering av flera PDF-filer samtidigt.
|
||||
---
|
||||
|
||||
# PDF till Word
|
||||
|
||||
Konverterar PDF-filer till redigerbara Word-dokument (`.docx`). Verktyget använder PyMuPDF för att återskapa dokumentets innehåll och bevarar text, enkel formatering och layout. Stöder konvertering av enskilda filer och batchkonvertering.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en eller flera PDF-filer genom att klicka på släppytan eller dra filer dit. Du kan lägga till fler filer eller ta bort enskilda från listan.
|
||||
2. Klicka på **Konvertera** för att starta bearbetningen.
|
||||
3. En enskild fil laddas ner som `filename.docx`. Flera filer paketeras i `converted-documents.zip`.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Verktyget har inga inställbara alternativ. Varje PDF konverteras till DOCX med PyMuPDF:s inbyggda konverteringsmotor.
|
||||
|
||||
## Utdataformat
|
||||
|
||||
- **En fil**: `filename.docx`
|
||||
- **Flera filer**: `converted-documents.zip` med en `.docx` per PDF.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Redigera text i en PDF som du har fått och behöver ändra.
|
||||
- Konvertera arkiverade PDF-rapporter till ett format som kollegor kan redigera i Microsoft Word eller Google Docs.
|
||||
- Hämta innehåll från PDF-avtal eller offerter till Word för ändringsspårning.
|
||||
- Migrera äldre PDF-dokumentation till ett redigerbart format.
|
||||
|
||||
## Tips
|
||||
|
||||
- Komplexa layouter med text i flera kolumner, inbäddade formulär eller mycket grafik kanske inte konverteras perfekt. Granska utdata och justera formateringen i din ordbehandlare.
|
||||
- Skannade PDF-filer (endast bild) ger tomma eller minimala DOCX-filer. Kör dem genom OCR först för att lägga till ett textlager.
|
||||
- Batchläget är effektivt för att konvertera hela mappar med PDF-filer: ladda upp dem alla på en gång.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [PDF till text](./pdf-to-text)
|
||||
- [PDF till Markdown](./pdf-to-markdown)
|
||||
- [PDF-arbetsflödesbyggare](./pdf-workflow)
|
||||
@@ -0,0 +1,41 @@
|
||||
---
|
||||
title: 'PDF:er till ZIP'
|
||||
description: Paketera flera PDF-filer i ett enda ZIP-arkiv för enkel delning och lagring.
|
||||
---
|
||||
|
||||
# PDF:er till ZIP
|
||||
|
||||
Samla flera PDF-filer i ett enda ZIP-arkiv. Det här är ett rent paketeringsverktyg: ingen konvertering, komprimering eller ändring av själva PDF-filerna sker.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp flera PDF-filer via släppytan.
|
||||
2. Granska fillistan. Ta bort de filer du inte vill ha med.
|
||||
3. Klicka på bearbetningsknappen.
|
||||
4. Ett ZIP-arkiv med alla uppladdade PDF-filer laddas ner direkt.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Tar emot valfritt antal PDF-filer
|
||||
- Borttagning av enskilda filer innan arkivet skapas
|
||||
- Bevarar de ursprungliga filnamnen i ZIP-filen
|
||||
- Ingen ändring av PDF-innehållet, filerna paketeras som de är
|
||||
- Visar filnamn och storlek för varje uppladdad PDF
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Samla en uppsättning fakturor eller kvitton som e-postbilaga
|
||||
- Paketera projektleveranser (flera PDF-rapporter) för överlämning
|
||||
- Skapa en enda nedladdning för en samling formulär eller mallar
|
||||
- Arkivera en grupp dokument i en komprimerad fil
|
||||
|
||||
## Tips
|
||||
|
||||
- ZIP-filen använder de ursprungliga PDF-filnamnen. Om du har filer med samma namn, döp om dem före uppladdningen för att undvika konflikter.
|
||||
- Verktyget komprimerar inte själva PDF-filerna. För att minska filstorleken, kör dem först genom Komprimera PDF och paketera sedan med det här verktyget.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Sammanfoga PDF](./merge-pdf)
|
||||
- [Dela PDF](./split-pdf)
|
||||
- [Komprimera PDF](./compress-pdf)
|
||||
@@ -0,0 +1,95 @@
|
||||
---
|
||||
title: PDF-arbetsflödesbyggare
|
||||
description: Bygg egna PDF-bearbetningskedjor visuellt genom att koppla ihop noder på en canvas. Kedja åtgärder som sammanfogning, komprimering, vattenstämpel och export.
|
||||
---
|
||||
|
||||
# PDF-arbetsflödesbyggare
|
||||
|
||||
Med arbetsflödesbyggaren kan du kedja flera PDF-åtgärder till en enda automatiserad pipeline. I stället för att köra verktygen ett i taget kopplar du ihop en visuell graf av noder (indata, bearbetning, utdata) och kör allt med ett klick. Dina filer lämnar aldrig webbläsaren.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
Gränssnittet är uppdelat i tre paneler: en **nodverktygslåda** till vänster, **canvasen** i mitten och en **inställningspanel** till höger som visas när du markerar en nod.
|
||||
|
||||
1. **Lägg till noder** genom att klicka på dem i det vänstra sidofältet eller dra dem direkt till canvasen. Använd sökfältet högst upp i verktygslådan för att filtrera efter namn.
|
||||
2. **Koppla ihop noder** genom att dra från ett utdatauttag (nederst på en nod) till ett indatauttag (överst på en annan nod). Kopplingar går uppifrån och ned.
|
||||
3. **Konfigurera inställningar** genom att klicka på en nod för att öppna dess inställningspanel till höger. Varje nodtyp har sina egna alternativ (sidintervall, kvalitetsreglage, lösenord osv.).
|
||||
4. **Kör arbetsflödet** genom att klicka på knappen **Kör** i verktygsfältet. Motorn kör noderna i topologisk ordning och bearbetar dem en i taget. Ett statusfält längst ned visar förloppet.
|
||||
5. **Ladda ner resultat**: den avslutande nedladdningsnoden sparar den slutliga PDF-filen (eller en ZIP om flera filer skapas).
|
||||
|
||||
## Nodkategorier
|
||||
|
||||
Noderna är ordnade i sex kategorier, var och en färgkodad på canvasen:
|
||||
|
||||
- **Indata** (blå): PDF-indata, bildindata, Word/Excel/PowerPoint till PDF och över 15 andra formatkonverterare som matar in filer i kedjan.
|
||||
- **Redigera & kommentera** (indigo): Beskär, Gråskala, Invertera färger, Vattenstämpel, Sidnummer, Sidhuvud & sidfot, Skannereffekt, Justera färger, Bakgrundsfärg, Ta bort tomma sidor, Ta bort kommentarer.
|
||||
- **Organisera & hantera** (violett): Sammanfoga, Dela, Extrahera sidor, Rotera, Ta bort sidor, Omvänd, Lägg till tom sida, Dela sidor, N-Up, Fixa sidstorlek, Kombinera till en sida, Broschyr, Posterisera, Redigera metadata, Innehållsförteckning, OCR.
|
||||
- **Optimera & reparera** (bärnsten): Komprimera, Rastrera, Linjärisera, Räta upp, PDF till PDF/A, Typsnitt till konturer, Reparera.
|
||||
- **Säkra PDF** (ros): Kryptera, Dekryptera, Sanera, Platta till, Digital signatur, Maskera.
|
||||
- **Utdata** (blågrön): Nedladdning (identifierar automatiskt enskild PDF eller ZIP), PDF till bilder, PDF till text, PDF till DOCX, PDF till XLSX, PDF till CSV, PDF till SVG, PDF till Markdown, Extrahera bilder.
|
||||
|
||||
## Spara och läsa in arbetsflöden
|
||||
|
||||
Verktygsfältet har fyra alternativ för att spara:
|
||||
|
||||
- **Spara**: sparar det aktuella arbetsflödet som en namngiven mall i webbläsarens lokala lagring. Du kan spara flera mallar.
|
||||
- **Läs in**: öppnar en dialogruta med alla sparade mallar. Klicka på Läs in för att återställa en, eller ta bort mallar du inte längre behöver.
|
||||
- **Exportera**: laddar ner arbetsflödet som en `.json`-fil så att du kan dela eller säkerhetskopiera det.
|
||||
- **Importera**: läser in en `.json`-arbetsflödesfil från disk och återställer alla noder, positioner och kopplingar.
|
||||
|
||||
Mallar finns kvar mellan sessioner i den lokala lagringen. Exporterade JSON-filer kan flyttas mellan webbläsare och datorer.
|
||||
|
||||
## Körningsmodell
|
||||
|
||||
Motorn bygger en beroendegraf utifrån dina kopplingar och kör noder i topologisk ordning. Om en nod misslyckas stoppas körningen och den felande noden markeras röd. Några regler att ha i åtanke:
|
||||
|
||||
- Varje arbetsflöde behöver minst en **indatanod** och en **utdatanod**.
|
||||
- Motorn upptäcker cirkulära beroenden och blockerar körningen med ett fel.
|
||||
- Noden **Kryptera** måste vara det sista bearbetningssteget före utdatanoden. Om den placeras tidigare utlöses en valideringsvarning, eftersom efterföljande noder inte kan arbeta med krypterade data.
|
||||
- Lösenordsskyddade PDF-filer ber om ett lösenord under körningen.
|
||||
- Indata med flera PDF-filer stöds: noden Sammanfoga kan kombinera dem, eller så bearbetar batchnoderna varje PDF för sig.
|
||||
|
||||
## Uttagstyper
|
||||
|
||||
Kopplingar använder typade uttag för att förhindra ogiltiga kopplingar:
|
||||
|
||||
- **PDF** (indigo): ett enskilt PDF-dokument.
|
||||
- **MultiPDF** (bärnsten): flera PDF-dokument samlade.
|
||||
- **Bild** (grön): en bildblob.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Varje nod har sin egen konfiguration som nås via den högra inställningspanelen. Vanliga mönster är:
|
||||
|
||||
- **Sidintervall** på noderna Dela, Extrahera sidor och Ta bort sidor
|
||||
- **Kvalitetsreglage** på utdatanoder för bildkonvertering
|
||||
- **Lösenordsfält** på noderna Kryptera och Dekryptera
|
||||
- **Textfält** för Vattenstämpel, Sidhuvud & sidfot och Redigera metadata
|
||||
- **Rotationsvinklar** på noden Rotera
|
||||
- **Komprimeringsnivå** på noden Komprimera
|
||||
- **Val av OCR-språk** på noden OCR
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- **Fakturabearbetning**: PDF-indata -> OCR -> Extrahera tabeller -> Ladda ner som CSV.
|
||||
- **Standardisering av rapporter**: Word till PDF -> Fixa sidstorlek -> Lägg till sidnummer -> Vattenstämpel -> Komprimera -> Ladda ner.
|
||||
- **Arkivförberedelse**: PDF-indata -> Reparera -> Platta till -> Sanera -> PDF till PDF/A -> Ladda ner.
|
||||
- **Batchextrahering av bilder**: PDF-indata (flera filer) -> Extrahera bilder -> Ladda ner ZIP.
|
||||
- **Utskriftsklara broschyrer**: PDF-indata -> Broschyr -> Beskär -> Komprimera -> Ladda ner.
|
||||
- **Säker distribution**: PDF-indata -> Maskera -> Ta bort kommentarer -> Kryptera -> Ladda ner.
|
||||
|
||||
## Tips
|
||||
|
||||
- Använd **Delete** eller **Backspace** för att ta bort den markerade noden från canvasen.
|
||||
- Klicka på knappen **X** i en nods statusfält för att ta bort den direkt.
|
||||
- Panorera canvasen genom att klicka och dra på tom yta. Markören ändras till en grepp-ikon under panoreringen.
|
||||
- På mobil, använd knappen **+** i verktygsfältet för att visa eller dölja nodverktygslådan.
|
||||
- Om ditt arbetsflöde ger flera utdatafiler paketerar nedladdningsnoden dem automatiskt i en ZIP.
|
||||
- Börja enkelt: bygg och testa en pipeline med två noder innan du gör det mer komplext.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [PDF till text](./pdf-to-text)
|
||||
- [PDF till Excel](./pdf-to-excel)
|
||||
- [Extrahera bilder](./extract-images)
|
||||
- [PDF till Markdown](./pdf-to-markdown)
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
title: PNG till PDF
|
||||
description: Konvertera en eller flera PNG-bilder till ett PDF-dokument med justerbar kvalitet, helt i webbläsaren.
|
||||
---
|
||||
|
||||
# PNG till PDF
|
||||
|
||||
Konvertera PNG-bilder till PDF med full upplösning bevarad. Varje PNG blir en egen sida, anpassad efter originalbildens mått. Transparens hanteras automatiskt.
|
||||
|
||||
## Format som stöds
|
||||
|
||||
| Format | Filändelser |
|
||||
| :----- | :---------- |
|
||||
| PNG | `.png` |
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Klicka på uppladdningsytan eller dra och släpp PNG-filer. Du kan välja flera samtidigt.
|
||||
2. Hantera fillistan: ta bort oönskade filer eller lägg till fler.
|
||||
3. Välj en nivå för **PDF-kvalitet** i rullgardinsmenyn.
|
||||
4. Klicka på **Konvertera till PDF**. Utdata laddas ner som `from_jpgs.pdf`.
|
||||
|
||||
Verktyget använder pdf-lib för att bädda in varje bild direkt. Om en PNG inte kan bäddas in på ursprungligt sätt (t.ex. på grund av en ovanlig färgprofil) faller verktyget tillbaka på att rendera om den via en canvas som JPEG.
|
||||
|
||||
## Alternativ
|
||||
|
||||
**PDF-kvalitet** styr komprimeringen som tillämpas före inbäddning:
|
||||
|
||||
- **Hög kvalitet**: minimal komprimering, största filstorlek.
|
||||
- **Medelhög kvalitet** (standard): bra balans mellan storlek och tydlighet.
|
||||
- **Låg kvalitet**: maximal komprimering, minsta utdata.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Konvertera skärmbilder till en PDF med flera sidor för felrapporter eller dokumentation
|
||||
- Paketera exporter från UI-design i en enda fil för granskning
|
||||
- Göra diagramexporter (draw.io, Excalidraw) till en delbar PDF
|
||||
- Sätta ihop en uppsättning diagrambilder till en rapport
|
||||
|
||||
## Tips
|
||||
|
||||
- PNG-filer med transparens får vit bakgrund i PDF-filen. Om du behöver en annan bakgrund, redigera bilderna i förväg.
|
||||
- För skärmbilder och diagram med skarpa kanter och text undviker Hög kvalitet JPEG-komprimeringsartefakter. Medelhög eller Låg kan konvertera till JPEG internt.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Bilder till PDF](./image-to-pdf)
|
||||
- [JPG till PDF](./jpg-to-pdf)
|
||||
- [SVG till PDF](./svg-to-pdf)
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
title: Postera PDF
|
||||
description: Dela upp PDF-sidor i ett rutnät av mindre sidor för storformatsutskrift över flera ark.
|
||||
---
|
||||
|
||||
# Postera PDF
|
||||
|
||||
Dela varje sida i en PDF i ett rutnät av mindre delsidor. Det här verktyget används för att skriva ut en enda sida över flera pappersark, som du sedan sätter ihop till en stor affisch eller banderoll.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en PDF-fil.
|
||||
2. Ange antal **rader** och **kolumner** för rutnätet (t.ex. 2 rader x 2 kolumner delar varje sida i 4 delsidor).
|
||||
3. Ange vid behov ett sidintervall för att begränsa vilka sidor som posteras.
|
||||
4. Förhandsvisningen visar ett rutnät över den aktuella sidan så att du kan se var den delas.
|
||||
5. Bläddra mellan sidor för att kontrollera rutnätet på olika sidor.
|
||||
6. Klicka på bearbetningsknappen. Varje rutcell blir en egen sida i den färdiga PDF-filen.
|
||||
|
||||
## Funktioner
|
||||
|
||||
- Valfritt antal rader och kolumner för flexibla rutnätsstorlekar
|
||||
- Liveförhandsvisning med rutnät som visar exakt var sidorna delas
|
||||
- Sidintervallfilter för att postera enbart vissa sidor
|
||||
- Sida-för-sida-navigering i förhandsvisningen
|
||||
- Cachade sidbilder för snabb navigering i förhandsvisningen
|
||||
- Streckade röda rutnätslinjer markerar tydligt skärgränserna
|
||||
|
||||
## Alternativ
|
||||
|
||||
| Alternativ | Beskrivning |
|
||||
| ---------------- | ------------------------------------------------ |
|
||||
| **Rader** | Antal horisontella delningar (standard: 1) |
|
||||
| **Kolumner** | Antal vertikala delningar (standard: 1) |
|
||||
| **Sidintervall** | Vilka sidor som ska posteras (tomt = alla sidor) |
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Skriva ut en PDF i affischstorlek över vanliga A4- eller Letter-ark för att sätta ihop på en vägg
|
||||
- Skapa stora banderoller från en ensidig PDF-design
|
||||
- Dela överdimensionerade tekniska ritningar i utskrivbara delar
|
||||
- Göra storformatsutskrifter utan tillgång till en storformatsskrivare
|
||||
|
||||
## Tips
|
||||
|
||||
- Ett 2x2-rutnät gör en sida till 4 sidor. Ett 3x3-rutnät gör en sida till 9. Planera rutnätet efter hur stor den färdiga sammansättningen ska bli.
|
||||
- Förhandsvisningens rutnät hjälper dig att se till att viktigt innehåll inte hamnar på en skärlinje. Justera rader/kolumner vid behov.
|
||||
- För den omvända operationen (flera sidor på ett ark), använd [N-Up PDF](./n-up-pdf).
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [N-Up PDF](./n-up-pdf)
|
||||
- [Dela sidor](./divide-pages)
|
||||
- [Dela PDF](./split-pdf)
|
||||
@@ -0,0 +1,55 @@
|
||||
---
|
||||
title: PowerPoint till PDF
|
||||
description: Konvertera PowerPoint-presentationer (PPT, PPTX) och ODP-filer till PDF med bevarad bildformatering.
|
||||
---
|
||||
|
||||
# PowerPoint till PDF
|
||||
|
||||
Konvertera presentationsfiler till PDF. Varje bild blir en sida i dokumentet, med text, bilder, former och övergångar renderade via en LibreOffice-motor i webbläsaren. Stöder både moderna och äldre PowerPoint-format samt formatet OpenDocument Presentation.
|
||||
|
||||
## Format som stöds
|
||||
|
||||
| Format | Filändelser |
|
||||
| :------------------------ | :---------- |
|
||||
| PowerPoint (modern) | `.pptx` |
|
||||
| PowerPoint (äldre) | `.ppt` |
|
||||
| OpenDocument Presentation | `.odp` |
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Klicka på uppladdningsytan eller dra och släpp dina presentationsfiler.
|
||||
2. Granska fillistan. Lägg till fler eller ta bort filer vid behov.
|
||||
3. Klicka på **Konvertera till PDF**. LibreOffice-motorn laddas första gången och konverterar sedan varje fil.
|
||||
4. En enskild fil laddas ned direkt som PDF. Flera filer paketeras i `powerpoint-converted.zip`.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Det här verktyget har inga extra inställningar. Bilderna renderas i sina ursprungliga mått.
|
||||
|
||||
## Resultat
|
||||
|
||||
| Antal filer | Resultat |
|
||||
| :---------- | :------------------------------------------------------------------- |
|
||||
| 1 fil | Enskild PDF att ladda ned (ursprungligt filnamn med ändelsen `.pdf`) |
|
||||
| 2+ filer | ZIP-arkiv (`powerpoint-converted.zip`) med en PDF per fil |
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Konvertera en presentation till PDF innan du delar den med en publik som kanske inte har PowerPoint
|
||||
- Skapa en utskrivbar handout av en bildpresentation för en konferens eller workshop
|
||||
- Arkivera presentationer i ett format som ser likadant ut på alla enheter
|
||||
- Konvertera ett bibliotek med ODP-presentationer från LibreOffice Impress till PDF i bulk
|
||||
- Skapa en PDF-version av en pitch deck för e-postbilagor
|
||||
|
||||
## Tips
|
||||
|
||||
- Animationer och övergångar i bilderna återges inte i PDF-filen. Varje bild fångas som en statisk sida.
|
||||
- Inbäddade videor visas inte i resultatet. Ersätt dem med en skärmbild eller platshållarbild vid behov.
|
||||
- Anteckningar för talaren ingår inte i standardexporten till PDF. Behöver du anteckningar kan du först exportera från PowerPoints egen vy "Skriv ut anteckningar".
|
||||
- LibreOffice-motorn cachas efter första laddningen, så att konvertera en andra presentation under samma session går mycket snabbare.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Word till PDF](./word-to-pdf)
|
||||
- [Excel till PDF](./excel-to-pdf)
|
||||
- [Bilder till PDF](./image-to-pdf)
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
title: Förbered PDF för AI
|
||||
description: Extrahera PDF-innehåll till strukturerad JSON optimerad för LLM:er och AI-pipelines som LlamaIndex. Stöder batchbearbetning.
|
||||
---
|
||||
|
||||
# Förbered PDF för AI
|
||||
|
||||
Extraherar innehåll från PDF-filer och strukturerar det som JSON optimerad för inläsning i stora språkmodeller (LLM:er) och AI-ramverk som LlamaIndex. Varje sidas innehåll extraheras och organiseras i ett strukturerat format som är redo för RAG-pipelines, chattbottar eller semantiska söksystem.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en eller flera PDF-filer genom att klicka på släppzonen eller dra filer till den.
|
||||
2. Klicka på **Extrahera** för att starta bearbetningen.
|
||||
3. En enskild fil laddas ned som `filename_llm.json`. Flera filer ger ett arkiv, `pdf-for-ai.zip`.
|
||||
|
||||
Verktyget använder PyMuPDF:s LlamaIndex-integration för att extrahera innehåll per sida med metadata, och ger utdata som kan läsas in direkt i AI-ramverk.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Det här verktyget har inga inställningar. Alla sidor extraheras med fullständig text och metadata.
|
||||
|
||||
## Utdataformat
|
||||
|
||||
- **Enskild fil**: `filename_llm.json`
|
||||
- **Flera filer**: `pdf-for-ai.zip` med en `_llm.json` per PDF.
|
||||
|
||||
JSON-utdata följer LlamaIndex dokumentschema med textinnehåll per sida och metadatafält.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Förbereda PDF-dokument för RAG-pipelines (retrieval-augmented generation).
|
||||
- Bygga en sökbar kunskapsbas från PDF-arkiv för en AI-chattbot.
|
||||
- Mata in PDF-rapporter i LLM-baserade analysflöden.
|
||||
- Förbehandla forskningsartiklar för semantisk sökning och fråga-svar-system.
|
||||
- Skapa strukturerad träningsdata från PDF-samlingar.
|
||||
|
||||
## Tips
|
||||
|
||||
- För ren textextraktion utan AI-specifik formatering, använd [PDF till text](./pdf-to-text).
|
||||
- För Markdown-utdata som bevarar rubriker och struktur, använd [PDF till Markdown](./pdf-to-markdown).
|
||||
- Skannade PDF-filer ger tomt eller minimalt resultat. Kör dem först genom OCR för att lägga till ett textlager innan extraktion.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [PDF till text](./pdf-to-text)
|
||||
- [PDF till Markdown](./pdf-to-markdown)
|
||||
- [PDF till JSON](./pdf-to-json)
|
||||
@@ -0,0 +1,64 @@
|
||||
---
|
||||
title: Skydda PDF
|
||||
description: Lösenordsskydda PDF-filer med 256-bitars AES-kryptering. Ange användar- och ägarlösenord med konfigurerbara användningsbegränsningar.
|
||||
---
|
||||
|
||||
# Skydda PDF
|
||||
|
||||
Lås din PDF med ett lösenord så att bara behöriga kan öppna den. BentoPDF använder 256-bitars AES-kryptering (samma standard som banker och myndigheter använder), helt i din webbläsare via QPDF.
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Ladda upp en PDF-fil.
|
||||
2. Ange ett **användarlösenord** (obligatoriskt). Det är lösenordet som krävs för att öppna filen.
|
||||
3. Ange eventuellt ett **ägarlösenord**. När det är angivet får PDF-filen användningsbegränsningar som förhindrar utskrift, redigering, kopiering och anteckningar.
|
||||
4. Klicka på **Kryptera PDF**.
|
||||
5. Ladda ned den krypterade filen.
|
||||
|
||||
## Lösenordstyper
|
||||
|
||||
### Användarlösenord (obligatoriskt)
|
||||
|
||||
Användarlösenordet är det mottagarna skriver in för att öppna PDF-filen. Utan det är dokumentet helt oåtkomligt. Varje krypterad PDF måste ha ett.
|
||||
|
||||
### Ägarlösenord (valfritt)
|
||||
|
||||
Ägarlösenordet styr vad en behörig användare kan göra efter att ha öppnat filen. När du anger ett separat ägarlösenord tillämpar BentoPDF automatiskt den strängaste uppsättningen begränsningar:
|
||||
|
||||
- Ändring inaktiverad
|
||||
- Extrahering/kopiering inaktiverad
|
||||
- Utskrift inaktiverad
|
||||
- Anteckningar inaktiverade
|
||||
- Ifyllning av formulär inaktiverad
|
||||
- Dokumentsammanställning inaktiverad
|
||||
|
||||
Om du lämnar ägarlösenordet tomt krypteras PDF-filen (användarlösenordet krävs fortfarande för att öppna den) men har inga användningsbegränsningar när den väl är öppnad.
|
||||
|
||||
## Krypteringsdetaljer
|
||||
|
||||
- **Algoritm**: AES-256 (256-bitars Advanced Encryption Standard)
|
||||
- **Nyckellängd**: 256 bitar
|
||||
- **Standard**: PDF 2.0-kryptering (QPDF-implementation)
|
||||
|
||||
AES-256 är beräkningsmässigt ogenomförbart att knäcka med brute force med dagens teknik. Säkerheten hos din krypterade PDF beror helt på lösenordets styrka.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Skydda konfidentiella ekonomiska rapporter innan de skickas med e-post
|
||||
- Säkra juridiska dokument som delas med motpartens ombud
|
||||
- Lägga lösenord på journaler eller personuppgifter
|
||||
- Distribuera betalt innehåll (e-böcker, rapporter) med åtkomstkontroll
|
||||
- Följa dataskyddspolicyer som kräver kryptering av lagrade data
|
||||
|
||||
## Tips
|
||||
|
||||
- Använd ett starkt, unikt lösenord. En lösenfras på 12 tecken eller fler med versaler, gemener, siffror och symboler är idealisk.
|
||||
- Dela lösenordet via en separat kanal (telefon, sms) och aldrig i samma e-post som PDF-filen.
|
||||
- Om du bara vill begränsa åtgärder (ingen utskrift, ingen kopiering) utan att kräva lösenord för att öppna filen, använd verktyget Ändra behörigheter i stället.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Lås upp PDF](./unlock-pdf): ta bort kryptering när du känner till lösenordet
|
||||
- [Ändra behörigheter](./change-permissions): ändra specifika användningsbegränsningar
|
||||
- [Ta bort begränsningar](./remove-restrictions): ta bort all säkerhet från en PDF
|
||||
- [Sanera PDF](./sanitize-pdf): ta bort dolt innehåll innan du krypterar
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
title: PSD till PDF
|
||||
description: Konvertera Photoshop-filer (PSD) till PDF i webbläsaren. Gratis, privat, ingen Adobe-programvara krävs.
|
||||
---
|
||||
|
||||
# PSD till PDF
|
||||
|
||||
Konvertera Adobe Photoshop PSD-filer till PDF-dokument. PSD är Photoshops egna format, och för att öppna en krävs normalt dyr Adobe-programvara. Det här verktyget renderar den sammanslagna kompositbilden av din PSD-fil som en PDF-sida i full upplösning.
|
||||
|
||||
## Format som stöds
|
||||
|
||||
| Format | Filändelse | Anmärkningar |
|
||||
| :-------------- | :--------- | :--------------------------------------- |
|
||||
| Adobe Photoshop | `.psd` | Renderar den sammanslagna kompositbilden |
|
||||
|
||||
## Så fungerar det
|
||||
|
||||
1. Klicka på uppladdningsytan eller dra och släpp dina PSD-filer. Flera filer stöds.
|
||||
2. Granska fillistan. Ta bort oönskade filer med papperskorgsikonen, eller använd **Lägg till fler filer** för att lägga till fler.
|
||||
3. Klicka på **Konvertera till PDF**. PyMuPDF-motorn läser PSD-filen och bäddar in kompositbilden på en PDF-sida i originalupplösning.
|
||||
4. En enskild PSD ger en PDF. När du laddar upp flera PSD-filer kombineras de till en enda flersidig PDF med namnet `psd_to_pdf.pdf`, där varje PSD blir en sida.
|
||||
|
||||
## Alternativ
|
||||
|
||||
Inga inställningar behövs. Konverteraren använder den sammanslagna bilddatan från PSD-filen.
|
||||
|
||||
## Användningsområden
|
||||
|
||||
- Förhandsgranska Photoshop-design utan att öppna Photoshop
|
||||
- Skicka designutkast till kunder som inte har Adobe Creative Suite
|
||||
- Skriva ut högupplöst grafik från PSD-filer
|
||||
- Skapa en PDF-portfölj av flera PSD-designfiler, där varje blir en sida i ett enda dokument
|
||||
|
||||
## Tips
|
||||
|
||||
- Konverteringen renderar kompositvyn (sammanslagen) av PSD-filen. Enskilda lager, justeringslager och lagereffekter bevaras inte som separata element i PDF-filen.
|
||||
- Flera PSD-filer slås ihop till en flersidig PDF i stället för enskilda PDF-filer. Det är praktiskt för att bygga portföljer eller lookbooks.
|
||||
- PSD-filer med mycket hög upplösning (tryckfiler på 300+ DPI) ger stora PDF-filer. Verktyget bevarar den fulla upplösningen.
|
||||
|
||||
## Relaterade verktyg
|
||||
|
||||
- [Bilder till PDF](./image-to-pdf)
|
||||
- [PNG till PDF](./png-to-pdf)
|
||||
- [VSD till 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