feat: translate all pages, UI messages and docs and fix SEO redirects and indexing

This commit is contained in:
alam00000 committed 2026-10-25 12:55:21 +05:30
1 parent 5e019de5ae
commit 4edb1718cc
3344 files changed
+415643 -4759

No files matched your search

+136
View File
@@ -0,0 +1,136 @@
# Contributing
Tak for din interesse i at bidrage til BentoPDF! Denne vejledning hjælper dig i gang.
## Kom i gang
### Forudsætninger
- Node.js 18+
- npm 9+
- Git
### Opsætning
```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
```
## Tilføj et nyt værktøj
### Trin 1: Opret logikfilen
Opret `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
});
```
### Trin 2: Opret HTML-siden
Opret `src/pages/your-tool.html` efter de eksisterende værktøjsskabeloner.
### Trin 3: Registrer værktøjet
Tilføj til `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.',
}
```
### Trin 4: Tilføj til build-konfigurationen
Tilføj siden til `vite.config.ts`:
```typescript
'your-tool': resolve(__dirname, 'src/pages/your-tool.html'),
```
### Trin 5: Tilføj oversættelser
Tilføj poster til alle sprogfiler i `public/locales/`:
```json
{
"yourTool": {
"name": "Your Tool",
"subtitle": "Description"
}
}
```
## Kodestil
- Brug TypeScript til al ny kode
- Følg eksisterende mønstre for at holde det ensartet
- Kør `npm run format` før du committer
- Ingen kommentarer i produktionskode (kommentarer fjernes under build)
## Pull request-processen
1. Opret en feature-branch: `git checkout -b feature/your-feature`
2. Foretag dine ændringer
3. Test grundigt: `npm run build`
4. Send en PR med en tydelig beskrivelse
## Oversættelse
Se [TRANSLATION.md](https://github.com/alam00000/bentopdf/blob/main/TRANSLATION.md) for at tilføje nye sprog.
## Contributor License Agreement
Før din PR kan flettes, skal du underskrive vores CLA:
- [Individuel CLA (ICLA)](https://github.com/alam00000/bentopdf/blob/main/ICLA.md)
- [Virksomheds-CLA (CCLA)](https://github.com/alam00000/bentopdf/blob/main/CCLA.md)
## Få hjælp
- [GitHub Issues](https://github.com/alam00000/bentopdf/issues)
- [Discord-fællesskab](https://discord.gg/Bgq3Ay3f2w)
## Licens
BentoPDF er dobbeltlicenseret:
- **AGPL-3.0** til open source-projekter, hvor du deler hele din kildekode offentligt
- **Kommerciel licens** til proprietære applikationer med lukket kildekode: [Få en livstidslicens for $79](https://buy.polar.sh/polar_cl_ThDfffbl733x7oAodcIryCzhlO57ZtcWPq6HJ1qMChd)
Når du bidrager, accepterer du, at dine bidrag licenseres på disse vilkår.
+80
View File
@@ -0,0 +1,80 @@
# Kom i gang
Velkommen til BentoPDF! Denne vejledning hjælper dig hurtigt i gang.
## Hvad er BentoPDF?
BentoPDF er en gratis, open source PDF-værktøjskasse med privatliv i fokus, der kører **helt i din browser**. Dine filer forlader aldrig din enhed. Al behandling sker lokalt ved hjælp af WebAssembly (WASM).
## Hurtig start
### Mulighed 1: Brug den hostede version
Besøg [bentopdf.com](https://www.bentopdf.com) for at bruge BentoPDF med det samme, uden installation.
### Mulighed 2: Selvhost med Docker
> [!IMPORTANT]
> Konvertering af Office-filer kræver `SharedArrayBuffer`, som kræver både:
>
> - `Cross-Origin-Opener-Policy: same-origin`
> - `Cross-Origin-Embedder-Policy: require-corp`
> - en sikker kontekst
>
> `http://localhost` virker til lokal test, fordi browsere behandler loopback som troværdig. `http://192.168.x.x` eller andre LAN-IP'er gør det normalt ikke, så Word/Excel/PowerPoint-konverteringer kræver HTTPS, når der tilgås fra andre enheder på dit netværk.
```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 leveres i to builds: **Self-Hosted-builden** (`bentopdf-simple`, brugt ovenfor) til interne installationer i teams og organisationer, og **Commercial-builden** (`bentopdf:latest`), som bruges af bentopdf.com selv og af indehavere af kommercielle licenser med offentligt tilgængelige installationer. Begge indeholder de samme PDF-værktøjer. Commercial-builden tilføjer bentopdf.com's hero, FAQ, udtalelser og footer. Er du i tvivl, så brug Self-Hosted-builden.
Åbn derefter `http://localhost:3000` i din browser.
> [!NOTE]
> Hvis du forbereder en air-gapped OCR-installation, skal du hoste OCR-tekstlagets skrifttyper internt ud over Tesseract-workeren, kerne-runtime og traineddata-filerne. Den fulde opsætning er beskrevet i [Selvhosting](/da/self-hosting/), herunder `VITE_OCR_FONT_BASE_URL` og den medfølgende mappe `ocr-fonts/`.
### Mulighed 3: Byg fra kildekode
```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 overblik
| Kategori | Værktøjer |
| ---------------------- | ---------------------------------------------------------------- |
| **Konverter til PDF** | Word, Excel, PowerPoint, billeder, Markdown, EPUB, MOBI og mere |
| **Konverter fra PDF** | JPG, PNG, tekst, Excel, SVG og mere |
| **Rediger og annotér** | Underskriv, fremhæv, sortlæg, udfyld formularer, tilføj stempler |
| **Organiser** | Flet, opdel, roter, slet sider, omarranger |
| **Optimer** | Komprimer, reparer, fladgør, OCR |
| **Sikkerhed** | Kryptér, dekryptér, fjern begrænsninger |
## Browserunderstøttelse
BentoPDF fungerer bedst i moderne browsere:
- ✅ Chrome/Edge 90+
- ✅ Firefox 90+
- ✅ Safari 15+
## Næste skridt
- [Udforsk alle værktøjer](/da/tools/)
- [Selvhost BentoPDF](/da/self-hosting/)
- [Bidrag til projektet](/da/contributing)
+42
View File
@@ -0,0 +1,42 @@
---
# https://vitepress.dev/reference/default-theme-home-page
layout: home
hero:
name: 'BentoPDF'
text: 'Gratis PDF-værktøjer med åben kildekode'
tagline: Behandl PDF'er helt i din browser. Ingen uploads. Ingen servere. Fuldt privatliv.
actions:
- theme: brand
text: Kom i gang
link: /da/getting-started
- theme: alt
text: Se værktøjer
link: /da/tools/
- theme: alt
text: Selvhost
link: /da/self-hosting/
- theme: alt
text: Kommerciel licens
link: /da/licensing
features:
- icon: 🔒
title: 100% privat
details: Dine filer forlader aldrig din enhed. Al behandling sker lokalt i din browser ved hjælp af WebAssembly.
- icon: ⚡
title: Hurtig og gratis
details: Ingen tilmeldinger, ingen grænser, ingen vandmærker. Behandl ubegrænset mange PDF'er gratis, for altid.
- icon: 🛠️
title: 50+ værktøjer
details: Konverter, rediger, flet, opdel, komprimer, underskriv, OCR og mere. Alt hvad du har brug for samlet ét sted.
- icon: 🌐
title: Kan selvhostes
details: Installer på din egen infrastruktur. Docker, Vercel, Netlify, AWS eller helt air-gapped miljøer med selvhostede OCR-workers, sprogdata og tekstlagsskrifttyper.
---
## OCR offline
Hvis du selvhoster BentoPDF i et air-gapped eller offline miljø, kræver OCR mere end Tesseract-workeren og traineddata-filerne. Søgbar PDF-output kræver også, at OCR-tekstlagets skrifttyper serveres internt.
Se [Selvhosting](/da/self-hosting/) for den fulde opsætning, herunder `VITE_OCR_FONT_BASE_URL`, den medfølgende mappe `ocr-fonts/` og den opdaterede air-gap-arbejdsgang.
+92
View File
@@ -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](/da/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.
+275
View File
@@ -0,0 +1,275 @@
# Installer med Apache
Host BentoPDF med Apache HTTP Server.
## Forudsætninger
- Apache 2.4+
- mod_rewrite aktiveret
- SSL-certifikat (anbefales)
## Trin 1: Byg projektet
```bash
git clone https://github.com/alam00000/bentopdf.git
cd bentopdf
npm install
npm run build
```
Hvis du vil tilpasse branding, skal du sætte miljøvariabler før build:
```bash
VITE_BRAND_NAME="AcmePDF" VITE_BRAND_LOGO="images/acme-logo.svg" npm run build
```
## Trin 2: Kopiér 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
```
## Trin 3: Apache-konfiguration
Opret `/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>
```
## Trin 4: .htaccess til routing
Opret `/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
```
## Trin 5: Aktivér de nødvendige moduler
```bash
sudo a2enmod rewrite
sudo a2enmod ssl
sudo a2enmod headers
sudo a2enmod expires
sudo a2enmod deflate
```
## Trin 6: Aktivér sitet
```bash
sudo a2ensite bentopdf.conf
sudo apache2ctl configtest
sudo systemctl reload apache2
```
## Installation i en undermappe
For at hoste på `/pdf/`:
1. Byg med base-URL:
```bash
BASE_URL=/pdf/ npm run build
```
2. Opdater `.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
```
## Fejlfinding
### WASM 404-fejl
Sørg for, at MIME-typen er konfigureret:
```apache
AddType application/wasm .wasm
```
### Underskriv PDF eller Formularudfylder viser en tom viewer (`.mjs` MIME-fejl)
Hvis browserkonsollen viser:
```
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.
```
…og den mislykkede forespørgsel ender på `.mjs`, mangler din Apache-konfiguration tilknytningen `.mjs → application/javascript`. Den medfølgende PDF-viewer leveres med ES-modulfiler med filtypen `.mjs`, og Apaches standard-`mime.types` indeholder dem ikke som standard.
Tilføj til din VirtualHost eller `.htaccess`:
```apache
AddType application/javascript .mjs
```
Genindlæs derefter Apache:
```bash
sudo apache2ctl configtest && sudo systemctl reload apache2
```
Sådan bekræfter du: find den mislykkede `.mjs`-forespørgsel under fanen Network i browserens DevTools, og tjek svarheaderen `Content-Type`. Den skal nu være `application/javascript`, ikke `application/octet-stream`.
### Rewrite virker ikke
Tjek, at mod_rewrite er aktiveret:
```bash
sudo a2enmod rewrite
```
### Word/ODT/Excel til PDF virker ikke
LibreOffice WASM kræver `SharedArrayBuffer`, som kræver disse headers:
```apache
Header always set Cross-Origin-Embedder-Policy "require-corp"
Header always set Cross-Origin-Opener-Policy "same-origin"
```
Det kræver også en sikker kontekst. `http://localhost` virker til lokal test, men `http://192.168.x.x` eller andre LAN-IP'er kræver normalt HTTPS. Hvis headerne er til stede, men `window.crossOriginIsolated` stadig er `false`, så tjek, om siden åbnes over almindelig HTTP på en origin, der ikke er loopback.
De forkomprimerede `.wasm.gz`- og `.data.gz`-filer kræver også korrekt `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>
```
Sørg for, at `mod_headers` er aktiveret: `sudo a2enmod headers`
### Tilladelse nægtet
```bash
sudo chown -R www-data:www-data /var/www/bentopdf
sudo chmod -R 755 /var/www/bentopdf
```
+200
View File
@@ -0,0 +1,200 @@
# Installer på AWS S3 + CloudFront
Host BentoPDF på AWS for maksimal kontrol og skalerbarhed.
## Arkitektur
```
User → CloudFront (CDN) → S3 (Static Files)
```
## Trin 1: Opret 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
```
## Trin 2: Byg og upload
```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
```
## Trin 3: Opret CloudFront-distribution
```bash
aws cloudfront create-distribution \
--origin-domain-name your-bentopdf-bucket.s3.amazonaws.com \
--default-root-object index.html
```
Eller brug AWS Console:
1. Gå til CloudFront → Create distribution
2. Origin domain: Vælg din S3-bucket
3. Aktivér "Origin Access Control"
4. Default root object: `index.html`
5. Opret distributionen
## Trin 3b: Response Headers Policy (påkrævet til LibreOffice WASM)
LibreOffice-baserede konverteringer (Word, Excel, PowerPoint til PDF) kræver `SharedArrayBuffer`, som kræver bestemte svarheadere. Opret en CloudFront Response Headers Policy:
1. Gå til CloudFront → Policies → Response headers
2. Opret en brugerdefineret policy med disse headere:
| Header | Værdi |
| ------------------------------ | -------------- |
| `Cross-Origin-Embedder-Policy` | `require-corp` |
| `Cross-Origin-Opener-Policy` | `same-origin` |
| `Cross-Origin-Resource-Policy` | `cross-origin` |
3. Tilknyt policyen til din distributions standard-cache behavior
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}
]
}
}'
```
## Trin 3c: S3-metadata til forkomprimerede WASM-filer
LibreOffice WASM-filerne er forkomprimerede (`.wasm.gz`, `.data.gz`). Sæt den korrekte Content-Type og Content-Encoding, så browsere dekomprimerer 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 Vigtigt
Uden response headers policy er `SharedArrayBuffer` ikke tilgængelig, og LibreOffice WASM-konverteringer hænger ved ca. 55 %. Uden den korrekte Content-Encoding på `.gz`-filerne modtager browseren rå gzip-bytes, og WASM-kompilering mislykkes.
:::
## Trin 4: S3 bucket policy
Giv CloudFront adgang til bucketten:
```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"
}
}
}
]
}
```
## Trin 5: Brugerdefinerede fejlsider
Konfigurer 404 til at returnere `index.html` til SPA-routing:
1. CloudFront → Error pages
2. Opret et brugerdefineret fejlsvar:
- HTTP error code: 404
- Response page path: `/index.html`
- HTTP response code: 200
## Omkostningsestimat
| Ressource | Estimeret pris |
| -------------------------- | -------------- |
| S3 Storage (~500MB) | ~$0.01/måned |
| CloudFront (1TB transfer) | ~$85/måned |
| CloudFront (10GB transfer) | ~$0.85/måned |
::: tip
Brug S3 Intelligent Tiering til at spare penge på filer, der sjældent tilgås.
:::
## 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"
}
}
```
+154
View File
@@ -0,0 +1,154 @@
# Installer på Cloudflare Pages
[Cloudflare Pages](https://pages.cloudflare.com) tilbyder hurtig, global hosting af statiske sites med ubegrænset båndbredde.
## Hurtig installation
1. Gå til [Cloudflare Pages](https://dash.cloudflare.com/?to=/:account/pages)
2. Klik på "Create a project"
3. Forbind dit GitHub-repository
## Build-konfiguration
| Indstilling | Værdi |
| ---------------------- | --------------- |
| Framework preset | None |
| Build command | `npm run build` |
| Build output directory | `dist` |
| Root directory | `/` |
## Miljøvariabler
Tilføj disse under Settings → Environment variables:
| Variabel | Værdi |
| ----------------------- | ---------------------------------------------------- |
| `NODE_VERSION` | `18` |
| `SIMPLE_MODE` | `false` (valgfrit) |
| `VITE_BRAND_NAME` | Brugerdefineret brandnavn (valgfrit) |
| `VITE_BRAND_LOGO` | Logosti relativt til `public/` (valgfrit) |
| `VITE_FOOTER_TEXT` | Brugerdefineret footer-/copyrighttekst (valgfrit) |
| `VITE_DEFAULT_LANGUAGE` | Standardsprog i brugerfladen, f.eks. `fr` (valgfrit) |
## Konfigurationsfil
Opret `_headers` i din `public`-mappe:
```
# 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 Vigtigt
Headerne `Cross-Origin-Embedder-Policy` og `Cross-Origin-Opener-Policy` er påkrævet til konvertering af Word/ODT/Excel/PowerPoint til PDF. Uden dem er `SharedArrayBuffer` ikke tilgængelig, og LibreOffice WASM-motoren kan ikke starte.
:::
Opret `_redirects` til SPA-routing:
```
/* /index.html 200
```
## Eget domæne
1. Gå til dit Pages-projekt
2. Klik på "Custom domains"
3. Tilføj dit domæne
4. Cloudflare konfigurerer automatisk DNS, hvis domænet ligger hos Cloudflare
## Fordele
- **Gratis, ubegrænset båndbredde**
- **Globalt CDN** med 300+ edge-lokationer
- **Automatisk HTTPS**
- **Preview-installationer** til pull requests
- **Hurtige builds**
## Fejlfinding
### Upload af store filer
Cloudflare Pages understøtter filer op til 25 MB. WASM-moduler bør være fine, men hvis du rammer grænser, kan du overveje:
```bash
# Split large files during build
npm run build
```
### Størrelsesgrænser for Workers
Hvis du bruger Cloudflare Workers til avanceret routing, skal du være opmærksom på grænsen på 1 MB for gratis planer.
## CORS-proxy-worker (til digitale signaturer)
Værktøjet til digital signatur kræver en CORS-proxy for at hente certifikatkæder. Installer den medfølgende worker:
```bash
cd cloudflare
npx wrangler login
npx wrangler deploy
```
### Sikkerhedsfunktioner
| Funktion | Beskrivelse |
| ------------------------------ | ----------------------------------- |
| **URL-begrænsninger** | Kun certifikat-URL'er tilladt |
| **Filstørrelsesgrænse** | Maks. 10MB pr. forespørgsel |
| **Rate limiting** | 60 forespørgsler/IP/min (kræver KV) |
| **Blokering af private IP'er** | Blokerer localhost og interne IP'er |
### Aktivér rate limiting
```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
```
### Byg 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 .
```
> **Bemærk:** Se [README](https://github.com/alam00000/bentopdf#digital-signature-cors-proxy-required) for opsætning af HMAC-signatur.
+180
View File
@@ -0,0 +1,180 @@
# CORS-proxy til hentning af certifikater
Værktøjet til digital signatur bruger en CORS-proxy til at hente udstedercertifikater fra eksterne certifikatudstedere (CA'er). Det er nødvendigt, fordi mange CA-servere ikke inkluderer CORS-headere i deres svar, hvilket forhindrer direkte hentning fra browseren.
Derudover udleverer mange CA-servere certifikater over almindelig HTTP. Når din BentoPDF-instans hostes over HTTPS, blokerer browsere disse HTTP-forespørgsler (mixed content-politik). CORS-proxyen løser begge problemer ved at route forespørgsler gennem et HTTPS-endpoint med de rette headere.
## Sådan fungerer det
Når du signerer en PDF med et certifikat:
1. Biblioteket `zgapdfsigner` forsøger at bygge en komplet certifikatkæde
2. Det henter udstedercertifikater fra URL'er indlejret i dit certifikats AIA-udvidelse (Authority Information Access)
3. Disse forespørgsler routes gennem en CORS-proxy, der tilføjer de nødvendige `Access-Control-Allow-Origin`-headere
4. Proxyen returnerer certifikatdata til browseren
## Selvhosting af CORS-proxyen
Hvis du selvhoster BentoPDF, skal du installere din egen CORS-proxy, for at digitale signaturer virker med certifikater, der kræver hentning af kæden.
### Mulighed 1: Cloudflare Workers (anbefales)
1. **Installer Wrangler CLI**:
```bash
npm install -g wrangler
```
2. **Log ind på Cloudflare**:
```bash
wrangler login
```
3. **Klon BentoPDF og opdater tilladte origins**:
```bash
git clone https://github.com/alam00000/bentopdf.git
cd bentopdf/cloudflare
```
Åbn `cors-proxy-worker.js` og ret arrayet `ALLOWED_ORIGINS` til dit domæne:
```js
const ALLOWED_ORIGINS = [
'https://your-domain.com',
'https://www.your-domain.com',
];
```
::: warning Vigtigt
Uden denne ændring afviser proxyen alle forespørgsler fra dit site med fejlen **403 Forbidden**. Standarden tillader kun forespørgsler fra `bentopdf.com`.
:::
4. **Installer proxyen**:
```bash
wrangler deploy
```
Notér din worker-URL (f.eks. `https://bentopdf-cors-proxy.your-subdomain.workers.dev`).
5. **Genbyg BentoPDF med proxy-URL'en**:
Hvis du bruger 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 .
```
Hvis du bygger fra kildekode:
```bash
VITE_CORS_PROXY_URL=https://your-worker.workers.dev npm run build
```
### Mulighed 2: Egen backend-proxy
Du kan også oprette dit eget proxy-endpoint. Kravene er:
1. Acceptér GET-forespørgsler med en `url`-forespørgselsparameter
2. Hent URL'en fra din server (ingen CORS-begrænsninger på serversiden)
3. Returnér svaret med disse headere:
- `Access-Control-Allow-Origin: https://your-domain.com`
- `Access-Control-Allow-Methods: GET, OPTIONS`
- `X-Content-Type-Options: nosniff`
Eksempel på en implementering 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' });
}
});
```
## Sikkerhedsovervejelser
Den medfølgende Cloudflare Worker har flere sikkerhedsforanstaltninger:
| Funktion | Beskrivelse |
| ------------------------------ | ------------------------------------------------------------------------------------------------ |
| **Origin-validering** | Tillader kun forespørgsler fra domæner på listen `ALLOWED_ORIGINS` |
| **URL-begrænsninger** | Tillader kun certifikat-URL'er (`.crt`, `.cer`, `.pem`, `/certs/`, `/ocsp`, `/crl`) |
| **Blokering af private IP'er** | Blokerer private IPv4/IPv6-områder, link-local, loopback, decimale IP'er og cloud-metadata |
| **Content-Type-sikkerhed** | Returnerer kun sikre MIME-typer for certifikater og blokerer content-type-injektion fra upstream |
| **Filstørrelsesgrænse** | Streamer svaret med en grænse på 10MB og afbryder midt i overførslen, hvis den overskrides |
| **Rate limiting** | 60 forespørgsler pr. minut pr. IP eller IPv6 /64 (kræver KV, fejler åbent ved KV-fejl) |
| **HMAC-signaturer** | Valgfri signering på klientsiden (afskrækker tilfældigt misbrug) |
### DNS rebinding (selvhosting uden for Cloudflare)
Workeren afviser enhver URL, der resolver til en privat eller intern IP. Den kan ikke bruge en fast tilladelsesliste over værter, fordi URL'er i certifikatkæder peger på den CA, der har udstedt certifikatet (FNMT, virksomheders CA'er og så videre), så destinationerne kendes ikke på forhånd. Det efterlader et lille rebinding-vindue: en person, der driver DNS for sit eget domæne, kan give sikkerhedstjekket en offentlig IP og den egentlige forespørgsel en privat lidt senere.
På Cloudflare kan det ikke udnyttes: Workers kan ikke nå private IP'er eller metadata-endpointet `169.254.169.254`, så en rebind rammer ingenting. Giv bare ikke workeren en vej ind: tilknyt ikke en Tunnel, Service eller binding til et privat netværk (den behøver kun `RATE_LIMIT_KV`).
Hvis du kører den uden for Cloudflare (workerd, Node og lignende) i en VPC, _kan_ runtime'en nå interne IP'er. Sæt en egress-firewall foran, og bloker de private områder: `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` og deres IPv6-ækvivalenter. Det kan applikationskode ikke håndhæve, når du er uden for Cloudflare.
## Deaktivering af proxyen
Hvis du ikke vil bruge en CORS-proxy, så sæt miljøvariablen til en tom streng:
```
VITE_CORS_PROXY_URL=
```
**Bemærk**: Uden proxyen mislykkes signering med certifikater, der kræver ekstern hentning af kæden (som FNMT eller nogle virksomheders CA'er), med fejlen "Failed to fetch".
## Fejlfinding
### "Signing error: TypeError: Failed to fetch"
Det betyder normalt enten:
1. **Ingen CORS-proxy konfigureret**: Sæt `VITE_CORS_PROXY_URL` og genbyg
2. **Mixed content blokeret**: Dit site bruger HTTPS, men certifikatets udsteder-URL er HTTP. CORS-proxyen løser dette.
3. **CORS-proxyen afviser din origin**: Tjek, at dit domæne står i arrayet `ALLOWED_ORIGINS` i `cors-proxy-worker.js`
### "403 Forbidden" fra proxyen
Dit domæne står ikke på listen `ALLOWED_ORIGINS`. Rediger `cors-proxy-worker.js`:
```js
const ALLOWED_ORIGINS = ['https://your-domain.com'];
```
Installer derefter igen: `npx wrangler deploy`
### Test af proxyen
```bash
curl -H "Origin: https://your-domain.com" \
"https://your-proxy.workers.dev?url=http://www.cert.fnmt.es/certs/ACUSU.crt"
```
### Certifikater, der virker uden proxy
Nogle certifikater indeholder hele kæden i P12/PFX-filen og kræver ikke ekstern hentning:
- Selvsignerede certifikater
- Nogle kommercielle CA'er, der medsender mellemliggende certifikater
- Certifikater, du selv har samlet med hele kæden
+622
View File
@@ -0,0 +1,622 @@
# Installer med Docker / Podman
Den nemmeste måde at selvhoste BentoPDF i et produktionsmiljø.
> [!IMPORTANT]
> **Påkrævede headere til konvertering af Office-filer**
>
> LibreOffice-baserede værktøjer (konvertering af Word, Excel og PowerPoint) kræver disse HTTP-headere for at understøtte `SharedArrayBuffer`:
>
> - `Cross-Origin-Opener-Policy: same-origin`
> - `Cross-Origin-Embedder-Policy: require-corp`
>
> Siden skal også serveres fra en sikker kontekst. `http://localhost` virker til lokal test, men `http://192.168.x.x` eller andre LAN-IP'er opfylder normalt ikke kravet, så Office-konvertering over almindelig HTTP mislykkes, selv om headerne er til stede.
>
> De officielle containerbilleder indeholder disse headere. Hvis du bruger en reverse proxy (Traefik, Caddy osv.), så sørg for, at headerne bevares eller tilføjes, og brug HTTPS ved adgang uden for loopback.
> [!TIP]
> **Podman-brugere:** Alle `docker`-kommandoer virker med Podman, hvis du erstatter `docker` med `podman` og `docker-compose` med `podman-compose`.
## Hurtig start
> [!TIP]
> BentoPDF leveres i to builds:
>
> - **Self-Hosted-build**: `ghcr.io/alam00000/bentopdf-simple:latest`. Alle PDF-værktøjer, **uden** markedsføringsindhold (ingen hero, FAQ, udtalelser, footer). Brug den til interne installationer i teams og organisationer. Det er **ikke** en "lite"-version med færre funktioner.
> - **Commercial-build**: `ghcr.io/alam00000/bentopdf:latest`. Det fulde markedsføringssite, som bruges af bentopdf.com selv og af indehavere af kommercielle licenser med offentligt tilgængelige installationer.
>
> Er du i tvivl: hent Self-Hosted-builden.
```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
Opret `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
```
## Byg dit eget 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;"]
```
Byg og kør:
```bash
docker build -t bentopdf:custom .
docker run -d -p 3000:8080 bentopdf:custom
```
## Miljøvariabler
| Variabel | Beskrivelse | Standard |
| ------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------- |
| `SIMPLE_MODE` | Byg Self-Hosted-varianten (skjuler bentopdf.com's markedsføringsindhold: hero, FAQ, udtalelser, footer). Alle PDF-værktøjer bevares. | `false` |
| `BASE_URL` | Installer i en undermappe | `/` |
| `VITE_WASM_PYMUPDF_URL` | URL til PyMuPDF WASM-modul | `https://cdn.jsdelivr.net/npm/@bentopdf/pymupdf-wasm@0.11.16/` |
| `VITE_WASM_GS_URL` | URL til Ghostscript WASM-modul | `https://cdn.jsdelivr.net/npm/@bentopdf/gs-wasm@0.1.1/assets/` |
| `VITE_WASM_CPDF_URL` | URL til CoherentPDF WASM-modul | `https://cdn.jsdelivr.net/npm/coherentpdf@2.5.5/dist/` |
| `VITE_TESSERACT_WORKER_URL` | URL til OCR-workerscript | _(tom; brug Tesseract.js' standard-CDN)_ |
| `VITE_TESSERACT_CORE_URL` | Mappe til OCR-kerne-runtime | _(tom; brug Tesseract.js' standard-CDN)_ |
| `VITE_TESSERACT_LANG_URL` | Mappe til OCR-traineddata | _(tom; brug Tesseract.js' standard-CDN)_ |
| `VITE_TESSERACT_AVAILABLE_LANGUAGES` | Kommaseparerede OCR-sprog, der vises i brugerfladen | _(tom; vis hele kataloget)_ |
| `VITE_OCR_FONT_BASE_URL` | Mappe til OCR-tekstlagets skrifttyper | _(tom; brug eksterne Noto-skrift-URL'er)_ |
| `VITE_DEFAULT_LANGUAGE` | Standard UI language | `en` |
| `VITE_BRAND_NAME` | Brugerdefineret brandnavn | `BentoPDF` |
| `VITE_BRAND_LOGO` | Logosti relativt til `public/` | `images/favicon-no-bg.svg` |
| `VITE_FOOTER_TEXT` | Brugerdefineret footer-/copyrighttekst | `© 2026 BentoPDF. All rights reserved.` |
| `DISABLE_TOOLS` | Kommaseparerede værktøjs-ID'er, der skal skjules | _(tom; alle værktøjer aktiveret)_ |
| `DISABLE_GITHUB_STARS` | Spring hentningen af GitHub-stjerneantal over ved sideindlæsning, og fjern `api.github.com` fra CSP. Simple Mode-builds springer den altid over. | `false` |
| `SITE_URL` | Offentlig URL, der skrives i canonical-, hreflang- og sitemap-links. Lad den stå på standardværdien, medmindre du vil have søgemaskiner til at behandle din installation som et eget site. | `https://www.bentopdf.com` |
| `ALLOW_INDEXING` | Med en brugerdefineret `SITE_URL` markeres hver side `noindex`, så din kopi ikke konkurrerer med bentopdf.com i søgeresultaterne. Sæt til `true` for at lade søgemaskiner indeksere den. | `false` |
WASM-modul-URL'erne er forudkonfigureret med CDN-standarder, så alle avancerede funktioner virker fra start. Overskriv dem til air-gapped eller selvhostede installationer.
### Søgemaskiner
Som standard peger hver side søgemaskiner hen på bentopdf.com som originalen, så din installation ikke vises som dublet. Du behøver ikke ændre noget for en privat eller intern instans.
- **Hold din instans helt ude af søgeresultaterne:** kør containeren med `-e ROBOTS_NOINDEX=true`. Det kræver kun en genstart, ikke en ny build.
- **Gør din instans til sit eget site i søgeresultaterne:** byg med `--build-arg SITE_URL=https://your-domain.example --build-arg ALLOW_INDEXING=true`. Uden `ALLOW_INDEXING=true` markerer en brugerdefineret `SITE_URL` hver side `noindex`.
### Content-Security-Policy
Nginx-imaget leveres med en håndhævende `Content-Security-Policy`-header. CSP'ens direktiver `script-src`, `connect-src` og `font-src` **genereres ved build** ud fra `VITE_*`-URL-variablerne ovenfor, og alle værter, du angiver via `--build-arg`, føjes automatisk til politikken.
Det betyder:
- Hvis du overskriver `VITE_CORS_PROXY_URL` eller `VITE_WASM_*_URL` ved build, tillader CSP automatisk disse origins, så der kræves ingen ekstra konfiguration.
- For URL'er på `cdn.jsdelivr.net` tillader `script-src` kun den præcise versionerede pakkemappe, for eksempel `https://cdn.jsdelivr.net/npm/@bentopdf/pymupdf-wasm@0.11.16/`, ikke hele CDN'et. jsDelivr leverer enhver offentlig npm-pakke eller GitHub-repository, så hvis hele værten blev tilladt, kunne hvilken som helst af dem køre på din instans. URL'er på alle andre værter tillades pr. origin.
- Hvis du konfigurerer brugerdefinerede WASM-URL'er _ved kørsel_ via siden Avancerede indstillinger i appen, står disse origins **ikke** i CSP, og browseren blokerer hentning fra dem. Det gælder også en anden version af samme pakke på `cdn.jsdelivr.net`, fordi kun den version, der blev sat ved build, er tilladt. Konfiguration ved kørsel er beregnet til eksperimenter. Til permanente brugerdefinerede URL'er skal du sætte det tilsvarende `VITE_*`-build-arg.
- Air-gapped installationer, der overskriver alle tre `VITE_WASM_*_URL`-værdier, får også disse `cdn.jsdelivr.net`-pakkemapper fjernet fra CSP (hver standardværdi erstattes, ikke tilføjes). Tesseract OCR-standarderne på `cdn.jsdelivr.net` forbliver i politikken, indtil du også sætter de tre `VITE_TESSERACT_*`-værdier. Tilsvarende erstatter `VITE_CORS_PROXY_URL` den offentlige standard `bentopdf-cors-proxy.bentopdf.workers.dev`.
CSP indeholder `'unsafe-eval'` i `script-src`, fordi LibreOffice WASM-runtime (brugt af værktøjerne til konvertering af Word/Excel/PowerPoint) og billedbiblioteket wasm-vips (brugt til PDF til TIFF) kompilerer intern dispatch-kode via `new Function()`. Hvis den fjernes, holder de værktøjer op med at virke. Hvis du bygger i `SIMPLE_MODE` (uden LibreOffice) og ikke har brug for PDF til TIFF, kan du manuelt redigere den genererede `security-headers.conf` og fjerne `'unsafe-eval'` for en strengere politik.
For OCR skal du lade `VITE_TESSERACT_*`-variablerne stå tomme for at bruge standardressourcerne online, eller sætte alle tre sammen til selvhostet/offline OCR. Delvise OCR-overskrivninger afvises, fordi worker, kerne-runtime og traineddata-mappe skal passe sammen. For fuldt offline søgbar PDF-output skal du også sætte `VITE_OCR_FONT_BASE_URL`, så OCR-tekstlagets skrifttyper indlæses fra din interne server i stedet for de offentlige Noto-skrift-URL'er.
`VITE_DEFAULT_LANGUAGE` angiver brugerfladens sprog for førstegangsbesøgende. Understøttede værdier: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`. Brugere kan stadig skifte sprog, det ændrer kun standarden.
Eksempel:
```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
```
### Brugerdefineret branding
Erstat BentoPDF's standardlogo, navn og footertekst med dine egne. Læg din logofil i mappen `public/` (eller brug et eksisterende billede), og angiv derefter branding-variablerne ved build:
```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 .
```
Branding virker i både fuld tilstand og Simple Mode og kan kombineres med alle andre build-indstillinger.
### Deaktivering af bestemte værktøjer
Skjul værktøjer i brugerfladen af hensyn til compliance eller sikkerhed. Deaktiverede værktøjer fjernes fra forsiden, søgeresultater, tastaturgenveje og workflow-builderen. Direkte adgang via URL viser en side om, at værktøjet ikke er tilgængeligt.
Værktøjs-ID'er er sidens URL uden `.html`. Hvis værktøjet for eksempel ligger på `bentopdf.com/edit-pdf.html`, er ID'et `edit-pdf`.
#### Find værktøjs-ID'er
Den nemmeste måde: åbn et værktøj i BentoPDF og se på URL'en. Den sidste del af stien (uden `.html`) er værktøjs-ID'et.
<details>
<summary>Komplet liste over værktøjs-ID'er</summary>
**Rediger og annotér:** `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`
**Konverter til 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`
**Konverter fra 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`
**Organiser og administrer:** `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`
**Optimer og reparer:** `compress-pdf`, `pdf-to-pdfa`, `fix-page-size`, `linearize-pdf`, `remove-restrictions`, `repair-pdf`, `rasterize-pdf`, `deskew-pdf`, `font-to-outline`
**Sikkerhed:** `encrypt-pdf`, `sanitize-pdf`, `decrypt-pdf`, `flatten-pdf`, `remove-metadata`, `change-permissions`, `digital-sign-pdf`, `validate-signature-pdf`, `timestamp-pdf`
</details>
#### Mulighed 1: Ved build (Docker build-arg)
```bash
docker build \
--build-arg DISABLE_TOOLS="edit-pdf,sign-pdf,encrypt-pdf" \
-t bentopdf .
```
Det bager listen over deaktiverede værktøjer ind i JavaScript-bundlen. Kræver en ny build at ændre.
#### Mulighed 2: Ved kørsel (config.json)
Mount en `config.json`-fil i den serverede mappe, uden behov for ny build:
```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
```
Begge metoder kan kombineres, og listerne flettes. Hvis et værktøj står i en af dem, er det deaktiveret.
#### Deaktivering af editorfunktioner
Du kan også deaktivere bestemte funktioner i PDF-editoren (f.eks. sortlægning, annotationer, formularer) uden at deaktivere hele editorværktøjet. Tilføj `editorDisabledCategories` til din `config.json`:
```json
{
"editorDisabledCategories": ["redaction", "annotation-stamp"]
}
```
<details>
<summary>Komplet liste over editorkategorier</summary>
**Zoom:** `zoom`, `zoom-in`, `zoom-out`, `zoom-fit-page`, `zoom-fit-width`, `zoom-marquee`, `zoom-level`
**Annotation:** `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`
**Formular:** `form`, `form-textfield`, `form-checkbox`, `form-radio`, `form-select`, `form-listbox`, `form-fill-mode`
**Sortlægning:** `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`
**Side:** `page`, `spread`, `rotate`, `scroll`, `navigation`
**Panel:** `panel`, `panel-sidebar`, `panel-search`, `panel-comment`
**Værktøjer:** `tools`, `pan`, `pointer`, `capture`
**Markering:** `selection`, `selection-copy`
**Historik:** `history`, `history-undo`, `history-redo`
</details>
Kategorierne er hierarkiske: Deaktiverer du en overordnet kategori (f.eks. `annotation`), deaktiveres alle dens underkategorier.
### Deaktivering af GitHub-stjernetælleren
Navigationslinjen viser et live antal GitHub-stjerner, som hentes fra `api.github.com` ved sideindlæsning. Det er den eneste eksterne forespørgsel, der ikke tjener en PDF-funktion. Deaktivér den ved build for at fjerne hentekoden fra bundlen og fjerne `api.github.com` fra Content-Security-Policy:
```bash
docker build --build-arg DISABLE_GITHUB_STARS=true -t bentopdf .
```
Simple Mode-builds (`bentopdf-simple`) springer altid stjernetælleren over. Flaget er kun nødvendigt på Commercial-builden eller egne fulde builds.
### Brugerdefinerede WASM-URL'er (air-gapped / selvhostet)
> [!IMPORTANT]
> WASM-URL'er bages ind i JavaScript **ved build**. WASM-filerne downloades af **brugerens browser** ved kørsel, og Docker downloader dem ikke under build. I air-gapped netværk skal du hoste WASM-filerne på en intern server, som browsere kan nå.
**Fuld air-gapped arbejdsgang:**
```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
```
Brug koderne udskrevet af `bash scripts/prepare-airgap.sh --list-ocr-languages`, eller søg på navn med `bash scripts/prepare-airgap.sh --search-ocr-language <term>`, til `--ocr-languages`. Når du bygger med en begrænset OCR-delmængde, skal du give de samme koder til `VITE_TESSERACT_AVAILABLE_LANGUAGES`, så appen kun viser medfølgende sprog. For fuld offline OCR-output skal du også hoste den medfølgende mappe `ocr-fonts/` og pege `VITE_OCR_FONT_BASE_URL` på den.
Sæt en variabel til en tom streng for at deaktivere det modul (brugere skal så konfigurere manuelt via Avancerede indstillinger).
## Brugerdefineret port
Som standard lytter BentoPDF på port `8080` inde i containeren. For at ændre det skal du sætte miljøvariablen `PORT` ved kørsel:
```bash
docker run -p 3000:9090 -e PORT=9090 ghcr.io/alam00000/bentopdf-simple:latest
```
| Variable | Beskrivelse | Standard |
| -------- | ------------------------------ | -------- |
| `PORT` | Nginx' lytteport i containeren | `8080` |
Det virker med både standard- og nonroot-Dockerfilerne.
## Brugerdefineret bruger-ID (PUID/PGID)
Til miljøer, der kræver kørsel som en bestemt bruger uden root (NAS-enheder, Kubernetes med sikkerhedskontekster, organisationens politikker), tilbyder BentoPDF en separat Dockerfile med PUID/PGID-understøttelse i LSIO-stil.
### Byg og 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 | Beskrivelse | Standard |
| -------------- | --------------------- | -------- |
| `PUID` | Bruger-ID at køre som | `1000` |
| `PGID` | Gruppe-ID at køre som | `1000` |
| `PORT` | Nginx' lytteport | `8080` |
| `DISABLE_IPV6` | Deaktivér IPv6-lytter | `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ådan fungerer det
Containeren starter som root, opretter en bruger med den angivne PUID/PGID, justerer ejerskab på alle skrivbare mapper og dropper derefter rettigheder med `su-exec`. Nginx-processen kører udelukkende som den bruger, du har angivet.
> [!NOTE]
> Standard-`Dockerfile` bruger `nginx-unprivileged` (UID 101) og anbefales til de fleste installationer. Brug kun `Dockerfile.nonroot`, når du har brug for et bestemt UID/GID.
> [!WARNING]
> PUID/PGID kan ikke være `0` (root). Entrypointet validerer input og afslutter med en fejl ved ugyldige værdier.
## 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"
}
```
## Ressourcegræ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) giver dig mulighed for at køre Podman-containere som systemd-services. Det er ideelt til produktionsinstallationer på Linux-systemer.
### Grundlæggende Quadlet-opsætning
Opret en container-unitfil på `~/.config/containers/systemd/bentopdf.container` (bruger) 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
```
### Aktivér og start
```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]
> Til installation for hele systemet skal du bruge `systemctl` uden flaget `--user` og placere filen i `/etc/containers/systemd/`.
### Quadlet med health check
```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 opdatering med Quadlet
Podman kan automatisk opdatere containere, når nye images er tilgængelige:
```bash
# Enable auto-update timer
systemctl --user enable --now podman-auto-update.timer
# Check for updates manually
podman auto-update
# Dry run (check without updating)
podman auto-update --dry-run
```
### Quadlet-netværkskonfiguration
Til brugerdefineret netværkskonfiguration skal du oprette en netværksfil `bentopdf.network`:
```ini
[Network]
Subnet=10.89.0.0/24
Gateway=10.89.0.1
```
Henvis derefter til den i din containerfil:
```ini
[Container]
Image=ghcr.io/alam00000/bentopdf-simple:latest
ContainerName=bentopdf
PublishPort=3000:8080
Network=bentopdf.network
```
## Opdatering
```bash
# Pull latest image
docker compose pull
# Recreate container
docker compose up -d
```
+266
View File
@@ -0,0 +1,266 @@
# Installer på Hostinger
[Hostinger](https://hostinger.com) er en populær udbyder af shared hosting. Denne vejledning beskriver, hvordan du installerer BentoPDF på Hostingers shared hosting.
## Forudsætninger
- Hostinger-hostingplan med adgang til filhåndtering
- Node.js installeret lokalt til build
## Trin 1: Byg projektet
```bash
git clone https://github.com/alam00000/bentopdf.git
cd bentopdf
npm install
npm run build
```
De byggede filer ligger i mappen `dist`.
## Trin 2: Upload til Hostinger
### Installation på rodomænet
1. Log ind på din Hostinger-konto
2. Gå til **File Manager** → **public_html**
3. **Slet** eventuelle eksisterende filer (tag backup, hvis nødvendigt)
4. **Upload** hele indholdet af din lokale `dist`-mappe til `public_html`
### Installation i en undermappe
Hvis du installerer i en undermappe (f.eks. `yourdomain.com/pdf-tools/`):
1. Byg med den korrekte base-URL:
```bash
BASE_URL=/pdf-tools/ npm run build
```
2. Opret mappen i Hostinger:
- Gå til **File Manager** → **public_html**
- Opret en ny mappe: `pdf-tools`
3. Upload hele indholdet af `dist` til `public_html/pdf-tools/`
## Trin 3: Opret .htaccess-filen
Opret en `.htaccess`-fil i roden af din installationsmappe (`public_html` eller `public_html/pdf-tools/`):
::: warning Vigtigt
Ved installation i en undermappe skal du ændre `RewriteBase /` til `RewriteBase /pdf-tools/` (eller navnet på din mappe).
:::
```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
```
## Eksempel på .htaccess i en undermappe
For `yourdomain.com/pdf-tools/` skal du opdatere disse linjer:
```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
```
## Fejlfinding
### WASM-filer indlæses ikke
Sørg for, at MIME-typerne er sat korrekt i `.htaccess`:
```apache
AddType application/wasm .wasm
```
### LibreOffice-værktøjer virker ikke
Sikkerhedsheaderne er afgørende for SharedArrayBuffer:
```apache
Header always set Cross-Origin-Opener-Policy "same-origin"
Header always set Cross-Origin-Embedder-Policy "require-corp"
```
Hvis headerne ikke bliver anvendt, så kontakt Hostingers support for at aktivere `mod_headers`.
### 404-fejl ved genindlæsning af siden
Sørg for, at reglen for filtypen `.html` og sprogrutene er konfigureret korrekt. BentoPDF bruger statiske HTML-filer, ikke 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 for filupload
Hostinger kan have grænser for filstørrelse. Upload WASM-filer separat, hvis masseupload mislykkes.
+538
View File
@@ -0,0 +1,538 @@
# Selvhostingsguide
BentoPDF kan selvhostes på din egen infrastruktur. Denne guide gennemgår forskellige deployment-muligheder.
## Hurtig start med Docker / Podman
Den hurtigste måde at selvhoste BentoPDF på:
> [!TIP]
> BentoPDF leveres i to builds:
>
> - **Selvhostet build**: `ghcr.io/alam00000/bentopdf-simple:latest`. Alle PDF-værktøjer, **uden** marketingelementerne (ingen hero, FAQ, udtalelser eller sidefod). Brug denne til interne deployments i teams og organisationer. Den er **ikke** en "lite"-version med færre funktioner.
> - **Kommerciel build**: `ghcr.io/alam00000/bentopdf:latest`. Det fulde marketingsite, brugt af bentopdf.com selv og af kommercielle licensindehavere med offentligt tilgængelige deployments.
>
> Er du i tvivl: Hent det selvhostede build.
> [!IMPORTANT]
> Konvertering af Office-filer kræver `SharedArrayBuffer`, hvilket betyder, at appen både skal være cross-origin-isoleret og serveres fra en sikker kontekst. Det officielle image sender allerede de nødvendige COOP/COEP-headere, men browsere deaktiverer stadig `SharedArrayBuffer` på almindelige HTTP-origins i lokale netværk som `http://192.168.x.x`.
>
> Brug kun `http://localhost` til test på samme enhed. Hvis brugerne tilgår BentoPDF via en LAN-IP eller et værtsnavn, skal du afslutte forbindelsen 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-tjeneste. Opret `~/.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-deploymentguiden](/da/self-hosting/docker) for den fulde Quadlet-dokumentation.
## Bygning fra kildekode
```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
```
## Konfigurationsindstillinger
### Selvhostet build (Simple Mode)
Det selvhostede build (imaget `bentopdf-simple`, også kaldet Simple Mode) er **funktionelt identisk** med det kommercielle build. Alle PDF-værktøjer er til stede og opfører sig på samme måde. Det skjuler blot de marketingelementer, der kun giver mening på bentopdf.com selv eller i en kommerciel, offentligt tilgængelig deployment. **Det er ikke en version med færre funktioner eller en "lite"-version.**
**Hvad det selvhostede build skjuler** (kun kosmetisk, ingen PDF-funktioner fjernes):
- Navigationslinje, hero-sektion, funktionssektion, FAQ, udtalelser, sidefod
- Opdaterer sidens titel til "PDF-værktøjer"
**Hvad det selvhostede build beholder** (alt det, der faktisk arbejder med PDF):
- Alle PDF-værktøjer (flet, opdel, rediger, underskriv, OCR, Office-konvertering osv.)
- Understøttelse af eget brand, al konfiguration ved build og under kørsel
Det kommercielle build (`ghcr.io/alam00000/bentopdf:latest`) driver bentopdf.com selv og bruges af kommercielle licensindehavere med offentligt tilgængelige deployments. Det tilføjer hero, FAQ, udtalelser og sidefod, som ikke ville give mening i et internt værktøj.
Hvis du selvhoster BentoPDF til dit team, din organisation eller som internt værktøj, skal du hente det selvhostede build:
```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) for alle detaljer.
### Kommerciel build (offentligt tilgængelige deployments med dit eget brand)
Det kommercielle build (imaget `bentopdf`, uden suffikset `-simple`) driver bentopdf.com selv. Det indeholder det fulde marketingsite (hero, funktioner, FAQ, udtalelser, sidefod) oven på alle PDF-værktøjer. Brug dette build, når du vil **deploye BentoPDF som en offentligt tilgængelig PDF-tjeneste under dit eget brand**, for eksempel:
- Du kører BentoPDF som hostet SaaS for slutbrugere på dit eget domæne
- Du vil have landingsside-oplevelsen (marketingsektioner + værktøjer), ikke kun selve værktøjsfladen
- Du er kommerciel licensindehaver og indlejrer BentoPDF i et kommercielt produkt
**Kør det som det er** (BentoPDF-branding, nyttigt til at få vist buildet):
```bash
docker run -p 3000:8080 ghcr.io/alam00000/bentopdf:latest
```
**Byg med dit eget brand** (den typiske kommercielle arbejdsgang):
```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
```
Alle andre build-indstillinger (`BASE_URL`, `VITE_DEFAULT_LANGUAGE`, `DISABLE_TOOLS`, WASM-URL-overstyringer osv.) virker på samme måde som i det selvhostede build.
::: warning Licensering
Det er tilladt at køre det kommercielle build under begge af BentoPDF's to licensmuligheder:
- **AGPL-3.0** (gratis): tilladt, hvis din deployment udgiver hele sin kildekode under AGPL, inklusive eventuelle branding-ændringer og omkringliggende forretningslogik.
- **Kommerciel licens** ($79 livstid): påkrævet til lukkede/proprietære deployments, hvor du ikke gør din branding-fork eller forretningskode open source.
Se [licenssiden](https://www.bentopdf.com/licensing) for den fulde sammenligning. AGPL-licenserede WASM-moduler (PyMuPDF, Ghostscript, CoherentPDF) indlæses fra et CDN under kørsel, så de indgår ikke i dit image og ændrer ikke din licensmæssige stilling.
:::
### Base-URL
Deploy til en undermappe:
```bash
BASE_URL=/pdf-tools/ npm run build
```
### Eget brand
Erstat BentoPDF's standardlogo, -navn og sidefodstekst med dine egne ved build:
| Variabel | Beskrivelse | Standard |
| ------------------ | ----------------------------------------- | --------------------------------------- |
| `VITE_BRAND_NAME` | Brandnavn vist i sidehoved og sidefod | `BentoPDF` |
| `VITE_BRAND_LOGO` | Logosti relativt til `public/` | `images/favicon-no-bg.svg` |
| `VITE_FOOTER_TEXT` | Brugerdefineret sidefods-/ophavsretstekst | `© 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 .
```
Branding virker i både fuld tilstand og Simple Mode og kan kombineres med alle andre build-indstillinger (`BASE_URL`, `SIMPLE_MODE`, `VITE_DEFAULT_LANGUAGE`).
### Deaktivering af bestemte værktøjer
Skjul enkelte værktøjer af hensyn til compliance eller sikkerhed. Deaktiverede værktøjer fjernes fra startsiden, søgning, genveje, workflow-builderen og direkte URL-adgang.
Værktøjs-id'er er sidens URL uden `.html`. Åbn et værktøj, og se på URL'en (f.eks. `edit-pdf`, `sign-pdf`, `encrypt-pdf`).
**Ved build** (indbygget i bundlen):
```bash
DISABLE_TOOLS="edit-pdf,sign-pdf" npm run build
```
**Under kørsel** (ingen genopbygning nødvendig, montér 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
```
Begge metoder kan kombineres, og listerne bliver slået sammen.
Du kan også deaktivere bestemte funktioner i PDF-editoren (f.eks. redigering af indhold) uden at deaktivere hele værktøjet ved at tilføje `editorDisabledCategories` til `config.json`. Se [Docker-guiden](/da/self-hosting/docker#deaktivering-af-editorfunktioner) for den fulde liste over kategorier.
## Deployment-guider
Vælg din platform:
- [Vercel](/da/self-hosting/vercel)
- [Netlify](/da/self-hosting/netlify)
- [Cloudflare Pages](/da/self-hosting/cloudflare)
- [AWS S3 + CloudFront](/da/self-hosting/aws)
- [Hostinger](/da/self-hosting/hostinger)
- [Nginx](/da/self-hosting/nginx)
- [Apache](/da/self-hosting/apache)
- [Docker](/da/self-hosting/docker)
- [Kubernetes](/da/self-hosting/kubernetes)
- [CORS-proxy](/da/self-hosting/cors-proxy) - Påkrævet til digitale signaturer
## Almindelige problemer
### Word / ODT / Excel / PowerPoint til PDF hænger (SharedArrayBuffer utilgængelig)
**Symptom**: LibreOffice-baserede dokumentkonverteringer (Word, ODT, Excel, PowerPoint til PDF) hænger ved ca. 55 % eller starter ikke. Browserens konsol kan vise:
> `ReferenceError: SharedArrayBuffer is not defined`
…eller `window.crossOriginIsolated` rapporterer `false`, eller WASM-kompileringen rapporterer `expected magic word 00 61 73 6d, found 1f 8b 08 08`.
**Årsag**: LibreOffice WASM kræver `SharedArrayBuffer`, som browseren kun aktiverer, når siden er **cross-origin-isoleret** OG serveres fra en **sikker kontekst**. Det betyder, at to ting skal være opfyldt:
1. Hvert svar indeholder begge headere:
- `Cross-Origin-Embedder-Policy: require-corp`
- `Cross-Origin-Opener-Policy: same-origin`
2. Siden serveres fra `https://...` eller `http://localhost`. Almindelig HTTP på en LAN-IP (f.eks. `http://192.168.x.x`) tæller IKKE som sikker, og browsere deaktiverer `SharedArrayBuffer` dér.
Uoverensstemmelsen `00 61 73 6d / 1f 8b 08 08` er et separat undersymptom: De forkomprimerede `.wasm.gz`- / `.data.gz`-filer mangler svarheaderen `Content-Encoding: gzip`, så browseren modtager rå gzip-bytes i stedet for dekomprimeret WASM.
**Løsning**: Se din platformspecifikke deployment-guide for den præcise konfiguration:
- [Nginx →](/da/self-hosting/nginx#underskriv-pdf-eller-formularudfylder-viser-en-tom-læser-mjs-mime-fejl)
- [Apache →](/da/self-hosting/apache#underskriv-pdf-eller-formularudfylder-viser-en-tom-viewer-mjs-mime-fejl)
- [AWS S3 + CloudFront →](/da/self-hosting/aws#trin-3b-response-headers-policy-pakrævet-til-libreoffice-wasm)
- [Cloudflare Pages →](/da/self-hosting/cloudflare#konfigurationsfil) (`_headers`-fil)
- [Netlify →](/da/self-hosting/netlify#word-odt-excel-til-pdf-hænger-ved-55) (`netlify.toml`)
- [Vercel →](/da/self-hosting/vercel#word-odt-excel-til-pdf-virker-ikke) (`vercel.json`)
- [Hostinger →](/da/self-hosting/hostinger#libreoffice-værktøjer-virker-ikke) (`.htaccess`)
- [Kubernetes →](/da/self-hosting/kubernetes#mjs-mime-typefejl-underskriv-pdf-formularudfylder-tom-iframe)
- **Docker**: håndteres automatisk af den medfølgende nginx-konfiguration, ingen handling nødvendig.
**Kontrollér**: Åbn DevTools Console på en vilkårlig BentoPDF-side, og kør:
```js
console.log(window.crossOriginIsolated); // should be true
console.log(typeof SharedArrayBuffer); // should be "function"
```
Hvis siden er HTTPS eller `http://localhost` OG begge COEP/COOP-headere findes på hvert svar, består begge kontroller. Hvis du er på `http://192.168.x.x` eller en anden HTTP-origin, der ikke er loopback, skal du afslutte den med HTTPS. Der findes ingen løsning, der kun bruger headere.
### `.mjs`-filer serveres som `application/octet-stream`
**Symptom**: Underskriv PDF / Formularudfylder / visse andre værktøjer viser en tom læser eller kan ikke indlæses. Browserens konsol rapporterer:
> `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.`
**Årsag**: Din webserver eller reverse proxy har ingen MIME-type-tilknytning til `.mjs`-filer (den indbyggede PDF-læser leverer ES-moduler med den filendelse). Mange standardkonfigurationer bruger som standard `application/octet-stream` til ukendte filendelser, og browsere nægter at køre dem som ES-moduler.
**Løsning**: Se din platformspecifikke deployment-guide for det præcise udsnit:
- [Nginx →](/da/self-hosting/nginx#underskriv-pdf-eller-formularudfylder-viser-en-tom-læser-mjs-mime-fejl)
- [Apache →](/da/self-hosting/apache#underskriv-pdf-eller-formularudfylder-viser-en-tom-viewer-mjs-mime-fejl)
- [AWS S3 + CloudFront →](/da/self-hosting/aws#trin-2-byg-og-upload) (se `aws s3 cp ... --include "*.mjs"`)
- [Kubernetes →](/da/self-hosting/kubernetes#mjs-mime-typefejl-underskriv-pdf-formularudfylder-tom-iframe)
- **Docker, Vercel, Netlify, Cloudflare Pages, Hostinger**: håndteres automatisk, ingen handling nødvendig.
**Kontrollér**: Åbn DevTools → fanen Network, find den mislykkede `.mjs`-anmodning, og kontrollér svarheaderen `Content-Type`. Den skal være `application/javascript`. Hvis den stadig er `application/octet-stream`, er det muligt, at en ydre reverse proxy eller et CDN gætter typen igen. Tjek hvert led i din serveringskæde.
## WASM-konfiguration (AGPL-komponenter)
BentoPDF **bundler ikke** AGPL-licenserede behandlingsbiblioteker i sin kildekode, men **forhåndskonfigurerer CDN-URL'er**, så alle funktioner virker ud af boksen, uden manuel opsætning.
::: tip Nul konfiguration som standard
Fra og med v2.0.0 er WASM-moduler forhåndskonfigureret til at blive indlæst fra jsDelivr CDN via miljøvariabler. Alle avancerede funktioner virker med det samme uden brugerkonfiguration.
:::
| Komponent | Licens | Funktioner |
| --------------- | -------- | ------------------------------------------------------------------------------ |
| **PyMuPDF** | AGPL-3.0 | EPUB/MOBI/FB2/XPS-konvertering, udtrækning af billeder, udtrækning af tabeller |
| **Ghostscript** | AGPL-3.0 | PDF/A-konvertering, komprimering, udretning af skæve sider, rasterisering |
| **CoherentPDF** | AGPL-3.0 | Indholdsfortegnelse, vedhæftninger, PDF-sammenfletning med bogmærker |
### Standardmiljøvariabler
Disse er sat i `.env.production` og indbygget i buildet:
```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=
```
### Overstyring af WASM-URL'er
Du kan overstyre standardværdierne ved build til brugerdefinerede deployments:
```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
```
For at deaktivere et modul helt (kræver manuel brugerkonfiguration via Avancerede indstillinger) skal du sætte dets variabel til en tom streng.
Til OCR skal du enten lade alle `VITE_TESSERACT_*`-variabler være tomme og beholde de online standardressourcer, eller angive worker-, core- og lang-URL'erne sammen til selvhostet/offline OCR. Hvis du kun bundler bestemte OCR-sprog, skal du også sætte `VITE_TESSERACT_AVAILABLE_LANGUAGES` til de samme kommaseparerede koder, så brugerfladen kun tilbyder installerede sprog, og ikke-understøttede valg fejler med en beskrivende fejl. Til fuldt offline PDF-output med søgbar tekst skal du desuden sætte `VITE_OCR_FONT_BASE_URL` til den interne mappe, der serverer de bundlede OCR-skrifttyper.
Brugere kan også til enhver tid overstyre disse standardværdier via **Avancerede indstillinger** i brugerfladen. Brugeroverstyringer gemt i browseren har forrang over miljøstandarderne.
### Air-gapped / offline deployment
Til netværk uden internetadgang (offentlig sektor, sundhed, finans osv.). WASM-URL'erne er indbygget i JavaScript ved **build**. De egentlige WASM-filer downloades af **brugerens browser** under kørsel. Du skal derfor forberede alt på en maskine med internet og derefter overføre det til det isolerede netværk.
#### Automatiseret script (anbefalet)
Det medfølgende script `prepare-airgap.sh` automatiserer hele processen: det downloader WASM-pakker, bygger Docker-imaget og producerer en selvstændig bundle med et opsætningsscript.
```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
```
Dette producerer en bundle-mappe:
```
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
```
Overfør bundlen til det air-gappede netværk via USB, internt artefaktlager eller en godkendt metode. Kør derefter det medfølgende opsætningsscript:
```bash
cd bentopdf-airgap-bundle
bash setup.sh
```
Opsætningsscriptet indlæser Docker-imaget, udpakker WASM-filer og starter eventuelt containeren.
**Script-indstillinger:**
| Flag | Beskrivelse | Standard |
| ------------------------------ | ------------------------------------------------------------- | -------------------------------------- |
| `--wasm-base-url <url>` | Hvor WASM-filerne hostes internt | _(påkrævet, spørges om, hvis mangler)_ |
| `--image-name <name>` | Docker image-tag | `bentopdf` |
| `--output-dir <path>` | Output-mappe til bundlen | `./bentopdf-airgap-bundle` |
| `--simple-mode` | Aktivér Simple Mode | fra |
| `--base-url <path>` | Base-URL til undermappe (f.eks. `/pdf/`) | `/` |
| `--language <code>` | Standardsprog i brugerfladen (f.eks. `fr`, `de`) | _(ingen)_ |
| `--brand-name <name>` | Brugerdefineret brandnavn | _(ingen)_ |
| `--brand-logo <path>` | Logosti relativt til `public/` | _(ingen)_ |
| `--footer-text <text>` | Brugerdefineret sidefodstekst | _(ingen)_ |
| `--ocr-languages <list>` | Kommasepareret liste over OCR-sprog, der skal bundles | `eng` |
| `--list-ocr-languages` | Udskriv understøttede OCR-koder og navne, og afslut | fra |
| `--search-ocr-language <term>` | Søg efter OCR-koder via navn eller forkortelse | fra |
| `--dockerfile <path>` | Dockerfile, der skal bruges | `Dockerfile` |
| `--skip-docker` | Spring Docker-build og eksport over | fra |
| `--skip-wasm` | Spring WASM-download over (genbrug eksisterende `.tgz`-filer) | fra |
Den interaktive prompt accepterer også `list` for at udskrive den fulde liste over understøttede Tesseract-koder og `search <term>` for at finde match som `search german` eller `search chi`.
::: warning Krav om samme origin
WASM-filer skal serveres fra **samme origin** som BentoPDF-appen. Web Workers bruger `importScripts()`, som ikke kan indlæse scripts på tværs af origins. Hvis BentoPDF for eksempel kører på `https://internal.example.com`, skal WASM-base-URL'en også være `https://internal.example.com/wasm`.
:::
#### Manuelle trin
<details>
<summary>Hvis du foretrækker at gøre det manuelt uden scriptet</summary>
**Trin 1: Download WASM- og OCR-pakkerne** (på en maskine 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
```
**Trin 2: Byg Docker-imaget med interne 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 .
```
**Trin 3: Eksportér Docker-imaget**
```bash
docker save bentopdf -o bentopdf.tar
```
**Trin 4: Overfør til det air-gappede netværk**
Kopiér via USB, internt artefaktlager eller en godkendt overførselsmetode:
- `bentopdf.tar`: Docker-imaget
- De fem `.tgz` WASM/OCR-pakker fra trin 1
- Mappen `tesseract-langdata/` fra trin 1
- Mappen `ocr-fonts/` fra trin 1
**Trin 5: Opsætning inde i det air-gappede netværk**
```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
```
Sørg for, at filerne er tilgængelige på de URL'er, du konfigurerede i trin 2, herunder `.../ocr/worker.min.js`, `.../ocr/core`, `.../ocr/lang-data` og `.../ocr/fonts`.
</details>
::: info Bygger du fra kildekode i stedet for Docker?
Sæt variablerne i `.env.production`, før du kører `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
```
:::
### Hosting af din egen WASM-proxy
Hvis du skal servere AGPL WASM-filer med korrekte CORS-headere, kan du deploye en simpel proxy. Se [Cloudflare WASM Proxy-guiden](https://github.com/alam00000/bentopdf/blob/main/cloudflare/WASM-PROXY.md) for et eksempel på en implementering.
::: tip Hvorfor adskilt?
Denne adskillelse sikrer:
- Klar juridisk compliance for kommercielle brugere
- BentoPDF's kerne forbliver under sin dobbeltlicens (AGPL-3.0 / kommerciel)
- WASM-filer indlæses under kørsel og bundles ikke i kildekoden
:::
## Systemkrav
| Krav | Minimum |
| ---------- | --------------------------------- |
| Lagerplads | ~100 MB (kerne uden AGPL-moduler) |
| RAM | 512 MB |
| CPU | Enhver moderne processor |
::: tip
BentoPDF er et statisk site, så der kræves ingen database eller backend-server!
:::
+211
View File
@@ -0,0 +1,211 @@
# Deploy med Kubernetes
Kubernetes er måske overkill til et statisk site, men det kan passe godt, hvis du allerede standardiserer på Helm + GitOps.
> [!IMPORTANT]
> **Påkrævede headere til konvertering af Office-filer**
>
> LibreOffice-baserede værktøjer (konvertering af Word, Excel, PowerPoint) kræver disse HTTP-headere for at understøtte `SharedArrayBuffer`:
>
> - `Cross-Origin-Opener-Policy: same-origin`
> - `Cross-Origin-Embedder-Policy: require-corp`
>
> De officielle BentoPDF nginx-images indeholder disse headere. I Kubernetes er **Ingress-/Gateway-controllere også reverse proxies**, så sørg for, at disse headere bevares (eller tilføj dem i kanten).
## Forudsætninger
- Kubernetes-klynge
- Helm v3
- Et BentoPDF nginx-image (f.eks. `ghcr.io/alam00000/bentopdf:<tag>`), der serverer på **port 8080**
## Deploy med Helm
### Installér fra dette repo (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
```
### Installér fra GHCR (OCI-chart)
Hvis chartet er udgivet til GHCR som et 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
```
## Gør det tilgængeligt
### Port-forward (hurtig test)
```bash
kubectl -n bentopdf port-forward deploy/bentopdf 8080:8080
```
### Ingress (valgfrit)
Aktivér Ingress (eksempel til nginx-ingress):
```yaml
ingress:
enabled: true
className: nginx
hosts:
- host: pdf.example.com
paths:
- path: /
pathType: Prefix
```
### Gateway API (valgfrit)
Dette chart understøtter Gateway API `Gateway` + `HTTPRoute`.
Eksempel (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
```
## Sørg for, at SharedArrayBuffer-headerne stadig virker (Ingress/Gateway)
### Hvad der "burde" ske
BentoPDF's nginx-konfiguration sætter de nødvendige svarheadere. De fleste Ingress-/Gateway-controllere **sender upstream-svarheadere videre uændret**.
### Hvad der kan gå galt
- En controller- eller edge-politik, der **overskriver** eller **fjerner** svarheadere
- En "security headers"-middleware, der sætter andre COOP/COEP-værdier
### Sådan kontrollerer du det
Kør dette mod dit offentlige endpoint:
```bash
curl -I https://pdf.example.com/ | egrep -i 'cross-origin-opener-policy|cross-origin-embedder-policy'
```
Du skal se:
- `Cross-Origin-Opener-Policy: same-origin`
- `Cross-Origin-Embedder-Policy: require-corp`
### Hvis din Ingress-controller ikke bevarer dem
Tilføj headerne i kanten (afhænger af controlleren). Eksempel til **nginx-ingress**:
```yaml
ingress:
enabled: true
className: nginx
annotations:
nginx.ingress.kubernetes.io/configuration-snippet: |
add_header Cross-Origin-Opener-Policy "same-origin" always;
add_header Cross-Origin-Embedder-Policy "require-corp" always;
```
## `.mjs` MIME-typefejl (Underskriv PDF / Formularudfylder, tom iframe)
Hvis browserens konsol viser `Failed to load module script: ... non-JavaScript MIME type "application/octet-stream"` på en `.mjs`-anmodning, erstatter en Ingress-/Gateway-controller foran BentoPDF's nginx den upstream `Content-Type`-header med `application/octet-stream`.
BentoPDF-imagets nginx serverer allerede `.mjs` som `application/javascript`. Løsningen er at stoppe controlleren i at fjerne eller erstatte den. For nginx-ingress:
```yaml
ingress:
annotations:
nginx.ingress.kubernetes.io/configuration-snippet: |
location ~* \.mjs$ {
types {} default_type application/javascript;
}
```
Eller brug et `ResponseHeaderModifier`-filter i Gateway API til at sætte `Content-Type: application/javascript` for `.mjs`-stier. Kontrollér i DevTools → fanen Network: Den mislykkede `.mjs`-anmodning skulle nu vise `content-type: application/javascript`.
### Hvis du bruger Gateway API og vil tvinge headere på
Gateway API understøtter et `ResponseHeaderModifier`-filter. Du kan knytte det til 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
```
Understøttelse af bestemte filtre afhænger af din Gateway-controller. Hvis et filter ignoreres, så tilføj headerne i kanten eller i controller-laget i stedet.
## Deaktivering af bestemte værktøjer
Brug en ConfigMap til at deaktivere værktøjer under kørsel uden at genopbygge imaget:
```yaml
apiVersion: v1
kind: ConfigMap
metadata:
name: bentopdf-config
namespace: bentopdf
data:
config.json: |
{
"disabledTools": ["edit-pdf", "sign-pdf", "encrypt-pdf"]
}
```
Montér den i den serverede mappe:
```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
```
Værktøjs-id'er er sidens URL uden `.html`. Åbn et værktøj, og se på URL'en (f.eks. `edit-pdf`, `merge-pdf`, `compress-pdf`). Deaktiverede værktøjer skjules fra startsiden, søgning, genveje, workflow-builderen og direkte URL-adgang. Se [Docker-guiden](/da/self-hosting/docker#deaktivering-af-bestemte-værktøjer) for den fulde liste over indstillinger.
+139
View File
@@ -0,0 +1,139 @@
# Deploy til Netlify
[Netlify](https://netlify.com) tilbyder fremragende hosting af statiske sites med en generøs gratis plan.
## Deploy med ét klik
[![Deploy to Netlify](https://www.netlify.com/img/deploy/button.svg)](https://app.netlify.com/start/deploy?repository=https://github.com/alam00000/bentopdf)
## Manuel deployment
### Trin 1: Forbind repository
1. Log ind på [Netlify](https://app.netlify.com)
2. Klik på "Add new site" → "Import an existing project"
3. Forbind din GitHub-konto
4. Vælg din BentoPDF-fork
### Trin 2: Konfigurér build-indstillinger
| Indstilling | Værdi |
| ----------------- | --------------- |
| Build command | `npm run build` |
| Publish directory | `dist` |
| Node version | 18+ |
### Trin 3: Deploy
Klik på "Deploy site", og vent på buildet.
## Konfigurationsfil
Opret `netlify.toml` i dit projekts rodmappe:
```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 Vigtigt
Headerne `Cross-Origin-Embedder-Policy` og `Cross-Origin-Opener-Policy` er påkrævet til konvertering af Word/ODT/Excel/PowerPoint til PDF. Uden dem er `SharedArrayBuffer` utilgængelig, og LibreOffice WASM-motoren kan ikke starte.
Headerne `Content-Encoding: gzip` på filerne `.wasm.gz` og `.data.gz` får browseren til at dekomprimere dem automatisk. Uden dem modtager browseren rå gzip-bytes, og WASM-kompileringen mislykkes.
:::
## Miljøvariabler
Angiv disse under Site settings → Environment variables:
| Variabel | Beskrivelse |
| ----------------------- | ------------------------------------------------------------ |
| `SIMPLE_MODE` | Sæt til `true` for et minimalt build |
| `VITE_BRAND_NAME` | Brugerdefineret brandnavn (erstatter "BentoPDF") |
| `VITE_BRAND_LOGO` | Logosti relativt til `public/` (f.eks. `images/my-logo.svg`) |
| `VITE_FOOTER_TEXT` | Brugerdefineret sidefods-/ophavsretstekst |
| `VITE_DEFAULT_LANGUAGE` | Standardsprog i brugerfladen (f.eks. `fr`, `de`, `es`) |
## Eget domæne
1. Gå til Site settings → Domain management
2. Klik på "Add custom domain"
3. Følg anvisningerne til DNS-konfiguration
## Store mediefiler
Til store WASM-filer kan du overveje at aktivere [Netlify Large Media](https://docs.netlify.com/large-media/overview/):
```bash
netlify lm:setup
git lfs track "*.wasm"
```
## Fejlfinding
### Word/ODT/Excel til PDF hænger ved 55 %
Hvis dokumentkonverteringer hænger ved 55 %, så åbn DevTools Console og kontrollér:
```js
console.log(window.crossOriginIsolated); // should be true
console.log(typeof SharedArrayBuffer); // should be "function"
```
Hvis `crossOriginIsolated` er `false`, bliver COEP/COOP-headerne fra din `netlify.toml` ikke anvendt. Sørg for, at filen ligger i dit projekts rodmappe, og deploy igen.
Hvis du ser `expected magic word 00 61 73 6d, found 1f 8b 08 08` i konsollen, mangler `.wasm.gz`-filerne headerne `Content-Encoding: gzip`. Sørg for, at blokkene `[[headers]]` til `soffice.wasm.gz` og `soffice.data.gz` findes i din `netlify.toml`.
### Build mislykkes
Kontrollér kompatibiliteten med Node-versionen:
```toml
[build.environment]
NODE_VERSION = "20"
```
### Langsom første indlæsning
Aktivér asset-optimering under Site settings → Build & deploy → Asset optimization.
+232
View File
@@ -0,0 +1,232 @@
# Deploy med Nginx
Host BentoPDF på din egen server med Nginx.
## Forudsætninger
- Ubuntu/Debian-server
- Nginx installeret
- SSL-certifikat (anbefalet: Let's Encrypt)
## Trin 1: Byg projektet
```bash
git clone https://github.com/alam00000/bentopdf.git
cd bentopdf
npm install
npm run build
```
For at tilpasse branding skal du sætte miljøvariabler, før du bygger:
```bash
VITE_BRAND_NAME="AcmePDF" VITE_BRAND_LOGO="images/acme-logo.svg" npm run build
```
## Trin 2: Kopiér 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
```
## Trin 3: Nginx-konfiguration
Opret `/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;
}
}
```
## Trin 4: Aktivér sitet
```bash
sudo ln -s /etc/nginx/sites-available/bentopdf /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
```
## Trin 5: SSL med Let's Encrypt
```bash
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx -d your-domain.com
```
## Deployment i undermappe
For at hoste på `/pdf/`:
```nginx
location /pdf/ {
alias /var/www/bentopdf/;
try_files $uri $uri/ /pdf/index.html;
}
```
Byg med:
```bash
BASE_URL=/pdf/ npm run build
```
## Ydelsesjustering
Tilføj til `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;
}
```
## Fejlfinding
### WASM indlæses ikke
Sørg for, at MIME-typen er sat:
```nginx
types {
application/wasm wasm;
}
```
### Underskriv PDF eller Formularudfylder viser en tom læser (`.mjs` MIME-fejl)
Hvis browserens konsol viser:
```
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.
```
…og den mislykkede anmodning ender på `.mjs`, mangler din nginx tilknytningen `.mjs → application/javascript`. Den indbyggede PDF-læser (brugt af Underskriv PDF, Formularudfylder og et par andre værktøjer) leverer ES-modulfiler med filendelsen `.mjs`, og nginx' standardfil `mime.types` indeholder dem ikke som standard.
Ret det ved at tilføje `mjs` til den eksisterende `application/javascript`-linje i `/etc/nginx/mime.types`:
```nginx
application/javascript js mjs;
```
> Tilføj IKKE en _anden_ `application/javascript`-linje. Nginx læser `mime.types` linje for linje, og kun én tilknytning mellem type og filendelse vinder, så en anden linje ignoreres i stilhed på nogle versioner. Redigér den eksisterende linje, så `mjs` står ved siden af `js`.
Eller overstyr lokalt i din server-blok (uden at redigere den globale fil):
```nginx
types {
application/javascript js mjs;
application/wasm wasm;
}
```
Genindlæs nginx efter ændringen:
```bash
sudo nginx -t && sudo systemctl reload nginx
```
For at bekræfte det: Find den mislykkede `.mjs`-anmodning i browserens DevTools → fanen Network, og kontrollér svarheaderen `Content-Type`. Den skulle nu være `application/javascript`, ikke `application/octet-stream`.
### Word/ODT/Excel til PDF virker ikke
LibreOffice WASM kræver `SharedArrayBuffer`, som kræver headerne `Cross-Origin-Embedder-Policy` og `Cross-Origin-Opener-Policy`. Det kræver også en sikker kontekst, så `http://localhost` virker til lokal test, men `http://192.168.x.x` eller andre LAN-IP'er kræver normalt HTTPS. Bemærk, at nginx' `add_header`-direktiver i en `location`-blok **overskriver** `add_header`-direktiver på serverniveau. De bliver ikke slået sammen. Hver `location`-blok med sin egen `add_header` skal indeholde COEP/COOP-headerne.
Kontrollér med:
```bash
curl -I https://your-domain.com/ | grep -i cross-origin
```
Hvis du bruger en reverse proxy foran nginx, så sørg for, at den bevarer disse headere.
### 502 Bad Gateway
Tjek Nginx' fejllogge:
```bash
sudo tail -f /var/log/nginx/error.log
```
+122
View File
@@ -0,0 +1,122 @@
# Deploy til Vercel
[Vercel](https://vercel.com) tilbyder den letteste deployment-oplevelse for statiske sites.
## Deploy med ét klik
[![Deploy with Vercel](https://vercel.com/button)](https://vercel.com/new/clone?repository-url=https://github.com/alam00000/bentopdf)
## Manuel deployment
### Trin 1: Fork repositoriet
Fork [bentopdf/bentopdf](https://github.com/alam00000/bentopdf) til din GitHub-konto.
### Trin 2: Importér til Vercel
1. Gå til [vercel.com/new](https://vercel.com/new)
2. Vælg dit forkede repository
3. Konfigurér projektet:
| Indstilling | Værdi |
| ---------------- | --------------- |
| Framework Preset | Vite |
| Build Command | `npm run build` |
| Output Directory | `dist` |
| Install Command | `npm install` |
### Trin 3: Miljøvariabler (valgfrit)
Tilføj disse, hvis det er nødvendigt:
| Variabel | Beskrivelse |
| ----------------------- | ------------------------------------------------------------ |
| `SIMPLE_MODE` | Sæt til `true` for minimal brugerflade |
| `VITE_BRAND_NAME` | Brugerdefineret brandnavn (erstatter "BentoPDF") |
| `VITE_BRAND_LOGO` | Logosti relativt til `public/` (f.eks. `images/my-logo.svg`) |
| `VITE_FOOTER_TEXT` | Brugerdefineret sidefods-/ophavsretstekst |
| `VITE_DEFAULT_LANGUAGE` | Standardsprog i brugerfladen (f.eks. `fr`, `de`, `es`) |
### Trin 4: Deploy
Klik på "Deploy", og vent på, at buildet er færdigt.
## Eget domæne
1. Gå til dit projekts indstillinger
2. Naviger til "Domains"
3. Tilføj dit eget domæne
4. Konfigurér DNS som anvist
## Begrænsninger
::: warning Store filer
Vercels serverless-funktioner har en grænse på 50 MB. Da BentoPDF er et statisk site, bør det ikke påvirke dig, men WASM-modulerne er store (ca. 100 MB i alt). Sørg for, at de leveres fra mappen `/public`.
:::
## Fejlfinding
### Build-timeout
Hvis buildet timer ud, så prøv:
```json
// vercel.json
{
"buildCommand": "npm run build",
"outputDirectory": "dist"
}
```
### 404 ved opdatering af siden
Tilføj en `vercel.json` til SPA-routing:
```json
{
"rewrites": [{ "source": "/(.*)", "destination": "/index.html" }]
}
```
### Word/ODT/Excel til PDF virker ikke
LibreOffice WASM-konverteringer kræver `SharedArrayBuffer`, som kræver disse svarheadere på alle sider:
- `Cross-Origin-Embedder-Policy: require-corp`
- `Cross-Origin-Opener-Policy: same-origin`
De forkomprimerede `.wasm.gz`- og `.data.gz`-filer skal også have `Content-Encoding: gzip`, så browseren dekomprimerer dem.
Tilføj disse til 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" }
]
}
]
}
```
For at kontrollere det skal du åbne DevTools Console og køre `console.log(window.crossOriginIsolated)`. Den skal returnere `true`.
+49
View File
@@ -0,0 +1,49 @@
---
title: Tilføj vedhæftninger
description: Indlejr filer af enhver type i en PDF på dokumentniveau eller knyttet til bestemte sider.
---
# Tilføj vedhæftninger
Indlejr en eller flere filer direkte i et PDF-dokument. Vedhæftninger kan tilføjes på dokumentniveau (synlige i enhver PDF-læsers panel for vedhæftninger) eller knyttes til bestemte sider.
## Sådan fungerer det
1. Upload den PDF, du vil vedhæfte filer til.
2. Brug dropzonen til vedhæftninger til at vælge de filer, du vil indlejre (alle filtyper).
3. Vælg niveau for vedhæftningen: **Dokument** (standard) eller **Side**.
4. Hvis du vælger sideniveau, skal du angive et sideinterval (f.eks. `1-3` eller `5`).
5. Klik på knappen for at behandle. Den ændrede PDF downloades med dine filer indlejret.
## Funktioner
- Vedhæft enhver filtype: billeder, regneark, arkiver, programfiler, alt muligt
- Placering af vedhæftninger på dokumentniveau eller sideniveau
- Flere filer kan vedhæftes i én handling
- Viser filnavne og størrelser for alle valgte vedhæftninger
- Outputtet bevarer det oprindelige PDF-indhold med de indlejrede filer tilføjet
## Indstillinger
| Indstilling | Beskrivelse |
| ------------------ | --------------------------------------------------------------------------------- |
| **Dokumentniveau** | Vedhæfter filer til PDF'en som helhed, tilgængelige fra panelet for vedhæftninger |
| **Sideniveau** | Vedhæfter filer til bestemte sider, angivet med et sideinterval |
## Anvendelsesområder
- Samle kildedata (Excel-filer, CSV'er) med en PDF-rapport
- Vedhæfte de originale billedfiler til en PDF med et fotoportfolio
- Indlejre underbilag i en kontrakt eller et tilbud
- Tilføje supplerende materiale til bestemte sider i en træningsmanual
## Tips
- Vedhæftninger på dokumentniveau understøttes bredest på tværs af PDF-læsere. Vedhæftninger på sideniveau er muligvis ikke synlige i alle læsere.
- Der er ingen grænse for filstørrelsen på vedhæftninger, men meget store indlejrede filer øger PDF'ens størrelse tilsvarende.
## Relaterede værktøjer
- [Udtræk vedhæftninger](./extract-attachments)
- [Redigér vedhæftninger](./edit-attachments)
- [Flet PDF](./merge-pdf)
+40
View File
@@ -0,0 +1,40 @@
---
title: Tilføj tom side
description: Indsæt en eller flere tomme sider på en vilkårlig position i et PDF-dokument.
---
# Tilføj tom side
Indsæt tomme sider i en PDF på en position, du selv angiver. Du bestemmer, hvor de tomme sider placeres, og hvor mange der tilføjes.
## Sådan fungerer det
1. Upload en PDF-fil. Værktøjet viser antallet af sider.
2. Angiv den **position**, hvor de tomme sider skal indsættes. Brug `0` for at indsætte allerførst, eller det samlede antal sider for at tilføje til sidst.
3. Angiv **antallet** af tomme sider, der skal tilføjes (standard er 1).
4. Klik på knappen for at behandle. Den ændrede PDF downloades med de tomme sider indsat.
## Funktioner
- Indsæt på enhver position: i begyndelsen, i midten eller til sidst i dokumentet
- Tilføj flere tomme sider i én handling
- Positionshinten opdateres dynamisk ud fra den uploadede PDF's sideantal
- Tomme sider i standard A4-format
## Anvendelsesområder
- Tilføje en tom skilleside mellem afsnit i et sammensat dokument
- Indsætte tomme sider, så dobbeltsidet udskrivning passer
- Tilføje plads til håndskrevne noter i en udskrevet studievejledning
- Fylde et dokument ud, så det opfylder et krav om minimum sideantal
## Tips
- Position `0` indsætter før første side. En position svarende til det samlede sideantal tilføjer efter sidste side.
- Hvis du skal indsætte indhold (ikke kun tomme sider) på en bestemt position, kan du bruge [PDF Multi-værktøj](./pdf-multi-tool) til at indsætte en anden PDF efter en given side.
## Relaterede værktøjer
- [Organisér og dupliker](./organize-pdf)
- [PDF Multi-værktøj](./pdf-multi-tool)
- [Flet PDF](./merge-pdf)
+53
View File
@@ -0,0 +1,53 @@
---
title: Tilføj sideetiketter
description: Tilføj PDF-sideetiketter med romertal, bogstavpræfikser, brugerdefineret nummerering og flere regler pr. dokument.
---
# Tilføj sideetiketter
Sideetiketter styrer, hvordan sidetal vises i PDF-læsere (tallet i værktøjslinjen, ikke det der er trykt på siden). Med dette værktøj kan du give forskellige sideintervaller forskellige nummereringsmåder: romertal til forsiden, decimaltal til hoveddelen, bogstaver til bilag og meget mere.
## Sådan fungerer det
1. Upload din PDF-fil.
2. Indstillingspanelet vises med én etiketregel som standard.
3. Konfigurér hver regel med et sideinterval, en stil, et valgfrit præfiks og en startværdi.
4. Klik på **Tilføj regel** for at oprette flere regler til forskellige afsnit.
5. Klik på **Tilføj sideetiketter** for at anvende alle regler og downloade resultatet.
## Indstillinger
Hver etiketregel har disse indstillinger:
- **Sideinterval** -- Hvilke sider reglen gælder for. Lad feltet stå tomt for alle sider. Understøtter intervaller som `1-4`, `7`, `odd` eller `1-9,30-40`.
- **Etiketstil** -- Arabiske decimaltal, små romertal (i, ii, iii), store romertal (I, II, III), små bogstaver (a, b, c), store bogstaver (A, B, C) eller ingen etiket (kun præfiks).
- **Etiketpræfiks** -- Valgfri tekst foran hver etiket, f.eks. "A-" for at lave etiketter som A-1, A-2, A-3.
- **Startværdi** -- Det tal, der tælles fra. Standard er 1. Sæt til 0 for nulbaseret nummerering.
- **Fortsæt nummerering på tværs af adskilte intervaller** -- Slå dette til, når en regel rammer ikke-sammenhængende sider (som `1-9,30-40` eller `odd`), og du vil have nummereringen til at fortsætte i rækkefølge.
- **Fjern eksisterende sideetiketter** -- Markeret som standard. Rydder tidligere etiketter, før dine nye regler anvendes.
## Funktioner
- Flere etiketregler pr. dokument til komplekse nummereringsskemaer
- Seks etiketstile, der dækker alle gængse nummereringssystemer
- Understøttelse af brugerdefinerede præfikser til afsnitsbaseret etikettering
- Understøttelse af adskilte intervaller med fortløbende nummerering
- Mulighed for at beholde eller fjerne eksisterende etiketter
## Anvendelsesområder
- Sætte romertalsetiketter (i, ii, iii) på en bogs forord og decimaletiketter på hovedteksten
- Etikettere bilagssider med bogstavpræfikser som "A-1", "A-2", "B-1", "B-2"
- Rette sideetiketter i et scannet dokument, hvor de fysiske sidetal ikke passer med PDF'ens siderækkefølge
- Tilføje nulbaseret nummerering til tekniske dokumenter
## Tips
- Sideetiketter er metadata, som PDF-læsere viser i deres navigationslinje. De udskrives ikke på selve siden. Til synlige tal kan du bruge [Sidetal](./page-numbers).
- Dette værktøj kræver, at CoherentPDF (CPDF) er konfigureret i dine WASM-indstillinger. Hvis det ikke er sat op, bliver du bedt om at konfigurere det.
## Relaterede værktøjer
- [Sidetal](./page-numbers)
- [Bates-nummerering](./bates-numbering)
- [Redigér bogmærker](./bookmark)
+45
View File
@@ -0,0 +1,45 @@
---
title: Tilføj stempler
description: Tilføj billedstempler til dine PDF-sider med en integreret annoteringsværktøjslinje og angivelse af brugernavn.
---
# Tilføj stempler
Placér billedstempler på dine PDF-sider i en indlejret læser med en værktøjslinje til stempelannotering. Stempler kan indeholde dit navn som afsender, hvilket gør værktøjet nyttigt til godkendelsesforløb, gennemgange og markering af dokumenter.
## Sådan fungerer det
1. Skriv dit navn i feltet **Stempelbrugernavn**. Dette navn vises på de stempler, du opretter.
2. Upload din PDF-fil ved at klikke eller trække den ind i dropzonen.
3. Stempeleditoren åbner med dit dokument indlæst i en læser.
4. Brug værktøjslinjens billedstempelværktøj til at vælge og placere stempler på en vilkårlig side.
5. Placér og tilpas størrelsen på stemplerne efter behov.
6. Klik på **Gem stemplet PDF** for at downloade resultatet.
## Funktioner
- Integreret PDF-læser med en stempelspecifik annoteringsværktøjslinje
- Angivelse af brugernavn på oprettede stempler
- Placering af billedstempler på enhver side
- Placering og størrelsesændring med træk og slip
- Automatisk tilpasning af læserens størrelse efter sidens billedformat
- Visning af fil med navn og størrelse
## Anvendelsesområder
- Tilføje billedstemplerne "GODKENDT" eller "GENNEMGÅET" til dokumenter i et gennemgangsforløb
- Placere billeder af firmasegl eller notarstempel på officielle dokumenter
- Markere sider med "MODTAGET"-stempler med gennemgangerens navn
- Tilføje kvalitetskontrolstempler til inspektionsrapporter
## Tips
- Angiv dit stempelbrugernavn, før du uploader PDF'en. Brugernavnet indlejres i stemplets metadata.
- Læseren tilpasser sin højde efter PDF'ens første sides billedformat, så visningen bliver optimal.
- Til tekstbaserede vandmærker i stedet for billedstempler kan du bruge værktøjet [Tilføj vandmærke](./add-watermark).
## Relaterede værktøjer
- [Underskriv PDF](./sign-pdf)
- [Tilføj vandmærke](./add-watermark)
- [PDF-editor](./edit-pdf)
+79
View File
@@ -0,0 +1,79 @@
---
title: Tilføj vandmærke
description: Sæt tekst- eller billedvandmærker på PDF-sider med en visuel træk-og-slip-editor og live eksempelvisning.
---
# Tilføj vandmærke
Tilføj tekst- eller billedvandmærker til dine PDF-sider med en visuel editor. Du kan placere vandmærket ved at trække det direkte i eksempelvisningen, ændre størrelsen med hjørnehåndtag og indstille gennemsigtighed, rotation, skrifttype og farve. Hver side kan have sin egen vandmærkeposition, eller du kan anvende det samme vandmærke på alle sider på én gang.
## Sådan fungerer det
1. Upload din PDF-fil.
2. Editoren åbner med en live eksempelvisning af første side og et vandmærke, der kan trækkes.
3. Vælg mellem **Tekst**- eller **Billede**-vandmærke med skiftknapperne.
4. Konfigurér vandmærkets indstillinger i sidepanelet.
5. Træk vandmærket i eksempelvisningen, så det står præcis, hvor du vil have det. Brug hjørnehåndtagene til at ændre størrelsen.
6. Gå mellem siderne for at indstille vandmærker pr. side, eller lad **Anvend på alle sider** være markeret.
7. Klik på **Tilføj vandmærke** for at behandle og downloade.
## Indstillinger
**Indstillinger for tekstvandmærke:**
- **Tekst** -- Vandmærkets tekst (f.eks. "FORTROLIG", "UDKAST").
- **Skriftstørrelse** -- Fra 10 til 200 punkt. Standard er 72.
- **Farve** -- Vilkårlig farve via farvevælgeren.
- **Gennemsigtighed** -- Styr gennemsigtigheden fra helt gennemsigtig til helt uigennemsigtig.
- **Rotation** -- Roter vandmærketeksten fra -180 til 180 grader.
**Indstillinger for billedvandmærke:**
- **Billedupload** -- Upload en PNG, JPG eller anden billedfil, der skal bruges som vandmærke.
- **Gennemsigtighed** -- Styr billedets gennemsigtighed.
- **Skala** -- Ændr størrelsen på billedvandmærket.
**Layoutindstillinger:**
- **Enkelt** -- Ét vandmærke pr. side, placeret ved at trække eller med positionsforvalgene.
- **Fliselagt** -- Gentager vandmærket over hele siden i et diagonalt gitter, der følger rotationsvinklen, så mærket dækker dokumentet fra kant til kant.
- **Vandret afstand** -- Afstand mellem fliserne langs tekstretningen, som en procentdel af vandmærkets bredde (kun fliselagt tilstand).
- **Lodret afstand** -- Afstand mellem flisernes rækker, som en procentdel af vandmærkets højde (kun fliselagt tilstand).
**Generelle indstillinger:**
- **Anvend på alle sider** -- Når den er markeret, gælder det samme vandmærke for alle sider. Fjern markeringen for at indstille individuelle vandmærker pr. side.
- **Sideinterval** -- Angiv, hvilke sider der får vandmærket (f.eks. "1-3, 5, 7-9" eller "all").
## Funktioner
- Visuel placering med træk og slip i en live PDF-eksempelvisning
- Vandmærke, hvis størrelse kan ændres med hjørnehåndtag
- Tilstande for tekst- og billedvandmærker
- Enkelt layout eller fliselagt (gentaget) layout over hele siden med justerbar afstand
- Vandmærke pr. side eller globalt
- Navigation side for side i eksempelvisningen
- Styring af gennemsigtighed og rotation
- Filtrering efter sideinterval
## Anvendelsesområder
- Markere udkast med "UDKAST", før de sendes rundt til gennemgang
- Tilføje "FORTROLIG"-vandmærker til følsomme regnskabsrapporter
- Brande dokumenter med et vandmærke med firmalogo
- Stemple "EKSEMPEL" på produktdokumentation, der deles med potentielle kunder
- Tilføje ophavsretsmeddelelser til distribuerede PDF-materialer
## Tips
- Til diagonale vandmærker hen over siden kan du sætte rotationen til omkring 45 grader og øge skriftstørrelsen.
- Fliselagt tilstand gør et dokument meget sværere at genbruge efter beskæring, da der stadig er snesevis af mærker tilbage, hvis du fjerner ét. Sænk gennemsigtigheden, når du bruger fliser, så den underliggende tekst forbliver læselig.
- Billedvandmærker med gennemsigtig baggrund (PNG-format) smelter mere naturligt sammen med dokumentets indhold.
- Hvis du skal bruge forskellig vandmærketekst på forskellige sider, skal du fjerne markeringen af "Anvend på alle sider" og gå side for side.
## Relaterede værktøjer
- [Sidehoved og sidefod](./header-footer)
- [Tilføj stempler](./add-stamps)
- [Bates-nummerering](./bates-numbering)
- [Underskriv PDF](./sign-pdf)
+55
View File
@@ -0,0 +1,55 @@
---
title: Justér farver
description: Finjustér lysstyrke, kontrast, mætning, farvetone, temperatur, nuance, gamma og sepia i din PDF.
---
# Justér farver
Et komplet værktøj til farvekorrektion af PDF'er. Juster otte uafhængige parametre (lysstyrke, kontrast, mætning, farvetoneforskydning, temperatur, nuance, gamma og sepia) med en live eksempelvisning, der opdateres, mens du flytter hver skyder.
## Sådan fungerer det
1. Upload din PDF-fil.
2. Editoren åbner med en eksempelvisning af første side og et panel med farveindstillinger.
3. Flyt skyderne for at justere hver farveparameter. Eksempelvisningen opdateres i realtid.
4. Klik på **Nulstil** for at sætte alle skydere tilbage til deres standardpositioner.
5. Klik på **Anvend** for at behandle alle sider og downloade den justerede PDF.
## Indstillinger
- **Lysstyrke** -- Gør hele siden lysere eller mørkere (-100 til +100).
- **Kontrast** -- Øg eller mindsk forskellen mellem lyse og mørke områder (-100 til +100).
- **Mætning** -- Forstærk eller reducér farveintensiteten (-100 til +100). Sættes den til -100, bliver resultatet gråtoner.
- **Farvetoneforskydning** -- Drej farvehjulet for at forskyde alle farver ensartet.
- **Temperatur** -- Gør farverne varmere (gul/orange) eller koldere (blå).
- **Nuance** -- Tilføj et grønt eller magentafarvet skær.
- **Gamma** -- Juster mellemtoners lysstyrke med en gammakurve. Værdier under 1,0 gør mellemtonerne mørkere, og værdier over 1,0 gør dem lysere.
- **Sepia** -- Anvend en klassisk sepiatone. Højere værdier giver et kraftigere brunt skær.
## Funktioner
- Otte uafhængigt justerbare farveparametre
- Live eksempelvisning, der reagerer med det samme på ændringer af skyderne
- Nulstillingsknap til hurtigt at vende tilbage til standardværdierne
- Behandler alle sider i dokumentet
- Virker med alt PDF-indhold (tekst, billeder, grafik)
## Anvendelsesområder
- Gøre en mørk scanning lysere eller rette overeksponerede sider
- Affarve et farverigt dokument for at spare blæk før udskrivning
- Anvende en sepiatone for at skabe et antikt look til certifikater eller priser
- Rette farvetemperaturen på fotos, der er indlejret i en PDF
- Øge kontrasten i falmede eller scannede dokumenter af lav kvalitet
## Tips
- For en hurtig konvertering til gråtoner skal du trække mætningsskyderen helt ned til -100.
- Gammaskyderen er særligt nyttig til at forbedre læsbarheden af scannede dokumenter, hvor mellemtonerne er for mørke eller for lyse.
- Ligesom de andre billedeffektværktøjer rasteriserer dette værktøj hver side. Outputtet er billedbaseret, så teksten kan ikke markeres.
## Relaterede værktøjer
- [Invertér farver](./invert-colors)
- [Scannereffekt](./scanner-effect)
- [Baggrundsfarve](./background-color)
+42
View File
@@ -0,0 +1,42 @@
---
title: Alternér og miks sider
description: Flet PDF'er ved at flette sider fra hver fil ind i skiftevis rækkefølge, med bevarelse af bogmærker.
---
# Alternér og miks sider
Flet sider fra flere PDF-filer, så siderne skifter mellem dokumenterne. Dette er værktøjet, du skal bruge, når en almindelig sammenfletning blot sætter filerne efter hinanden, men du har brug for side 1 fra fil A, derefter side 1 fra fil B, derefter side 2 fra fil A og så videre.
## Sådan fungerer det
1. Upload mindst to PDF-filer i dropzonen.
2. Værktøjet viser hver fil med sideantal og filstørrelse.
3. Træk i grebshåndtagene for at ændre, hvilken fils sider der kommer først i rækkefølgen.
4. Klik på **Miks sider** for at lave det sammenflettede output.
5. Resultatet downloades som `alternated-mixed.pdf`.
## Funktioner
- Fletter sider på tværs af et vilkårligt antal PDF'er (minimum to)
- Omarrangering af filer med træk og slip for at styre sammenfletningens prioritet
- Bevarer bogmærker fra kildedokumenterne
- Viser sideantal og filstørrelse for hver uploadet fil
- Behandler i en dedikeret web worker, så brugerfladen forbliver responsiv
## Anvendelsesområder
- Samle dobbeltsidede scanninger igen, hvor ulige og lige sider er scannet hver for sig
- Kombinere opgaveark med facitlister, så hvert spørgsmål efterfølges af sit svar
- Flette tosprogede dokumenter side for side (f.eks. engelsk på den ene side og oversættelsen på den næste)
- Flette for- og bagsider fra en scanner, der kun scanner enkeltsidet
## Tips
- Hvis dine kilde-PDF'er har forskelligt sideantal, løber det korteste dokument tør for sider først, og de resterende sider fra det længste dokument kommer til sidst.
- Filrækkefølgen har betydning: Den første fil på listen bidrager med outputtets første side. Træk for at omarrangere, hvis det er nødvendigt.
## Relaterede værktøjer
- [Flet PDF](./merge-pdf)
- [Organisér og dupliker](./organize-pdf)
- [Opdel PDF](./split-pdf)
+45
View File
@@ -0,0 +1,45 @@
---
title: Baggrundsfarve
description: Skift baggrundsfarven på hver side i din PDF, mens alt indhold bevares ovenpå.
---
# Baggrundsfarve
Angiv en ensfarvet baggrund bag alt eksisterende indhold i din PDF. Værktøjet opretter et farvet rektangel på hver side og lægger det oprindelige indhold ovenpå, så tekst, billeder og grafik forbliver fuldt synlige mod den nye baggrund.
## Sådan fungerer det
1. Upload din PDF-fil.
2. Vælg en baggrundsfarve med farvevælgeren. Standard er en lysegul (#FFFFCC).
3. Klik på **Skift baggrundsfarve** for at behandle.
4. Den opdaterede PDF downloades automatisk.
## Indstillinger
- **Baggrundsfarve** -- En almindelig farvevælger til at vælge en vilkårlig ensfarvet farve. Standard er lysegul.
## Funktioner
- Anvender en ensartet baggrundsfarve på hver side
- Bevarer alt oprindeligt indhold (tekst, billeder, vektorgrafik) oven på det farvede lag
- Bevarer de oprindelige sidemål
- Virker med dokumenter med et vilkårligt antal sider
## Anvendelsesområder
- Tilføje en lys creme- eller elfenbensfarvet baggrund, så dokumenter får et blødere, papirlignende udseende
- Farvekode dokumentsæt ved at give forskellige kategorier forskellige baggrundsfarver
- Lave visuelt adskilte versioner af det samme dokument til forskellige målgrupper
- Tilføje en lys baggrundstone for at forbedre læsbarheden, når dokumenter vises på en skærm
## Tips
- Lyse, dæmpede farver fungerer bedst. En meget mørk baggrund kan gøre teksten svær at læse, medmindre teksten allerede er lys.
- Hvis du vil ændre både baggrunds- og tekstfarve, skal du først anvende baggrundsfarven og derefter bruge [Skift tekstfarve](./text-color) på resultatet.
- Dette værktøj arbejder på PDF'ens strukturelle niveau (ikke rasterisering), så teksten forbliver markerbar og søgbar i outputtet.
## Relaterede værktøjer
- [Skift tekstfarve](./text-color)
- [Invertér farver](./invert-colors)
- [Justér farver](./adjust-colors)
+62
View File
@@ -0,0 +1,62 @@
---
title: Bates-nummerering
description: Anvend Bates-numre på en eller flere PDF'er med tilpasselige skabeloner, polstring, skrifttyper og placering.
---
# Bates-nummerering
Bates-nummerering stempler fortløbende identifikatorer på hver side i dine PDF'er. Det er standardmetoden til mærkning af dokumenter i retssager, revisioner og compliance-forløb. Dette værktøj understøtter flere filer og tilpasselige skabeloner og giver enten individuelt nummererede PDF'er eller ét samlet ZIP-arkiv.
## Sådan fungerer det
1. Upload en eller flere PDF-filer. Du kan trække flere filer ind på én gang.
2. Vælg et stilforvalg, eller opret en brugerdefineret skabelon.
3. Konfigurér position, skrifttype, størrelse, farve og startnumre.
4. Klik på **Anvend Bates-numre** for at behandle.
5. Én fil downloades direkte. Flere filer downloades som et ZIP-arkiv.
## Indstillinger
- **Stilforvalg** -- Vælg mellem indbyggede formater:
- Bilag + Sag + Bates + Side (f.eks. "Exhibit 1 Case XYZ 000001 Page 1")
- Bilag + Sag + Bates (uden sidetal)
- Sag + Bates
- Kun Bates-nummer (f.eks. "000001")
- Brugerdefineret (skriv din egen skabelon)
- **Tilpas stil** -- En skabelonstreng med pladsholdere: `[BATES]`, `[PAGE]`, `[FILE]`, `[FILENAME]`.
- **Bates-polstring** -- Antal cifre (3 til 6) for Bates-numre polstret med nuller. Vises kun i brugerdefineret tilstand.
- **Position** -- Sidehoved eller sidefod, venstre, midten eller højre.
- **Bates starter fra** -- Det første Bates-nummer. Standard er 1. Nummereringen fortsætter på tværs af filer.
- **Filtæller starter fra** -- Startnummeret for pladsholderen `[FILE]`.
- **Skrifttype** -- Helvetica, Times New Roman eller Courier.
- **Skriftstørrelse** -- Størrelsen på den stemplede tekst.
- **Farve** -- Farvevælger til Bates-nummerets tekst.
## Funktioner
- Live eksempelvisning, der viser, hvordan Bates-numre vises på tværs af alle uploadede filer
- Understøttelse af flere filer med fortløbende nummerering på tværs af dokumenter
- Omarrangering af filer med træk og slip for at styre nummereringsrækkefølgen
- Seks positionsmuligheder (sidehoved/sidefod, venstre/midten/højre)
- Adaptiv beregning af margener, der tager hensyn til forskellige sidestørrelser
- ZIP-output til batches med flere filer
- Skabelonpladsholdere for maksimal fleksibilitet
## Anvendelsesområder
- Stemple dokumenter til brug i bevisindsamling i retssager med fortløbende bilagsnumre
- Nummerere revisionsbeviser, der spænder over dusinvis af filer
- Anvende regulatoriske referencenumre på compliance-dokumentation
- Mærke bilag til patentansøgninger med sagsspecifikke identifikatorer
## Tips
- Træk filerne på fillisten for at omarrangere dem, før du behandler. Bates-nummereringen følger denne rækkefølge.
- Brug pladsholderen `[FILENAME]` til at medtage det oprindelige filnavn i stemplet, hvilket gør det lettere at spore sider tilbage til kildedokumenterne.
- Eksempelboksen opdateres i realtid, når du ændrer indstillinger, så du kan kontrollere formatet, før du behandler.
## Relaterede værktøjer
- [Sidetal](./page-numbers)
- [Tilføj sideetiketter](./add-page-labels)
- [Sidehoved og sidefod](./header-footer)
+44
View File
@@ -0,0 +1,44 @@
---
title: BMP til PDF
description: Konvertér BMP-bitmapbilleder til PDF direkte i din browser, uden upload til nogen server.
---
# BMP til PDF
Konvertér Windows Bitmap-filer (BMP) til PDF. BMP er et ukomprimeret billedformat, der stadig findes i ældre systemer, medicinsk billeddannelse og industrielle scannere. Dette værktøj konverterer dem til PDF uden at du skal installere noget.
## Understøttede formater
| Format | Filtypenavne |
| :----- | :----------- |
| BMP | `.bmp` |
## Sådan fungerer det
1. Klik på uploadområdet, eller træk og slip dine BMP-filer.
2. Gennemgå fillisten. Tilføj flere filer, eller fjern uønskede.
3. Klik på **Konvertér til PDF**. Outputtet downloades som `from_bmps.pdf`.
Hver BMP tegnes på et canvas, eksporteres som PNG og indlejres derefter i PDF'en med pdf-lib. Sidestørrelsen svarer til det oprindelige billedes mål.
## Indstillinger
Dette værktøj har ingen ekstra kvalitetsindstillinger. Billederne indlejres i deres oprindelige opløsning som tabsfri PNG i PDF'en.
## Anvendelsesområder
- Konvertere ældre scannede dokumenter gemt som BMP til arkiv-PDF'er
- Gøre BMP-skærmbilleder fra ældre Windows-programmer til dokumenter, der kan deles
- Behandle output fra medicinske eller industrielle scannere, der som standard bruger BMP
- Migrere gamle billedarkiver til et mere flytbart format
## Tips
- BMP-filer er ukomprimerede og derfor ofte store. Den resulterende PDF bliver betydeligt mindre, fordi billederne internt omkodes til PNG.
- Hvis du har BMP-filer sammen med andre billedformater, kan du bruge værktøjet [Billeder til PDF](./image-to-pdf) til at konvertere alt i én batch.
## Relaterede værktøjer
- [Billeder til PDF](./image-to-pdf)
- [PNG til PDF](./png-to-pdf)
- [TIFF til PDF](./tiff-to-pdf)
+57
View File
@@ -0,0 +1,57 @@
---
title: Redigér bogmærker
description: Tilføj, redigér, importér, eksportér og slet PDF-bogmærker med en visuel editor og understøttelse af CSV/JSON.
---
# Redigér bogmærker
Bogmærkeeditoren giver dig fuld kontrol over PDF'ens navigationsbogmærker (også kaldet konturer). Du kan tilføje nye bogmærker, redigere eksisterende, omorganisere hierarkiet og importere eller eksportere bogmærkedata i CSV- og JSON-format.
## Sådan fungerer det
1. Upload din PDF ved at klikke eller trække en fil ind i slipzonen.
2. Markér eventuelt **Udtræk eksisterende bogmærker automatisk** for at hente dokumentets nuværende bogmærketræ.
3. Editoren åbner med delt visning: PDF-fremviser til venstre, bogmærkepanel til højre.
4. Skriv en bogmærketitel og klik på **Tilføj til side** for at oprette et nyt bogmærke, der peger på den aktuelle side.
5. Brug værktøjslinjens knapper til at omarrangere, style eller slette bogmærker.
6. Klik på **Gem PDF med bogmærker** for at downloade den opdaterede fil.
## Funktioner
- Visuel PDF-fremviser med sidenavigation, zoomkontroller og gå-til-side-felt
- Tilføj bogmærker til enhver side med ét klik
- Klik direkte på PDF'en for at angive en præcis bogmærkedestination (udvælgelsestilstand)
- Indlejret bogmærkehierarki med omarrangering via træk og slip
- Batchhandlinger: vælg flere bogmærker for at ændre farve eller stil eller slette dem på én gang
- Bogmærkesøgning, så du hurtigt finder poster i store træer
- Fortryd og gentag for alle ændringer
- Importér bogmærker fra CSV (titel, side, niveau) eller JSON-filer
- Eksportér bogmærker til CSV eller JSON til redigering i andre programmer
- Bogmærkestil: farve (rød, blå, grøn, gul, lilla) og skrifttypestil (fed, kursiv, fed kursiv)
- Hurtig navigation: rul gennem siderne med side op/ned-tasterne
## Indstillinger
- **Udtræk eksisterende bogmærker automatisk**: Når den er markeret, læser og viser værktøjet PDF'ens nuværende bogmærker ved indlæsning.
- **Batchtilstand**: Slå til for at vælge flere bogmærker og anvende farve, stil eller sletning på dem samlet.
- **Udvid/skjul alle**: Vis eller skjul hurtigt indlejrede underbogmærker.
## Anvendelser
- Tilføj en indholdsfortegnelse til en lærebog eller manual uden bogmærker
- Omstrukturér bogmærker i et skannet dokument efter OCR-behandling
- Eksportér bogmærker til CSV, redigér dem i et regneark og importér dem igen
- Ryd op i automatisk genererede bogmærker med forkerte sidehenvisninger
- Tilføj farvede bogmærker for at markere vigtige afsnit i et juridisk notat
## Tips
- Brug CSV-import til oprettelse af mange bogmærker. Formatet er enkelt: `title,page,level`, hvor niveau 1 er øverste niveau.
- Udvælgelsestilstanden lader dig klikke på et præcist sted på PDF-siden for at angive bogmærkets destination, hvilket er mere præcist end blot at pege på et sidetal.
- Eksportér dine bogmærker, før du foretager store ændringer, så du har en sikkerhedskopi.
## Relaterede værktøjer
- [Indholdsfortegnelse](./table-of-contents)
- [PDF-editor](./edit-pdf)
- [Tilføj sideetiketter](./add-page-labels)
+47
View File
@@ -0,0 +1,47 @@
---
title: CBZ til PDF
description: Konvertér CBZ- og CBR-tegneseriearkiver til PDF i din browser. Gratis, privat, ingen upload nødvendig.
---
# CBZ til PDF
Gør tegneseriearkiver om til PDF'er. CBZ og CBR er standardformaterne til digitale tegneserier. De er blot ZIP- eller RAR-arkiver fyldt med billeder. Værktøjet udpakker hver side, bevarer læserækkefølgen og laver en ren PDF, hvor hvert billede bliver til en side i fuld størrelse.
## Understøttede formater
| Format | Filtypenavn | Noter |
| :----- | :---------- | :---------------------------------------------------------- |
| CBZ | `.cbz` | ZIP-baseret tegneseriearkiv (behandles lokalt med pdf-lib) |
| CBR | `.cbr` | RAR-baseret tegneseriearkiv (behandles via PyMuPDF-motoren) |
CBZ-konverteren genkender JPEG-, PNG-, GIF-, BMP-, WebP-, AVIF-, TIFF-, HEIC- og JXL-billeder i arkivet. Ikke-standardformater konverteres automatisk til PNG, før de indlejres.
## Sådan fungerer det
1. Klik på uploadområdet eller træk og slip dine CBZ- eller CBR-filer. Du kan blande begge formater i en enkelt batch.
2. Gennemgå de viste filer. Fjern dem, du ikke har brug for, eller klik på **Tilføj flere filer** for at tilføje flere.
3. Klik på **Konvertér til PDF**. For CBZ-filer pakker værktøjet arkivet ud, sorterer billedfilerne efter navn i naturlig rækkefølge, registrerer hvert billedes faktiske format og indlejrer dem i en PDF med pdf-lib. CBR-filer sendes i stedet gennem PyMuPDF-motoren.
4. En enkelt fil downloades som en PDF. Flere filer giver et ZIP-arkiv ved navn `comic-converted.zip`.
## Indstillinger
Ingen konfiguration er nødvendig. Hvert billede bliver til en side med samme størrelse som originalen, så dobbeltsider forbliver brede, og enkeltsider forbliver smalle.
## Anvendelser
- Læs tegneserier på en tablet eller i en mobilapp, der understøtter PDF, men ikke CBZ/CBR
- Udskriv bestemte sider fra en digital tegneserie
- Arkivér en tegneseriesamling i et format, som enhver filfremviser kan åbne
- Del en tegneserie med en person, der ikke har en dedikeret tegneserielæser
## Tips
- Billeder i arkivet sorteres i naturlig rækkefølge (så `page2.jpg` kommer før `page10.jpg`). Giv dine filer ensartet nummerering for at få den rigtige siderækkefølge.
- Konverteren registrerer billedformater ud fra deres binære signaturer, ikke filendelser. En PNG, der ved en fejl hedder `.jpg`, indlejres stadig korrekt.
- CBZ-filer behandles helt i browseren uden at indlæse PyMuPDF-motoren, så de konverteres hurtigere end CBR-filer.
## Relaterede værktøjer
- [EPUB til PDF](./epub-to-pdf)
- [MOBI til PDF](./mobi-to-pdf)
- [Billeder til PDF](./image-to-pdf)
+61
View File
@@ -0,0 +1,61 @@
---
title: Skift tilladelser
description: Angiv eller ændr PDF-brugstilladelser for udskrivning, kopiering, redigering og annotering. Bruger 256-bit AES-kryptering.
---
# Skift tilladelser
Finjustér, hvad modtagerne kan gøre med din PDF. I modsætning til almindelig kryptering, der blot låser filen bag en adgangskode, lader dette værktøj dig selektivt tillade eller afvise udskrivning, kopiering, redigering, annotering, formularudfyldning, dokumentsammensætning og sideudtrækning, alt sammen håndhævet via 256-bit AES-kryptering.
## Sådan fungerer det
1. Upload en PDF-fil.
2. Hvis PDF'en allerede er krypteret, skal du indtaste den **nuværende adgangskode**.
3. Angiv en **ny brugeradgangskode** (kræves for at åbne) og/eller en **ny ejeradgangskode** (styrer tilladelser).
4. Slå de enkelte tilladelser til eller fra med afkrydsningsfelterne.
5. Klik på **Skift tilladelser**.
6. Download den opdaterede PDF.
Hvis du lader begge felter til nye adgangskoder stå tomme, dekrypterer værktøjet PDF'en helt og fjerner al kryptering og alle begrænsninger.
## Tilladelseskontroller
| Tilladelse | Hvad den styrer |
| -------------------------------- | ------------------------------------------------------ |
| **Tillad udskrivning** | Om dokumentet kan udskrives |
| **Tillad kopiering** | Om tekst og billeder kan markeres og kopieres |
| **Tillad ændring** | Om dokumentets indhold kan redigeres |
| **Tillad annotering** | Om kommentarer, fremhævninger og stempler kan tilføjes |
| **Tillad formularudfyldning** | Om interaktive formularfelter kan udfyldes |
| **Tillad dokumentsammensætning** | Om sider kan indsættes, slettes eller roteres |
| **Tillad sideudtrækning** | Om enkelte sider kan udtrækkes |
Alle tilladelser kræver en ejeradgangskode for at blive håndhævet. Uden en ejeradgangskode ignoreres tilladelsesflagene af de fleste PDF-læsere.
## Sådan fungerer tilladelser i PDF
PDF-tilladelser er en del af krypteringsspecifikationen. De gemmes som bitflag i krypteringsordbogen og håndhæves af kompatible PDF-læsere. Den vigtige forskel:
- **Brugeradgangskode**: Kræves for overhovedet at åbne filen.
- **Ejeradgangskode**: Kræves for at ændre tilladelser eller fjerne begrænsninger. Uden den styrer tilladelsesflagene, hvilke handlinger brugeren kan udføre.
Hvis du kun angiver en ejeradgangskode (ingen brugeradgangskode), kan alle åbne filen, men de er begrænset til de tilladte handlinger. Hvis du angiver begge, kræver filen en adgangskode for at åbnes og er begrænset efter godkendelse.
## Anvendelser
- Distribuér en rapport, der kan ses og udskrives, men ikke redigeres eller kopieres
- Del en kontraktskabelon, som modtagerne kan udfylde, men ikke ændre
- Udgiv et PDF-katalog, hvor kopiering af billeder er deaktiveret
- Tillad annotering af et udkast til gennemgang, mens strukturelle ændringer forhindres
## Tips
- For at det virker, skal du altid angive en ejeradgangskode. Tilladelser uden ejeradgangskode kan ikke håndhæves.
- Nogle tredjeparts PDF-værktøjer ignorerer tilladelsesflag. For stærkere beskyttelse kan du overveje at rasterisere PDF'en eller bruge DRM.
- Brug dette værktøj til at opgradere gamle RC4-krypterede PDF'er til AES-256.
## Relaterede værktøjer
- [Kryptér PDF](./protect-pdf): enkel adgangskodebeskyttelse uden detaljerede tilladelser
- [Dekryptér PDF](./unlock-pdf): fjern kryptering helt
- [Fjern begrænsninger](./remove-restrictions): fjern alle begrænsninger, når du har ejeradgangskoden
+55
View File
@@ -0,0 +1,55 @@
---
title: Kombinér til én side
description: Sammensæt alle sider i en PDF til én sammenhængende lodret eller vandret rulleside.
---
# Kombinér til én side
Flet hver side i en PDF til én enkelt, lang side. Siderne sættes sammen lodret (som en rulle) eller vandret (side om side), så resultatet er én sammenhængende side.
## Sådan fungerer det
1. Upload en PDF-fil.
2. Vælg layoutretning: **Lodret** (sider stablet fra top til bund) eller **Vandret** (sider placeret side om side).
3. Angiv afstanden mellem siderne i punkter.
4. Vælg en baggrundsfarve til mellemrummene mellem siderne.
5. Aktivér eventuelt skillelinjer (tynde linjer mellem siderne) og indstil deres tykkelse og farve.
6. Klik på behandlingsknappen. Resultatet er en PDF med én side.
## Funktioner
- Lodret eller vandret sammensætning af sider
- Konfigurerbar afstand mellem siderne
- Farvevælger til baggrunden i mellemrummene
- Valgfrie skillelinjer med justerbar tykkelse og farve
- Gengiver hver oprindelig side i fuld opløsning på det kombinerede lærred
## Indstillinger
| Indstilling | Beskrivelse |
| -------------------------- | --------------------------------------------- |
| **Retning** | Lodret (stablet) eller vandret (side om side) |
| **Sideafstand** | Mellemrum mellem siderne i punkter |
| **Baggrundsfarve** | Farven på området mellem siderne |
| **Tilføj skillelinje** | Slå tynde linjer mellem siderne til eller fra |
| **Skillelinjens tykkelse** | Linjetykkelse i punkter |
| **Skillelinjens farve** | Farven på skillelinjerne |
## Anvendelser
- Lav ét langt billede ud fra en flersidet wireframe eller et designudkast
- Generér en sammenhængende rullevisning af et dokument til indlejring på nettet
- Sæt en flersidet tegneserie eller storyboard sammen til én strimmel
- Lav en panoramavisning af sider i rækkefølge til gennemgang
## Tips
- Lodret retning fungerer bedst til dokumenter med stående sider. Vandret er bedre til indhold i liggende format.
- Store dokumenter med mange sider giver et meget højt eller bredt resultat. Nogle PDF-fremvisere kan have problemer med ekstremt store enkeltsider.
- Skillelinjer i en kontrastfarve gør det let at se, hvor en oprindelig side slutter, og den næste begynder.
## Relaterede værktøjer
- [N-Up PDF](./n-up-pdf)
- [Flet PDF](./merge-pdf)
- [Opdel sider](./divide-pages)
+60
View File
@@ -0,0 +1,60 @@
---
title: Sammenlign PDF’er
description: Sammenlign to PDF-dokumenter side om side eller i overlejringstilstand med detaljeret registrering og kategorisering af ændringer.
---
# Sammenlign PDF’er
Upload to PDF'er og se præcis, hvad der er ændret mellem dem. Værktøjet parrer sider intelligent, registrerer forskelle i tekst, billeder, annotationer, sidehoveder og formatering og viser dem i en side-om-side- eller overlejringsvisning.
## Sådan fungerer det
1. Upload to PDF-filer: originalen (til venstre) og den reviderede version (til højre).
2. Værktøjet parrer sider mellem dokumenterne ud fra indholdssignaturer.
3. Vælg en visningstilstand: **Side om side** eller **Overlejring**.
4. Naviger mellem sideparrene med sideinddelingskontrollerne.
5. Forskelle fremhæves og kategoriseres. Brug filterpanelet til at fokusere på bestemte typer ændringer.
6. Eksportér eventuelt sammenligningen som en PDF-rapport.
## Funktioner
- Automatisk sideparring baseret på indholdslighed
- Sammenligningsvisning side om side og som overlejring
- Kategorisering af ændringer: tekst, billede, sidehoved/sidefod, annotation, formatering, baggrund
- Filterkontakter pr. kategori til at vise eller skjule bestemte typer ændringer
- Søgning i tekstændringer med forespørgselsfilter
- OCR-understøttelse til sammenligning af skannede dokumenter
- Zoomkontroller til detaljeret gennemgang
- Synkroniseret rulning mellem panelerne i side-om-side-tilstand
- Eksportér sammenligningsresultater som PDF
## Indstillinger
| Indstilling | Beskrivelse |
| -------------------- | ---------------------------------------------------------------------------------------------------------------------- |
| **Visningstilstand** | Side om side eller overlejring |
| **OCR** | Aktivér/deaktivér OCR til sammenligning af skannede dokumenter |
| **OCR-sprog** | Sprog til OCR-tekstudtræk |
| **Kategorifiltre** | Slå synligheden af ændringer i tekst, billeder, sidehoved/sidefod, annotationer, formatering og baggrund til eller fra |
| **Ændringsomfang** | I overlejringstilstand: filtrér mellem alle ændringer eller kun indhold |
| **Zoom** | Justér forstørrelsen til detaljeret gennemgang |
## Anvendelser
- Gennemgå kontraktrevisioner for at finde præcis, hvad der er ændret mellem versioner
- Sammenlign designudkast for at bekræfte, at PDF-eksporter lever op til forventningerne
- Revidér dokumentændringer i regulerede brancher, hvor hver redigering skal spores
- Kontrollér, at en PDF-konvertering har bevaret det oprindelige indhold korrekt
- Kontrollér oversatte dokumenter mod kilden for layoutændringer
## Tips
- Overlejringsvisningen stabler begge dokumenter oven på hinanden, så rumlige forskelle (forskudte elementer, ændrede billedstørrelser) straks er synlige.
- Aktivér OCR, når du sammenligner skannede dokumenter uden tekstlag. Sammenligningsmotoren udtrækker så tekst fra sidebillederne.
- Brug kategorifiltrene til at fokusere på det vigtige. Skjul for eksempel formateringsændringer, hvis du kun interesserer dig for forskelle i tekstindhold.
## Relaterede værktøjer
- [Vis metadata](./view-metadata)
- [OCR PDF](./ocr-pdf)
- [Flet PDF](./merge-pdf)
+73
View File
@@ -0,0 +1,73 @@
---
title: Komprimer PDF
description: Reducer PDF-filstørrelsen med op til 90 % med Hyper Compress-motoren. Understøtter målfilstørrelser, batchbehandling og tilpassede kvalitetsindstillinger.
---
# Komprimer PDF
Gør dine PDF-filer mindre uden at ødelægge dem. Komprimer PDF drives af [Hyper Compress](https://www.bentopdf.com/hyper-compress), BentoPDF's egen komprimeringsmotor. Den genkomprimerer billeder, laver delmængder af skrifttyper og fletter dem og fjerner overflødig vægt som indlejrede miniaturebilleder og private programdata. PDF'en forbliver fuldt funktionel: tekst kan stadig markeres, og links og formularfelter virker fortsat.
Hyper Compress er kompileret til WebAssembly og følger med BentoPDF, så komprimering virker offline og i isolerede (air-gapped) installationer uden ekstra opsætning.
## Sådan fungerer det
1. Upload en eller flere PDF'er ved at klikke på slipzonen eller trække filer ind.
2. Vælg et **komprimeringsniveau**: Lav, Medium, Høj eller Tabsfri.
3. Angiv eventuelt en **målfilstørrelse**, eller udvid **Brugerdefinerede indstillinger** for finjustering, herunder **Konvertér til gråtoner**.
4. Klik på **Komprimer PDF**. Ved flere filer får du en samlet ZIP-download.
## Særlige dokumenter
- **Digitalt signerede PDF'er** returneres uændrede, fordi enhver ændring ville ugyldiggøre signaturen. Slå **Tilsidesæt indholdsbeskyttelse** til under Brugerdefinerede indstillinger for at fjerne signaturerne og komprimere dem. Den synlige signatur bliver på siden, men filen er ikke længere signeret.
- **PDF/A-filer** mister deres PDF/A-mærkning efter komprimering, så filen aldrig hævder en overensstemmelse, den ikke længere opfylder. Slå **Bevar PDF/A** til under Brugerdefinerede indstillinger for i stedet at beholde filens overensstemmelse.
- **Adgangskodebeskyttede PDF'er** får et adgangskodefelt på deres filkort. Indtast adgangskoden dér, så åbner Hyper Compress selv filen, uden separat oplåsningstrin. Med to eller flere låste filer låser ét fælles felt alle filer op, som bruger samme adgangskode. Den komprimerede kopi har ingen adgangskode. Brug [Kryptér PDF](./protect-pdf) til at tilføje en igen.
- **Scanninger uden tekstlag** kan blive endnu mindre med **Rasterisér sider** under Brugerdefinerede indstillinger, som erstatter hver side med ét optimeret billede. Det springes over for dokumenter med markérbar tekst, herunder OCR-behandlede scanninger, medmindre **Tilsidesæt indholdsbeskyttelse** er slået til. Så bliver tekstsider også til billeder, så tekst ikke længere kan markeres, og links holder op med at virke.
## Komprimeringsniveauer
| Niveau | Billedkvalitet | Maks. opløsning | Bedst til |
| ----------- | -------------- | --------------- | ------------------------------- |
| **Lav** | 80 | 200 DPI | Bevarelse af visuel kvalitet |
| **Mellem** | 50 | 150 DPI | Dagligdags dokumenter |
| **Høj** | 20 | 72 DPI | E-mail-vedhæftninger, webupload |
| **Tabsfri** | Billeder urørt | Uændret | Arkivkopier |
Høj fjerner også indlejringen af de 14 standardskrifttyper i PDF samt lignende skrifttyper som Arial, når det er sikkert.
## Målfilstørrelse
Angiv en størrelse i KB eller MB, og Hyper Compress søger efter den bedste billedkvalitet, der stadig passer, med udgangspunkt i det valgte niveau. Hvis dokumentet ikke kan blive så lille, får du den mindste version, det kan lave, og en besked om det. De dedikerede sider som [Komprimer PDF til 1 MB](https://www.bentopdf.com/compress-pdf-to-1mb) åbner med målet allerede udfyldt.
## Brugerdefinerede indstillinger
Udvid panelet Brugerdefinerede indstillinger for at justere Hyper Compress direkte. Når du vælger et komprimeringsniveau, nulstilles disse til det niveaus værdier, og hvis du ændrer en af dem, skifter niveauet til Brugerdefineret.
- **Tilsidesæt indholdsbeskyttelse**: Som standard lader Hyper Compress signerede PDF'er være urørte og rasteriserer ikke sider med tekst. Når den slås til, springes begge over. Den forbliver slået til, når du skifter niveau.
- **Billeder**: billedkvalitet, maksimal opløsning, gennemtvunget gensampling, farvereduktion, beskæring af usynlige billedområder, fjernelse af alternative billeder, forenkling af farveprofiler, JPEG 2000 og tabsfri tilstand
- **Skrifttyper**: delmængder, sammenfletning af dubletter og fjernelse af indlejring af standardskrifttyper og deres lignende
- **Indhold**: fladning af annotationer, formularfelter eller links
- **Oprydning**: fjernelse af miniaturebilleder, programdata, artikeltråde, weboptagelsesoplysninger, strukturtræet eller outputhensigter
- **Rasterisér**: erstatning af sider med billeder til scanninger, der kun består af billeder. Springes over, når dokumentet har markérbar tekst
- **Output**: Bevar PDF/A og Brotli-komprimering til PDF 2.0-læsere, der understøtter det
## Anvendelser
- Få en rapport på 50 MB under grænsen for e-mail-vedhæftninger
- Få en scanning under en portals strenge uploadgrænse med en målfilstørrelse
- Optimér marketing-PDF'er til hurtigere downloads fra et website
- Arkivér store dokumentsamlinger, hvor lageromkostninger har betydning
- Reducér mobildataforbruget, når du deler PDF'er via beskedapps
## Tips
- Start med Medium. Hvis resultatet stadig er for stort, kan du angive en målfilstørrelse eller gå op til Høj.
- For en scanning uden tekstlag kan du slå Rasterisér sider til under Brugerdefinerede indstillinger.
- Konvertér til gråtoner under Brugerdefinerede indstillinger kan skære i filstørrelsen for farvetunge dokumenter.
## Relaterede værktøjer
- [Lineariser PDF](./linearize-pdf): optimér den komprimerede PDF til hurtig visning på nettet
- [Rasterisér PDF](./rasterize-pdf): konvertér sider til billeder ved en bestemt DPI, også sider med tekst
- [Reparér PDF](./repair-pdf): ret en PDF, der gik i stykker under komprimering andetsteds
- [Fjern metadata](./remove-metadata): fjern skjulte data af hensyn til privatlivet
+44
View File
@@ -0,0 +1,44 @@
---
title: Beskær PDF
description: Beskær PDF-sider visuelt ved at tegne et beskæringsområde på hver side i en editor drevet af Cropper.js.
---
# Beskær PDF
Trim marginerne på dine PDF-sider med en visuel beskæringsgrænseflade. Tegn et beskæringsrektangel direkte på hver side, forhåndsvis resultatet og anvend beskæringen. Du kan angive forskellige beskæringsområder for forskellige sider eller anvende den samme beskæring på hele dokumentet.
## Sådan fungerer det
1. Upload din PDF-fil.
2. Beskæringseditoren åbner og viser første side med et trækbart beskæringsoverlay.
3. Justér beskæringsrektanglet ved at trække i dets kanter eller hjørner.
4. Brug sidenavigationsknapperne til at skifte mellem sider og angive beskæringsområder for hver enkelt.
5. Klik på **Beskær** for at anvende beskæringen og downloade resultatet.
## Funktioner
- Visuel beskæringseditor drevet af Cropper.js med håndtag til præcis justering
- Navigation side for side til at angive individuelle beskæringsområder
- Gemmer beskæringsindstillinger pr. side, så du kan definere forskellige beskæringer for forskellige sider
- Live-forhåndsvisning af det valgte beskæringsområde
- Understøtter PDF'er i enhver sidestørrelse og retning
## Anvendelser
- Fjern brede margener fra skannede dokumenter for at fokusere på indholdsområdet
- Trim printerens beskæringsmærker eller registreringsmærker fra PDF'er til prepress
- Beskær forelæsningsslides for at fjerne området med oplægsholderens noter
- Fjern sidehoveder eller sidefødder fra hver side, før du deler et uddrag af et dokument
- Tilpas sidestørrelsen til en bestemt visning eller et bestemt udskriftslayout
## Tips
- Beskæringsoverlayet kan frit ændres i størrelse og flyttes. Træk i hjørnerne for proportional størrelsesændring eller i kanterne for justering på én akse.
- Hvis alle sider skal have samme beskæring, kan du angive den på første side. Værktøjet husker dit beskæringsområde, mens du navigerer mellem siderne.
- Hvis du vil standardisere sidestørrelser frem for at beskære visuelt, passer værktøjet Ret sidestørrelse muligvis bedre.
## Relaterede værktøjer
- [PDF-editor](./edit-pdf)
- [Sidetal](./page-numbers)
- [Fjern tomme sider](./remove-blank-pages)
+51
View File
@@ -0,0 +1,51 @@
---
title: CSV til PDF
description: Konvertér CSV-regnearksfiler til formaterede PDF-tabeller direkte i din browser.
---
# CSV til PDF
Gør CSV-filer om til rene, formaterede PDF-dokumenter. Hver CSV-fil fortolkes og gengives som en tabel i PDF'en. Det er nyttigt, når du skal udskrive eller dele tabeldata uden at modtageren behøver regnearksprogrammer.
## Understøttede formater
| Format | Filtypenavne |
| :----- | :----------- |
| CSV | `.csv` |
## Sådan fungerer det
1. Klik på uploadområdet eller træk og slip en eller flere CSV-filer.
2. Gennemgå fillisten. Tilføj flere filer eller fjern uønskede.
3. Klik på **Konvertér til PDF**. En statusindikator viser konverteringens fremdrift.
4. En enkelt fil downloades direkte som PDF. Flere filer pakkes i `csv-converted.zip`.
## Indstillinger
Dette værktøj har ingen yderligere konfiguration. CSV-filen fortolkes og formateres automatisk som en tabel.
## Output
| Antal input | Output |
| :---------- | :------------------------------------------------- |
| 1 fil | Download af en enkelt PDF (f.eks. `data.pdf`) |
| 2+ filer | ZIP-arkiv (`csv-converted.zip`) med én PDF pr. fil |
## Anvendelser
- Konvertér eksporterede databaserapporter til udskrivbare PDF-tabeller
- Del økonomidata eller lagerlister med personer, der ikke har Excel
- Opret PDF-versioner af CSV-logfiler til compliance-dokumentation
- Udskriv adresselister, karakterark eller andre tabeldata gemt som CSV
## Tips
- For de bedste resultater bør din CSV bruge standard kommaseparatorer. Værktøjet følger almindelige CSV-konventioner.
- Hvis din CSV har mange kolonner, kan tabellen blive presset sammen for at passe til sidebredden. Overvej at dele brede datasæt op i flere filer.
- Til Excel-filer (`.xls`, `.xlsx`) kan du bruge værktøjet [Excel til PDF](./excel-to-pdf), som bevarer regnearksformatering og flere ark.
## Relaterede værktøjer
- [Excel til PDF](./excel-to-pdf)
- [Tekst til PDF](./txt-to-pdf)
- [JSON til PDF](./json-to-pdf)
+42
View File
@@ -0,0 +1,42 @@
---
title: Slet sider
description: Fjern bestemte sider fra en PDF efter sidetal, interval eller visuelt valg af miniaturer.
---
# Slet sider
Fjern uønskede sider fra et PDF-dokument. Angiv sider, der skal slettes, ved at skrive sidetal eller intervaller, eller klik direkte på sidernes miniaturer for at markere dem til fjernelse.
## Sådan fungerer det
1. Upload en PDF-fil. Værktøjet gengiver miniaturer af hver side.
2. Indtast de sider, der skal slettes, i tekstfeltet med intervalsyntaks (f.eks. `2, 5-8`), eller klik på miniaturer for at skifte dem.
3. Markerede sider fremhæves visuelt, så du kan bekræfte dit valg.
4. Klik på behandlingsknappen. Der oprettes en ny PDF uden de valgte sider.
## Funktioner
- Tekstbaseret sidevalg med intervalsyntaks (`2, 5-8, 12`)
- Visuelt miniaturegitter til sletning med klik
- Fremhævning i realtid af sider, der er markeret til sletning
- Inputvalidering mod det faktiske antal sider
- Bevarer alle ikke-slettede sider i deres oprindelige rækkefølge
## Anvendelser
- Fjern tomme sider eller fyldsider fra et skannet dokument
- Fjern forsider eller bilag, før du deler et dokument
- Ryd op i udkastsider, der ved en fejl blev liggende i en endelig PDF
- Fjern sider med følsomme oplysninger før distribution
## Tips
- Sletning af sider påvirker ikke de resterende siders indhold eller formatering. Resultatet er en tro kopi af originalen minus de fjernede sider.
- Hvis du vil beholde bestemte sider i stedet for at fjerne bestemte sider, er [Udtræk sider](./extract-pages) et bedre valg.
- Miniaturevisningen indlæses løbende, så store dokumenter forbliver responsive.
## Relaterede værktøjer
- [Udtræk sider](./extract-pages)
- [Duplikér og organisér](./organize-pdf)
- [Opdel PDF](./split-pdf)
+46
View File
@@ -0,0 +1,46 @@
---
title: Ret skæve sider
description: Ret automatisk skæve sider i skannede PDF'er med OpenCV-skævhedsregistrering. Justerbar tærskel og DPI.
---
# Ret skæve sider
Skannede dokumenter er sjældent helt lige. Selv en lille hældning gør OCR mindre præcis og udskrifter sjuskede. Dette værktøj bruger OpenCV's billedbehandlingsalgoritmer til at registrere hver sides skævhedsvinkel og dreje den tilbage, så den står lige.
## Sådan fungerer det
1. Upload en eller flere skannede PDF'er.
2. Angiv **skævhedstærsklen**: sider med registreret skævhed under denne værdi røres ikke.
3. Vælg en **behandlingskvalitet (DPI)**: højere DPI giver mere præcis registrering, men tager længere tid.
4. Klik på **Ret skæve sider**.
5. Efter behandlingen viser et resultatpanel hver sides registrerede vinkel, og om den blev rettet.
## Indstillinger
| Indstilling | Værdier | Standard |
| ------------------- | ------------------------- | -------- |
| **Skævhedstærskel** | 0,1, 0,5, 1,0, 2,0 grader | 0,5 |
| **Behandlings-DPI** | 100, 150, 200, 300 | 150 |
## Sådan fungerer skævhedsregistrering
Værktøjet gengiver hver side som et billede ved den valgte DPI og bruger derefter OpenCV til at registrere de dominerende linjevinkler i indholdet. Hvis den registrerede skævhed overstiger tærsklen, drejes siden med den omvendte vinkel for at rette den. Sider under tærsklen sendes uændrede igennem.
## Anvendelser
- Ryd op i batchskannede kontrakter eller juridiske dokumenter
- Forbered skannede kvitteringer eller fakturaer til OCR-behandling
- Ret sider fra en flatbed-scanner, hvor papiret er lagt forskelligt
- Forbedr den visuelle kvalitet af digitaliseret arkivmateriale
## Tips
- Sæt tærsklen ned til 0,1 grader, hvis du har brug for pixelpræcis justering til OCR.
- 150 DPI er hurtigt og præcist til de fleste dokumenter. Brug 300 DPI til meget lille tekst eller sider med fine detaljer.
- Retning af skæve sider virker bedst på dokumenter med tydelige vandrette tekstlinjer. Det kan have svært ved sider, der mest består af billeder eller diagonale designelementer.
## Relaterede værktøjer
- [Rasterisér PDF](./rasterize-pdf): konvertér det rettede resultat til en flad, billedbaseret PDF
- [Komprimer PDF](./compress-pdf): reducer filstørrelsen efter retning
- [Reparér PDF](./repair-pdf): ret strukturelle problemer i skannede PDF'er
+65
View File
@@ -0,0 +1,65 @@
---
title: Digital signatur
description: Tilføj kryptografiske digitale signaturer til PDF'er med X.509-certifikater. Understøtter PKCS#12- og PEM-formater med valgfri synlig signatur.
---
# Digital signatur
En digital signatur er kryptografisk bevis for, at en bestemt person har underskrevet et dokument, og at dokumentet ikke er ændret siden. I modsætning til en tegnet underskrift (som blot er et billede) bruger en digital signatur X.509-certifikater og PKCS#7-standarder til at give verificerbar ægthed og integritet.
BentoPDF anvender digitale signaturer helt i din browser. Din private nøgle forlader aldrig din enhed.
## Sådan fungerer det
1. Upload en PDF-fil.
2. Upload din certifikatfil (.pfx, .p12 eller .pem).
3. Indtast certifikatets adgangskode for at låse det op. Værktøjet viser certifikatets emne, udsteder og gyldighedsperiode.
4. Konfigurér eventuelt signaturmetadata (årsag, sted, kontaktoplysninger).
5. Aktivér eventuelt en **synlig signatur** med tilpasning af position, størrelse, billede og tekst.
6. Klik på **Underskriv PDF**.
## Understøttede certifikatformater
| Format | Filendelser | Beskrivelse |
| ----------- | ----------- | ---------------------------------------------------------------------------------------------------------------------------- |
| **PKCS#12** | .pfx, .p12 | Branchestandard-pakke med den private nøgle og certifikatkæden. Det mest almindelige format. |
| **PEM** | .pem | Tekstbaseret format. Skal indeholde både certifikatet og den private nøgle i én fil. Understøtter krypterede private nøgler. |
## Indstillinger for synlig signatur
Når den er aktiveret, gengives en synlig signaturblok på PDF-siden:
- **Position**: X/Y-koordinater samt bredde/højde i punkter
- **Side**: Første side, sidste side, alle sider eller et bestemt sidetal
- **Billede**: Upload et PNG-, JPG- eller WebP-billede (din håndskrevne underskrift, virksomhedsstempel osv.)
- **Tekst**: Brugerdefineret tekst med konfigurerbar farve og skriftstørrelse. Hvis der ikke angives billede eller tekst, genererer værktøjet automatisk tekst ud fra certifikatets almindelige navn og den aktuelle dato.
## Signaturmetadata
- **Årsag**: Hvorfor dokumentet blev underskrevet (f.eks. "Godkendt", "Gennemgået")
- **Sted**: Hvor underskrivelsen fandt sted (f.eks. "New York, NY")
- **Kontaktoplysninger**: Hvordan underskriveren kan kontaktes (f.eks. e-mailadresse)
## Note om internetforbindelse
Underskrivning kan kræve en internetforbindelse. Signaturbiblioteket henter certifikatkæden fra URL'er, der er indlejret i dit certifikats AIA-udvidelse (Authority Information Access). Hvis disse servere ikke kan nås, mislykkes underskrivningen for certifikater, der kræver kædevalidering.
## Anvendelser
- Underskriv kontrakter, tilbud og aftaler med juridisk bindende digitale signaturer
- Certificér officielle dokumenter i arbejdsgange, der kræver PKI-baseret autentificering
- Underskriv PDF-fakturaer af hensyn til lovgivningsmæssig overholdelse (mange EU-lande kræver digitalt signerede e-fakturaer)
- Tilføj organisatorisk godkendelse til tekniske tegninger eller kvalitetsdokumenter
## Tips
- Selvsignerede certifikater fungerer til test, men viser advarsler i Adobe Reader. Brug et certifikat fra en betroet certifikatudsteder til produktionsdokumenter.
- Den synlige signatur er rent visuel. Den kryptografiske signatur indlejres, uanset om den synlige blok er aktiveret.
- Verificér din signerede PDF med værktøjet Validér signatur for at bekræfte, at signaturen er intakt.
## Relaterede værktøjer
- [Validér signatur](./validate-signature-pdf): verificér digitale signaturer i signerede PDF'er
- [Fladgør PDF](./flatten-pdf): flad formularer ud før underskrivning for at forhindre ændringer
- [Kryptér PDF](./protect-pdf): tilføj adgangskodebeskyttelse oven på den digitale signatur
- [Fjern metadata](./remove-metadata): fjern metadata før underskrivning
+42
View File
@@ -0,0 +1,42 @@
---
title: Opdel sider
description: Opdel PDF-sider vandret eller lodret i mindre delsider.
---
# Opdel sider
Skær enkelte PDF-sider i halvdele ved at opdele dem vandret eller lodret. Det er nyttigt, når en enkelt side indeholder indhold, der bør adskilles på særskilte sider, for eksempel et tospaltet layout skannet som én bred side.
## Sådan fungerer det
1. Upload en PDF-fil.
2. Vælg opdelingsretning: **Lodret** (venstre/højre halvdel) eller **Vandret** (øverste/nederste halvdel).
3. Angiv eventuelt et sideinterval for at begrænse, hvilke sider der opdeles. Lad feltet stå tomt for at opdele alle sider.
4. Klik på behandlingsknappen for at generere den opdelte PDF.
## Funktioner
- Lodret opdeling: deler hver side i en venstre og en højre halvdel
- Vandret opdeling: deler hver side i en øverste og en nederste halvdel
- Sideintervalfilter til selektiv opdeling af bestemte sider
- Sider uden for udvalget sendes uændrede igennem
- Bevarer indholdskvaliteten uden at gengive siderne igen
## Anvendelser
- Adskil to-op-scannede sider (f.eks. en bogscanning med venstre og højre side på ét ark)
- Opdel en liggende PDF med side-om-side-indhold i individuelle stående sider
- Del høje infografikker eller plakater i separate øvre og nedre sektioner
- Forbered bredformatdokumenter til udskrivning på standardpapir
## Tips
- Hvis indholdet på dine sider er ujævnt fordelt, sker opdelingen stadig præcis på midten. Til asymmetriske opdelinger kan du overveje [Beskær PDF](./crop-pdf) i stedet.
- Kombinér dette værktøj med [Roter PDF](./rotate-pdf), hvis dine sider skal roteres før eller efter opdelingen.
## Relaterede værktøjer
- [Opdel PDF](./split-pdf)
- [Beskær PDF](./crop-pdf)
- [N-Up PDF](./n-up-pdf)
- [Posterisér PDF](./posterize-pdf)
+55
View File
@@ -0,0 +1,55 @@
---
title: Sortér dupleks-scanning
description: Omsortér dupleks-scannede PDF'er, hvor forsider og bagsider ligger i separate blokke, til korrekt for-/bagside-rækkefølge.
---
# Sortér dupleks-scanning
Sortér dupleks-scanning er designet til ADF-scanningsarbejdsgange, hvor én PDF indeholder to blokke af sider:
- først alle forsider
- derefter alle bagsider
I stedet for manuelt at dele og samle igen fletter dette værktøj de to blokke til naturlig læserækkefølge: forside1, bagside1, forside2, bagside2 og så videre.
## Sådan fungerer det
1. Upload en enkelt PDF, der er oprettet ved scanning af en dupleksstak.
2. Angiv delingspunktet, hvor forsideblokken slutter.
3. Vælg håndtering af bagsideblokken:
- **Vend bagsideblokken** (almindeligt, når stakken vendes, før bagsiderne scannes)
- **Behold bagsideblokken som den er**
4. Klik på **Sortér PDF** for at downloade det omsorterede resultat.
## Indstillinger
- **Registrér deling automatisk (halvdelen)**: sætter delingspunktet til `ceil(totalPages / 2)`.
- **Advarsel om ulige sidetal**: advarer, når det samlede antal sider er ulige (ofte en scanningsfejl).
- **Bekræftelse ved ujævne blokke**: beder om bekræftelse, når forside- og bagsideblokkene har forskellig størrelse.
- **Grupperet eksport**: del det sorterede output i separate PDF'er ud fra det oprindelige dokuments sideantal og download som ZIP.
## Outputadfærd
- **Standard**: én output-PDF (én input-PDF giver én output-PDF).
- **Grupperet tilstand**: outputtet opdeles efter din værdi for sider pr. dokument. Hvis der dannes flere bidder, downloades de som én ZIP, ellers downloades en enkelt PDF.
Hvis blokkene er ujævne, sorteres de parrede sider først, og de resterende uparrede sider sættes til sidst.
## Almindelige anvendelser
- Gendan rækkefølgen efter scanning af en bunke dobbeltsidede formularer i to omgange.
- Genopbyg for-/bagside-pakker fra kontorscannere, der udskriver alle forsider og derefter alle bagsider.
- Efterbehandl arkivscanninger, før de deles op i filer pr. dokument.
## Tips
- De fleste dupleksbatches bør have et lige samlet sidetal.
- Hvis bagsiderne ser omvendt ud i resultatet, så skift mellem **Vend bagsideblokken** og **Behold bagsideblokken som den er**.
- Til originaler på 2 sider (forside+bagside) bruges grupperet eksport med `2` sider pr. dokument.
## Relaterede værktøjer
- [Alternér og miks sider](./alternate-merge)
- [Opdel PDF](./split-pdf)
- [Flet PDF](./merge-pdf)
- [Duplikér og organisér](./organize-pdf)
+43
View File
@@ -0,0 +1,43 @@
---
title: Redigér vedhæftninger
description: Se og fjern selektivt filvedhæftninger, der er indlejret i et PDF-dokument.
---
# Redigér vedhæftninger
Undersøg og administrér filvedhæftningerne i en PDF. Værktøjet viser hver indlejret fil med navn og vedhæftningsniveau og lader dig derefter markere enkelte vedhæftninger til fjernelse eller fjerne dem alle på én gang.
## Sådan fungerer det
1. Upload en PDF-fil.
2. Værktøjet scanner automatisk efter vedhæftninger og viser dem på en liste.
3. Hver vedhæftning viser sit filnavn, og om den er en vedhæftning på dokumentniveau eller sideniveau.
4. Klik på papirkurvsikonet ved en vedhæftning for at markere den til fjernelse (klik igen for at fjerne markeringen).
5. Brug knappen **Fjern alle vedhæftninger** til at vælge alt på én gang, eller **Fravælg alle** for at rydde dine valg.
6. Klik på behandlingsknappen for at gemme en ny PDF uden de valgte vedhæftninger.
## Funktioner
- Viser alle vedhæftninger på dokumentniveau og sideniveau
- Fjernelse af enkelte eller alle vedhæftninger
- Slå valg til og fra, før du bekræfter ændringerne
- Visuel gennemstregning og ændret gennemsigtighed på elementer markeret til fjernelse
- Downloader den ændrede PDF uden de valgte vedhæftninger
## Anvendelser
- Fjern forældede eller forkerte filer indlejret i et dokument, før det distribueres igen
- Fjern følsomme vedhæftninger (økonomidata, personoplysninger) fra en PDF, før du deler den
- Reducér PDF-filstørrelsen ved at fjerne store indlejrede filer, der ikke længere er nødvendige
- Gennemgå indlejret indhold og ryd op i et dokument, før det arkiveres
## Tips
- Vedhæftninger markeret til fjernelse vises med gennemstregning. Du kan slå markeringen fra igen, før du behandler, hvis du ombestemmer dig.
- Hvis der ikke findes vedhæftninger, viser værktøjet en tydelig besked om "Ingen vedhæftninger fundet". PDF'en indeholder så ganske enkelt ingen indlejrede filer.
## Relaterede værktøjer
- [Tilføj vedhæftninger](./add-attachments)
- [Udtræk vedhæftninger](./extract-attachments)
- [Vis metadata](./view-metadata)
+58
View File
@@ -0,0 +1,58 @@
---
title: Redigér metadata
description: Se og ændr PDF-metadatafelter, herunder titel, forfatter, nøgleord, datoer og brugerdefinerede egenskaber.
---
# Redigér metadata
Redigér de metadata, der er indlejret i en PDF-fil. Værktøjet udfylder en formular på forhånd med dokumentets eksisterende metadata, lader dig ændre ethvert felt og gemmer ændringerne i en ny PDF.
## Sådan fungerer det
1. Upload en PDF-fil. Værktøjet læser de nuværende metadata og udfylder formularen.
2. Redigér et af standardfelterne: Titel, Forfatter, Emne, Nøgleord, Opretter, Producent.
3. Justér oprettelsesdato og ændringsdato med dato- og tidsvælgerne.
4. Tilføj brugerdefinerede metadatafelter ved at klikke på tilføjknappen og indtaste et nøgle-værdi-par.
5. Klik på behandlingsknappen for at gemme den ændrede PDF.
## Funktioner
- Udfylder automatisk alle eksisterende metadata fra den uploadede PDF
- Standardfelter: Titel, Forfatter, Emne, Nøgleord, Opretter, Producent
- Dato- og tidsvælgere til oprettelsesdato og ændringsdato
- Brugerdefinerede nøgle-værdi-felter til vilkårlige egenskaber
- Gemmer ændringerne direkte i PDF'ens dokumentinfo-ordbog
## Redigerbare felter
| Felt | Beskrivelse |
| --------------------------- | ---------------------------------------------------------- |
| **Titel** | Dokumenttitlen, der vises i PDF-læsere |
| **Forfatter** | Den person eller organisation, der har oprettet dokumentet |
| **Emne** | En kort beskrivelse af dokumentets emne |
| **Nøgleord** | Kommaseparerede termer til søgning og kategorisering |
| **Opretter** | Programmet, der oprindeligt oprettede indholdet |
| **Producent** | Programmet, der genererede PDF'en |
| **Oprettelsesdato** | Hvornår dokumentet oprindeligt blev oprettet |
| **Ændringsdato** | Hvornår dokumentet sidst blev ændret |
| **Brugerdefinerede felter** | Alle yderligere nøgle-værdi-par, du definerer |
## Anvendelser
- Angiv en korrekt titel og forfatter, før et dokument udgives
- Tilføj nøgleord for at forbedre søgbarheden i dokumenthåndteringssystemer
- Opdatér ændringsdatoen, så den afspejler den aktuelle revision
- Tilføj brugerdefinerede metadatafelter som Afdeling, Projekt-id eller Klassifikation
- Ryd op i metadata, som det oprindelige forfatterprogram har efterladt
## Tips
- Brugerdefinerede felter skrives direkte i PDF'ens infoordbog. Nogle PDF-læsere viser dem muligvis ikke, men de bevares i filen.
- Lad et felt stå tomt for at rydde det fra metadata. Behandlingsknappen gemmer det, der står i formularen.
- Brug [Vis metadata](./view-metadata) for at se metadata uden at redigere. Brug Fjern metadata for at fjerne alle metadata helt.
## Relaterede værktøjer
- [Vis metadata](./view-metadata)
- [PDF OCG-lag](./pdf-layers)
- [Komprimer PDF](./compress-pdf)
+48
View File
@@ -0,0 +1,48 @@
---
title: PDF-editor
description: Annotér, fremhæv, redigér ud (redaktion), tilføj figurer og billeder, søg og se PDF'er direkte i din browser.
---
# PDF-editor
BentoPDF's PDF-editor lader dig annotere, fremhæve, redigere ud, kommentere, tilføje figurer og billeder og søge i dine PDF'er. Den indlæser en fuldt udstyret editor direkte i din browser uden serveruploads.
## Sådan fungerer det
1. Upload din PDF ved at klikke på slipzonen eller trække en fil hen på den.
2. Den indlejrede PDF-editor åbner automatisk med dit dokument indlæst.
3. Brug værktøjslinjen til at annotere, fremhæve, redigere ud, tilføje tekst, tegne figurer eller indsætte billeder.
4. Klik på **Download redigeret PDF** for at gemme dine ændringer.
## Funktioner
- Fuld annotationsværktøjslinje med fremhævning, understregning, gennemstregning og frihåndstegning
- Tekstindsættelse og kommentarer
- Redaktionsværktøjer, der permanent fjerner markeret indhold, når du anvender redaktionen. Hvis nogle markeringer ikke er anvendt, når du klikker på **Download redigeret PDF**, tilbyder editoren at anvende dem først.
- Figurværktøjer til rektangler, cirkler, linjer og pile
- Indsættelse af billeder på PDF-sider
- Indbygget tekstsøgning i hele dokumentet
- Understøttelse af flere dokumenter med faner (op til 10 dokumenter åbne samtidig)
- Indlæsning af filer med træk og slip
## Anvendelser
- Gennemgå kontrakter og markér ændringer med fremhævninger og kommentarer
- Rediger fortrolige oplysninger som cpr-numre eller økonomidata ud, før du deler dokumentet
- Tilføj annotationer til arkitekttegninger eller tekniske tegninger
- Indsæt virksomhedslogoer eller stempler på dokumentsider
- Søg efter bestemte termer i lange juridiske dokumenter
## Tips
- Du kan åbne flere PDF'er på én gang og skifte mellem dem med fanelinjen øverst i editoren.
- Editoren bevarer den oprindelige PDF-struktur, så skrifttyper, layout og formularfelter forbliver intakte.
- Når du markerer tekst eller et område til redaktion, fjernes intet, før redaktionen anvendes. Når du redigerer markeret tekst ud, fjernes også kopier af den i filens egenskaber, bogmærker, kommentarer og vedhæftninger fra downloaden, medmindre filen er krypteret.
- Til masse-vandmærkning eller sidenummerering bør du bruge de dedikerede værktøjer for bedre kontrol over formateringen.
## Relaterede værktøjer
- [Tilføj vandmærke](./add-watermark)
- [Underskriv PDF](./sign-pdf)
- [Tilføj stempler](./add-stamps)
- [Fjern annotationer](./remove-annotations)
+50
View File
@@ -0,0 +1,50 @@
---
title: E-mail til PDF
description: Konvertér EML- og MSG-e-mailfiler til PDF i din browser. Bevarer headere, brødtekst og vedhæftningsliste.
---
# E-mail til PDF
Konvertér gemte e-mailfiler til rene, udskrivbare PDF'er. Værktøjet fortolker EML- og MSG-filer, udtrækker hele beskeden (headere, brødtekst og metadata om vedhæftninger) og gengiver det hele i en struktureret PDF. Nyttigt til juridisk bevisindsamling, journalføring eller blot til at udskrive en vigtig e-mail.
## Understøttede formater
| Format | Filtypenavn | Noter |
| :----- | :---------- | :---------------------------------------------------------------------- |
| EML | `.eml` | Standard MIME-e-mailformat (eksporteres fra de fleste e-mailprogrammer) |
| MSG | `.msg` | Microsoft Outlooks proprietære format |
## Sådan fungerer det
1. Klik på uploadområdet eller træk og slip dine EML- eller MSG-filer. Du kan blande begge formater i en enkelt batch.
2. Gennemgå fillisten. Fjern uønskede poster med papirkurvsikonet, eller klik på **Tilføj flere filer** for at medtage flere e-mails.
3. Konfigurér konverteringsindstillingerne (se nedenfor).
4. Klik på **Konvertér til PDF**. Værktøjet fortolker hver e-mail, gengiver indholdet som formateret HTML og konverterer det til PDF via PyMuPDF-motoren.
5. En enkelt e-mail downloades direkte som PDF. Flere e-mails pakkes i `emails-converted.zip`.
## Indstillinger
| Indstilling | Standard | Beskrivelse |
| :--------------------------- | :------- | :---------------------------------------------------------------------------------------------------------- |
| **Sidestørrelse** | A4 | Vælg mellem A4-, Letter- eller Legal-sidemål. |
| **Medtag CC og BCC** | Til | Når den er aktiveret, vises CC- og BCC-modtagerlister i e-mailens headerafsnit i PDF'en. |
| **Medtag vedhæftningsliste** | Til | Når den er aktiveret, vises en liste over e-mailens filvedhæftninger (med filnavne og størrelser) i PDF'en. |
## Anvendelser
- Arkivér vigtig forretningskorrespondance som PDF til compliance eller revision
- Udskriv e-mailtråde til retssager eller anmodninger om bevisindsamling
- Opret en permanent registrering af ordrebekræftelser, kvitteringer eller kontrakter modtaget på e-mail
- Sikkerhedskopiér Outlook MSG-filer i et format, der ikke kræver Outlook for at blive læst
- Dokumentér kundesupporthenvendelser fra eksporterede EML-filer
## Tips
- Både EML (brugt af Thunderbird, Apple Mail og de fleste e-mailprogrammer) og Outlook MSG-filer understøttes. Eksportér e-mails fra dit e-mailprogram og slip dem direkte i værktøjet.
- HTML-formaterede e-mails beholder deres styling i PDF'en. E-mails i almindelig tekst gengives med ren, læsbar formatering.
- Vedhæftningslisten viser filnavne og størrelser, men indlejrer ikke selve vedhæftningsfilerne i PDF'en.
## Relaterede værktøjer
- [XML til PDF](./xml-to-pdf)
- [XPS til PDF](./xps-to-pdf)
+44
View File
@@ -0,0 +1,44 @@
---
title: EPUB til PDF
description: Konvertér EPUB-e-bøger til PDF i din browser. Gratis, ingen upload nødvendig, privatlivsorienteret konvertering.
---
# EPUB til PDF
Konvertér EPUB-e-bøger til PDF-filer uden at forlade din browser. EPUB er den åbne standard for digitale bøger, men nogle gange har du brug for en PDF med fast layout til udskrivning, annotering eller deling med personer uden e-bogslæser.
## Understøttede formater
| Format | Filtypenavn | Noter |
| :----- | :---------- | :---------------------- |
| EPUB | `.epub` | EPUB 2- og EPUB 3-filer |
## Sådan fungerer det
1. Klik på uploadområdet eller træk og slip dine EPUB-filer. Du kan vælge flere filer.
2. Gennemgå de uploadede filer. Fjern uønskede poster med papirkurvsikonet, eller klik på **Tilføj flere filer** for at udvide batchen.
3. Klik på **Konvertér til PDF**. PyMuPDF-motoren gengiver EPUB-indholdet (tekst, billeder og formatering) som sideinddelt PDF.
4. En enkelt EPUB downloades direkte som PDF. Flere filer pakkes i et ZIP-arkiv ved navn `epub-converted.zip`.
## Indstillinger
Konverteringen kører med fornuftige standardindstillinger og kræver ingen konfiguration. Teksten omflyder til standardsidemål, og indlejrede skrifttyper og billeder overføres til PDF'en.
## Anvendelser
- Udskriv en DRM-fri e-bog, så du kan læse væk fra skærme
- Indsend et EPUB-manuskript som PDF med fast layout til gennemgang
- Arkivér digitale bøger i et format, som alle operativsystemer kan åbne direkte
- Del et kapitel med en kollega, der ikke har en EPUB-læser
- Konvertér teknisk dokumentation, der distribueres som EPUB, til PDF'er, der kan annoteres
## Tips
- EPUB 3-funktioner som indlejret lyd og video overføres ikke til PDF, men al tekst, alle billeder og tabeller konverteres uden problemer.
- Ved kraftigt stylede EPUB-filer bør du tjekke de første sider af resultatet for at bekræfte layoutets troværdighed.
## Relaterede værktøjer
- [MOBI til PDF](./mobi-to-pdf)
- [FB2 til PDF](./fb2-to-pdf)
- [CBZ til PDF](./cbz-to-pdf)
+55
View File
@@ -0,0 +1,55 @@
---
title: Excel til PDF
description: Konvertér Excel-regneark (XLS, XLSX), ODS- og CSV-filer til PDF med bevaret formatering.
---
# Excel til PDF
Konvertér regnearksfiler til PDF. Værktøjet håndterer moderne Excel-filer, det gamle XLS-format, OpenDocument-regneark og endda CSV, alt sammen gengivet via en browserbaseret LibreOffice-motor, der bevarer cellers formatering, formler (som beregnede værdier), diagrammer og layout med flere ark.
## Understøttede formater
| Format | Filtypenavne |
| :-------------------- | :----------- |
| Excel (moderne) | `.xlsx` |
| Excel (ældre) | `.xls` |
| OpenDocument-regneark | `.ods` |
| CSV | `.csv` |
## Sådan fungerer det
1. Klik på uploadområdet eller træk og slip dine regnearksfiler.
2. Gennemgå fillisten. Tilføj flere filer eller fjern uønskede.
3. Klik på **Konvertér til PDF**. LibreOffice-motoren initialiseres ved første brug og behandler derefter hver fil.
4. En enkelt fil downloades direkte som PDF. Flere filer leveres som `excel-converted.zip`.
## Indstillinger
Dette værktøj har ingen yderligere konfiguration. LibreOffice-motoren bestemmer sidelayout, skalering og udskriftsområde ud fra regnearkets indbyggede indstillinger.
## Output
| Antal input | Output |
| :---------- | :--------------------------------------------------------------------- |
| 1 fil | Download af en enkelt PDF (oprindeligt filnavn med filendelsen `.pdf`) |
| 2+ filer | ZIP-arkiv (`excel-converted.zip`) med én PDF pr. fil |
## Anvendelser
- Konvertér økonomirapporter eller budgetter fra Excel til PDF til distribution
- Opret udskriftsklare PDF'er ud fra lager- eller produktkatalogregneark
- Del dataanalyseresultater med interessenter, der ikke har Excel installeret
- Arkivér kvartalsrapporter i et format, der ikke kan redigeres
- Konvertér ODS-filer fra LibreOffice Calc til PDF
## Tips
- Diagrammer indlejret i regnearket gengives i PDF'en. Sørg for, at de ser rigtige ud i kildefilen, før du konverterer.
- Hvis dit regneark har flere ark, er alle ark med i PDF-outputtet.
- Til simple CSV-data uden formatering giver værktøjet [CSV til PDF](./csv-to-pdf) en lettere konvertering. Brug Excel til PDF, når du har brug for bevaret formatering, diagrammer eller flere ark.
## Relaterede værktøjer
- [CSV til PDF](./csv-to-pdf)
- [Word til PDF](./word-to-pdf)
- [PowerPoint til PDF](./powerpoint-to-pdf)
+42
View File
@@ -0,0 +1,42 @@
---
title: Udtræk vedhæftninger
description: Udtræk alle indlejrede filvedhæftninger fra en eller flere PDF'er og download dem som et ZIP-arkiv.
---
# Udtræk vedhæftninger
Træk alle indlejrede vedhæftninger ud af en eller flere PDF-filer. Alle udtrukne filer samles i ét ZIP-arkiv til download.
## Sådan fungerer det
1. Upload en eller flere PDF-filer, der indeholder indlejrede vedhæftninger.
2. Klik på **Udtræk vedhæftninger**.
3. Værktøjet scanner hver PDF efter vedhæftninger på dokumentniveau og sideniveau.
4. Alle fundne filer pakkes i et ZIP-arkiv og downloades automatisk.
5. En statusbesked bekræfter, hvor mange vedhæftninger der blev fundet, og deres samlede størrelse.
## Funktioner
- Batchudtræk fra flere PDF'er på én gang
- Udtrækker både vedhæftninger på dokumentniveau og sideniveau
- Giver én ZIP-fil med alle udtrukne filer
- Viser det samlede antal vedhæftninger og den samlede filstørrelse
- Tydelige statusbeskeder, hvis der ikke findes vedhæftninger
## Anvendelser
- Gendan datafiler indlejret i en rapport-PDF
- Træk billedmateriale ud af en portefølje eller et specifikationsdokument
- Udtræk supplerende materiale fra trænings- eller compliance-PDF'er
- Gennemgå, hvilke filer der er indlejret i en batch af PDF'er
## Tips
- Hvis værktøjet melder, at der ingen vedhæftninger er, kan PDF'en i stedet indeholde indlejrede billeder eller formulardata. Disse er ikke filvedhæftninger. Brug [Udtræk billeder](./extract-images) til indlejrede billeder.
- Når du behandler flere PDF'er, havner alle vedhæftninger fra alle filer i én ZIP. Filnavnene bevares fra de oprindelige indlejringer.
## Relaterede værktøjer
- [Tilføj vedhæftninger](./add-attachments)
- [Redigér vedhæftninger](./edit-attachments)
- [Udtræk billeder](./extract-images)
+45
View File
@@ -0,0 +1,45 @@
---
title: Udtræk billeder
description: Udtræk alle indlejrede billeder fra PDF-filer. Forhåndsvis dem i et gitter og download dem enkeltvis eller som et ZIP-arkiv.
---
# Udtræk billeder
Trækker alle indlejrede billeder ud af en eller flere PDF-filer. De udtrukne billeder vises i et forhåndsvisningsgitter, hvor du kan downloade dem enkeltvis eller tage alt på én gang som en ZIP. Drevet af PyMuPDF.
## Sådan fungerer det
1. Upload en eller flere PDF'er ved at klikke på slipzonen eller trække filer hen på den. Tilføj flere filer, eller fjern enkelte efter behov.
2. Klik på **Udtræk** for at starte behandlingen.
3. Værktøjet scanner hver side i hver uploadet PDF og finder og udtrækker indlejrede billeder.
4. De udtrukne billeder vises i et gitter med miniaturer. Hvert billede har en downloadknap.
5. Klik på **Download alle** for at gemme alt som et ZIP-arkiv.
## Indstillinger
Dette værktøj har ingen konfigurerbare indstillinger. Alle indlejrede billeder udtrækkes i deres oprindelige format (typisk PNG, JPEG eller det format, billedet blev indlejret i PDF'en med).
## Outputformat
- Billeder vises i et forhåndsvisningsgitter med navne som `image_1.png`, `image_2.jpg` osv.
- **Download alle** giver `extracted-images.zip` med alle billeder.
- Enkelte billeder kan downloades ét ad gangen fra gitteret.
## Anvendelser
- Gendan fotos eller grafik fra en PDF til genbrug i et andet projekt.
- Udtræk produktbilleder fra en katalog-PDF til en webshopsannonce.
- Træk diagrammer ud af teknisk dokumentation til brug i præsentationer.
- Gennemgå, hvilke billeder der er indlejret i et dokument, før du deler det.
## Tips
- Værktøjet udtrækker billeder præcis, som de er gemt i PDF'en. Det gengiver ikke sider som billeder. Til det kan du bruge [PDF til PNG](./pdf-to-png) eller [PDF til JPG](./pdf-to-jpg).
- Hvis værktøjet melder "Ingen billeder fundet", bruger PDF'en muligvis vektorgrafik i stedet for indlejrede rasterbilleder, eller også er det et skannet dokument, hvor hele siden er ét stort billede.
- Batchbehandling virker på tværs af flere PDF'er. Alle billeder fra alle filer samles i ét gitter og én ZIP.
## Relaterede værktøjer
- [PDF til PNG](./pdf-to-png)
- [PDF til JPG](./pdf-to-jpg)
- [PDF Workflow-bygger](./pdf-workflow)
+41
View File
@@ -0,0 +1,41 @@
---
title: Udtræk sider
description: Gem et bestemt sideinterval fra en PDF som et nyt dokument.
---
# Udtræk sider
Træk et udvalg af sider ud af en PDF og gem dem som en ny fil. Angiv præcis, hvilke sider du vil have, med intervalsyntaks, og værktøjet opretter en ren PDF, der kun indeholder de sider.
## Sådan fungerer det
1. Upload en PDF-fil. Værktøjet viser filnavn, størrelse og det samlede sideantal.
2. Indtast de sider, du vil udtrække, med intervalsyntaks (f.eks. `1-5`, `3, 7, 10-12`).
3. Vælg eventuelt at downloade hvert interval som en separat PDF i et ZIP-arkiv.
4. Klik på behandlingsknappen. De udtrukne sider downloades som en ny PDF (eller ZIP).
## Funktioner
- Fleksibel intervalsyntaks: enkelte sider, intervaller eller kommaseparerede kombinationer
- Viser det samlede sideantal efter upload, så du let kan se det
- Mulighed for output som én samlet PDF eller separate filer i en ZIP
- Bevarer det oprindelige sideindhold og den oprindelige formatering
## Anvendelser
- Træk resuméet (de første par sider) ud af en lang rapport
- Udtræk et enkelt kapitel fra en lærebogs-PDF
- Gem bestemte sider fra en formularpakke som selvstændige dokumenter
- Opret et eksempeldokument ud fra udvalgte sider i en større fil
## Tips
- Sidetal starter ved 1. Brug `1` til den første side, ikke `0`.
- Hvis du vil fjerne sider i stedet for at udtrække dem, kan du bruge [Slet sider](./delete-pages), som er den omvendte handling.
- Hvis du har brug for visuelt sidevalg med miniaturer, kan du bruge [Opdel PDF](./split-pdf) i tilstanden Visuelt valg.
## Relaterede værktøjer
- [Opdel PDF](./split-pdf)
- [Slet sider](./delete-pages)
- [Flet PDF](./merge-pdf)
+46
View File
@@ -0,0 +1,46 @@
---
title: Udtræk PDF-tabeller
description: Registrer og udtræk tabeller fra PDF-dokumenter. Eksportér som CSV, JSON eller Markdown med granularitet pr. tabel.
---
# Udtræk PDF-tabeller
Registrerer alle tabeller i en PDF og lader dig eksportere dem i det format, du vælger: CSV, JSON eller Markdown. Hver tabel udtrækkes individuelt med metadata om side og position. Drevet af PyMuPDF's tabelregistreringsmotor.
## Sådan fungerer det
1. Upload en PDF ved at klikke på slipzonen eller trække en fil hen på den.
2. Vælg dit foretrukne **eksportformat**: CSV, JSON eller Markdown.
3. Klik på **Udtræk** for at starte behandlingen.
4. Hvis der findes én tabel, downloades den som en enkelt fil. Flere tabeller giver et ZIP-arkiv med én fil pr. tabel.
## Indstillinger
- **Eksportformat**: vælg mellem:
- **CSV**: kommaseparerede værdier med korrekt citering af felter, der indeholder kommaer, anførselstegn eller linjeskift. Velegnet til regneark og databaser.
- **JSON**: struktur med array af arrays, pænt formateret med indrykning på 2 mellemrum. Velegnet til programmatisk brug.
- **Markdown**: tabelformat med lodrette streger, gengivet af PyMuPDF. Velegnet til dokumentation og README-filer.
## Outputformat
- **Enkelt tabel**: `filename_table.csv` (eller `.json` / `.md`)
- **Flere tabeller**: `filename_tables.zip` med filer ved navn `table_1_page3.csv`, `table_2_page5.csv` osv.
## Anvendelser
- Udtræk bestemte tabeller fra lange PDF-rapporter uden at hente hele dokumentets data.
- Få tabeller i Markdown-format til at indsætte direkte i GitHub-issues, wikier eller dokumentation.
- Træk struktureret JSON-data ud af PDF-tabeller til API-integrationer eller scripts.
- Sammenlign tabeller på tværs af forskellige PDF-versioner ved at eksportere begge til CSV og lave en diff.
## Tips
- Dette værktøj giver kontrol pr. tabel. Hvis du bare vil have alle tabeller samlet i én CSV, kan du bruge [PDF til CSV](./pdf-to-csv). Til en fuld Excel-projektmappe kan du bruge [PDF til Excel](./pdf-to-excel).
- Tabeller, der strækker sig over flere sider, kan blive registreret som separate tabeller pr. side. Du skal muligvis sætte dem sammen manuelt.
- Hvis der ikke registreres tabeller, kan PDF'en være et skannet billede. Kør den gennem OCR først for at tilføje et tekstlag.
## Relaterede værktøjer
- [PDF til CSV](./pdf-to-csv)
- [PDF til Excel](./pdf-to-excel)
- [PDF til tekst](./pdf-to-text)
+43
View File
@@ -0,0 +1,43 @@
---
title: FB2 til PDF
description: Konvertér FictionBook-ebogsfiler (FB2) til PDF i din browser. Gratis, privat, ingen upload til server.
---
# FB2 til PDF
Konvertér FictionBook 2-filer (FB2) til PDF-dokumenter. FB2 er et XML-baseret ebogsformat, der er populært i Rusland og Østeuropa. Det understøttes godt på visse platforme, men er næsten ukendt på andre. Ved at konvertere til PDF kan dine bøger læses overalt.
## Understøttede formater
| Format | Filtypenavn | Bemærkninger |
| :------------ | :---------- | :---------------------- |
| FictionBook 2 | `.fb2` | XML-baseret ebogsformat |
## Sådan fungerer det
1. Klik på uploadområdet, eller træk og slip dine FB2-filer. Du kan vælge flere filer på én gang.
2. Gennemgå fillisten. Brug papirkurv-ikonet til at fjerne enkelte poster, eller **Tilføj flere filer** for at tilføje flere.
3. Klik på **Konvertér til PDF**. PyMuPDF-motoren fortolker FB2's XML-struktur og gengiver den som paginerede PDF-sider.
4. Én fil downloades direkte som PDF. Flere konverteringer samles i `fb2-converted.zip`.
## Indstillinger
Der kræves ingen konfiguration. Konverteren håndterer FB2's XML-struktur automatisk og bevarer kapitelskift, formatering og eventuelle indlejrede billeder.
## Anvendelsesområder
- Læsning af FB2-ebøger på enheder eller apps, der kun understøtter PDF
- Udskrivning af russisksproget litteratur, der distribueres i FB2-format
- Arkivering af et FB2-bibliotek i et format, der understøttes overalt
- Deling af en bog med en person, hvis læser ikke understøtter FictionBook
## Tips
- FB2-filer er almindelig XML, så de er typisk små og konverteres hurtigt, selv i browseren.
- Hvis dine FB2-filer er komprimeret som `.fb2.zip`, skal du pakke dem ud, før du uploader dem.
## Relaterede værktøjer
- [EPUB til PDF](./epub-to-pdf)
- [MOBI til PDF](./mobi-to-pdf)
- [XML til PDF](./xml-to-pdf)
+44
View File
@@ -0,0 +1,44 @@
---
title: Ret sidestørrelse
description: Standardisér alle sider i en PDF til en ensartet størrelse. Vælg mellem standardpapirstørrelser, eller angiv egne mål.
---
# Ret sidestørrelse
PDF'er, der er samlet fra flere kilder, ender ofte med forskellige sidestørrelser: nogle Letter, nogle A4 og nogle helt ikke-standard. Dette værktøj tvinger alle sider til én målstørrelse og skalerer indholdet, så det passer ind eller fylder siden.
## Sådan fungerer det
1. Upload en PDF-fil.
2. Vælg en **Målsidestørrelse** i rullelisten (A4, Letter, Legal, A3, A5, Tabloid eller Brugerdefineret).
3. Vælg en **Orientering**. Auto bevarer hver sides oprindelige orientering, eller du kan gennemtvinge Stående eller Liggende.
4. Vælg en **Indholdsskalering**: Tilpas (bevarer alt indhold, kan tilføje margener) eller Fyld (fylder siden, kan beskære kanter).
5. Angiv eventuelt en **Baggrundsfarve** til tilføjede margener.
6. Klik på **Ret sidestørrelse**.
## Indstillinger
- **Standardstørrelser**: A4, Letter, Legal, A3, A5, Tabloid
- **Brugerdefinerede mål**: Angiv bredde og højde i tommer eller millimeter
- **Orientering**: Auto, Stående, Liggende
- **Skaleringstilstand**: Tilpas eller Fyld (beskær)
- **Baggrundsfarve**: Enhver farve til margenpolstring
## Anvendelsesområder
- Normalisering af en sammenflettet PDF, hvor siderne stammer fra forskellige scannere
- Konvertering af et amerikansk Letter-dokument til A4 til international distribution
- Klargøring af trykklare PDF'er, der kræver en ensartet beskæringsstørrelse
- Rettelse af sider, der er lidt uden for standard (f.eks. 8,49 x 11,02 tommer i stedet for 8,5 x 11)
## Tips
- Brug Tilpas for at sikre, at intet indhold går tabt. Fyld ser pænere ud, men kan klippe kanter af.
- Kontrollér resultatet med værktøjet Sidestørrelser for at bekræfte, at alle sider matcher målet.
- Hvid er standardbaggrundsfarven. Skift til en mørk farve, hvis dit dokument har mørke margener.
## Relaterede værktøjer
- [Sidestørrelser](./page-dimensions): kontrollér sidestørrelser før og efter rettelse
- [Komprimer PDF](./compress-pdf): reducer filstørrelsen efter standardisering
- [Beskær PDF](./crop-pdf): beskær sider manuelt i stedet for automatisk skalering
+51
View File
@@ -0,0 +1,51 @@
---
title: Fladgør PDF
description: Flad interaktive formularer og annotationer ud til statisk indhold. Gør formularfelter uredigerbare og brænder annotationer ind i siden.
---
# Fladgør PDF
Flatten slår interaktive elementer sammen med sidens indhold: formularfelter, rullelister, afkrydsningsfelter, annotationer, markeringer og påsatte noter. Det visuelle udseende forbliver det samme, men intet kan længere redigeres eller udtrækkes. Det svarer til at udskrive en udfyldt formular og scanne den ind igen, bortset fra at kvaliteten forbliver perfekt.
## Sådan fungerer det
1. Upload en eller flere PDF-filer.
2. Klik på **Fladgør PDF**.
3. En enkelt fil downloades direkte. Flere filer giver et ZIP-arkiv.
Værktøjet bruger pdf-lib til at flade formularfelter ud (via `form.flatten()`) og en dedikeret annotationsflader til at brænde annotationer ind i sidestrømmen. Begge handlinger sker i ét gennemløb.
## Hvad der flades ud
- **Formularfelter**: Tekstfelter, afkrydsningsfelter, radioknapper, rullelister, signaturfelter
- **Annotationer**: Kommentarer, markeringer, gennemstregning, understregning, påsatte noter, stempler, blækannotationer
- **Interaktive elementer**: Knapper, handlingsudløsere
## Hvad der forbliver uændret
- Tekstindhold (kan stadig markeres og søges i)
- Billeder og grafik
- Sidelayout og -mål
- Bogmærker og indholdsfortegnelse
- Hyperlinks (medmindre de er annotationsbaserede)
## Anvendelsesområder
- Låsning af en udfyldt formular, så modtagere ikke kan ændre de indsendte svar
- Klargøring af en PDF til arkivering, hvor interaktive elementer er unødvendige
- Rettelse af visningsproblemer, når annotationer gengives forskelligt i forskellige læsere
- Sikring af, at et underskrevet dokument ikke kan ændres, efter underskriften er påført
- Reduktion af filstørrelsen ved at fjerne formularfeltdefinitioner og annotationsobjekter
## Tips
- Flatten, når alle redigeringer er færdige. Der er ingen måde at gendanne en flattenet PDF på.
- Hvis du både vil flatten og fjerne metadata, JavaScript og vedhæftninger, så brug værktøjet Rens PDF i stedet. Det har flatten som en af sine indstillinger.
- Nogle PDF'er melder "ingen formular fundet". Det er normalt, hvis dokumentet kun har annotationer og ingen formularfelter.
## Relaterede værktøjer
- [Rens PDF](./sanitize-pdf): flatten formularer og fjern desuden metadata, scripts og mere
- [Rasterisér PDF](./rasterize-pdf): konvertér til billedbaseret PDF for maksimal flatten
- [Skrifttype til kontur](./font-to-outline): konvertér skrifttyper til vektorstier
- [Kryptér PDF](./protect-pdf): lås den fladgjorte PDF med en adgangskode
+52
View File
@@ -0,0 +1,52 @@
---
title: Skrifttype til kontur
description: Konvertér alle skrifttyper i en PDF til vektorkonturer for ensartet gengivelse på tværs af enheder. Eliminerer problemer med skrifttypeafhængighed.
---
# Skrifttype til kontur
Når skrifttyper konverteres til konturer, omdannes hvert tekstbogstav fra en skrifttypebaseret glyf til en vektorsti. PDF'en afhænger ikke længere af installerede skrifttyper og gengives ens på alle enheder, alle operativsystemer og alle printere. Det er et standardtrin i prepress-arbejdsgange.
## Sådan fungerer det
1. Upload en eller flere PDF-filer.
2. Klik på **Konvertér til konturer**.
3. Ghostscript konverterer al tekst til vektorstier.
4. Download resultatet. Flere filer giver et ZIP-arkiv.
Der er ingen indstillinger at konfigurere. Værktøjet bruger Ghostscript (WebAssembly) til at konvertere alle skrifttypereferencer til konturstier i ét gennemløb.
## Hvad der ændres
- Tekstbogstaver bliver til vektorkurver (bézier-stier)
- Indlejring af skrifttyper er ikke længere nødvendig, da PDF'en er selvstændig på glyfniveau
- Filstørrelsen kan stige, fordi vektorstier typisk er større end skrifttypereferencer
- Det visuelle udseende bevares nøjagtigt
## Hvad du mister
- Markering og kopiering af tekst
- Søgbarhed i teksten (Ctrl+F holder op med at virke)
- Muligheden for at redigere tekstindholdet
- Tilgængelighed for skærmlæsere
## Anvendelsesområder
- Afsendelse af PDF'er til et trykkeri, der kræver skrifttyper i konturer
- Deling af dokumenter med brugerdefinerede eller licenserede skrifttyper med personer, der ikke har disse skrifttyper
- Forebyggelse af skrifttypeudskiftning, der ændrer dit dokuments udseende på andre systemer
- Klargøring af PDF'er til lasergravering eller CNC-skæring, der kræver vektorinput
- Sikring af, at en logotung PDF vises korrekt på alle platforme
## Tips
- Behold din oprindelige PDF. Konvertering til konturer kan ikke fortrydes, og stier kan ikke konverteres tilbage til redigerbar tekst.
- Hvis teksten skal forblive søgbar, kan du i stedet overveje værktøjet Rasterisér PDF efterfulgt af OCR.
- PDF'er med konturer er ofte større. Kør Komprimer PDF bagefter, hvis filstørrelsen er vigtig.
## Relaterede værktøjer
- [Fladgør PDF](./flatten-pdf): flad formularer ud og annotationer uden at røre skrifttyper
- [Rasterisér PDF](./rasterize-pdf): konvertér til billedbaseret PDF i stedet for vektorkonturer
- [Komprimer PDF](./compress-pdf): reducer filstørrelsen efter konvertering til konturer
- [PDF til PDF/A](./pdf-to-pdfa): konvertér til arkivering, når skrifttypeuafhængighed er sikret
+76
View File
@@ -0,0 +1,76 @@
---
title: Opret PDF-formular
description: Byg udfyldelige PDF-formularer med træk-og-slip-tekstfelter, afkrydsningsfelter, rullelister, radioknapper og mere.
---
# Opret PDF-formular
Design professionelle udfyldelige PDF-formularer fra bunden, eller tilføj felter til en eksisterende PDF. Den visuelle editor lader dig trække og slippe formularelementer (tekstfelter, afkrydsningsfelter, rullelister, radioknapper, signaturfelter og mere) direkte ind på sideforhåndsvisninger. Konfigurér feltegenskaber, opsæt regler for betinget synlighed, og eksportér en fuldt interaktiv PDF-formular.
## Sådan fungerer det
1. Upload en eksisterende PDF **eller** klik på **Opret tom PDF** for at starte fra bunden.
2. Hvis du opretter en tom PDF, skal du vælge en sidestørrelse (Letter, A4, A5, Legal, Tabloid, A3 eller brugerdefinerede mål).
3. Formulareditoren åbner med en værktøjslinje med felttyper og et område med sideforhåndsvisning.
4. Vælg en felttype på værktøjslinjen, og klik derefter på siden for at placere den.
5. Træk felter for at flytte dem. Brug størrelseshåndtagene til at justere målene.
6. Klik på et felt for at åbne egenskabspanelet, hvor du kan angive feltnavn, standardværdi, skriftstørrelse, justering og mere.
7. Naviger mellem siderne med sidekontrollerne.
8. Klik på **Gem** for at downloade den færdige udfyldelige PDF.
## Funktioner
- Placering af felter med træk og slip og visuelle håndtag til ændring af størrelse
- Felttyper: tekstinput, flerlinjet tekst, afkrydsningsfelt, rulleliste, radioknap, signatur, dato, tal og stregkode
- Egenskabspanel til konfiguration af hvert felts navn, etiket, standardværdi, skriftstørrelse, farve, justering og validering
- Felthandlinger og regler for betinget synlighed (vis/skjul felter baseret på andre feltværdier)
- Sidenavigation til formularer med flere sider
- Udtrækning af eksisterende felter: registrerer og importerer automatisk formularfelter fra uploadede PDF'er
- Understøttelse af både uploadede PDF'er og tomme sider som formularlærred
- Flere forudindstillede sidestørrelser plus brugerdefinerede mål
- Stregkodegenerering drevet af bwip-js
- Administration af radioknapgrupper
## Indstillinger
**Forudindstillede sidestørrelser (til tomme PDF'er):**
- Letter (8,5" x 11")
- A4 (210mm x 297mm)
- A5 (148mm x 210mm)
- Legal (8,5" x 14")
- Tabloid (11" x 17")
- A3 (297mm x 420mm)
- Brugerdefineret (angiv bredde og højde)
**Feltegenskaber (varierer efter felttype):**
- Navn, etiket og pladsholdertekst
- Standardværdi
- Skrifttype, størrelse og farve
- Tekstjustering (venstre, centreret, højre)
- Til/fra for obligatorisk felt
- Til/fra for skrivebeskyttet
- Maks. længde for tekstfelter
- Valgmuligheder for rullelister og radioknapper
- Handlinger for betinget synlighed
## Anvendelsesområder
- Oprettelse af onboarding-formularer til medarbejdere med tekstfelter til personlige oplysninger og afkrydsningsfelter til accept af politikker
- Oprettelse af spørgeskemaer til kundeoptagelse med rullelister til valg af ydelse
- Design af bestillingsformularer med beregnede felter og stregkodeidentifikatorer
- Oprettelse af inspektionstjeklister med radioknapper til bestået/ikke bestået
- Oprettelse af undersøgelsesformularer med betingede opfølgende spørgsmål, der vises ud fra svar
## Tips
- Hvis du uploader en eksisterende PDF, forsøger værktøjet at udtrække de formularfelter, der allerede findes, så du kan redigere eller tilføje til dem.
- Brug radioknapgrupper til at oprette gensidigt udelukkende valg. Felter i samme radiogruppe deler et gruppenavn.
- Test din formular ved at downloade den og åbne den i [PDF-formularudfylder](./form-filler) for at kontrollere feltadfærden.
## Relaterede værktøjer
- [PDF-formularudfylder](./form-filler)
- [Underskriv PDF](./sign-pdf)
- [PDF-editor](./edit-pdf)
+47
View File
@@ -0,0 +1,47 @@
---
title: PDF-formularudfylder
description: Udfyld PDF-formularer, herunder XFA-formularer, direkte i din browser med en indlejret viewer.
---
# PDF-formularudfylder
Åbn en PDF med formularfelter, og udfyld den direkte i en indlejret viewer. Værktøjet understøtter både almindelige AcroForm-felter og ældre XFA-formularer (XML Forms Architecture). Når du har udfyldt formularen, kan du downloade den udfyldte version med et enkelt klik.
## Sådan fungerer det
1. Upload en PDF, der indeholder formularfelter.
2. Dokumentet åbner i en integreret PDF-viewer, der gengiver formularfelter som interaktive inputfelter.
3. Klik på tekstfelter, afkrydsningsfelter, rullelister og radioknapper for at udfylde dem.
4. Klik på **Gem og download udfyldt formular** for at få den færdige PDF.
## Funktioner
- Indlejret PDF.js-viewer med fuld interaktion med formularfelter
- Understøttelse af almindelige AcroForm-felter (tekstfelter, afkrydsningsfelter, rullelister, radioknapper)
- XFA-formularunderstøttelse til ældre XML-baserede formularer
- Automatisk tilpasning af viewerens størrelse ud fra sidemål
- Visning af fil med navn og størrelse
## Indstillinger
Der er ingen yderligere konfigurationsindstillinger. Upload formularen, udfyld den, og download.
## Anvendelsesområder
- Udfyldelse af skatteformularer, forsikringsansøgninger eller offentlige papirer
- Udfyldelse af jobansøgningsskemaer modtaget som PDF-vedhæftninger
- Udfyldelse af leverandør-onboarding-formularer eller spørgeskemaer til leverandører
- Godkendelse af compliance-tjeklister med afkrydsningsfelter
- Udfyldelse af medicinske optagelsesformularer før en aftale
## Tips
- XFA-formularer er et ældre format, som kun understøttes af nogle PDF-læsere. Hvis du åbner en XFA-PDF i Chrome eller de fleste andre værktøjer og ser tomme sider, mangler disse læsere XFA-understøttelse. BentoPDF's formularudfylder og Firefox håndterer begge XFA korrekt.
- Til PDF'er uden eksisterende formularfelter kan du bruge værktøjet [Opret PDF-formular](./form-creator) til først at tilføje felter og derefter udfylde dem her.
- Vieweren tilpasser automatisk sin størrelse til PDF'ens sidemål.
## Relaterede værktøjer
- [Opret PDF-formular](./form-creator)
- [Underskriv PDF](./sign-pdf)
- [PDF-editor](./edit-pdf)
+53
View File
@@ -0,0 +1,53 @@
---
title: Sidehoved og sidefod
description: Tilføj tilpasselig sidehoved- og sidefodstekst til PDF-sider med dynamiske variabler for sidetal.
---
# Sidehoved og sidefod
Tilføj tekst i seks positioner på dine PDF-sider: sidehoved til venstre, i midten og til højre samt sidefod til venstre, i midten og til højre. Værktøjet understøtter dynamiske variabler for sidetal og samlet sideantal, så du kan oprette skabeloner som "Side 3 af 10", der opdateres automatisk for hver side.
## Sådan fungerer det
1. Upload din PDF-fil.
2. Indstillingspanelet vises med formateringskontroller og seks tekstfelter.
3. Indtast den ønskede tekst i en af sidehoved-/sidefodspositionerne.
4. Brug pladsholderne `{page}` og `{total}` til dynamisk sidenummerering.
5. Juster skriftstørrelse og skriftfarve, og begræns eventuelt til et bestemt sideinterval.
6. Klik på **Tilføj sidehoved og sidefod** for at behandle og downloade.
## Indstillinger
- **Sideinterval**: Begræns eventuelt, hvilke sider der får sidehoved og sidefod. Lad feltet stå tomt for at anvende det på alle sider. Format: "1-3, 5" (kommaseparerede intervaller).
- **Skriftstørrelse**: Mellem 6 og 24 punkter. Standard er 10.
- **Skriftfarve**: Vælg en vilkårlig farve med farvevælgeren.
- **Sidehoved venstre / midten / højre**: Tekstfelter øverst på hver side.
- **Sidefod venstre / midten / højre**: Tekstfelter nederst på hver side.
## Funktioner
- Seks uafhængige tekstpositioner pr. side
- Dynamisk `{page}`-variabel, der indsætter det aktuelle sidetal
- Dynamisk `{total}`-variabel, der indsætter det samlede sideantal
- Filtrering på sideinterval for at ramme bestemte sider
- Tilpasselig skriftstørrelse og farve
- Helvetica-skrifttype for et rent, professionelt resultat
## Anvendelsesområder
- Tilføjelse af "Side {page} af {total}" i midten af sidefoden i en rapport
- Placering af et firmanavn i sidehovedet til venstre og en dokumentdato i sidehovedet til højre
- Tilføjelse af fortrolighedsmeddelelser i sidefoden i juridiske dokumenter
- Stempling af dokumentrevisionsnumre på bestemte sideintervaller
## Tips
- Kombinér `{page}` og `{total}` i ét felt til formater som "Side {page} af {total}" eller "{page}/{total}".
- Du kan lade de fleste felter stå tomme og kun udfylde de positioner, du har brug for. Tomme felter springes blot over.
- Til mere komplekse sidehoveder med billeder eller logoer kan du overveje værktøjet [Tilføj vandmærke](./add-watermark) placeret øverst på siden.
## Relaterede værktøjer
- [Sidetal](./page-numbers)
- [Tilføj vandmærke](./add-watermark)
- [Bates-nummerering](./bates-numbering)
+46
View File
@@ -0,0 +1,46 @@
---
title: HEIC til PDF
description: Konvertér HEIC- og HEIF-billeder fra iPhones og iPads til PDF-format direkte i din browser.
---
# HEIC til PDF
Konvertér HEIC/HEIF-billeder til PDF. HEIC har været standardfotoformatet på iPhones og iPads siden iOS 11. Med dette værktøj kan du omdanne disse fotos til PDF'er uden at installere desktopsoftware eller uploade filer til en server.
## Understøttede formater
| Format | Filtypenavne |
| :----- | :----------- |
| HEIC | `.heic` |
| HEIF | `.heif` |
## Sådan fungerer det
1. Klik på uploadområdet, eller træk og slip dine HEIC/HEIF-filer.
2. Gennemgå fillisten, og fjern uønskede filer.
3. Klik på **Konvertér til PDF**. Resultatet downloades som `from_heic.pdf`.
Hver HEIC-fil afkodes med biblioteket heic2any, som konverterer den til PNG i 92 % kvalitet. PNG-billedet indlejres derefter i PDF'en med pdf-lib, med ét billede pr. side i fuld opløsning.
## Indstillinger
Dette værktøj har ingen yderligere indstillinger. HEIC-billeder konverteres i høj kvalitet (0,92) til PNG, før de indlejres.
## Anvendelsesområder
- Oprettelse af en PDF af iPhone-fotos til at vedhæfte en forsikringsanmeldelse eller rapport
- Konvertering af HEIC-fotos til en boligannonce til ét udskrivbart dokument
- Omdannelse af iPad-skærmbilleder (HEIF-format) til en delbar PDF
- Batchkonvertering af feriebilleder til en rejsedagbog
## Tips
- HEIC-afkodning sker udelukkende i browseren med WebAssembly. Den første konvertering kan tage et øjeblik, mens afkoderen indlæses.
- Hvis du skal blande HEIC med andre billedformater (JPG, PNG osv.), kan du bruge værktøjet [Billeder til PDF](./image-to-pdf), som håndterer HEIC sammen med alle andre formater.
- HEIC-filer fra iPhones indeholder ofte EXIF-data, herunder GPS-koordinater. PDF-outputtet medtager ikke disse metadata.
## Relaterede værktøjer
- [Billeder til PDF](./image-to-pdf)
- [JPG til PDF](./jpg-to-pdf)
- [PNG til PDF](./png-to-pdf)
+65
View File
@@ -0,0 +1,65 @@
---
title: Billeder til PDF
description: Konvertér JPG, PNG, BMP, GIF, TIFF, SVG, HEIC, WebP, PSD og 10+ andre billedformater til én PDF-fil.
---
# Billeder til PDF
Den universelle billede-til-PDF-konverter. Upload billeder i stort set ethvert format, og kombinér dem i ét PDF-dokument. Hvert billede får sin egen side, der svarer til de oprindelige mål.
## Understøttede formater
| Format | Filtypenavne |
| :-------------- | :------------------------------------- |
| 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` |
Dette er den bredeste formatunderstøttelse af alle BentoPDF's billedkonvertere. Hvis du kun har brug for ét bestemt format, kan du bruge et af de dedikerede værktøjer i stedet.
## Sådan fungerer det
1. Klik på uploadområdet, eller træk og slip dine billedfiler. Du kan vælge flere filer på én gang.
2. Gennemgå fillisten. Fjern uønskede filer med papirkurv-ikonet, eller klik på **Tilføj flere filer** for at tilføje flere billeder.
3. Vælg et **PDF-kvalitetsniveau** i rullelisten.
4. Klik på **Konvertér til PDF**. Værktøjet behandler billederne med PyMuPDF-motoren og downloader resultatet som `images_to_pdf.pdf`.
## Indstillinger
**PDF-kvalitet** styrer den billedkomprimering, der anvendes, når billeder indlejres i PDF'en:
- **Høj kvalitet**: minimal komprimering, større filstørrelse. Bedst til udskrivning eller arkivering.
- **Mellem kvalitet** (standard): afbalanceret komprimering. God til de fleste formål.
- **Lav kvalitet**: kraftig komprimering, mindste filstørrelse. Velegnet til e-mail eller hurtig deling.
HEIC- og WebP-filer konverteres automatisk til PNG, før de indlejres. Det sker gennemsigtigt og kræver ingen ekstra trin.
## Anvendelsesområder
- Kombinering af scannede kvitteringer eller dokumenter fra et telefonkamera i én PDF
- Oprettelse af en fotoportefølje eller lookbook af billeder i blandede formater
- Konvertering af iPhone-fotos (HEIC) til en delbar PDF uden at installere desktopsoftware
- Samling af designskitser fra PSD-eksporter og skærmbilleder til en kundeleverance
- Arkivering af en mappe med ældre billedformater (PNM, JXR, JP2) som én PDF
## Tips
- Rækkefølgen af billederne i PDF'en svarer til rækkefølgen i fillisten. Upload dem i den rækkefølge, du ønsker.
- For den mindst mulige filstørrelse skal du vælge Lav kvalitet. Den visuelle forskel er ofte ubetydelig for tekstbaserede scanninger.
- Hvis du kun har ét billedformat, giver de dedikerede konvertere (JPG til PDF, PNG til PDF osv.) det samme resultat med en enklere grænseflade.
## Relaterede værktøjer
- [JPG til PDF](./jpg-to-pdf)
- [PNG til PDF](./png-to-pdf)
- [HEIC til PDF](./heic-to-pdf)
- [WebP til PDF](./webp-to-pdf)
+183
View File
@@ -0,0 +1,183 @@
# Værktøjsoversigt
BentoPDF tilbyder **130+ værktøjer** til arbejde med PDF'er. Alle værktøjer kører udelukkende i din browser, og dine filer forlader aldrig din enhed.
---
## Redigér og annotér
Rediger, markér og forbedr dine PDF-dokumenter med en komplet samling redigeringsværktøjer.
<div class="tool-grid">
- [**PDF-editor**](./edit-pdf): Annotér, fremhæv, redigér, kommentér, tilføj former/billeder, søg i og vis PDF'er.
- [**Redigér bogmærker**](./bookmark): Tilføj, redigér, importér, slet og udtræk PDF-bogmærker.
- [**Indholdsfortegnelse**](./table-of-contents): Generér en indholdsfortegnelsesside ud fra PDF-bogmærker.
- [**Sidetal**](./page-numbers): Indsæt sidetal i dit dokument.
- [**Tilføj sideetiketter**](./add-page-labels): Anvend PDF-sideetiketter med romertal, præfikser og brugerdefinerede startværdier.
- [**Bates-nummerering**](./bates-numbering): Tilføj fortløbende Bates-numre på tværs af en eller flere PDF-filer.
- [**Tilføj vandmærke**](./add-watermark): Stempl tekst eller et billede over dine PDF-sider.
- [**Sidehoved og sidefod**](./header-footer): Tilføj tekst øverst og nederst på siderne.
- [**Invertér farver**](./invert-colors): Opret en mørk version af din PDF.
- [**Scannereffekt**](./scanner-effect): Få din PDF til at ligne et scannet dokument.
- [**Justér farver**](./adjust-colors): Finjustér lysstyrke, kontrast, mætning og mere.
- [**Baggrundsfarve**](./background-color): Skift baggrundsfarven i din PDF.
- [**Skift tekstfarve**](./text-color): Skift farven på teksten i din PDF.
- [**Underskriv PDF**](./sign-pdf): Tegn, skriv eller upload din underskrift.
- [**Tilføj stempler**](./add-stamps): Tilføj billedstempler til din PDF med annotationsværktøjslinjen.
- [**Fjern annotationer**](./remove-annotations): Fjern kommentarer, fremhævninger og links.
- [**Beskær PDF**](./crop-pdf): Beskær margenerne på alle sider i din PDF.
- [**PDF-formularudfylder**](./form-filler): Udfyld formularer direkte i browseren. Understøtter også XFA-formularer.
- [**Opret PDF-formular**](./form-creator): Opret udfyldelige PDF-formularer med træk-og-slip-tekstfelter.
- [**Fjern tomme sider**](./remove-blank-pages): Find og slet tomme sider automatisk.
</div>
---
## Konvertér til PDF
Omdan billeder, dokumenter, ebøger og andre filformater til PDF.
<div class="tool-grid">
- [**Billeder til PDF**](./image-to-pdf): Konvertér JPG, PNG, BMP, GIF, TIFF, SVG, HEIC, WebP og flere til PDF.
- [**JPG til PDF**](./jpg-to-pdf): Opret en PDF fra et eller flere JPG-billeder.
- [**PNG til PDF**](./png-to-pdf): Opret en PDF fra et eller flere PNG-billeder.
- [**WebP til PDF**](./webp-to-pdf): Opret en PDF fra et eller flere WebP-billeder.
- [**SVG til PDF**](./svg-to-pdf): Opret en PDF fra et eller flere SVG-billeder.
- [**BMP til PDF**](./bmp-to-pdf): Opret en PDF fra et eller flere BMP-billeder.
- [**HEIC til PDF**](./heic-to-pdf): Opret en PDF fra et eller flere HEIC-billeder.
- [**TIFF til PDF**](./tiff-to-pdf): Opret en PDF fra et eller flere TIFF-billeder.
- [**Tekst til PDF**](./txt-to-pdf): Konvertér en almindelig tekstfil til en PDF.
- [**Markdown til PDF**](./markdown-to-pdf): Konvertér Markdown til PDF med live forhåndsvisning og syntaksfremhævning.
- [**JSON til PDF**](./json-to-pdf): Konvertér JSON-filer til PDF-format.
- [**ODT til PDF**](./odt-to-pdf): Konvertér ODT-filer (OpenDocument Text) til PDF.
- [**CSV til PDF**](./csv-to-pdf): Konvertér CSV-regneark til PDF.
- [**RTF til PDF**](./rtf-to-pdf): Konvertér RTF-dokumenter (Rich Text Format) til PDF.
- [**Word til PDF**](./word-to-pdf): Konvertér Word-dokumenter (DOCX, DOC, ODT) til PDF.
- [**Excel til PDF**](./excel-to-pdf): Konvertér Excel-regneark (XLSX, XLS, ODS) til PDF.
- [**PowerPoint til PDF**](./powerpoint-to-pdf): Konvertér PowerPoint-præsentationer (PPTX, PPT, ODP) til PDF.
- [**XPS til PDF**](./xps-to-pdf): Konvertér XPS/OXPS-dokumenter til PDF.
- [**MOBI til PDF**](./mobi-to-pdf): Konvertér MOBI-ebøger til PDF.
- [**EPUB til PDF**](./epub-to-pdf): Konvertér EPUB-ebøger til PDF.
- [**FB2 til PDF**](./fb2-to-pdf): Konvertér FictionBook-ebøger (FB2) til PDF.
- [**CBZ til PDF**](./cbz-to-pdf): Konvertér tegneserie-arkiver (CBZ/CBR) til PDF.
- [**WPD til PDF**](./wpd-to-pdf): Konvertér WordPerfect-dokumenter (WPD) til PDF.
- [**WPS til PDF**](./wps-to-pdf): Konvertér WPS Office-dokumenter til PDF.
- [**XML til PDF**](./xml-to-pdf): Konvertér XML-dokumenter til PDF.
- [**ODG til PDF**](./odg-to-pdf): Konvertér OpenDocument Graphics (ODG) til PDF.
- [**ODS til PDF**](./ods-to-pdf): Konvertér OpenDocument Spreadsheet (ODS) til PDF.
- [**ODP til PDF**](./odp-to-pdf): Konvertér OpenDocument Presentation (ODP) til PDF.
- [**PUB til PDF**](./pub-to-pdf): Konvertér Microsoft Publisher (PUB) til PDF.
- [**VSD til PDF**](./vsd-to-pdf): Konvertér Microsoft Visio (VSD, VSDX) til PDF.
- [**PSD til PDF**](./psd-to-pdf): Konvertér Adobe Photoshop-filer (PSD) til PDF.
- [**Email til PDF**](./email-to-pdf): Konvertér e-mailfiler (EML, MSG) til PDF-format.
</div>
---
## Konvertér fra PDF
Udtræk indhold fra PDF'er til billeder, dokumenter og dataformater.
<div class="tool-grid">
- [**PDF til JPG**](./pdf-to-jpg): Konvertér hver PDF-side til et JPG-billede.
- [**PDF til PNG**](./pdf-to-png): Konvertér hver PDF-side til et PNG-billede.
- [**PDF til WebP**](./pdf-to-webp): Konvertér hver PDF-side til et WebP-billede.
- [**PDF til BMP**](./pdf-to-bmp): Konvertér hver PDF-side til et BMP-billede.
- [**PDF til TIFF**](./pdf-to-tiff): Konvertér hver PDF-side til et TIFF-billede.
- [**PDF til CBZ**](./pdf-to-cbz): Konvertér en PDF til et CBZ-arkiv (Comic Book Archive) til tegneserielæsere og Calibre.
- [**PDF til SVG**](./pdf-to-svg): Konvertér hver PDF-side til en skalerbar vektorgrafik.
- [**PDF til CSV**](./pdf-to-csv): Udtræk tabeller fra PDF, og konvertér dem til CSV-format.
- [**PDF til Excel**](./pdf-to-excel): Udtræk tabeller fra PDF, og konvertér dem til Excel (XLSX).
- [**PDF til gråtoner**](./pdf-to-greyscale): Konvertér alle farver til sort og hvid.
- [**PDF til JSON**](./pdf-to-json): Konvertér PDF-filer til JSON-format.
- [**PDF til Word**](./pdf-to-word): Konvertér PDF-filer til redigerbare Word-dokumenter.
- [**Udtræk billeder**](./extract-images): Udtræk alle indlejrede billeder fra dine PDF-filer.
- [**PDF til Markdown**](./pdf-to-markdown): Konvertér PDF-tekst og -tabeller til Markdown-format.
- [**Forbered PDF til AI**](./prepare-pdf-for-ai): Udtræk PDF-indhold som LlamaIndex JSON til RAG/LLM-pipelines.
- [**PDF til tekst**](./pdf-to-text): Udtræk tekst fra PDF-filer, og gem den som almindelig tekst.
- [**Udtræk PDF-tabeller**](./extract-tables): Udtræk tabeller fra PDF'er som CSV, JSON eller Markdown.
</div>
---
## Organisér og administrér
Omarranger, kombinér, opdel og administrér dine PDF-sider og -filer.
<div class="tool-grid">
- [**PDF Workflow-bygger**](./pdf-workflow): Byg brugerdefinerede PDF-behandlingspipelines med en visuel nodeeditor.
- [**PDF Multi-værktøj**](./pdf-multi-tool): Fuldt udstyret PDF-editor med sideadministration.
- [**OCR PDF**](./ocr-pdf): Gør en PDF søgbar og kopierbar.
- [**Flet PDF**](./merge-pdf): Kombinér flere PDF'er til én fil.
- [**Alternér og miks sider**](./alternate-merge): Flet PDF'er ved at skiftevis tage sider fra hver PDF.
- [**Sortér dupleks-scanning**](./duplex-collate): Omordn blokke af for- og bagsidescanninger til den rigtige sidesekvens.
- [**Duplikér og organisér**](./organize-pdf): Duplikér, omarranger og slet sider.
- [**Tilføj vedhæftninger**](./add-attachments): Indlejr en eller flere filer i din PDF.
- [**Udtræk vedhæftninger**](./extract-attachments): Udtræk alle indlejrede filer fra PDF'er som en ZIP-fil.
- [**Redigér vedhæftninger**](./edit-attachments): Se eller fjern vedhæftninger i din PDF.
- [**PDF OCG**](./pdf-layers): Vis, skift, tilføj og slet OCG-lag i din PDF.
- [**Opdel PDF**](./split-pdf): Udtræk et sideinterval til en ny PDF.
- [**Opdel sider**](./divide-pages): Opdel sider vandret eller lodret.
- [**Udtræk sider**](./extract-pages): Gem et udvalg af sider som nye filer.
- [**Slet sider**](./delete-pages): Fjern bestemte sider fra dit dokument.
- [**Tilføj tom side**](./add-blank-page): Indsæt en tom side hvor som helst i din PDF.
- [**Vend sider**](./reverse-pages): Vend rækkefølgen af alle sider i dit dokument.
- [**Roter PDF**](./rotate-pdf): Drej sider i trin på 90 grader.
- [**Roter med brugerdefineret vinkel**](./rotate-custom): Roter sider med en vilkårlig vinkel.
- [**N-Up PDF**](./n-up-pdf): Arrangér flere sider på ét ark.
- [**PDF-hæfte**](./pdf-booklet): Omarranger sider til dobbeltsidet hæfteudskrivning.
- [**Kombinér til én side**](./combine-single-page): Sammensæt alle sider til én sammenhængende rulleside.
- [**Vis metadata**](./view-metadata): Undersøg de skjulte egenskaber i din PDF.
- [**Redigér metadata**](./edit-metadata): Skift forfatter, titel og andre egenskaber.
- [**PDF'er til ZIP**](./pdf-to-zip): Pak flere PDF-filer i et ZIP-arkiv.
- [**Sammenlign PDF'er**](./compare-pdfs): Sammenlign to PDF'er side om side.
- [**Posterisér PDF**](./posterize-pdf): Opdel en stor side i flere mindre sider.
</div>
---
## Optimér og reparér
Komprimer, ret og optimér dine PDF'er for bedre ydeevne og kompatibilitet.
<div class="tool-grid">
- [**Komprimer PDF**](./compress-pdf): Reducer filstørrelsen på din PDF.
- [**PDF til PDF/A**](./pdf-to-pdfa): Konvertér PDF til PDF/A til langtidsarkivering.
- [**Ret sidestørrelse**](./fix-page-size): Standardisér alle sider til en ensartet størrelse.
- [**Lineariser PDF**](./linearize-pdf): Optimér PDF til hurtig visning på nettet.
- [**Sidestørrelser**](./page-dimensions): Analysér sidestørrelse, orientering og enheder.
- [**Fjern begrænsninger**](./remove-restrictions): Fjern adgangskodebeskyttelse og sikkerhedsbegrænsninger.
- [**Reparér PDF**](./repair-pdf): Gendan data fra korrupte eller beskadigede PDF-filer.
- [**Rasterisér PDF**](./rasterize-pdf): Konvertér PDF til billedbaseret PDF. Flad lag ud, og fjern markerbar tekst.
- [**Ret skæve sider**](./deskew-pdf): Ret automatisk skæve scannede sider ud med OpenCV.
- [**Skrifttype til kontur**](./font-to-outline): Konvertér alle skrifttyper til vektorkonturer for ensartet gengivelse.
</div>
---
## Sikr PDF
Beskyt, kryptér og kontrollér adgangen til dine PDF-dokumenter.
<div class="tool-grid">
- [**Kryptér PDF**](./protect-pdf): Lås din PDF ved at tilføje en adgangskode.
- [**Rens PDF**](./sanitize-pdf): Fjern metadata, annotationer, scripts og mere.
- [**Dekryptér PDF**](./unlock-pdf): Lås PDF op ved at fjerne adgangskodebeskyttelse.
- [**Fladgør PDF**](./flatten-pdf): Gør formularfelter og annotationer uredigerbare.
- [**Fjern metadata**](./remove-metadata): Fjern skjulte data fra din PDF.
- [**Skift tilladelser**](./change-permissions): Angiv eller skift brugertilladelser på en PDF.
- [**Digital signatur PDF**](./digital-sign-pdf): Tilføj en kryptografisk digital signatur med X.509-certifikater.
- [**Validér PDF-signatur**](./validate-signature-pdf): Bekræft digitale signaturer, og se certifikatoplysninger.
</div>
+42
View File
@@ -0,0 +1,42 @@
---
title: Invertér farver
description: Invertér alle farver i din PDF for at oprette en mørk version af ethvert dokument.
---
# Invertér farver
Vend hver farve i din PDF om til sin modsætning. Hvide baggrunde bliver sorte, sort tekst bliver hvid, og alle andre farver skifter til deres komplementærfarver. Det er den hurtigste måde at lave en "mørk tilstand"-version af enhver PDF.
## Sådan fungerer det
1. Upload din PDF-fil.
2. Klik på **Invertér farver** for at behandle.
3. Den inverterede PDF downloades automatisk.
Der er ingen yderligere indstillinger. Værktøjet gengiver hver side som et billede, inverterer alle pixelfarver og samler resultatet i en ny PDF.
## Funktioner
- Farveinvertering med ét klik for alle sider
- Behandler hver side i dokumentet
- Bevarer de oprindelige sidemål og layout
- Virker med enhver PDF uanset indholdstype (tekst, billeder, blandet)
## Anvendelsesområder
- Oprettelse af mørke versioner af lærebøger eller manualer til behagelig læsning om aftenen
- Klargøring af højkontrastversioner af dokumenter af hensyn til tilgængelighed
- Invertering af scannede dokumenter, der er optaget med forkert eksponering
- Generering af negative versioner af billedtunge PDF'er til visuel analyse
## Tips
- Da værktøjet rasteriserer siderne for at opnå effekten, er outputtet billedbaseret. Tekst kan ikke længere markeres eller søges i. Hvis du har brug for søgbar tekst efter invertering, kan du køre outputtet gennem et OCR-værktøj.
- Til mere detaljerede farvejusteringer (lysstyrke, kontrast, mætning) kan du bruge værktøjet [Justér farver](./adjust-colors) i stedet.
- Store PDF'er med mange sider kan tage længere tid at behandle, da hver side gengives og inverteres individuelt.
## Relaterede værktøjer
- [Justér farver](./adjust-colors)
- [Baggrundsfarve](./background-color)
- [Scannereffekt](./scanner-effect)
+48
View File
@@ -0,0 +1,48 @@
---
title: JPG til PDF
description: Konvertér et eller flere JPG-, JPEG- og JPEG 2000-billeder til én PDF-fil direkte i din browser.
---
# JPG til PDF
Omdan JPG-billeder til en ren PDF. Upload én fil, eller saml flere JPG'er i en batch. Hvert billede bliver til en fuldstørrelsesside i det færdige dokument.
## Understøttede formater
| Format | Filtypenavne |
| :-------- | :-------------- |
| JPEG | `.jpg`, `.jpeg` |
| JPEG 2000 | `.jp2`, `.jpx` |
## Sådan fungerer det
1. Klik på uploadområdet, eller træk og slip dine JPG-filer. Flere filer kan vælges.
2. Gennemgå de uploadede filer. Brug papirkurv-ikonet til at fjerne enkelte filer, eller klik på **Tilføj flere filer** for at tilføje til listen.
3. Vælg et **PDF-kvalitetsniveau**.
4. Klik på **Konvertér til PDF**. Værktøjet komprimerer billederne efter din kvalitetsindstilling, konverterer dem via PyMuPDF-motoren og downloader `from_jpgs.pdf`.
## Indstillinger
**PDF-kvalitet** justerer den komprimering, der anvendes på hvert billede, før det indlejres i PDF'en:
- **Høj kvalitet**: bevarer maksimal detaljegrad. Brug til fotografi eller udskrivning.
- **Mellem kvalitet** (standard): en solid balance mellem klarhed og filstørrelse.
- **Lav kvalitet**: kraftig komprimering for det mindste output.
## Anvendelsesområder
- Konvertering af scannede dokumenter gemt som JPG'er til én PDF til indsendelse
- Samling af produktfotos i et katalog til kunder
- Omdannelse af JPEG 2000-billeder fra medicin eller satellitter til en bærbar PDF
- Oprettelse af et udskrivbart fotoalbum fra kameraeksporter
## Tips
- JPEG 2000-filer (`.jp2`, `.jpx`) understøttes fuldt ud, ikke kun standard-JPEG. Det er nyttigt til medicinsk billeddannelse og geospatiale data.
- Hvis dine JPG'er kommer fra et telefonkamera, giver Mellem kvalitet normalt en fil, der er 40-60 % mindre end Høj uden synlig forskel på skærmen.
## Relaterede værktøjer
- [Billeder til PDF](./image-to-pdf)
- [PNG til PDF](./png-to-pdf)
- [WebP til PDF](./webp-to-pdf)
+53
View File
@@ -0,0 +1,53 @@
---
title: JSON til PDF
description: Genskab PDF-filer fra BentoPDF's JSON-format. Konvertér JSON-eksporter tilbage til deres oprindelige PDF-dokumenter.
---
# JSON til PDF
Genskab PDF-dokumenter fra JSON-filer, der tidligere er oprettet med BentoPDF's værktøj **PDF til JSON**. Dette er et værktøj til rundturskonvertering: det tager den strukturerede JSON-repræsentation af en PDF og genopbygger det oprindelige dokument.
::: warning
Dette værktøj accepterer kun JSON-filer, der er oprettet af BentoPDF's PDF-til-JSON-konverter. Almindelige JSON-filer fra API'er, databaser eller andre værktøjer understøttes ikke.
:::
## Understøttede formater
| Input | Beskrivelse |
| :------ | :-------------------------------------------------------- |
| `.json` | JSON-filer eksporteret af BentoPDF's PDF-til-JSON-værktøj |
## Sådan fungerer det
1. Klik på uploadområdet, eller træk og slip en eller flere JSON-filer.
2. Fillisten viser hver valgt fil med dens størrelse.
3. Klik på **Konvertér til PDF**. Værktøjet behandler alle filer med en Web Worker og CPDF-motoren.
4. Outputtet downloades som `jsons-to-pdf.zip` med én PDF pr. input-JSON-fil.
Konverteringen kører i en Web Worker i baggrunden, så brugerfladen forbliver responsiv, selv med store filer.
## Indstillinger
Dette værktøj har ingen konfigurerbare indstillinger. JSON-strukturen bestemmer fuldt ud den resulterende PDF.
## Output
Når flere JSON-filer konverteres, leveres resultaterne som et ZIP-arkiv. Hver PDF navngives efter sin kilde-JSON-fil (f.eks. bliver `report.json` til `report.pdf`).
## Anvendelsesområder
- Gendannelse af PDF'er fra en JSON-baseret backup eller arkiveringspipeline
- Rundtur for en PDF gennem JSON til inspektion og derefter tilbage til PDF
- Genopbygning af dokumenter efter programmatiske ændringer i JSON-strukturen
- Kontrol af, at en PDF-til-JSON-eksport har fanget alt dokumentindhold, ved at konvertere den tilbage
## Tips
- Hvis du skal konvertere vilkårlige JSON-data (som API-svar eller konfigurationsfiler) til en formateret PDF, passer værktøjet [Tekst til PDF](./txt-to-pdf) bedre. Indsæt JSON'en som tekst, så gengives den med korrekt formatering.
- CPDF WebAssembly-motoren skal være tilgængelig, for at dette værktøj virker. Selvhostede installationer skal have CPDF WASM-filerne konfigureret.
## Relaterede værktøjer
- [Tekst til PDF](./txt-to-pdf)
- [Markdown til PDF](./markdown-to-pdf)
- [CSV til PDF](./csv-to-pdf)
+49
View File
@@ -0,0 +1,49 @@
---
title: Lineariser PDF
description: Optimér PDF-filer til hurtig visning på nettet med progressiv indlæsning. Også kendt som "Fast Web View"-optimering.
---
# Lineariser PDF
Linearisering omstrukturerer en PDF, så den første side kan vises, før hele filen er downloadet. Adobe kalder det "Fast Web View". Hvis du hoster PDF'er på et websted eller leverer dem via en dokumentportal, gør linearisering dem mærkbart hurtigere at åbne.
## Sådan fungerer det
1. Upload en eller flere PDF-filer.
2. Klik på **Lineariser PDF(er)**.
3. Download resultaterne som et ZIP-arkiv med alle de lineariserede filer.
Der er ingen indstillinger at konfigurere. Værktøjet bruger QPDF's `--linearize`-flag, som omarrangerer PDF'ens interne struktur uden at ændre det visuelle indhold.
## Hvad linearisering gør
- Omordner PDF-objekter, så den første sides data ligger i begyndelsen af filen
- Tilføjer en lineariseringsordbog og hint-tabeller, så læsere ved, hvor hver side findes
- Muliggør byte-range-forespørgsler: en browser kan hente blot den første side uden at downloade hele filen
- Rydder op i krydsreferencetabellen for effektiv tilfældig adgang
## Funktioner
- Batchbehandling af flere PDF'er i én handling
- Outputtet bevarer alt indhold, alle skrifttyper, billeder og interaktive elementer
- Bruger QPDF (WebAssembly) til pålidelig, standardkompatibel linearisering
- Resultaterne pakkes i en ZIP-fil for nem download
## Anvendelsesområder
- Hosting af PDF-rapporter på et websted, hvor brugerne forventer øjeblikkelig sidevisning
- Indlejring af PDF'er i webapplikationer med viewere i browseren
- Udgivelse af PDF-kataloger eller manualer, der tilgås over langsomme mobilforbindelser
- Klargøring af dokumenter til content delivery networks (CDN'er), der understøtter byte-range-levering
## Tips
- Lineariser, når alle andre redigeringer er færdige. Enhver efterfølgende ændring (sammenfletning, tilføjelse af sider) ødelægger lineariseringen.
- Kombinér med Komprimer PDF for de mindste og hurtigst indlæste PDF'er.
- Linearisering tilføjer en lille ekstra mængde til filstørrelsen (typisk under 1 %).
## Relaterede værktøjer
- [Komprimer PDF](./compress-pdf): reducer filstørrelsen før linearisering
- [Reparér PDF](./repair-pdf): ret strukturelle problemer, der forhindrer linearisering
- [Fjern metadata](./remove-metadata): fjern metadata før udgivelse online
+59
View File
@@ -0,0 +1,59 @@
---
title: Markdown til PDF
description: Skriv eller indsæt Markdown, og eksportér det som en professionelt formateret PDF med live forhåndsvisning og syntaksfremhævning.
---
# Markdown til PDF
En fuldt udstyret Markdown-editor med live forhåndsvisning og PDF-eksport med ét klik. Skriv fra bunden, upload en eksisterende `.md`-fil, eller indsæt indhold fra udklipsholderen. Editoren gengiver din Markdown i realtid og eksporterer en formateret PDF med browserens indbyggede udskriftsmotor.
## Understøttede formater
| Input | Beskrivelse |
| :------------ | :---------------------------- |
| `.md`-filer | Upload med knappen Upload |
| Direkte input | Skriv eller indsæt i editoren |
## Sådan fungerer det
1. Åbn værktøjet Markdown til PDF. Editoren indlæses med delt visning: Markdown-kilde til venstre og gengivet forhåndsvisning til højre.
2. Skriv din Markdown, indsæt den, eller klik på **Upload** for at indlæse en `.md`-fil.
3. Skift mellem lyst og mørkt tema med temaskyderen på værktøjslinjen.
4. Klik på **Eksportér PDF** (eller tryk på `Ctrl/Cmd + S`) for at generere en PDF via browserens udskriftsdialog.
## Funktioner
Editoren understøtter et omfattende sæt Markdown-funktioner ud over det grundlæggende:
- **Standard-Markdown**: overskrifter, fed, kursiv, links, billeder, lister, blokcitater, vandrette streger
- **Kodeblokke** med syntaksfremhævning for 15+ sprog (JavaScript, TypeScript, Python, Go, Rust, SQL, Java, C#, C++, YAML, Bash og flere)
- **Mermaid-diagrammer**: rutediagrammer, sekvensdiagrammer, ER-diagrammer og andre Mermaid-diagramtyper gengives direkte i forhåndsvisningen
- **Tabeller** med standard Markdown-tabelsyntaks
- **Opgavelister** med afkrydsningsfelter
- **Fodnoter**, **sænket skrift**, **hævet skrift**
- **Definitionslister**, **forkortelser**
- Understøttelse af **emoji** (`:smile:` gengives som emojien)
- **Fremhævninger** (`==marked text==`) og **indsættelser** (`++inserted text++`)
- **Automatiske links**: almindelige URL'er konverteres til klikbare links
- Generering af **indholdsfortegnelse**
- **Ankerlinks** på overskrifter
## Anvendelsesområder
- Skrivning af projektdokumentation og eksport af en poleret PDF til interessenter
- Oprettelse af tekniske rapporter med kodeeksempler og Mermaid-arkitekturdiagrammer
- Konvertering af en GitHub README til en PDF til offlinebrug eller udskrivning
- Udarbejdelse af et forslag eller en specifikation med opgavelister og tabeller
- Generering af et formateret handout fra forelæsningsnotater skrevet i Markdown
## Tips
- PDF-outputtet bruger browserens funktion til at udskrive til PDF. I Chrome kan du tilpasse margener og skalering i udskriftsdialogen, før du gemmer.
- Mermaid-diagrammer gengives i forhåndsvisningen, men kan have brug for et øjeblik til at initialisere ved første brug.
- Brug `Ctrl/Cmd + S` som tastaturgenvej til at eksportere uden at række ud efter knappen.
## Relaterede værktøjer
- [Tekst til PDF](./txt-to-pdf)
- [Word til PDF](./word-to-pdf)
- [JSON til PDF](./json-to-pdf)
+54
View File
@@ -0,0 +1,54 @@
---
title: Flet PDF
description: Kombinér flere PDF-filer til ét dokument med omrokering via træk og slip og kontrol på sideniveau.
---
# Flet PDF
Kombinér flere PDF-filer til ét dokument. Du kan flette hele filer i en bestemt rækkefølge eller skifte til Sidetilstand for detaljeret kontrol over enkelte sider fra hver uploadet PDF.
## Sådan fungerer det
1. Upload to eller flere PDF-filer ved at klikke på slipzonen eller trække dem ind.
2. Vælg mellem **Filtilstand** og **Sidetilstand** med kontakten øverst.
3. I Filtilstand kan du trække filer for at omrokere dem og eventuelt angive sideintervaller (f.eks. `1-3, 5`) for hver fil. Lad intervallet stå tomt for at medtage alle sider.
4. I Sidetilstand kan du trække og slippe miniaturebilleder af enkelte sider for at opbygge din nøjagtige sidesekvens.
5. Klik på **Flet PDF'er** for at kombinere alt i én fil. Den flettede PDF downloades automatisk.
## Funktioner
- To fletningstilstande: Filtilstand til hurtig kombination af hele filer, Sidetilstand til kontrol pr. side
- Omrokering med træk og slip i begge tilstande med jævne animationer
- Sideintervalsyntaks (f.eks. `1-3, 5, 8-10`) lader dig udvælge sider uden at skifte til Sidetilstand
- Miniaturebilleder af sider, der indlæses ved behov, holder brugerfladen responsiv, selv med store dokumenter
- Ingen grænse for antallet af filer eller samlet sideantal
- Bevarer den oprindelige PDF-kvalitet uden genkodning
## Indstillinger
| Indstilling | Beskrivelse |
| ---------------- | --------------------------------------------------------------------------------------------------------- |
| **Filtilstand** | Flet hele filer i en brugerdefineret rækkefølge, med valgfrie sideintervalfiltre pr. fil |
| **Sidetilstand** | Visuelt gitter med alle sider fra alle filer: træk miniaturebilleder for at opbygge din nøjagtige sekvens |
| **Sidefelt** | Tekstfelt pr. fil, der accepterer intervaller som `1-3, 5` for kun at medtage bestemte sider |
## Anvendelsesområder
- Kombinering af separate kapitel-PDF'er til én bog eller rapport
- Sammenfletning af et følgebrev og et CV til ét ansøgningsdokument
- Hentning af bestemte sider fra flere kildedokumenter til en samlet fil
- Samling af scannede kvitteringer eller fakturaer i én arkiv-PDF
- Oprettelse af et præsentationshandout fra slides på tværs af flere præsentationer
## Tips
- Brug Sidetilstand, når du skal flette sider fra forskellige filer ind mellem hinanden i stedet for at føje én fil efter en anden.
- Du kan tilføje flere filer efter den første upload med knappen **Tilføj flere filer**, uden at miste din nuværende opstilling.
- Sideintervaller starter ved 1, så `1` henviser til den første side i den pågældende fil.
## Relaterede værktøjer
- [Opdel PDF](./split-pdf)
- [Duplikér og organisér](./organize-pdf)
- [Alternér og miks sider](./alternate-merge)
- [Slet sider](./delete-pages)
+43
View File
@@ -0,0 +1,43 @@
---
title: MOBI til PDF
description: Konvertér MOBI-ebogsfiler til PDF direkte i din browser. Gratis, privat, ingen filuploads.
---
# MOBI til PDF
Konvertér Amazon Kindle MOBI-ebøger til PDF-dokumenter. MOBI-filer er knyttet til Kindle-enheder og -apps, hvilket gør dem svære at læse andre steder. Ved at konvertere til PDF får du en bærbar version, som du kan åbne på enhver enhed eller udskrive.
## Understøttede formater
| Format | Filtypenavn | Bemærkninger |
| :----- | :---------- | :------------------------------ |
| MOBI | `.mobi` | Kindle-ebogsformat (Mobipocket) |
## Sådan fungerer det
1. Klik på uploadområdet, eller træk og slip en eller flere MOBI-filer.
2. Gennemgå fillisten. Fjern uønskede filer med papirkurv-ikonet, eller brug **Tilføj flere filer** for at tilføje flere ebøger.
3. Klik på **Konvertér til PDF**. PyMuPDF-motoren fortolker MOBI-strukturen og gengiver hver side som PDF-indhold.
4. En enkelt fil downloades som PDF. Når du konverterer flere filer, får du et ZIP-arkiv med navnet `mobi-converted.zip`.
## Indstillinger
Der er ikke brug for yderligere indstillinger. Konverteringen bevarer tekstindhold, formatering og indlejrede billeder fra den oprindelige MOBI-fil.
## Anvendelsesområder
- Læsning af indhold købt på Kindle på en e-læser uden Kindle, som kun understøtter PDF
- Udskrivning af kapitler fra en ebog til offlinestudie eller annotering
- Arkivering af dit personlige ebogsbibliotek i et universelt format
- Deling af uddrag med en person, der ikke har Kindle-appen installeret
## Tips
- DRM-beskyttede MOBI-filer kan ikke konverteres. Værktøjet virker kun med DRM-frie MOBI-filer.
- Store ebøger med mange indlejrede billeder kan tage et par sekunder længere at behandle, da alt sker i browseren.
## Relaterede værktøjer
- [EPUB til PDF](./epub-to-pdf)
- [FB2 til PDF](./fb2-to-pdf)
- [CBZ til PDF](./cbz-to-pdf)
+54
View File
@@ -0,0 +1,54 @@
---
title: N-Up PDF
description: Arrangér flere PDF-sider på ét ark i et gitterlayout til kompakt udskrivning.
---
# N-Up PDF
Placér flere sider på ét ark i et gitterarrangement. Det reducerer antallet af udskrevne sider ved at samle 2, 4, 6, 8, 9 eller 16 sider pr. ark. Værktøjet håndterer skalering, placering og valgfri konfiguration af sidestørrelse.
## Sådan fungerer det
1. Upload en PDF-fil.
2. Vælg antallet af sider pr. ark ("N"-værdien): 2, 4, 6, 8, 9 eller 16.
3. Vælg outputsidens størrelse (standard er A4) og orientering.
4. Konfigurér eventuelt afstand, kantfarve og baggrundsfarve.
5. Klik på behandlingsknappen. Værktøjet skalerer hver side og lægger dem i fliser på nye ark.
## Funktioner
- Gitterlayouts: 2-up, 4-up, 6-up, 8-up, 9-up og 16-up
- Konfigurerbar outputsidestørrelse og orientering
- Valgfri afstand mellem de placerede sider
- Indstillinger for baggrunds- og kantfarve
- Bevarer de oprindelige siders højde-bredde-forhold under skalering
## Indstillinger
| Indstilling | Beskrivelse |
| ------------------ | -------------------------------------------------------------- |
| **Sider pr. ark** | Antal oprindelige sider på hver outputside (2, 4, 6, 8, 9, 16) |
| **Sidestørrelse** | Outputarkets størrelse (A4, Letter, Legal osv.) |
| **Orientering** | Stående eller liggende for outputarket |
| **Afstand** | Mellemrum i punkter mellem de placerede sider |
| **Baggrundsfarve** | Fyldfarve til outputarkets baggrund |
| **Kantfarve** | Farve til kanter omkring hver placeret side |
## Anvendelsesområder
- Udskrivning af handouts med 4 slides pr. side for at spare papir
- Oprettelse af studieark med flere referencesider på ét ark
- Produktion af kompakte dokumentarkiver til opbevaring
- Generering af miniatureoversigtsark af et langt dokument
## Tips
- Liggende orientering fungerer ofte bedre til 2-up-layouts, mens stående normalt er bedst til 4-up og derover.
- Større afstand forbedrer læsbarheden, men reducerer det tilgængelige areal til hver placeret side.
- For den omvendte handling (opdeling af én side i flere) se [Posterisér PDF](./posterize-pdf).
## Relaterede værktøjer
- [Posterisér PDF](./posterize-pdf)
- [PDF-hæfte](./pdf-booklet)
- [Kombinér til én side](./combine-single-page)
+54
View File
@@ -0,0 +1,54 @@
---
title: OCR PDF
description: Gør scannede PDF'er søgbare og kopierbare med Tesseract OCR med understøttelse af flere sprog og tegnfiltrering.
---
# OCR PDF
Omdan scannede dokumenter til søgbare, kopierbare PDF'er. Værktøjet bruger Tesseract OCR til at genkende tekst i billeder og lægger et usynligt tekstlag oven på de oprindelige sider, så det visuelle udseende bevares, mens indholdet bliver fuldt søgbart.
## Sådan fungerer det
1. Upload en scannet PDF eller en billedbaseret PDF-fil.
2. Vælg et eller flere sprog, der findes i dokumentet, i den søgbare sprogliste.
3. Juster eventuelt avancerede indstillinger (opløsning, binarisering, whitelist).
4. Klik på **Start OCR**, og følg fremdriften i statuslinjen i realtid.
5. Når det er færdigt, kan du gennemgå den udtrukne tekst og derefter downloade den søgbare PDF eller en almindelig `.txt`-fil.
## Funktioner
- OCR på flere sprog med en søgbar sprogvælger
- Usynligt tekstlag bevarer dokumentets oprindelige udseende
- Statuslinje og logoutput i realtid under behandlingen
- Download resultater som søgbar PDF eller almindelig tekstfil
- Kopiér udtrukket tekst direkte til udklipsholderen
- Tre opløsningsniveauer til at afveje hastighed mod nøjagtighed
## Indstillinger
| Indstilling | Værdier | Standard | Formål |
| --------------------------------------- | ----------------------------------------------------------------------------------------------- | -------- | --------------------------------------------------------------------------------- |
| **Opløsning** | Standard (192 DPI), Høj (288 DPI), Ultra (384 DPI) | Høj | Højere opløsning forbedrer nøjagtigheden på lille tekst, men tager længere tid |
| **Binarisér billede** | Til / Fra | Fra | Forbedrer kontrasten for rene scanninger ved at konvertere til sort og hvid |
| **Forudindstilling for tegn-whitelist** | Ingen, Alfanumerisk, Tal + valuta, Kun bogstaver, Kun tal, Faktura, Formularer, Brugerdefineret | Ingen | Begrænser genkendte tegn for at forbedre nøjagtigheden for bestemte dokumenttyper |
| **Tegn-whitelist** | Fri tekst | Tom | Manuelt tegnsæt, når forudindstillingen er sat til Brugerdefineret |
## Anvendelsesområder
- Gør scannede kontrakter og fakturaer søgbare, så du kan bruge Ctrl+F i dem
- Udtrækning af tekst fra fotograferede dokumenter eller gamle papirarkiver
- Behandling af kvitteringer med forudindstillingen Faktura for nøjagtigt at fange beløb og datoer
- Oprettelse af tilgængelige PDF'er fra scanninger, der kun består af billeder, til compliancekrav
- Batchudtrækning af tekstindhold fra scannede bøger eller manualer
## Tips
- Vælg flere sprog, hvis dit dokument indeholder tekst på blandede sprog (f.eks. engelske overskrifter med japansk brødtekst).
- Brug binariseringsindstillingen til dokumenter med falmet tekst eller lav kontrast. Den kan forbedre genkendelsesnøjagtigheden markant.
- Forudindstillingerne Faktura og Formularer reducerer falske positiver kraftigt på strukturerede dokumenter ved at ignorere irrelevante tegnformer.
## Relaterede værktøjer
- [Udtræk PDF-tabeller](./extract-tables)
- [Flet PDF](./merge-pdf)
- [Komprimer PDF](./compress-pdf)
+43
View File
@@ -0,0 +1,43 @@
---
title: ODG til PDF
description: Konvertér LibreOffice Draw-filer (ODG) til PDF i din browser. Gratis, ingen upload, fuldt privat.
---
# ODG til PDF
Konvertér OpenDocument Graphics-filer til PDF. ODG er det oprindelige format for LibreOffice Draw og bruges til diagrammer, rutediagrammer og vektorillustrationer. Ved at konvertere til PDF bliver disse tegninger nemme at dele, udskrive og indlejre i andre dokumenter.
## Understøttede formater
| Format | Filtypenavn | Bemærkninger |
| :-------------------- | :---------- | :---------------------------------------- |
| OpenDocument Graphics | `.odg` | LibreOffice Draw- / OpenOffice Draw-filer |
## Sådan fungerer det
1. Klik på uploadområdet, eller træk og slip dine ODG-filer. Flere filer kan tilføjes på én gang.
2. Gennemgå fillisten. Fjern enkelte poster med papirkurv-ikonet, eller klik på **Tilføj flere filer** for at tilføje flere tegninger.
3. Klik på **Konvertér til PDF**. En LibreOffice-baseret motor indlæses i browseren og konverterer hver ODG-fil, så vektorgrafik, former og tekst bevares.
4. Én fil downloades direkte som PDF. Flere filer giver et ZIP-arkiv med navnet `odg-to-pdf.zip`.
## Indstillinger
Der kræves ingen yderligere indstillinger. Konverteringen bevarer de oprindelige sidemål, former, konnektorer og tekstbokse fra ODG-kilden.
## Anvendelsesområder
- Deling af LibreOffice Draw-diagrammer med kunder, der ikke har LibreOffice installeret
- Udskrivning af rutediagrammer og netværksdiagrammer oprettet i Draw
- Medtagelse af ODG-illustrationer i en rapport eller præsentation som indlejrede PDF'er
- Arkivering af tekniske tegninger i et format, der forbliver læsbart i årtier
## Tips
- Vektorelementer forbliver vektorer i PDF-outputtet, så resultatet skalerer rent til enhver udskriftsstørrelse.
- LibreOffice-motoren bruger et øjeblik på at initialisere ved første brug. Konverteringer i samme session derefter går hurtigere.
## Relaterede værktøjer
- [ODS til PDF](./ods-to-pdf)
- [ODP til PDF](./odp-to-pdf)
- [VSD til PDF](./vsd-to-pdf)
+44
View File
@@ -0,0 +1,44 @@
---
title: ODP til PDF
description: Konvertér LibreOffice Impress-præsentationer (ODP) til PDF i din browser. Gratis, privat, ingen upload.
---
# ODP til PDF
Konvertér OpenDocument Presentation-filer til PDF. ODP er det oprindelige format for LibreOffice Impress og en standardeksport fra Google Slides. Når præsentationer bliver til PDF'er, kan alle se dem uden præsentationssoftware, og slides udskrives rent.
## Understøttede formater
| Format | Filtypenavn | Bemærkninger |
| :------------------------ | :---------- | :------------------------------------------ |
| OpenDocument Presentation | `.odp` | LibreOffice Impress / Google Slides-eksport |
## Sådan fungerer det
1. Klik på uploadområdet, eller træk og slip dine ODP-filer. Du kan vælge flere præsentationer på én gang.
2. Gennemgå fillisten. Fjern poster med papirkurv-ikonet, eller brug **Tilføj flere filer** for at tilføje flere præsentationer.
3. Klik på **Konvertér til PDF**. Den LibreOffice-baserede motor behandler hver præsentation og producerer en PDF, hvor hvert slide bliver til en side.
4. En enkelt fil downloades som PDF. Flere filer leveres i et ZIP-arkiv med navnet `odp-to-pdf.zip`.
## Indstillinger
Ingen indstillinger at konfigurere. Hvert slide gengives i sine oprindelige mål, så tekst, billeder, former og slidebaggrunde bevares.
## Anvendelsesområder
- Udlevering af en præsentation til et publikum som handout-PDF
- Deling af Google Slides-eksporter med personer, der foretrækker PDF frem for ODP
- Arkivering af konferenceindlæg og forelæsninger i et skrivebeskyttet format
- Udskrivning af slideshows til workshops på stedet
## Tips
- Slideovergange og animationer er rent visuelle funktioner, der ikke overføres til PDF, men alt statisk indhold gengives korrekt.
- Talenoter medtages ikke i PDF-outputtet. Hvis du har brug for noter, skal du eksportere dem separat fra din præsentationssoftware.
- Ligesom de andre LibreOffice-baserede værktøjer indlæses motoren ved første brug og forbliver cachet i sessionen.
## Relaterede værktøjer
- [ODG til PDF](./odg-to-pdf)
- [ODS til PDF](./ods-to-pdf)
- [PUB til PDF](./pub-to-pdf)
+44
View File
@@ -0,0 +1,44 @@
---
title: ODS til PDF
description: Konvertér LibreOffice Calc-regneark (ODS) til PDF i din browser. Gratis, privat, uden tilmelding.
---
# ODS til PDF
Konvertér OpenDocument Spreadsheet-filer til PDF. ODS er det oprindelige format i LibreOffice Calc og en almindelig eksport fra Google Sheets. Værktøjet gengiver dine regnearksdata, formatering og diagrammer som en PDF med sideinddeling, som du kan udskrive eller dele.
## Understøttede formater
| Format | Filtypenavn | Noter |
| :----------------------- | :---------- | :--------------------------------------- |
| OpenDocument Spreadsheet | `.ods` | LibreOffice Calc / Google Sheets-eksport |
## Sådan fungerer det
1. Klik på uploadområdet, eller træk og slip dine ODS-filer. Flere filer understøttes.
2. Gennemgå fillisten. Brug papirkurvsikonet til at fjerne filer, eller klik på **Tilføj flere filer** for at udvide batchen.
3. Klik på **Konvertér til PDF**. LibreOffice-baseret motor indlæses i browseren og gengiver hvert regneark som PDF-sider.
4. Et enkelt regneark downloades som en PDF. Flere filer pakkes i `ods-to-pdf.zip`.
## Indstillinger
Ingen konfiguration er nødvendig. Konverteren bruger regnearkets eksisterende udskriftslayout, cellformatering og kolonnebredder i PDF-outputtet.
## Anvendelser
- Dele et budget eller en rapport fra LibreOffice Calc med en, der kun accepterer PDF-filer
- Udskrive en Google Sheets-eksport, der blev downloadet som ODS
- Arkivere økonomiske optegnelser i et format, der ikke kan redigeres
- Indsende ODS-baserede formularer eller timesedler som dokumenter med fast layout
## Tips
- Hvis dit regneark har flere ark, medtages alle ark i PDF-outputtet.
- Meget brede regneark kan fordele sig over flere PDF-sider vandret. Overvej at justere kolonnebredderne i kildefilen før konvertering, hvis layoutet er vigtigt.
- LibreOffice-motoren initialiseres ved første brug. Efterfølgende konverteringer i samme session går hurtigere.
## Relaterede værktøjer
- [ODG til PDF](./odg-to-pdf)
- [ODP til PDF](./odp-to-pdf)
- [XML til PDF](./xml-to-pdf)
+51
View File
@@ -0,0 +1,51 @@
---
title: ODT til PDF
description: Konvertér OpenDocument Text-filer (ODT) til PDF i din browser med en LibreOffice-drevet motor.
---
# ODT til PDF
Konvertér OpenDocument Text-filer til PDF. ODT er det oprindelige format i LibreOffice Writer, Apache OpenOffice og andre open source-tekstbehandlingsprogrammer. Værktøjet bruger en browserbaseret LibreOffice-motor til at lave præcise konverteringer, der bevarer formatering, tabeller, billeder og typografier.
## Understøttede formater
| Format | Filtypenavne |
| :---------------- | :----------- |
| OpenDocument Text | `.odt` |
## Sådan fungerer det
1. Klik på uploadområdet, eller træk og slip en eller flere ODT-filer.
2. Gennemgå fillisten. Tilføj flere filer, eller fjern uønskede.
3. Klik på **Konvertér til PDF**. LibreOffice-motoren initialiseres (en statusindikator viser indlæsningen), og derefter konverteres hver fil.
4. En enkelt fil downloades direkte som PDF. Flere filer pakkes i `odt-converted.zip`.
## Indstillinger
Dette værktøj har ingen yderligere konfiguration. Konverteringen bevarer dokumentets oprindelige formatering så præcist som muligt.
## Output
| Antal inputfiler | Output |
| :--------------- | :------------------------------------------------- |
| 1 fil | Enkelt PDF-download (f.eks. `document.pdf`) |
| 2+ filer | ZIP-arkiv (`odt-converted.zip`) med én PDF pr. fil |
## Anvendelser
- Konvertere LibreOffice Writer-dokumenter til PDF, så de kan deles med Microsoft Office-brugere
- Lave udskriftsklare PDF-filer af akademiske artikler skrevet i OpenDocument-format
- Batchkonvertere en mappe med ODT-skabeloner til PDF-filer til distribution
- Generere PDF-filer fra ODT-filer oprettet af automatiske dokumentgenereringssystemer
## Tips
- LibreOffice-motoren indlæses ved første brug og gemmes i cachen til efterfølgende konverteringer. Den første indlæsning tager nogle sekunder, derefter går konverteringerne hurtigt.
- Komplekse dokumenter med indlejrede OLE-objekter eller usædvanlige skrifttyper kan gengives en smule anderledes end i LibreOffice på computeren. Test med en prøve, før du batchkonverterer.
- Til Word-dokumenter (`.doc`, `.docx`) skal du bruge værktøjet [Word til PDF](./word-to-pdf), som også bruger LibreOffice-motoren, men accepterer Microsoft-formater direkte.
## Relaterede værktøjer
- [Word til PDF](./word-to-pdf)
- [RTF til PDF](./rtf-to-pdf)
- [Tekst til PDF](./txt-to-pdf)
+45
View File
@@ -0,0 +1,45 @@
---
title: Duplikér og organisér
description: Omarranger, duplikér og slet PDF-sider med træk og slip-miniaturer og brugerdefineret siderækkefølge.
---
# Duplikér og organisér
Omarranger, duplikér og fjern sider i en PDF med en visuel træk og slip-grænseflade. Hver side vises som en miniature, som du kan flytte, kopiere eller slette, før du gemmer resultatet som en ny fil.
## Sådan fungerer det
1. Upload en enkelt PDF-fil.
2. Værktøjet gengiver et miniaturegitter med alle sider.
3. Træk miniaturer for at ændre rækkefølgen, klik på den grønne duplikeringsknap for at kopiere en side, eller klik på den røde sletteknap for at fjerne en.
4. Du kan også skrive en brugerdefineret siderækkefølge i tekstfeltet (f.eks. `3, 1, 2, 4`) og klikke på **Anvend** for at omarrangere alle sider på én gang.
5. Klik på procesknappen for at bygge og downloade den omorganiserede PDF.
## Funktioner
- Omarrangering af sider med træk og slip og animerede overgange
- Duplikerings- og sletteknapper for hver side
- Indtastning af brugerdefineret siderækkefølge til præcis omarrangering
- Sidetalsetiketter, der opdateres automatisk efter hver ændring
- Forhindrer sletning af den sidste resterende side
## Anvendelser
- Flytte en forkert placeret side til den rigtige position i en rapport
- Duplikere en formularside, så du har flere blanke kopier i én fil
- Fjerne kladde- eller pladsholdersider, før et dokument distribueres
- Vende eller blande siderækkefølgen som forberedelse til udskrivning
- Bygge en brugerdefineret sidesekvens uden at flette separate filer igen
## Tips
- Feltet til brugerdefineret rækkefølge forventer kommaseparerede oprindelige sidetal. Det skal indeholde hver side præcis én gang, uden udeladelser eller dubletter.
- Når du har duplikeret en side, refererer begge kopier til det samme oprindelige sideindeks. Du kan omarrangere hver kopi uafhængigt.
- Til masseoperationer på tværs af flere filer eller mere avancerede arbejdsgange kan du i stedet bruge [PDF Multi-værktøj](./pdf-multi-tool).
## Relaterede værktøjer
- [Flet PDF](./merge-pdf)
- [Slet sider](./delete-pages)
- [PDF Multi-værktøj](./pdf-multi-tool)
- [Vend sider](./reverse-pages)
+53
View File
@@ -0,0 +1,53 @@
---
title: Sidestørrelser
description: Analysér PDF-sidestørrelser, orienteringer, billedformater og rotation. Find dokumenter med blandede størrelser, og eksportér data til CSV.
---
# Sidestørrelser
Et diagnosticeringsværktøj, der læser hver side i din PDF og rapporterer dens præcise mål, orientering, standardstørrelsesnavn, billedformat, areal og rotation. Nyttigt til at opdage sider i blandede størrelser før udskrivning eller til at dokumentere egenskaberne for en PDF, du har modtaget.
## Sådan fungerer det
1. Upload en PDF-fil. Analysen starter automatisk, så der er ingen knap at trykke på.
2. Et oversigtspanel viser det samlede sideantal, antallet af unikke sidestørrelser, og om dokumentet har blandede størrelser.
3. Gennemse den fulde resultattabel med detaljer for hver side.
4. Skift visningsenhed mellem punkter, tommer, millimeter eller pixel.
5. Klik på **Eksportér til CSV** for at gemme dataene.
## Rapporterede felter
| Kolonne | Beskrivelse |
| ----------------- | ------------------------------------------------------ |
| Side nr. | Fortløbende sidetal |
| Mål | Bredde x højde i den valgte enhed |
| Standardstørrelse | Matchet navn (A4, Letter osv.) eller "Brugerdefineret" |
| Orientering | Stående eller liggende |
| Billedformat | Forholdet mellem bredde og højde som decimaltal |
| Areal | Sidens areal i den valgte enhed i anden |
| Rotation | Sidens rotation i grader |
## Funktioner
- Automatisk genkendelse af standardpapirstørrelser (A3, A4, A5, Letter, Legal, Tabloid og flere)
- Advarsel om blandede størrelser med en oversigt over, hvilke størrelser der forekommer, og hvor mange sider der bruger hver
- Enhedsomregning mellem punkter, tommer, millimeter og pixel (ved 96 PPI)
- CSV-eksport til brug i regneark eller dokumentationssystemer
## Anvendelser
- Kontrollere, at alle sider er A4, før et dokument sendes til et trykkeri
- Finde ud af, hvorfor en flettet PDF udskrives med uventede margener på bestemte sider
- Dokumentere sidelayoutet i et stort PDF-arkiv til metadataoptegnelser
- Finde roterede sider, der skal rettes
## Tips
- Hvis oversigten viser "Blandede størrelser", kan du bruge værktøjet Ret sidestørrelse til at standardisere før udskrivning.
- Rotationsfeltet hjælper med at finde sider, der vises korrekt, men har en rotationsattribut forskellig fra nul, hvilket kan give problemer i nogle arbejdsgange.
## Relaterede værktøjer
- [Ret sidestørrelse](./fix-page-size): standardisér sider, når du har fundet blandede størrelser
- [Komprimer PDF](./compress-pdf): optimér PDF'en, når sideproblemerne er rettet
- [Roter PDF](./rotate-pdf): ret roterede sider
+48
View File
@@ -0,0 +1,48 @@
---
title: Sidetal
description: Tilføj tilpassede sidetal på en valgfri position på dine PDF-sider med konfigurerbar skrifttype, størrelse og farve.
---
# Sidetal
Tilføj synlige sidetal på hver side i din PDF. Du vælger position, format, skriftstørrelse og farve, og værktøjet klarer resten.
## Sådan fungerer det
1. Upload din PDF-fil.
2. Konfigurér indstillingerne for sidetal i det indstillingspanel, der vises.
3. Klik på **Tilføj sidetal** for at behandle.
4. Den nummererede PDF downloades automatisk.
## Indstillinger
- **Position**: Vælg, hvor sidetallene vises: nederst i midten, nederst til venstre, nederst til højre, øverst i midten, øverst til venstre eller øverst til højre.
- **Format**: Vælg mellem enkel nummerering (1, 2, 3...) eller formatet "side X af Y" (1 / 5, 2 / 5...).
- **Skriftstørrelse**: Angiv størrelsen på sidetallets tekst. Standard er 12.
- **Farve**: Vælg en vilkårlig farve til sidetallets tekst med farvevælgeren.
## Funktioner
- Seks placeringsmuligheder, der dækker alle hjørner og midterpositioner
- To nummereringsformater: enkel fortløbende eller "side X af Y"
- Tilpasselig skriftstørrelse fra 6 til 72 punkter
- Fuld farvevælger til tekstfarven
- Automatisk margenhåndtering, der holder tallene inden for sikre områder uanset sidestørrelse
## Anvendelser
- Forberede dokumenter til udskrivning, der har brug for synlige sidehenvisninger
- Tilføje sidetal til en flettet PDF lavet af flere kildefiler
- Nummerere præsentationsudleveringer før distribution
- Tilføje fortløbende nummerering til juridiske dokumenter eller kontrakter
## Tips
- Formatet "side X af Y" er nyttigt til dokumenter, hvor læserne skal kende den samlede længde, f.eks. tilbud eller rapporter.
- Hvis du har brug for forskellige nummereringsstile til forskellige afsnit (f.eks. romertal i forsiden), kan du i stedet bruge værktøjet [Tilføj sideetiketter](./add-page-labels).
## Relaterede værktøjer
- [Tilføj sideetiketter](./add-page-labels)
- [Bates-nummerering](./bates-numbering)
- [Sidehoved og sidefod](./header-footer)
+43
View File
@@ -0,0 +1,43 @@
---
title: PDF-hæfte
description: Omarranger PDF-sider i hæfterækkefølge (rygstikning) til foldning og hæftning til et fysisk hæfte.
---
# PDF-hæfte
Omarranger siderne i en PDF til hæfteimposition. Når den udskrives dobbeltsidet og foldes på midten, står siderne i den rigtige læserækkefølge. Det er det layout, der bruges til hæfter med rygstikning og zines.
## Sådan fungerer det
1. Upload en PDF-fil.
2. Konfigurér hæfteindstillinger: outputsidestørrelse og orientering.
3. Klik på **Generér forhåndsvisning** for at se, hvordan siderne placeres på hvert ark.
4. Gennemgå forhåndsvisningen, som viser hvert fysiske ark med tildelingen af for- og bagside.
5. Klik på **Download** for at gemme den hæfteimponerede PDF.
## Funktioner
- Automatisk omarrangering af sider til rygstikning
- Konfigurerbar outputsidestørrelse
- Visuel forhåndsvisning af hæftelayoutet før download
- Håndterer ulige sideantal ved at indsætte blanke sider, hvor det er nødvendigt
- Skalerer kildesiderne, så de passer til hæftearkets størrelse
## Anvendelser
- Lave udskrivbare hæfter eller zines af en almindelig PDF
- Forberede konferenceprogrammer eller begivenhedsguider til udskrivning internt
- Lave foldede lykønskningskort eller små kataloger
- Producere små digtsamlinger til håndindbinding
## Tips
- Din kilde-PDF bør helst have et sideantal, der er deleligt med 4, for et rent hæfte. Hvis det ikke er tilfældet, tilføjes der automatisk blanke sider for at fylde det sidste ark ud.
- Udskriv outputtet dobbeltsidet med printerens indstilling "vend på kort led", fold derefter alle ark sammen, og hæft ved ryggen.
- Hvis du blot vil placere flere sider på ét ark uden hæfterækkefølge, kan du i stedet bruge [N-Up PDF](./n-up-pdf).
## Relaterede værktøjer
- [N-Up PDF](./n-up-pdf)
- [Roter PDF](./rotate-pdf)
- [Tilføj tom side](./add-blank-page)
+46
View File
@@ -0,0 +1,46 @@
---
title: PDF OCG
description: Vis, skift, tilføj og slet OCG-lag (Optional Content Group) i et PDF-dokument.
---
# PDF OCG-lag
Administrér de valgfrie indholdsgrupper (OCG), som ofte kaldes "lag", i en PDF. Du kan skifte lags synlighed, tilføje nye lag (også indlejrede underlag), slette lag og gemme den ændrede PDF.
## Sådan fungerer det
1. Upload en PDF-fil.
2. Klik på procesknappen for at indlæse dokumentet med PyMuPDF-motoren.
3. Værktøjet viser alle eksisterende lag med deres synlighedstilstand, låsestatus og indlejringshierarki.
4. Slå afkrydsningsfelter til eller fra for at vise eller skjule lag. Låste lag kan ikke skiftes.
5. Tilføj nye lag på øverste niveau ved at skrive et navn og klikke på tilføjknappen, eller tilføj underlag under et eksisterende overordnet lag.
6. Slet lag, du ikke længere har brug for.
7. Klik på **Gem** for at downloade den ændrede PDF med dine lagændringer anvendt.
## Funktioner
- Viser lagets hierarki med korrekt indrykning for indlejrede lag
- Slå lags synlighed til eller fra
- Indikator for låste lag forhindrer utilsigtede ændringer
- Tilføj lag på øverste niveau eller underlag med brugerdefinerede navne
- Slet enkelte lag
- Gemmer alle ændringer i en ny PDF-fil
## Anvendelser
- Skifte synligheden af markeringslag i arkitekt- eller ingeniørtegninger
- Tilføje nye annotationslag til et designdokument med flere lag
- Fjerne forældede lag fra en skabelon, før den distribueres
- Undersøge, hvilke lag der findes i en kompleks PDF modtaget fra en tredjepart
## Tips
- Hvis PDF'en ikke har nogen lag, viser værktøjet en tom tilstand med en opfordring til at tilføje et. Ikke alle PDF-filer bruger OCG-lag. De er mest almindelige i CAD-eksporter og designfiler.
- Underlag er visuelt indrykket under deres overordnede lag. Du kan indlejre lag i vilkårlig dybde.
- Låste lag vises med et låseikon, og deres afkrydsningsfelter er deaktiverede. Disse låse er sat af PDF'ens skaber.
## Relaterede værktøjer
- [Vis metadata](./view-metadata)
- [Redigér metadata](./edit-metadata)
- [Duplikér og organisér](./organize-pdf)
+52
View File
@@ -0,0 +1,52 @@
---
title: PDF-multiværktøj
description: En alt-i-ét sideadministrator til at flette, opdele, rotere, duplikere, slette og omarrangere PDF-sider.
---
# PDF-multiværktøj
Et samlet arbejdsområde til alle sideoperationer i PDF. Upload en eller flere PDF-filer, og arbejd med alle deres sider i ét visuelt gitter. Roter, omarranger, duplikér, slet, indsæt nye PDF-filer, tilføj blanke sider og opdel resultatet, uden at forlade værktøjet.
## Sådan fungerer det
1. Klik på **Upload PDF'er**, eller træk filer ind på uploadområdet. Flere filer understøttes.
2. Alle sider fra hver uploadet fil vises i et rullbart gitter med miniaturer.
3. Brug værktøjslinjen eller knapperne for hver side til at ændre siderne.
4. Vælg sider med afkrydsningsfeltet på hvert kort, og anvend derefter masseoperationer.
5. Marker opdelingspunkter med saksikonet for at dele outputtet i separate filer.
6. Klik på **Eksportér PDF** for at downloade det endelige resultat. Hvis der er opdelingsmarkører, bliver outputtet en ZIP med flere PDF-filer.
## Funktioner
- **Flet**: Upload flere PDF-filer, og de kombineres automatisk i ét arbejdsområde
- **Omarranger**: Træk og slip sidekort for at ændre rækkefølgen
- **Roter**: Rotation af enkelte sider eller i bulk i trin på 90 grader (venstre eller højre)
- **Duplikér**: Kopiér en vilkårlig side med ét klik
- **Slet**: Fjern enkelte sider, eller slet markerede sider i bulk
- **Indsæt PDF**: Tilføj en ny PDF efter en bestemt side
- **Tilføj tom side**: Tilføj en blank A4-side til sidst
- **Opdel**: Placér opdelingsmarkører mellem sider, og eksportér derefter som en ZIP med separate PDF-filer
- **Vælg alle / Fravælg alle**: Hurtig markering til masseoperationer
- **Fortryd / Gentag**: Fuld historik for fortryd og gentag for hver operation
- **Download valgte**: Eksportér kun de valgte sider som en selvstændig PDF
- Reparerer automatisk beskadigede PDF-filer, før de indlæses
## Anvendelser
- Bygge et brugerdefineret dokument af sider fra flere kilde-PDF'er
- Rydde op i et scannet dokument ved at slette blanke sider, rotere sidelæns scanninger og omarrangere afsnit
- Opdele en stor PDF ved kapitelgrænser med visuelle opdelingsmarkører
- Hurtig redigering på sideniveau uden behov for en fuld PDF-editor
## Tips
- Fortryd/gentag-systemet registrerer hver operation. Brug det frit, for du kan ikke ved et uheld ødelægge dit arbejde.
- Opdelingsmarkører vises som stiplede blå linjer mellem siderne. Placér dem visuelt, hvor dokumentet skal deles, og eksportér derefter for at få en ZIP.
- Til simple flet- eller opdelingsopgaver kan de dedikerede værktøjer [Flet PDF](./merge-pdf) eller [Opdel PDF](./split-pdf) være hurtigere. Multi-værktøjet er bedst, når du har brug for flere operationer i én session.
## Relaterede værktøjer
- [Flet PDF](./merge-pdf)
- [Opdel PDF](./split-pdf)
- [Duplikér og organisér](./organize-pdf)
- [Roter PDF](./rotate-pdf)
+40
View File
@@ -0,0 +1,40 @@
---
title: PDF til BMP
description: Konvertér PDF-sider til ukomprimerede BMP-billeder. Nyttigt til ældre systemer og udskriftsarbejdsgange, der kræver bitmap som input.
---
# PDF til BMP
Konverterer hver side i en PDF til et BMP-billede (bitmap). BMP er et ukomprimeret format, så outputtet er pixelperfekt uden kvalitetstab, men filerne er store.
## Sådan fungerer det
1. Upload en PDF ved at klikke på slipområdet eller trække en fil hen på det.
2. Klik på **Konvertér** for at behandle filen.
3. En enkelt `.bmp`-fil eller et ZIP-arkiv downloades automatisk.
## Indstillinger
Dette værktøj har ingen konfigurerbare indstillinger. Siderne gengives i en fast skala på 2x, hvilket giver billeder på cirka dobbelt så store som PDF'ens oprindelige sidemål.
## Outputformat
- **Enkelt side**: `filename.bmp`
- **Flere sider**: `filename_bmps.zip` med `page_1.bmp`, `page_2.bmp` osv.
## Anvendelser
- Sende PDF-sider ind i ældre systemer eller hardware, der kun accepterer BMP som input.
- Forberede ukomprimerede billeder til bestemte udskriftsarbejdsgange.
- Bruge bitmap-output som input til billedbehandlingsværktøjer, der kræver rå pixeldata.
## Tips
- BMP-filer er meget store, fordi de gemmer rå pixeldata uden komprimering. Til de fleste formål giver [PDF til PNG](./pdf-to-png) tabsfri kvalitet med langt mindre filer.
- Hvis dit målsystem accepterer PNG eller TIFF, bør du foretrække de formater for at spare diskplads.
## Relaterede værktøjer
- [PDF til PNG](./pdf-to-png)
- [PDF til TIFF](./pdf-to-tiff)
- [PDF til JPG](./pdf-to-jpg)
+77
View File
@@ -0,0 +1,77 @@
---
title: PDF til CBZ
description: Konvertér en PDF til en CBZ-fil (Comic Book Archive) til tegneserielæsere som Komga, Kavita, CDisplayEx og Calibre.
---
# PDF til CBZ
Konverterer en PDF til en CBZ-fil (Comic Book ZIP), standardformatet til digitale tegneserier og manga. Hver PDF-side bliver til et billede i arkivet. Værktøjet genererer metadata i tre formater for maksimal kompatibilitet: ComicInfo.xml, metadata.opf og ComicBookInfo JSON.
## Sådan fungerer det
1. Upload en PDF ved at klikke på slipområdet eller trække en fil hen på det.
2. Vælg billedformat, kvalitet, skala og valgfri metadata.
3. Klik på **Konvertér** for at generere CBZ-filen.
4. `.cbz`-filen downloades automatisk.
## Indstillinger
| Indstilling | Værdier | Standard | Beskrivelse |
| --------------- | --------------- | -------- | ---------------------------------------------------------------------------------------- |
| Billedformat | JPEG, PNG, WebP | JPEG | JPEG til farvetegneserier, PNG til tabsfri sort-hvid manga, WebP til bedst komprimering. |
| Kvalitet | 50–100% | 85% | Styrer JPEG/WebP-komprimering. Skjult for PNG (altid tabsfri). |
| Skala | 1.0x–4.0x | 2.0x | Højere skala giver skarpere billeder til skærme med høj opløsning. |
| Gråtoner | Til/Fra | Fra | Konverterer sider til gråtoner. Reducerer filstørrelsen for sort-hvidt indhold. |
| Manga-tilstand | Til/Fra | Fra | Sætter læseretningen til højre mod venstre i metadata. |
| Medtag metadata | Til/Fra | Til | Indlejrer ComicInfo.xml, metadata.opf og ComicBookInfo JSON. |
## Metadatafelter
Når metadata er aktiveret, kan du udfylde:
- **Titel**: Registreres automatisk fra PDF'ens filnavn.
- **Serie**: Seriens navn (f.eks. "Naruto").
- **Nummer (#)**: Udgavenummer i serien.
- **Bind (Vol.)**: Bindnummer.
- **Forfatter(e)**: Navn på forfatter eller skaber.
- **Forlag**: Udgivende virksomhed.
- **Tags / Genre**: Kommaseparerede tags (f.eks. "Action, Eventyr").
- **Udgivelsesår**: Udgivelsesår (1900–2100).
- **Vurdering**: Fællesskabets vurdering fra 0 til 5.
## Metadatakompatibilitet
Værktøjet skriver metadata i tre formater, så alle læsere kan finde dem:
| Format | Placering | Understøttes af |
| ------------------ | ----------------- | ------------------------------------------- |
| ComicInfo.xml | Fil i ZIP-filen | Komga, Kavita, CDisplayEx, Mylar, ComicRack |
| metadata.opf | Fil i ZIP-filen | Calibre |
| ComicBookInfo JSON | ZIP-kommentarfelt | Calibre (reserve) |
## Outputformat
- `filename.cbz`: Et ZIP-arkiv med nummererede sidebilleder og metadatafiler.
Sidebillederne navngives med nuludfyldte tal (`01.jpg`, `02.jpg` osv.), så læserne viser dem i den rigtige rækkefølge.
## Anvendelser
- Konvertere manga- eller tegneserie-PDF'er til brug i tegneserielæsere.
- Bygge et digitalt tegneseriebibliotek i Komga, Kavita eller Calibre.
- Konvertere scannede tegneserier til et læservenligt format.
- Dele tegneserier i et format, der bevarer læseretning og metadata.
## Tips
- Brug **JPEG** til farvetegneserier og **PNG** til sort-hvid manga. PNG komprimerer sort-hvidt indhold meget effektivt.
- Aktivér **Gråtoner** til manga for at reducere filstørrelsen betydeligt.
- Udfyld felterne **Serie** og **Nummer**, så biblioteksadministratorer (Komga, Calibre) kan organisere din samling automatisk.
- **WebP** giver den bedste komprimering, men ældre tegneserielæsere understøtter det måske ikke.
## Relaterede værktøjer
- [PDF til JPG](./pdf-to-jpg)
- [PDF til PNG](./pdf-to-png)
- [PDF til TIFF](./pdf-to-tiff)
- [Udtræk billeder](./extract-images)
+44
View File
@@ -0,0 +1,44 @@
---
title: PDF til CSV
description: Udtræk tabeller fra PDF-dokumenter, og eksportér dem som én CSV-fil. Håndterer PDF-filer med flere sider med automatisk tabelgenkendelse.
---
# PDF til CSV
Udtrækker tabeller fra en PDF og eksporterer dem som en CSV-fil. Værktøjet scanner hver side efter tabeldata med PyMuPDF's tabelgenkendelsesmotor og skriver derefter alle fundne rækker til ét kommasepareret output.
## Sådan fungerer det
1. Upload en PDF ved at klikke på slipområdet eller trække en fil hen på det.
2. Klik på **Konvertér** for at starte tabeludtrækningen.
3. Værktøjet scanner hver side og finder automatisk tabeller.
4. En `.csv`-fil downloades med alle de udtrukne tabeldata.
Tabeller fra forskellige sider adskilles af tomme rækker i outputtet. Celler med kommaer, anførselstegn eller linjeskift escapes korrekt efter RFC 4180.
## Indstillinger
Dette værktøj har ingen konfigurerbare indstillinger. Alle tabeller i dokumentet udtrækkes og kombineres i én CSV.
## Outputformat
- En enkelt `filename.csv`-fil med alle fundne tabeller.
## Anvendelser
- Hente økonomiske data fra PDF-kontoudtog eller fakturaer ind i et regneark.
- Udtrække priser fra leverandørtilbud til sammenligning.
- Konvertere tabulære forskningsdata fra PDF-artikler til et format, der egner sig til analyseværktøjer.
- Migrere data fra ældre PDF-rapporter til databaser.
## Tips
- Hvis der ikke findes nogen tabeller, viser værktøjet meddelelsen "Ingen tabeller fundet". Det betyder typisk, at PDF'en bruger et tekstlayout, der ligner en tabel, men ikke er struktureret som en egentlig tabel.
- Til mere kontrol over de enkelte tabeller kan du bruge [Udtræk PDF-tabeller](./extract-tables), hvor du kan vælge mellem CSV, JSON og Markdown som outputformat.
- Hvis du har brug for dataene i Excel-format med separate ark for hver tabel, kan du bruge [PDF til Excel](./pdf-to-excel).
## Relaterede værktøjer
- [PDF til Excel](./pdf-to-excel)
- [Udtræk PDF-tabeller](./extract-tables)
- [PDF til tekst](./pdf-to-text)
+44
View File
@@ -0,0 +1,44 @@
---
title: PDF til Excel
description: Udtræk tabeller fra PDF-dokumenter til et Excel-regneark. Hver tabel får sit eget regneark med sidehenvisninger.
---
# PDF til Excel
Udtrækker tabeller fra en PDF og gemmer dem som et Excel-regneark (`.xlsx`). Hver fundet tabel placeres på sit eget ark, mærket med tabelnummer og kildeside. Drevet af PyMuPDF til tabelgenkendelse og SheetJS-biblioteket til Excel-generering.
## Sådan fungerer det
1. Upload en PDF ved at klikke på slipområdet eller trække en fil hen på det.
2. Klik på **Konvertér** for at starte tabeludtrækningen.
3. Værktøjet scanner hver side efter tabeller og bygger derefter en Excel-projektmappe.
4. En `.xlsx`-fil downloades med ét ark pr. tabel.
## Indstillinger
Dette værktøj har ingen konfigurerbare indstillinger. Alle fundne tabeller udtrækkes automatisk.
## Outputformat
- En enkelt `filename.xlsx`-fil.
- **Én tabel**: ét ark med navnet "Table".
- **Flere tabeller**: ark med navnene "Table 1 (Page 3)", "Table 2 (Page 5)" osv. Arknavne afkortes til 31 tegn (Excels grænse).
## Anvendelser
- Konvertere økonomiske PDF-rapporter til redigerbare regneark til videre analyse.
- Udtrække lager- eller ordretabeller fra leverandørers PDF-filer.
- Hente strukturerede data fra PDF-formularer eller kataloger ind i Excel til sortering og filtrering.
- Arkivere tabulære PDF-data i et format, som ikke-tekniske kolleger kan arbejde med.
## Tips
- Hvis værktøjet melder "Ingen tabeller fundet", bruger PDF'en sandsynligvis et frit tekstlayout i stedet for strukturerede tabeller. Prøv [PDF til tekst](./pdf-to-text) for at hente det rå indhold i stedet.
- Til et enklere fladt format kan du bruge [PDF til CSV](./pdf-to-csv). Til downloads pr. tabel i flere formater kan du bruge [Udtræk PDF-tabeller](./extract-tables).
- Se på arknavnene for at finde ud af, hvilken side hver tabel kom fra.
## Relaterede værktøjer
- [PDF til CSV](./pdf-to-csv)
- [Udtræk PDF-tabeller](./extract-tables)
- [PDF til tekst](./pdf-to-text)
+42
View File
@@ -0,0 +1,42 @@
---
title: PDF til gråtoner
description: Konvertér en farve-PDF til en gråtoneversion (sort-hvid). Giver en ny PDF, hvor al farve er fjernet fra hver side.
---
# PDF til gråtoner
Konverterer en farve-PDF til en gråtoneversion. Hver side gengives, affarves og indlejres igen som et JPEG-billede i en ny PDF. Outputtet bevarer de oprindelige sidemål.
## Sådan fungerer det
1. Upload en PDF ved at klikke på slipområdet eller trække en fil hen på det.
2. Klik på **Konvertér** for at behandle filen.
3. En ny `greyscale.pdf` downloades med alle sider konverteret til sort-hvid.
Bag kulisserne gengives hver side i 2x skala, pixeldataene sendes gennem et gråtonefilter, kodes derefter igen som JPEG i 90 % kvalitet og placeres i et nyt PDF-dokument.
## Indstillinger
Dette værktøj har ingen konfigurerbare indstillinger. Gråtonekonverteringen bruger en standardformel for luminans, og JPEG-kvaliteten er fast på 90 %.
## Outputformat
- En enkelt `greyscale.pdf`-fil med alle sider som gråtone-JPEG-billeder.
## Anvendelser
- Forberede dokumenter til sort-hvid udskrivning for at spare på farvekassetter.
- Opfylde indsendelseskrav til juridiske eller offentlige indberetninger, der kræver gråtoner.
- Reducere filstørrelsen på PDF-filer med meget farve (JPEG-gråtonebilleder er mindre end farvebilleder).
- Skabe en ensartet visuel stil på tværs af dokumenter med blandede farve- og sort-hvide sider.
## Tips
- Fordi hver side rasteriseres og indlejres igen som JPEG, er outputtet billedbaseret. Tekst i den oprindelige PDF kan ikke længere markeres eller søges i. Hvis du bagefter har brug for søgbar tekst, kan du køre outputtet gennem OCR-værktøjet.
- Til mere kontrol over farvejusteringer (lysstyrke, kontrast, mætning) kan du se på værktøjet Justér farver eller gråtonenoden i [PDF Workflow-bygger](./pdf-workflow).
## Relaterede værktøjer
- [PDF til JPG](./pdf-to-jpg)
- [PDF til PNG](./pdf-to-png)
- [PDF Workflow-bygger](./pdf-workflow)
+46
View File
@@ -0,0 +1,46 @@
---
title: PDF til JPG
description: Konvertér PDF-sider til JPG-billeder med justerbar kvalitet. PDF-filer med én side downloades direkte, PDF-filer med flere sider eksporteres som ZIP.
---
# PDF til JPG
Konverterer hver side i en PDF til et JPG-billede. Dokumenter med én side downloades som en selvstændig `.jpg`-fil. PDF-filer med flere sider giver et ZIP-arkiv med ét JPG pr. side.
## Sådan fungerer det
1. Upload en PDF ved at klikke på slipområdet eller trække en fil hen på det. Værktøjet viser filnavn, filstørrelse og sideantal.
2. Justér skyderen **Kvalitet** for at styre JPG-komprimeringen.
3. Klik på **Konvertér** for at starte behandlingen.
4. Resultatet downloades automatisk: ét JPG for PDF-filer med én side eller en ZIP-fil for dokumenter med flere sider.
## Indstillinger
- **Kvalitet**: en skyder fra 0 % til 100 % (standard 90 %). Højere værdier giver skarpere billeder med større filer. Lavere værdier komprimerer mere aggressivt.
Siderne gengives internt i 2x skala, så outputopløsningen er dobbelt så stor som PDF'ens sidemål. En almindelig Letter-side giver et billede på cirka 1.224 x 1.584 pixel.
## Outputformat
- **Enkelt side**: `filename.jpg`
- **Flere sider**: `filename_jpgs.zip` med `page_1.jpg`, `page_2.jpg` osv.
## Anvendelser
- Generere forhåndsvisningsminiaturer til et dokumenthåndteringssystem.
- Dele en side fra en rapport i en chat eller e-mail, der ikke understøtter PDF.
- Lave billedelementer af PDF-diagrammer eller illustrationer.
- Arkivere scannede dokumenter som enkeltbilleder.
## Tips
- Til tabsfrit output kan du bruge [PDF til PNG](./pdf-to-png) i stedet.
- En kvalitetsindstilling på 80-90 % er en god balance mellem filstørrelse og visuel troværdighed.
- Hvis du har brug for et bestemt format pr. side, kan du overveje [PDF Workflow-bygger](./pdf-workflow), som har en outputnode til PDF til billeder.
## Relaterede værktøjer
- [PDF til PNG](./pdf-to-png)
- [PDF til WebP](./pdf-to-webp)
- [PDF til BMP](./pdf-to-bmp)
- [PDF til TIFF](./pdf-to-tiff)
+45
View File
@@ -0,0 +1,45 @@
---
title: PDF til JSON
description: Konvertér PDF-filer til struktureret JSON-format med CPDF. Eksporterer PDF'ens interne struktur som maskinlæsbare JSON-data.
---
# PDF til JSON
Konverterer en eller flere PDF-filer til JSON-format. Værktøjet bruger CPDF (Coherent PDF) til at serialisere den interne struktur i hver PDF til en maskinlæsbar JSON-repræsentation. Outputtet leveres altid som et ZIP-arkiv.
## Sådan fungerer det
1. Vælg en eller flere PDF-filer med filvælgeren.
2. Klik på **Konvertér** for at starte behandlingen. Konverteringen kører i en web worker i baggrunden.
3. Et ZIP-arkiv downloades med én JSON-fil for hver input-PDF.
Statuslinjen viser fremdriften gennem konverteringen og oprettelsen af ZIP-filen.
## Indstillinger
Dette værktøj har ingen konfigurerbare indstillinger. Hver PDF konverteres til sin fulde JSON-repræsentation.
## Outputformat
- En `pdfs-to-json.zip`-fil med `filename.json` for hver input-PDF.
JSON-outputtet repræsenterer PDF'ens interne objektstruktur, herunder sidetræer, skrifttypereferencer, metadata og indholdsstrømme.
## Anvendelser
- Undersøge den interne struktur i en PDF til fejlfinding eller validering.
- Udtrække struktureret metadata og sideegenskaber programmatisk.
- Sende PDF-strukturdata ind i brugerdefinerede behandlingspipelines.
- Revidere PDF-dokumenter for overholdelse af krav ved at analysere deres objekttræer.
## Tips
- Dette værktøj udskriver den rå PDF-objektstruktur, ikke udtrukket tekstindhold. Hvis du har brug for sidetekst i JSON-format, kan du i stedet bruge [Forbered PDF til AI](./prepare-pdf-for-ai).
- Til almindelig tekstudtrækning er [PDF til tekst](./pdf-to-text) mere ligetil.
- Store PDF-filer med komplekse strukturer giver meget store JSON-filer.
## Relaterede værktøjer
- [PDF til tekst](./pdf-to-text)
- [Forbered PDF til AI](./prepare-pdf-for-ai)
- [Udtræk PDF-tabeller](./extract-tables)
+43
View File
@@ -0,0 +1,43 @@
---
title: PDF til Markdown
description: Konvertér PDF-dokumenter til Markdown-format med valgfri billedudtrækning. Understøtter batchkonvertering af flere filer.
---
# PDF til Markdown
Konverterer PDF-filer til Markdown-format (`.md`) og bevarer overskrifter, afsnit, lister og grundlæggende formatering. Udtrækker og medtager eventuelt indlejrede billeder. Understøtter konvertering af enkeltfiler og batchkonvertering. Drevet af PyMuPDF.
## Sådan fungerer det
1. Upload en eller flere PDF-filer ved at klikke på slipområdet eller trække filer hen på det.
2. Slå eventuelt **Medtag billeder** til for at indlejre udtrukne billeder i Markdown-outputtet.
3. Klik på **Konvertér** for at starte behandlingen.
4. En enkelt fil downloades som `filename.md`. Flere filer giver en `markdown-files.zip`.
## Indstillinger
- **Medtag billeder**: når det er markeret, udtrækkes indlejrede billeder fra PDF'en og refereres i Markdown-outputtet. Når det ikke er markeret, konverteres kun tekstindholdet.
## Outputformat
- **Enkelt fil**: `filename.md`
- **Flere filer**: `markdown-files.zip` med én `.md` pr. input-PDF.
## Anvendelser
- Konvertere PDF-dokumentation til Markdown til en statisk site-generator som VitePress, Hugo eller Jekyll.
- Gøre PDF-forskningsartikler til redigerbar Markdown til notatapps som Obsidian.
- Migrere ældre PDF-vidensbaser til et Git-venligt tekstformat.
- Udtrække struktureret indhold fra PDF-e-bøger til omformatering.
## Tips
- Indstillingen Medtag billeder er nyttig, når PDF'en indeholder diagrammer eller figurer, der er afgørende for indholdet. Slå den fra for teksttunge dokumenter for at holde outputtet rent.
- Komplekse layouts med sidebjælker, fodnoter eller tekst i flere kolonner kan give ufuldkommen Markdown. Gennemgå og justér outputtet efter behov.
- Til rå tekst uden formatering kan du i stedet bruge [PDF til tekst](./pdf-to-text).
## Relaterede værktøjer
- [PDF til tekst](./pdf-to-text)
- [PDF til Word](./pdf-to-word)
- [Forbered PDF til AI](./prepare-pdf-for-ai)
+50
View File
@@ -0,0 +1,50 @@
---
title: PDF til PDF/A
description: Konvertér almindelige PDF-filer til PDF/A-format til langtidsarkivering. Understøtter konformitetsniveauerne PDF/A-1b, PDF/A-2b og PDF/A-3b.
---
# PDF til PDF/A
PDF/A er en ISO-standardiseret delmængde af PDF, der er designet til langtidsbevaring af digitale dokumenter. Dette værktøj konverterer dine almindelige PDF-filer til PDF/A-kompatible dokumenter med Ghostscript, som kører direkte i din browser.
## Sådan fungerer det
1. Upload en eller flere PDF-filer.
2. Vælg en **PDF/A-version** i rullemenuen.
3. Aktivér eventuelt **Flad PDF ud først** til komplekse filer, der ikke kan konverteres normalt.
4. Klik på **Konvertér til PDF/A**. Flere filer giver et ZIP-arkiv.
## PDF/A-versioner
| Version | Begrænsninger | Bedst til |
| ------------ | -------------------------------------------------- | ----------------------------------------------------- |
| **PDF/A-1b** | Strengest. Ingen gennemsigtighed, ingen lag. | Maksimal kompatibilitet med ældre arkiveringssystemer |
| **PDF/A-2b** | Tillader gennemsigtighed og JPEG2000. | Almindelig arkivering (anbefales) |
| **PDF/A-3b** | Tillader indlejrede vedhæftninger i alle formater. | Arkivering af dokumenter med kildedatafiler |
PDF/A-2b er valgt som standard og passer til langt de fleste arkiveringsbehov.
## Indstillingen Flad ud først
Nogle PDF-filer indeholder funktioner, der forhindrer en ren PDF/A-konvertering: usædvanlige skrifttypekodninger, komplekse gennemsigtighedsstakke eller ødelagte interne strukturer. Når du aktiverer **Flad ud først**, rasteriseres PDF'en i 300 DPI før konvertering, hvilket garanterer overholdelse af standarden, men gør teksten umulig at markere. Brug den som reserveløsning, når den almindelige konvertering giver fejl.
Udfladning først kræver PyMuPDF WASM-motoren.
## Anvendelser
- Opfylde offentlige eller juridiske arkiveringskrav (mange jurisdiktioner kræver PDF/A til retsdokumenter)
- Indsende dokumenter til institutionelle arkiver eller digitale biblioteker
- Bevare forretningsoptegnelser, hvor den oprindelige software måske ikke findes om ti år
- Forberede fakturaer til e-faktureringsstandarder, der kræver PDF/A-3b med XML-vedhæftninger
## Tips
- Prøv konvertering uden udfladning først. Aktivér den kun, hvis du får en fejl.
- PDF/A indlejrer alle skrifttyper, så outputfiler er ofte større end originalerne.
- Valider outputtet i en dedikeret PDF/A-validator, hvis din arbejdsgang kræver streng overholdelse.
## Relaterede værktøjer
- [Komprimer PDF](./compress-pdf): reducér filstørrelsen efter konvertering
- [Fladgør PDF](./flatten-pdf): flad formularer ud, før du konverterer til PDF/A
- [Fjern metadata](./remove-metadata): fjern metadata før arkivering
+42
View File
@@ -0,0 +1,42 @@
---
title: PDF til PNG
description: Konvertér PDF-sider til tabsfrie PNG-billeder med justerbar skala. Ideelt til skærmbilleder i høj kvalitet og gennemsigtige baggrunde.
---
# PDF til PNG
Konverterer hver side i en PDF til et PNG-billede. PNG bruger tabsfri komprimering, så outputtet bevarer alle detaljer fra den oprindelige side. PDF-filer med én side downloades som en `.png`-fil, og PDF-filer med flere sider giver en ZIP.
## Sådan fungerer det
1. Upload en PDF ved at klikke på slipområdet eller trække en fil hen på det.
2. Indstil skyderen **Skala** for at styre outputopløsningen.
3. Klik på **Konvertér** for at starte behandlingen.
4. Et enkelt PNG eller et ZIP-arkiv downloades automatisk.
## Indstillinger
- **Skala**: fra 1.0x til 3.0x (standard 2.0x). Ved 2.0x gengives en almindelig Letter-side i cirka 1.224 x 1.584 pixel. Højere skalaværdier giver større og skarpere billeder på bekostning af filstørrelse og behandlingstid.
## Outputformat
- **Enkelt side**: `filename.png`
- **Flere sider**: `filename_pngs.zip` med `page_1.png`, `page_2.png` osv.
## Anvendelser
- Tage skærmbilleder af PDF-sider i høj kvalitet til præsentationer.
- Udtrække diagrammer eller figurer, der kræver skarpe kanter og ingen komprimeringsartefakter.
- Forberede elementer til webdesign ud fra PDF-mockups.
- Lave tabsfrie sidebilleder til forbehandling før OCR.
## Tips
- PNG-filer er væsentligt større end JPG. Hvis filstørrelsen betyder mere end perfekt kvalitet, kan du bruge [PDF til JPG](./pdf-to-jpg) eller [PDF til WebP](./pdf-to-webp).
- Ved skala 1.0x svarer outputtet til PDF'ens oprindelige opløsning. Sæt den op til 3.0x for eksport i udskriftskvalitet.
## Relaterede værktøjer
- [PDF til JPG](./pdf-to-jpg)
- [PDF til WebP](./pdf-to-webp)
- [PDF til SVG](./pdf-to-svg)
+43
View File
@@ -0,0 +1,43 @@
---
title: PDF til SVG
description: Konvertér PDF-sider til skalerbar SVG-vektorgrafik. Bevarer tekst og former som vektorstier, så de kan skaleres uendeligt.
---
# PDF til SVG
Konverterer hver side i en PDF til en SVG-fil (Scalable Vector Graphics). I modsætning til rasterformater bevarer SVG vektorstier, tekst og former, så outputtet kan skaleres til enhver størrelse uden pixelering. Drevet af PyMuPDF.
## Sådan fungerer det
1. Upload en eller flere PDF-filer ved at klikke på slipområdet eller trække filer hen på det. Du kan tilføje flere filer og administrere dem enkeltvis.
2. Klik på **Konvertér** for at behandle alle uploadede filer.
3. Konverteringer af én fil med én side downloades som en selvstændig `.svg`. Alt andet downloades som et ZIP-arkiv.
## Indstillinger
Dette værktøj har ingen konfigurerbare indstillinger. Hver side konverteres til SVG med PyMuPDF's indbyggede vektoreksport.
## Outputformat
- **Én fil, én side**: `filename.svg`
- **Én fil, flere sider**: `filename_svg.zip` med `page_1.svg`, `page_2.svg` osv.
- **Flere filer**: `pdf_to_svg.zip` med filer organiseret efter kildedokumentets navn.
## Anvendelser
- Udtrække vektordiagrammer, grafer eller illustrationer fra PDF-rapporter til brug på websider.
- Redigere PDF-sidens indhold i en vektoreditor som Inkscape eller Illustrator.
- Indlejre skalerbare sideforhåndsvisninger i responsive webapplikationer.
- Udtrække logoer eller grafik fra PDF-brochurer og bevare skarpe kanter.
## Tips
- SVG fungerer bedst med PDF-filer, der indeholder vektorindhold. Scannede dokumenter eller billedtunge PDF-filer giver store SVG-filer med indlejrede rasterdata.
- Til rasteroutput af billedtunge PDF-filer kan du i stedet bruge [PDF til PNG](./pdf-to-png) eller [PDF til JPG](./pdf-to-jpg).
- Dette værktøj understøtter batchkonvertering: upload flere PDF-filer på én gang for at konvertere dem alle i én kørsel.
## Relaterede værktøjer
- [PDF til PNG](./pdf-to-png)
- [PDF til JPG](./pdf-to-jpg)
- [PDF til Markdown](./pdf-to-markdown)
+43
View File
@@ -0,0 +1,43 @@
---
title: PDF til tekst
description: Udtræk almindeligt tekstindhold fra PDF-filer. Understøtter batchudtrækning fra flere PDF-filer med output som TXT-filer.
---
# PDF til tekst
Udtrækker alt tekstindhold fra PDF-filer og gemmer det som almindelige `.txt`-filer. Understøtter batchbehandling: upload flere PDF-filer, og få hver enkelts tekst udtrukket i én operation. Drevet af PyMuPDF.
## Sådan fungerer det
1. Upload en eller flere PDF-filer ved at klikke på slipområdet eller trække filer hen på det. Administrér din filliste med knapperne Tilføj flere og Ryd.
2. Klik på **Udtræk** for at starte behandlingen.
3. En enkelt fil downloades som `filename.txt`. Flere filer giver et `pdf-to-text.zip`-arkiv.
## Indstillinger
Dette værktøj har ingen konfigurerbare indstillinger. Alt tekstindhold udtrækkes fra hver side i læserækkefølge.
## Outputformat
- **Enkelt fil**: `filename.txt`
- **Flere filer**: `pdf-to-text.zip` med én `.txt` pr. input-PDF.
## Anvendelser
- Udtrække brødtekst fra PDF-rapporter til fuldtekstsøgningsindeksering.
- Konvertere PDF-e-bøger eller artikler til almindelig tekst til læsning på e-ink-enheder.
- Hente tekst fra kontrakter eller juridiske dokumenter til søgeordsanalyse.
- Fjerne formatering fra PDF-filer for at få ren tekst til databehandlingsscripts.
- Forberede et tekstkorpus fra PDF-arkiver til naturlig sprogbehandling.
## Tips
- Scannede PDF-filer (kun billeder) giver tomme tekstfiler, fordi der ikke er noget tekstlag at udtrække. Kør scannede dokumenter gennem OCR først.
- Outputtet bevarer den læserækkefølge, som PyMuPDF fortolker, og den følger generelt venstre mod højre og top mod bund. Layouts med flere kolonner kan give blandet tekst.
- Til struktureret output med overskrifter og formatering kan du prøve [PDF til Markdown](./pdf-to-markdown). Til AI-klar struktureret JSON kan du bruge [Forbered PDF til AI](./prepare-pdf-for-ai).
## Relaterede værktøjer
- [PDF til Markdown](./pdf-to-markdown)
- [Forbered PDF til AI](./prepare-pdf-for-ai)
- [PDF til Word](./pdf-to-word)
+43
View File
@@ -0,0 +1,43 @@
---
title: PDF til TIFF
description: Konvertér PDF-sider til TIFF-billeder, som ofte bruges i udskrivning, fax og arkivering. Falder tilbage til PNG, hvis kodningen mislykkes.
---
# PDF til TIFF
Konverterer hver side i en PDF til et TIFF-billede. TIFF er standardformatet til trykproduktion, faxsystemer og dokumentarkivering. Værktøjet bruger PackBits-komprimering til TIFF-kodning og falder tilbage til PNG, hvis en side ikke kan kodes.
## Sådan fungerer det
1. Upload en PDF ved at klikke på slipområdet eller trække en fil hen på det.
2. Klik på **Konvertér** for at behandle filen.
3. En enkelt TIFF-fil eller et ZIP-arkiv downloades automatisk.
## Indstillinger
Dette værktøj har ingen konfigurerbare indstillinger. Siderne gengives i en fast skala på 2x.
## Outputformat
- **Enkelt side**: `filename.tiff`
- **Flere sider**: `filename_tiffs.zip` med `page_1.tiff`, `page_2.tiff` osv.
Hvis TIFF-kodningen mislykkes for en bestemt side (på grund af komprimeringsproblemer), gemmes den side som en `.png`-fil i stedet. ZIP-filen indeholder i så fald en blanding af TIFF- og PNG-filer.
## Anvendelser
- Indsende dokumenter til offentlige myndigheder eller juridiske systemer, der kræver TIFF-format.
- Forberede sider til faxtransmission via digitale faxtjenester.
- Arkivere scannede dokumenter i et bredt understøttet tabsfrit format.
- Sende sider ind i dokumenthåndteringssystemer i virksomheder.
## Tips
- TIFF-filer er store. Hvis du kun har brug for tabsfri kvalitet til web eller skærm, er [PDF til PNG](./pdf-to-png) et bedre valg.
- Tjek ZIP-indholdet, hvis nogle sider krævede PNG-reserven. Du vil måske konvertere dem separat.
## Relaterede værktøjer
- [PDF til PNG](./pdf-to-png)
- [PDF til BMP](./pdf-to-bmp)
- [PDF til JPG](./pdf-to-jpg)
+43
View File
@@ -0,0 +1,43 @@
---
title: PDF til WebP
description: Konvertér PDF-sider til WebP-billeder med justerbar kvalitet. Mindre filer end JPG ved sammenlignelig visuel kvalitet.
---
# PDF til WebP
Konverterer hver side i en PDF til et WebP-billede. WebP giver typisk filer, der er 25-35 % mindre end JPG ved samme oplevede kvalitet, hvilket gør det til et stærkt valg til web.
## Sådan fungerer det
1. Upload en PDF ved at klikke på slipområdet eller trække en fil hen på det.
2. Justér skyderen **Kvalitet**.
3. Klik på **Konvertér** for at behandle filen.
4. En enkelt `.webp`-fil eller et ZIP-arkiv downloades automatisk.
## Indstillinger
- **Kvalitet**: en skyder fra 0 % til 100 % (standard 85 %). Styrer niveauet for den tabsgivende komprimering. Højere værdier bevarer flere detaljer.
Siderne gengives internt i 2x skala, hvilket giver billeder på cirka dobbelt så store som PDF'ens oprindelige mål.
## Outputformat
- **Enkelt side**: `filename.webp`
- **Flere sider**: `filename_webps.zip` med `page_1.webp`, `page_2.webp` osv.
## Anvendelser
- Forberede sideforhåndsvisninger til websteder, hvor båndbredde har betydning.
- Generere lette billedversioner af flyers eller brochurer til sociale medier.
- Batchkonvertere dokumenter med flere sider til et weboptimeret billedsæt.
## Tips
- WebP understøttes i alle moderne browsere. Til kompatibilitet med ældre systemer kan du falde tilbage til [PDF til JPG](./pdf-to-jpg).
- En kvalitet på 80-85 % kan som regel ikke skelnes fra originalen på skærmen, mens filstørrelserne holdes små.
## Relaterede værktøjer
- [PDF til JPG](./pdf-to-jpg)
- [PDF til PNG](./pdf-to-png)
- [PDF til BMP](./pdf-to-bmp)
+42
View File
@@ -0,0 +1,42 @@
---
title: PDF til Word
description: Konvertér PDF-filer til redigerbare Word-dokumenter (DOCX). Understøtter batchkonvertering af flere PDF-filer på én gang.
---
# PDF til Word
Konverterer PDF-filer til redigerbare Word-dokumenter (`.docx`). Værktøjet bruger PyMuPDF til at genopbygge dokumentets indhold og bevarer tekst, grundlæggende formatering og layout. Understøtter konvertering af enkeltfiler og batchkonvertering.
## Sådan fungerer det
1. Upload en eller flere PDF-filer ved at klikke på slipområdet eller trække filer hen på det. Du kan tilføje flere filer eller fjerne enkelte fra listen.
2. Klik på **Konvertér** for at starte behandlingen.
3. En enkelt fil downloades som `filename.docx`. Flere filer pakkes i `converted-documents.zip`.
## Indstillinger
Dette værktøj har ingen konfigurerbare indstillinger. Hver PDF konverteres til DOCX med PyMuPDF's indbyggede konverteringsmotor.
## Outputformat
- **Enkelt fil**: `filename.docx`
- **Flere filer**: `converted-documents.zip` med én `.docx` pr. input-PDF.
## Anvendelser
- Redigere tekst i en PDF, som du har modtaget, og som skal ændres.
- Konvertere arkiverede PDF-rapporter til et format, som kolleger kan redigere i Microsoft Word eller Google Docs.
- Hente indhold fra PDF-kontrakter eller tilbud ind i Word til gennemgang med ændringsmarkering.
- Migrere ældre PDF-dokumentation til et redigerbart format.
## Tips
- Komplekse layouts med tekst i flere kolonner, indlejrede formularer eller meget grafik konverteres muligvis ikke perfekt. Gennemgå outputtet, og justér formateringen i dit tekstbehandlingsprogram.
- Scannede PDF-filer (kun billeder) giver tomme eller minimale DOCX-filer. Kør dem gennem OCR først for at tilføje et tekstlag.
- Batchtilstand er effektiv til at konvertere hele mapper med PDF-filer: upload dem alle på én gang.
## Relaterede værktøjer
- [PDF til tekst](./pdf-to-text)
- [PDF til Markdown](./pdf-to-markdown)
- [PDF Workflow-bygger](./pdf-workflow)
+41
View File
@@ -0,0 +1,41 @@
---
title: PDF’er til ZIP
description: Pak flere PDF-filer i ét ZIP-arkiv, så de er nemme at dele og gemme.
---
# PDF’er til ZIP
Saml flere PDF-filer i ét ZIP-arkiv. Det er et ligetil pakkeværktøj uden konvertering, komprimering eller ændring af selve PDF-filerne.
## Sådan fungerer det
1. Upload flere PDF-filer via slipområdet.
2. Gennemgå fillisten. Fjern dem, du ikke vil have med.
3. Klik på procesknappen.
4. Et ZIP-arkiv med alle de uploadede PDF-filer downloades med det samme.
## Funktioner
- Accepterer et vilkårligt antal PDF-filer
- Fjernelse af enkelte filer, før arkivet oprettes
- Bevarer de oprindelige filnavne i ZIP-filen
- Ingen ændring af PDF-indholdet: filerne pakkes som de er
- Viser filnavn og størrelse for hver uploadet PDF
## Anvendelser
- Samle en række fakturaer eller kvitteringer som e-mailvedhæftning
- Pakke projektleverancer (flere PDF-rapporter) til overdragelse
- Lave én samlet download til en samling formularer eller skabeloner
- Arkivere en række dokumenter i én komprimeret fil
## Tips
- ZIP-filen bruger de oprindelige PDF-filnavne. Hvis du har filer med samme navn, skal du omdøbe dem, før du uploader, for at undgå konflikter.
- Dette værktøj komprimerer ikke selve PDF-filerne. Hvis du vil reducere filstørrelsen, skal du først køre dem gennem Komprimer PDF og derefter pakke dem med dette værktøj.
## Relaterede værktøjer
- [Flet PDF](./merge-pdf)
- [Opdel PDF](./split-pdf)
- [Komprimer PDF](./compress-pdf)
+95
View File
@@ -0,0 +1,95 @@
---
title: PDF-workflowbygger
description: Byg brugerdefinerede PDF-behandlingspipelines visuelt ved at forbinde noder på et lærred. Kæd operationer som flet, komprimer, vandmærke og eksportér sammen.
---
# PDF-workflowbygger
Workflow-byggeren lader dig kæde flere PDF-operationer sammen i én automatiseret pipeline. I stedet for at køre værktøjer et ad gangen sammensætter du en visuel graf af noder (input, behandling, output) og kører det hele med et enkelt klik. Dine filer forlader aldrig browseren.
## Sådan fungerer det
Grænsefladen er delt i tre paneler: en **nodeværktøjskasse** til venstre, **lærredet** i midten og et **indstillingspanel** til højre, som vises, når du vælger en node.
1. **Tilføj noder** ved at klikke på dem i sidebjælken til venstre, eller træk dem direkte ind på lærredet. Brug søgefeltet øverst i værktøjskassen til at filtrere efter navn.
2. **Forbind noder** ved at trække fra en outputsokkel (nederst på en node) til en inputsokkel (øverst på en anden node). Forbindelser løber oppefra og ned.
3. **Konfigurér indstillinger** ved at klikke på en node for at åbne dens indstillingspanel til højre. Hver nodetype har sine egne indstillinger (sideintervaller, kvalitetsskydere, adgangskoder osv.).
4. **Kør workflowet** ved at klikke på knappen **Kør** på værktøjslinjen. Motoren udfører noderne i topologisk rækkefølge og behandler dem én efter én. En statuslinje nederst følger fremdriften.
5. **Download resultater**: den afsluttende Download-node gemmer den endelige PDF (eller ZIP, hvis der oprettes flere filer).
## Nodekategorier
Noderne er organiseret i seks kategorier, som hver har sin farve på lærredet:
- **Input** (blå): PDF-input, Billedinput, Word/Excel/PowerPoint til PDF og mere end 15 andre formatkonvertere, der leverer filer ind i pipelinen.
- **Redigér og annotér** (indigo): Beskær, Gråtoner, Invertér farver, Vandmærke, Sidetal, Sidehoved og sidefod, Scannereffekt, Justér farver, Baggrundsfarve, Fjern tomme sider, Fjern annotationer.
- **Organisér og administrér** (violet): Flet, Opdel, Udtræk sider, Roter, Slet sider, Vend, Tilføj tom side, Opdel sider, N-Up, Ret sidestørrelse, Kombinér til én side, Hæfte, Posterisér, Redigér metadata, Indholdsfortegnelse, OCR.
- **Optimér og reparér** (rav): Komprimer, Rasterisér, Lineariser, Ret skæve sider, PDF til PDF/A, Skrifttype til kontur, Reparér.
- **Beskyt PDF** (rosa): Kryptér, Dekryptér, Rens, Flatten, Digital signatur, Sortlæg.
- **Output** (blågrøn): Download (registrerer automatisk enkelt PDF eller ZIP), PDF til billeder, PDF til tekst, PDF til DOCX, PDF til XLSX, PDF til CSV, PDF til SVG, PDF til Markdown, Udtræk billeder.
## Gemme og indlæse workflows
Værktøjslinjen har fire muligheder for at bevare dit arbejde:
- **Gem**: gemmer det aktuelle workflow som en navngivet skabelon i din browsers lokale lager. Du kan gemme flere skabeloner.
- **Indlæs**: åbner en dialog med alle gemte skabeloner. Klik på Indlæs for at gendanne en, eller slet skabeloner, du ikke længere har brug for.
- **Eksportér**: downloader workflowet som en `.json`-fil, så du kan dele eller sikkerhedskopiere det.
- **Importér**: indlæser en `.json`-workflowfil fra disken og gendanner alle noder, positioner og forbindelser.
Skabeloner bevares mellem sessioner i det lokale lager. Eksporterede JSON-filer kan flyttes mellem browsere og computere.
## Udførelsesmodel
Motoren bygger en afhængighedsgraf ud fra dine forbindelser og udfører noderne i topologisk rækkefølge. Hvis en node fejler, stopper udførelsen, og den fejlende node markeres rød. Nogle regler at huske:
- Hvert workflow har brug for mindst én **Input**-node og én **Output**-node.
- Motoren registrerer cirkulære afhængigheder og blokerer udførelsen med en fejl.
- Noden **Kryptér** skal være det sidste behandlingstrin før outputnoden. Hvis den placeres tidligere, udløses en valideringsadvarsel, fordi efterfølgende noder ikke kan arbejde med krypterede data.
- Adgangskodebeskyttede PDF-filer beder om en adgangskode under udførelsen.
- Input med flere PDF-filer understøttes: Flet-noden kan kombinere dem, eller batchbehandlende noder behandler hver PDF enkeltvis.
## Soklertyper
Forbindelser bruger typede sokler for at forhindre ugyldige koblinger:
- **PDF** (indigo): et enkelt PDF-dokument.
- **MultiPDF** (rav): flere PDF-dokumenter samlet.
- **Image** (grøn): en billedblob.
## Indstillinger
Hver node har sin egen konfiguration, som du kan nå via indstillingspanelet til højre. Almindelige eksempler:
- **Sideintervaller** på noderne Opdel, Udtræk sider og Slet sider
- **Kvalitetsskydere** på billedkonverterings-outputnoder
- **Adgangskodefelter** på noderne Kryptér og Dekryptér
- **Tekstfelter** til Vandmærke, Sidehoved og sidefod og Redigér metadata
- **Rotationsvinkler** på noden Roter
- **Komprimeringsniveau** på noden Komprimer
- **Valg af OCR-sprog** på OCR-noden
## Anvendelser
- **Fakturabehandlingspipeline**: PDF-input -> OCR -> Udtræk PDF-tabeller -> Download som CSV.
- **Standardisering af rapporter**: Word til PDF -> Ret sidestørrelse -> Tilføj sidetal -> Vandmærke -> Komprimer -> Download.
- **Forberedelse til arkivering**: PDF-input -> Reparér -> Flatten -> Rens -> PDF til PDF/A -> Download.
- **Batchudtrækning af billeder**: PDF-input (flere filer) -> Udtræk billeder -> Download ZIP.
- **Udskriftsklare hæfter**: PDF-input -> Hæfte -> Beskær -> Komprimer -> Download.
- **Sikker distribution**: PDF-input -> Sortlæg -> Fjern annotationer -> Kryptér -> Download.
## Tips
- Brug **Delete** eller **Backspace** til at fjerne den valgte node fra lærredet.
- Klik på knappen **X** i en nodes statuslinje for at slette den direkte.
- Panorér lærredet ved at klikke og trække på tomt område. Markøren skifter til et gribeikon under panorering.
- På mobil kan du bruge knappen **+** på værktøjslinjen til at vise eller skjule nodeværktøjskassen.
- Hvis dit workflow giver flere outputfiler, samler Download-noden dem automatisk i en ZIP.
- Start enkelt: byg og test en pipeline med to noder, før du tilføjer kompleksitet.
## Relaterede værktøjer
- [PDF til tekst](./pdf-to-text)
- [PDF til Excel](./pdf-to-excel)
- [Udtræk billeder](./extract-images)
- [PDF til Markdown](./pdf-to-markdown)
+49
View File
@@ -0,0 +1,49 @@
---
title: PNG til PDF
description: Konvertér et eller flere PNG-billeder til et PDF-dokument med justerbar kvalitet, helt i din browser.
---
# PNG til PDF
Konvertér PNG-billeder til PDF, mens deres fulde opløsning bevares. Hver PNG bliver til sin egen side, tilpasset det oprindelige billedes mål. Gennemsigtighed håndteres automatisk.
## Understøttede formater
| Format | Filtypenavne |
| :----- | :----------- |
| PNG | `.png` |
## Sådan fungerer det
1. Klik på uploadområdet, eller træk og slip PNG-filer. Du kan vælge flere på én gang.
2. Administrér fillisten: fjern uønskede filer, eller tilføj flere.
3. Vælg et niveau for **PDF-kvalitet** i rullemenuen.
4. Klik på **Konvertér til PDF**. Outputtet downloades som `from_jpgs.pdf`.
Værktøjet bruger pdf-lib til at indlejre hvert billede direkte. Hvis en PNG ikke kan indlejres direkte (f.eks. på grund af en usædvanlig farveprofil), falder det tilbage til at gengive den via et canvas som JPEG.
## Indstillinger
**PDF-kvalitet** styrer den komprimering, der anvendes før indlejring:
- **Høj kvalitet**: minimal komprimering, største filstørrelse.
- **Mellem kvalitet** (standard): god balance mellem størrelse og klarhed.
- **Lav kvalitet**: maksimal komprimering, mindste output.
## Anvendelser
- Konvertere skærmbilleder til en PDF med flere sider til fejlrapporter eller dokumentation
- Pakke eksporter af UI-design i én fil til gennemgang
- Gøre diagrameksporter (draw.io, Excalidraw) til en delbar PDF
- Samle en række diagrambilleder til en rapport
## Tips
- PNG-filer med gennemsigtighed får en hvid baggrund i PDF'en. Hvis du har brug for en anden baggrund, skal du redigere billederne på forhånd.
- Til skærmbilleder og diagrammer med skarpe kanter og tekst undgår Høj kvalitet JPEG-komprimeringsartefakter. Mellem eller Lav kan konvertere til JPEG internt.
## Relaterede værktøjer
- [Billeder til PDF](./image-to-pdf)
- [JPG til PDF](./jpg-to-pdf)
- [SVG til PDF](./svg-to-pdf)
+53
View File
@@ -0,0 +1,53 @@
---
title: Posterisér PDF
description: Opdel PDF-sider i et gitter af mindre sider til storformatudskrivning på flere ark.
---
# Posterisér PDF
Del hver side i en PDF op i et gitter af mindre delsider. Det er værktøjet, når du vil udskrive én side over flere ark papir, som du derefter sætter sammen til en stor plakat eller et banner.
## Sådan fungerer det
1. Upload en PDF-fil.
2. Angiv antal **rækker** og **kolonner** for at definere gitteret (f.eks. 2 rækker x 2 kolonner deler hver side i 4 delsider).
3. Angiv eventuelt et sideinterval for at begrænse, hvilke sider der posteriseres.
4. Forhåndsvisningen viser et gitter over den aktuelle side, så du kan se skæringerne.
5. Gå mellem siderne for at kontrollere gitteret på andre sider.
6. Klik på knappen til at behandle. Hver gittercelle bliver til sin egen side i den resulterende PDF.
## Funktioner
- Konfigurerbart antal rækker og kolonner for fleksible gitterstørrelser
- Live-forhåndsvisning med gitter, der viser præcis, hvor siderne deles
- Sidefilter, så kun bestemte sider posteriseres
- Side-for-side-navigation i forhåndsvisningen
- Cachede sideøjebliksbilleder for hurtig navigation i forhåndsvisningen
- Stiplede røde gitterlinjer markerer tydeligt skæregrænserne
## Indstillinger
| Indstilling | Beskrivelse |
| ---------------- | ------------------------------------------------- |
| **Rækker** | Antal vandrette inddelinger (standard: 1) |
| **Kolonner** | Antal lodrette inddelinger (standard: 1) |
| **Sideinterval** | Hvilke sider der posteriseres (tomt = alle sider) |
## Anvendelsesmuligheder
- Udskrive en PDF i plakatstørrelse over standard A4- eller Letter-ark, der samles på en væg
- Lave store bannere ud fra et enkeltsidet PDF-design
- Opdele overdimensionerede tekniske tegninger i udskrivbare felter
- Lave storformatudskrifter uden adgang til en bredformatprinter
## Tips
- Et 2x2-gitter gør én side til 4 sider. Et 3x3-gitter gør én side til 9. Planlæg gitteret ud fra, hvor stort det samlede resultat skal være.
- Overlejringen i forhåndsvisningen hjælper dig med at kontrollere, at vigtigt indhold ikke havner på en skærelinje. Juster rækker/kolonner efter behov.
- Til den omvendte handling (at samle flere sider på ét ark) brug [N-Up PDF](./n-up-pdf).
## Relaterede værktøjer
- [N-Up PDF](./n-up-pdf)
- [Opdel sider](./divide-pages)
- [Opdel PDF](./split-pdf)
+55
View File
@@ -0,0 +1,55 @@
---
title: PowerPoint til PDF
description: Konvertér PowerPoint-præsentationer (PPT, PPTX) og ODP-filer til PDF med bevaret slideformatering.
---
# PowerPoint til PDF
Konvertér præsentationsfiler til PDF. Hvert slide bliver til en side i det resulterende dokument, hvor tekst, billeder, figurer og overgange gengives via en LibreOffice-motor i browseren. Understøtter både moderne og ældre PowerPoint-formater samt OpenDocument Presentation-formatet.
## Understøttede formater
| Format | Filendelser |
| :------------------------ | :---------- |
| PowerPoint (moderne) | `.pptx` |
| PowerPoint (ældre) | `.ppt` |
| OpenDocument Presentation | `.odp` |
## Sådan fungerer det
1. Klik på uploadområdet, eller træk og slip dine præsentationsfiler.
2. Gennemgå fillisten. Tilføj flere eller fjern filer efter behov.
3. Klik på **Konvertér til PDF**. LibreOffice-motoren indlæses ved første brug og konverterer derefter hver fil.
4. En enkelt fil downloades direkte som PDF. Flere filer pakkes i `powerpoint-converted.zip`.
## Indstillinger
Dette værktøj har ingen yderligere indstillinger. Slides gengives i deres oprindelige dimensioner.
## Resultat
| Antal filer | Resultat |
| :---------- | :--------------------------------------------------------------- |
| 1 fil | Enkelt PDF-download (oprindeligt filnavn med filendelsen `.pdf`) |
| 2+ filer | ZIP-arkiv (`powerpoint-converted.zip`) med én PDF pr. fil |
## Anvendelsesmuligheder
- Konvertere en præsentation til PDF, før den deles med et publikum, der måske ikke har PowerPoint
- Lave en udskrivbar håndoutversion af et slideshow til en konference eller workshop
- Arkivere præsentationer i et format, der ser ens ud på alle enheder
- Batchkonvertere et bibliotek af ODP-præsentationer fra LibreOffice Impress til PDF
- Lave en PDF-version af en pitch deck til e-mailvedhæftning
## Tips
- Slideanimationer og overgange kan ikke repræsenteres i PDF. Hvert slide gemmes som en statisk side.
- Indlejrede videoer vises ikke i resultatet. Erstat dem om nødvendigt med et skærmbillede eller en pladsholder.
- Talernoter er ikke med i standard-PDF-eksporten. Har du brug for noter, så eksportér først fra PowerPoints egen visning "Udskriv noter".
- LibreOffice-motoren caches efter første indlæsning, så en anden præsentation i samme session konverteres meget hurtigere.
## Relaterede værktøjer
- [Word til PDF](./word-to-pdf)
- [Excel til PDF](./excel-to-pdf)
- [Billeder til PDF](./image-to-pdf)
+47
View File
@@ -0,0 +1,47 @@
---
title: Forbered PDF til AI
description: Udtræk PDF-indhold til struktureret JSON optimeret til LLM'er og AI-pipelines som LlamaIndex. Understøtter batchbehandling.
---
# Forbered PDF til AI
Udtrækker indhold fra PDF-filer og strukturerer det som JSON optimeret til indlæsning i store sprogmodeller (LLM'er) og AI-frameworks som LlamaIndex. Indholdet på hver side udtrækkes og organiseres i et struktureret format, der er klar til RAG-pipelines, chatbots eller semantiske søgesystemer.
## Sådan fungerer det
1. Upload en eller flere PDF'er ved at klikke på dropzonen eller trække filer hen på den.
2. Klik på **Udtræk** for at starte behandlingen.
3. En enkelt fil downloades som `filename_llm.json`. Flere filer giver et `pdf-for-ai.zip`-arkiv.
Værktøjet bruger PyMuPDF's LlamaIndex-integration til at udtrække indhold på sideniveau med metadata, så resultatet direkte kan indlæses i AI-frameworks.
## Indstillinger
Dette værktøj har ingen konfigurerbare indstillinger. Alle sider udtrækkes med fuld tekst og metadata.
## Outputformat
- **Enkelt fil**: `filename_llm.json`
- **Flere filer**: `pdf-for-ai.zip` med én `_llm.json` pr. input-PDF.
JSON-outputtet følger LlamaIndex' dokumentskema med tekstindhold og metadatafelter pr. side.
## Anvendelsesmuligheder
- Forberede PDF-dokumenter til retrieval-augmented generation (RAG)-pipelines.
- Bygge en søgbar vidensbase af PDF-arkiver til en AI-chatbot.
- Føre PDF-rapporter ind i LLM-baserede analyseforløb.
- Forbehandle forskningsartikler til semantisk søgning og spørgsmål-svar-systemer.
- Oprette strukturerede træningsdata fra PDF-samlinger.
## Tips
- Til ren tekstudtrækning uden AI-specifik formatering brug [PDF til tekst](./pdf-to-text).
- Til Markdown-output, der bevarer overskrifter og struktur, brug [PDF til Markdown](./pdf-to-markdown).
- Scannede PDF'er giver tomt eller minimalt output. Kør dem gennem OCR først for at tilføje et tekstlag før udtrækning.
## Relaterede værktøjer
- [PDF til tekst](./pdf-to-text)
- [PDF til Markdown](./pdf-to-markdown)
- [PDF til JSON](./pdf-to-json)
+64
View File
@@ -0,0 +1,64 @@
---
title: Beskyt PDF
description: Beskyt PDF-filer med adgangskode og 256-bit AES-kryptering. Angiv bruger- og ejeradgangskoder med konfigurerbare brugsbegrænsninger.
---
# Beskyt PDF
Lås din PDF bag en adgangskode, så kun autoriserede personer kan åbne den. BentoPDF bruger 256-bit AES-kryptering, den samme standard som banker og offentlige myndigheder bruger, og den udføres helt i din browser via QPDF.
## Sådan fungerer det
1. Upload en PDF-fil.
2. Angiv en **brugeradgangskode** (påkrævet). Det er den adgangskode, folk skal bruge for at åbne filen.
3. Angiv eventuelt en **ejeradgangskode**. Når den er sat, får PDF'en brugsbegrænsninger, der forhindrer udskrivning, redigering, kopiering og annotering.
4. Klik på **Kryptér PDF**.
5. Download den krypterede fil.
## Adgangskodetyper
### Brugeradgangskode (påkrævet)
Brugeradgangskoden er det, modtagerne skriver for at åbne PDF'en. Uden den er dokumentet helt utilgængeligt. Enhver krypteret PDF skal have en.
### Ejeradgangskode (valgfri)
Ejeradgangskoden styrer, hvad en autoriseret bruger kan gøre, efter filen er åbnet. Når du angiver en særskilt ejeradgangskode, anvender BentoPDF automatisk det strengeste sæt begrænsninger:
- Ændring deaktiveret
- Udtrækning/kopiering deaktiveret
- Udskrivning deaktiveret
- Annotering deaktiveret
- Formularudfyldning deaktiveret
- Dokumentsammensætning deaktiveret
Hvis du lader ejeradgangskoden stå tom, er PDF'en krypteret (den kræver stadig brugeradgangskoden for at blive åbnet), men har ingen brugsbegrænsninger, når den først er åbnet.
## Krypteringsdetaljer
- **Algoritme**: AES-256 (256-bit Advanced Encryption Standard)
- **Nøglelængde**: 256 bit
- **Standard**: PDF 2.0-kryptering (QPDF-implementering)
AES-256 kan med nutidens teknologi ikke brute-force'es i praksis. Sikkerheden i din krypterede PDF afhænger helt af adgangskodens styrke.
## Anvendelsesmuligheder
- Beskytte fortrolige regnskabsrapporter, før de sendes på e-mail
- Sikre juridiske dokumenter, der deles med modpartens advokat
- Tilføje en adgangskode til patientjournaler eller personhenførbare oplysninger
- Distribuere betalt indhold (e-bøger, rapporter) med adgangskontrol
- Overholde databeskyttelsespolitikker, der kræver kryptering af lagrede data
## Tips
- Brug en stærk, unik adgangskode. En adgangssætning på 12+ tegn med store og små bogstaver, tal og symboler er ideel.
- Del adgangskoden via en anden kanal (telefon, sms), aldrig i den samme e-mail som PDF'en.
- Hvis du kun vil begrænse handlinger (ingen udskrivning, ingen kopiering) uden at kræve adgangskode for at åbne, så brug værktøjet Skift tilladelser i stedet.
## Relaterede værktøjer
- [Dekryptér PDF](./unlock-pdf): fjern kryptering, når du kender adgangskoden
- [Skift tilladelser](./change-permissions): ændr bestemte brugsbegrænsninger
- [Fjern begrænsninger](./remove-restrictions): fjern al sikkerhed fra en PDF
- [Rens PDF](./sanitize-pdf): fjern skjult indhold, før du krypterer
+44
View File
@@ -0,0 +1,44 @@
---
title: PSD til PDF
description: Konvertér Photoshop-filer (PSD) til PDF i din browser. Gratis, privat, ingen Adobe-software nødvendig.
---
# PSD til PDF
Konvertér Adobe Photoshop PSD-filer til PDF-dokumenter. PSD er Photoshops eget format, og at åbne en kræver normalt dyr Adobe-software. Dette værktøj gengiver det fladede sammensatte billede fra din PSD-fil som en PDF-side i fuld opløsning.
## Understøttede formater
| Format | Filendelse | Bemærkninger |
| :-------------- | :--------- | :--------------------------------------- |
| Adobe Photoshop | `.psd` | Gengiver det fladede sammensatte billede |
## Sådan fungerer det
1. Klik på uploadområdet, eller træk og slip dine PSD-filer. Flere filer understøttes.
2. Gennemgå fillisten. Fjern uønskede filer med papirkurvsikonet, eller brug **Tilføj flere filer** for at tilføje flere.
3. Klik på **Konvertér til PDF**. PyMuPDF-motoren læser PSD-filen og indlejrer det sammensatte billede på en PDF-side i den oprindelige opløsning.
4. En enkelt PSD giver én PDF. Når du uploader flere PSD-filer, samles de i én flersidet PDF med navnet `psd_to_pdf.pdf`, hvor hver PSD bliver til én side.
## Indstillinger
Ingen indstillinger er nødvendige. Konverteren bruger de fladede billeddata fra PSD-filen.
## Anvendelsesmuligheder
- Forhåndsvise Photoshop-designs uden at åbne Photoshop
- Sende designudkast til kunder, der ikke har Adobe Creative Suite
- Udskrive højopløste værker fra PSD-filer
- Lave en PDF-portfolio af flere PSD-designfiler, hvor hver bliver til en side i ét dokument
## Tips
- Konverteringen gengiver den sammensatte (fladede) visning af PSD'en. Enkelte lag, justeringslag og lageffekter bevares ikke som separate elementer i PDF'en.
- Flere PSD-filer flettes til én flersidet PDF i stedet for individuelle PDF'er. Det er nyttigt til portfolioer eller lookbooks.
- PSD-filer med meget høj opløsning (printfiler på 300+ DPI) giver store PDF'er. Værktøjet bevarer den fulde opløsning.
## Relaterede værktøjer
- [Billeder til PDF](./image-to-pdf)
- [PNG til PDF](./png-to-pdf)
- [VSD til 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