mirror of
https://github.com/alam00000/bentopdf.git
synced 2026-11-13 17:54:19 +01:00
Compare commits
39
Commits
29d5a3d75e
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
cc97429413 | ||
|
|
73044e5ea6 | ||
|
|
058053bffc | ||
|
|
4dd34a659a | ||
|
|
25c2d34a9c | ||
|
|
3c7eb141fc | ||
|
|
edd824e1e3 | ||
|
|
18c4aac8bc | ||
|
|
6a0d61903a | ||
|
|
fa064d7f44 | ||
|
|
f0a1868526 | ||
|
|
bfc269cb14 | ||
|
|
ed197274e9 | ||
|
|
56eed3db21 | ||
|
|
ce634e174c | ||
|
|
1a55d8d44b | ||
|
|
0a3dd8e48f | ||
|
|
72b70be757 | ||
|
|
f638f8e4db | ||
|
|
24b060a134 | ||
|
|
6dca41aeb4 | ||
|
|
2a8ce12b6e | ||
|
|
d03594a09d | ||
|
|
d4e270a061 | ||
|
|
8e04279c17 | ||
|
|
f0dd9b7153 | ||
|
|
af0d1caaf7 | ||
|
|
c244fbe8aa | ||
|
|
d79f875ac3 | ||
|
|
3426da5c10 | ||
|
|
ba5821e43f | ||
|
|
fac51527c8 | ||
|
|
8b80a616a7 | ||
|
|
2daa7e2ad0 | ||
|
|
1e663cbe6c | ||
|
|
57b6fe8b15 | ||
|
|
5123c6a9af | ||
|
|
a25c6511ce | ||
|
|
6d8ef7d694 |
No files matched your search
+1
-1
@@ -22,7 +22,7 @@ VITE_TESSERACT_AVAILABLE_LANGUAGES=
|
||||
VITE_OCR_FONT_BASE_URL=
|
||||
|
||||
# Default UI language (build-time)
|
||||
# Supported: en, ar, be, fr, de, es, zh, zh-TW, vi, tr, id, it, pt, nl, da, ko, sv, ru
|
||||
# Supported: en, ar, be, fr, de, es, zh, zh-TW, vi, tr, id, it, pt, nl, da, ko, sv, ru, pl, ja, uk, sk, ca, fa
|
||||
VITE_DEFAULT_LANGUAGE=
|
||||
|
||||
# Custom branding (build-time)
|
||||
|
||||
@@ -99,7 +99,7 @@ RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]
|
||||
|
||||
# Remove trailing slash (except for language root directories)
|
||||
RewriteCond %{REQUEST_FILENAME} !-d
|
||||
RewriteCond %{REQUEST_URI} !^/(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW)/$
|
||||
RewriteCond %{REQUEST_URI} !^/(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/$
|
||||
RewriteCond %{REQUEST_URI} (.+)/$
|
||||
RewriteRule ^ %1 [R=301,L]
|
||||
|
||||
@@ -117,11 +117,11 @@ RewriteRule ^en/(.+)$ /$1 [R=301,L]
|
||||
|
||||
# Language prefix root (e.g., /de/ -> /de/index.html)
|
||||
RewriteCond %{DOCUMENT_ROOT}/$1/index.html -f
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW)/?$ /$1/index.html [L]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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 ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW)/([^/]+)/?$ /$1/$2.html [L]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# 5.5. DOCS ROUTING (VitePress)
|
||||
|
||||
@@ -1 +1,2 @@
|
||||
https://www.bentopdf.com/funding.json
|
||||
https://bentopdf.com/funding.json
|
||||
+84
-14
@@ -1,37 +1,107 @@
|
||||
# BentoPDF Commercial License
|
||||
|
||||
Thank you for purchasing a BentoPDF commercial license. This file summarizes what your license covers. The full terms are on the [licensing page](https://www.bentopdf.com/licensing).
|
||||
Thank you for purchasing a BentoPDF commercial license. These are the full terms of your license. The [licensing page](https://www.bentopdf.com/licensing) summarizes them.
|
||||
|
||||
These terms apply to licenses purchased on or after 3 November 2026. A license purchased before that date keeps the terms that were published when it was bought.
|
||||
|
||||
## Definitions
|
||||
|
||||
- **You** means the person or legal entity that bought the license.
|
||||
- **Affiliate** means any entity that controls you, that you control, or that is under common control with you.
|
||||
- **Product** means one application built with BentoPDF that you offer under one name. The same application on several platforms (web, desktop, iOS, Android) or on several domains under the same name counts as one Product. The same application offered under a different name or brand counts as a separate Product. If you build BentoPDF into a larger application, such as a CRM or a document management system, that larger application is the Product.
|
||||
- **End user** means anyone who uses your Product.
|
||||
|
||||
## What the license covers
|
||||
|
||||
- Use of BentoPDF in closed-source or proprietary applications, without the AGPL-3.0 obligation to disclose your source code.
|
||||
- Unlimited users and devices.
|
||||
- Private modifications, including your own branding and removing the BentoPDF branding (Simple Mode).
|
||||
- Self-hosting, including hosted access for your own users and customers.
|
||||
- Use of BentoPDF in one closed-source Product, without the AGPL-3.0 obligation to disclose your source code.
|
||||
- Unlimited end users, customers, devices and deployments of that Product, including staging environments, regional deployments and separate instances for individual customers.
|
||||
- Private modifications, including a full redesign, your own branding, removing the BentoPDF branding (Simple Mode), and adding your own features.
|
||||
- Running the Product yourself, or distributing it to end users under your own terms, including through app stores.
|
||||
- Contractors and agencies working on the Product on your behalf.
|
||||
- Lifetime updates and email support.
|
||||
|
||||
No license key is required or provided.
|
||||
|
||||
## Bundled components
|
||||
## One license per product
|
||||
|
||||
**Building on BentoPDF? Hyper Compress is included.** The license includes Hyper Compress as a bundled component, so you don't need a separate Hyper Compress license to use it inside BentoPDF.
|
||||
- The license must be held by the person or company that owns the Product. An employee cannot buy a license personally for their employer's Product.
|
||||
- Each additional Product needs its own license. If you want to cover several Products, email us about a catalogue license.
|
||||
- An agency or freelancer building a Product for a client needs one license per client Product, held by the client. You can buy it for your client and hand it over with the Product.
|
||||
- You can transfer the license only together with the Product, for example when you sell the Product or your business. Email us when you do. After a transfer, you can no longer use the license.
|
||||
|
||||
You may use a bundled component only through BentoPDF's own tools, as part of the BentoPDF application you deploy, including your branded or modified version of BentoPDF. You may not:
|
||||
## What the license does not allow
|
||||
|
||||
- call it from your own code through an API, SDK, command line, or headless or server process;
|
||||
- separate, repackage or sublicense it, or use it in other software;
|
||||
- offer a product or service whose main purpose is what the bundled component does, such as a compression-only app or website;
|
||||
- modify the bundled component itself.
|
||||
- Sublicensing, reselling or redistributing BentoPDF or your Product's source code to third parties, including as a template, starter kit, boilerplate or white-label product that others can rebrand and run as their own. Handing a Product and its license to a client, or transferring them as described above, is fine.
|
||||
- Reseller or white-label programs that let your customers offer your Product to their own users as their own product. Letting customers add their logo or colours inside your Product is fine.
|
||||
- Building a developer product from BentoPDF, such as an SDK, library, component, plugin, API or hosted service that lets other developers or other software use BentoPDF's features.
|
||||
- Removing or changing the copyright and license notices in BentoPDF's source files. You may remove BentoPDF branding from the interface.
|
||||
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year.
|
||||
Your end user terms must not give end users any rights to BentoPDF's code beyond using your Product, and must not allow them to extract BentoPDF or its components for use outside your Product.
|
||||
|
||||
[OEM terms](mailto:contact@bentopdf.com) are available for redistribution, reselling and developer products.
|
||||
|
||||
## Bundled component: Hyper Compress
|
||||
|
||||
**Building on BentoPDF? Hyper Compress is included.** The license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component, at no extra cost, when all of the following conditions are met.
|
||||
|
||||
### 1. Your size
|
||||
|
||||
The combined gross revenue of you and your Affiliates, plus any investment or grants you have raised, must be under US$1 million over the most recent 12 months. Splitting work across entities does not change this. If we ask, you must show that you meet this condition.
|
||||
|
||||
If you reach US$1 million, buy a [Hyper Compress Business license](https://www.bentopdf.com/hyper-compress#pricing) within 30 days, or remove Hyper Compress from your Product.
|
||||
|
||||
### 2. Only through BentoPDF's own features
|
||||
|
||||
Hyper Compress may run only through the BentoPDF features that use it, as they ship in BentoPDF releases. Today these are the Compress PDF tool, including its preset pages, and the Compress step of the PDF Workflow builder. You may restyle, translate and rearrange these features and change their default settings.
|
||||
|
||||
### 3. On the end user's device, started by the end user
|
||||
|
||||
Hyper Compress must run on the end user's own device, in their browser or in your Product's desktop or mobile app, on files they choose, when they start it in your Product's interface. You may not:
|
||||
|
||||
- run it on servers, serverless functions, containers, headless browsers or with browser automation;
|
||||
- expose it to other software through an API, webhook, integration, plugin, extension or command line;
|
||||
- start it from your own features, such as automatic compression on upload, AI assistants, scheduled jobs or background processing.
|
||||
|
||||
### 4. Not a compression product
|
||||
|
||||
Hyper Compress is included for Products that are general PDF toolkits. It is not included for a Product whose value comes entirely or mostly from compression. In particular, it is not included for a Product that:
|
||||
|
||||
- has a name, domain, app store listing or main marketing centred on compression;
|
||||
- opens on the compression tool as its home page or default screen;
|
||||
- offers its end users fewer than 10 other BentoPDF tools alongside compression;
|
||||
- includes an edition, app, site or plan that offers compression on its own or as its main feature.
|
||||
|
||||
### 5. The engine stays intact
|
||||
|
||||
You may not modify Hyper Compress's files, including its WebAssembly build and worker, load them outside the features in condition 2, or make them available for use elsewhere, for example by hosting them for other sites or apps.
|
||||
|
||||
### Other uses
|
||||
|
||||
Any use of Hyper Compress outside these conditions needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), an annual subscription from $99/year, or OEM terms. The [Hyper Compress Commercial License](https://github.com/alam00000/bentopdf-hyper-compress/blob/main/COMMERCIAL-LICENSE.md) sets out its terms.
|
||||
|
||||
Which components are bundled can change in future BentoPDF releases. A bundled component in a release you have received stays covered by these terms for that release.
|
||||
|
||||
## Kura
|
||||
|
||||
Kura is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing), annual subscriptions from $99/year, under the [Kura Commercial License](https://github.com/alam00000/bentopdf-kura/blob/main/COMMERCIAL-LICENSE.md). This applies even if a future BentoPDF release uses Kura, unless that release states otherwise.
|
||||
|
||||
## Third-party components
|
||||
|
||||
The commercial license covers BentoPDF's own code. Third-party components keep their own licenses:
|
||||
|
||||
- **PyMuPDF, Ghostscript and CoherentPDF** are licensed under AGPL-3.0. By default they load at runtime from a CDN. If you host or modify them yourself, their AGPL-3.0 terms apply to them.
|
||||
- **PyMuPDF, Ghostscript and CoherentPDF** are licensed under AGPL-3.0. By default they load at runtime from a CDN. If you host, bundle or modify them yourself, their AGPL-3.0 terms apply to them.
|
||||
- Other components are distributed under their own open-source licenses. Keep their license and notice files in your deployment.
|
||||
|
||||
## Breaches
|
||||
|
||||
Any use outside these terms is not licensed. If we tell you about a breach and you fix it within 30 days, or buy the license that use requires, your license continues. If you do not, or if the same breach happens again, your license ends. For unlicensed use, you owe the list price of the license that use required, from the date the use began.
|
||||
|
||||
None of this limits your rights under AGPL-3.0 if you comply with it instead.
|
||||
|
||||
## Refunds
|
||||
|
||||
No refunds are given after purchase.
|
||||
|
||||
## Questions
|
||||
|
||||
Email [contact@bentopdf.com](mailto:contact@bentopdf.com) with your purchase details.
|
||||
@@ -14,9 +14,16 @@
|
||||
<a href="https://www.nvidia.com/en-us/startups/">
|
||||
<img alt="NVIDIA Inception Program" src="public/images/nvidia-inception.svg" height="44" />
|
||||
</a>
|
||||
|
||||
<a href="https://www.vultr.com/">
|
||||
<picture>
|
||||
<source media="(prefers-color-scheme: dark)" srcset="public/images/vultr-logo-dark.svg" />
|
||||
<img alt="Vultr" src="public/images/vultr-logo-light.svg" height="30" />
|
||||
</picture>
|
||||
</a>
|
||||
</p>
|
||||
<p align="center"><sub>Individual Supporters</sub></p>
|
||||
<p align="center"><!-- sponsors --><a href="https://github.com/gaedeke"><img src="https://github.com/gaedeke.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/stiflerbox"><img src="https://github.com/stiflerbox.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/shollyethan"><img src="https://github.com/shollyethan.png" width="60px" alt="User avatar: Ethan Sholly" /></a><a href="https://github.com/KnudH"><img src="https://github.com/KnudH.png" width="60px" alt="User avatar: Knud Hollander" /></a><a href="https://github.com/mohannadhussain"><img src="https://github.com/mohannadhussain.png" width="60px" alt="User avatar: Mohannad Hussain" /></a><a href="https://github.com/chaoscastle"><img src="https://github.com/chaoscastle.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/RobertGonzales1"><img src="https://github.com/RobertGonzales1.png" width="60px" alt="User avatar: Robert Gonzales" /></a><a href="https://github.com/michivonah"><img src="https://github.com/michivonah.png" width="60px" alt="User avatar: Michi" /></a><a href="https://github.com/bmikaili"><img src="https://github.com/bmikaili.png" width="60px" alt="User avatar: Berzan" /></a><a href="https://github.com/Thanyanit-J"><img src="https://github.com/Thanyanit-J.png" width="60px" alt="User avatar: Thanyanit Jongjitragan" /></a><a href="https://github.com/AceofSpades5757"><img src="https://github.com/AceofSpades5757.png" width="60px" alt="User avatar: Kyle L. Davis" /></a><a href="https://github.com/Jacco011"><img src="https://github.com/Jacco011.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/Pallandos"><img src="https://github.com/Pallandos.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/haritvsmurali"><img src="https://github.com/haritvsmurali.png" width="60px" alt="User avatar: Hari Haran" /></a><a href="https://github.com/mrtoadie"><img src="https://github.com/mrtoadie.png" width="60px" alt="User avatar: Toadie" /></a><a href="https://github.com/sam12dr21"><img src="https://github.com/sam12dr21.png" width="60px" alt="User avatar: " /></a><!-- sponsors --></p>
|
||||
<p align="center"><!-- sponsors --><a href="https://github.com/gaedeke"><img src="https://github.com/gaedeke.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/stiflerbox"><img src="https://github.com/stiflerbox.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/shollyethan"><img src="https://github.com/shollyethan.png" width="60px" alt="User avatar: Ethan Sholly" /></a><a href="https://github.com/KnudH"><img src="https://github.com/KnudH.png" width="60px" alt="User avatar: Knud Hollander" /></a><a href="https://github.com/mohannadhussain"><img src="https://github.com/mohannadhussain.png" width="60px" alt="User avatar: Mohannad Hussain" /></a><a href="https://github.com/chaoscastle"><img src="https://github.com/chaoscastle.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/RobertGonzales1"><img src="https://github.com/RobertGonzales1.png" width="60px" alt="User avatar: Robert Gonzales" /></a><a href="https://github.com/michivonah"><img src="https://github.com/michivonah.png" width="60px" alt="User avatar: Michi" /></a><a href="https://github.com/bmikaili"><img src="https://github.com/bmikaili.png" width="60px" alt="User avatar: Berzan" /></a><a href="https://github.com/Thanyanit-J"><img src="https://github.com/Thanyanit-J.png" width="60px" alt="User avatar: Thanyanit Jongjitragan" /></a><a href="https://github.com/AceofSpades5757"><img src="https://github.com/AceofSpades5757.png" width="60px" alt="User avatar: Kyle L. Davis" /></a><a href="https://github.com/Jacco011"><img src="https://github.com/Jacco011.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/Pallandos"><img src="https://github.com/Pallandos.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/haritvsmurali"><img src="https://github.com/haritvsmurali.png" width="60px" alt="User avatar: Hari Haran" /></a><a href="https://github.com/mrtoadie"><img src="https://github.com/mrtoadie.png" width="60px" alt="User avatar: Toadie" /></a><a href="https://github.com/sam12dr21"><img src="https://github.com/sam12dr21.png" width="60px" alt="User avatar: " /></a><a href="https://github.com/BGauthier2020"><img src="https://github.com/BGauthier2020.png" width="60px" alt="User avatar: " /></a><!-- sponsors --></p>
|
||||
<p align="center">
|
||||
<a href="https://github.com/sponsors/alam00000"><img alt="Become a Sponsor" src="https://img.shields.io/badge/Become%20a%20Sponsor-%E2%9D%A4-ff69b4?style=for-the-badge" /></a>
|
||||
<a href="https://ko-fi.com/alio01"><img alt="Buy me a Coffee" src="https://img.shields.io/badge/Buy%20me%20a%20Coffee-yellow?style=for-the-badge&logo=kofi" /></a>
|
||||
@@ -107,9 +114,9 @@ BentoPDF is **dual-licensed** to fit your needs:
|
||||
</a>
|
||||
</p>
|
||||
|
||||
> **One-time purchase** · **Unlimited devices & users** · **Lifetime updates** · **No AGPL obligations**
|
||||
> **One-time purchase** · **One product, unlimited devices & users** · **Lifetime updates** · **No AGPL obligations**
|
||||
|
||||
> **Building on BentoPDF? Hyper Compress is included.** The commercial license covers [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component when you use it through BentoPDF's own tools. Using the engine on its own or in other software needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing) from $99/year, and [Kura](https://www.bentopdf.com/kura#pricing) is licensed separately from $99/year. See [Bundled Components](https://www.bentopdf.com/licensing#bundled-components).
|
||||
> **Building on BentoPDF? Hyper Compress is included.** The commercial license covers [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component in eligible products: companies under US$1 million in revenue and funding, general PDF toolkits, and only through BentoPDF's own tools on the end user's device. Using the engine on its own, on a server, through an API or in other software needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), and [Kura](https://www.bentopdf.com/kura#pricing) is licensed separately. Both are annual subscriptions from $99/year, under the [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress/blob/main/COMMERCIAL-LICENSE.md) and [Kura](https://github.com/alam00000/bentopdf-kura/blob/main/COMMERCIAL-LICENSE.md) commercial licenses. See the [full license terms](COMMERCIAL-LICENSE.md).
|
||||
|
||||
📖 For more details, see our [Licensing Page](https://www.bentopdf.com/licensing)
|
||||
|
||||
@@ -728,7 +735,7 @@ docker run -p 3000:8080 bentopdf
|
||||
|
||||
**Default Language:**
|
||||
|
||||
Set the default UI language at build time. Users can still switch languages — this only changes the initial default. Supported: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`.
|
||||
Set the default UI language at build time. Users can still switch languages — this only changes the initial default. Supported: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`, `ko`, `sv`, `ru`, `pl`, `ja`, `uk`, `sk`, `ca`, `fa`.
|
||||
|
||||
```bash
|
||||
docker build --build-arg VITE_DEFAULT_LANGUAGE=fr -t bentopdf .
|
||||
|
||||
+399
@@ -0,0 +1,399 @@
|
||||
<!doctype html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8" />
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||
<title>Advertise on BentoPDF - Homepage Logo Ads | BentoPDF</title>
|
||||
<meta
|
||||
name="description"
|
||||
content="Put your logo on the BentoPDF homepage. Eight slots, a flat monthly price and no tracking. From $129 a month, cancel anytime."
|
||||
/>
|
||||
<meta name="author" content="BentoPDF" />
|
||||
<meta name="robots" content="index, follow" />
|
||||
|
||||
<link rel="canonical" href="https://www.bentopdf.com/advertise" />
|
||||
|
||||
<meta property="og:type" content="website" />
|
||||
<meta property="og:url" content="https://www.bentopdf.com/advertise" />
|
||||
<meta
|
||||
property="og:title"
|
||||
content="Advertise on BentoPDF - Homepage Logo Ads | BentoPDF"
|
||||
/>
|
||||
<meta
|
||||
property="og:description"
|
||||
content="Put your logo on the BentoPDF homepage. Eight slots, a flat monthly price and no tracking. From $129 a month, cancel anytime."
|
||||
/>
|
||||
<meta
|
||||
property="og:image"
|
||||
content="https://www.bentopdf.com/images/og-tools.png"
|
||||
/>
|
||||
<meta property="og:site_name" content="BentoPDF" />
|
||||
|
||||
<meta name="twitter:card" content="summary_large_image" />
|
||||
<meta
|
||||
name="twitter:title"
|
||||
content="Advertise on BentoPDF - Homepage Logo Ads | BentoPDF"
|
||||
/>
|
||||
<meta
|
||||
name="twitter:description"
|
||||
content="Put your logo on the BentoPDF homepage. Eight slots, a flat monthly price and no tracking. From $129 a month, cancel anytime."
|
||||
/>
|
||||
<meta
|
||||
name="twitter:image"
|
||||
content="https://www.bentopdf.com/images/og-tools.png"
|
||||
/>
|
||||
<meta name="twitter:site" content="@BentoPDF" />
|
||||
|
||||
<link href="/src/css/styles.css" rel="stylesheet" />
|
||||
<link href="/src/css/landing.css" rel="stylesheet" />
|
||||
|
||||
<link rel="manifest" href="/site.webmanifest" />
|
||||
|
||||
<link rel="icon" type="image/svg+xml" href="/images/favicon.svg" />
|
||||
<link
|
||||
rel="icon"
|
||||
type="image/png"
|
||||
sizes="192x192"
|
||||
href="/images/favicon-192x192.png"
|
||||
/>
|
||||
<link
|
||||
rel="icon"
|
||||
type="image/png"
|
||||
sizes="512x512"
|
||||
href="/images/favicon-512x512.png"
|
||||
/>
|
||||
<link
|
||||
rel="apple-touch-icon"
|
||||
sizes="180x180"
|
||||
href="/images/apple-touch-icon.png"
|
||||
/>
|
||||
<link rel="icon" href="/favicon.ico" sizes="32x32" />
|
||||
</head>
|
||||
|
||||
<body class="lp antialiased">
|
||||
{{> navbar }}
|
||||
|
||||
<div id="app">
|
||||
<section id="ad-paid" class="lp-sec" hidden>
|
||||
<div class="lp-frame">
|
||||
<div class="lp-pad--tight">
|
||||
<div class="lp-note">
|
||||
<i data-lucide="circle-check"></i>
|
||||
<p>
|
||||
<strong>Payment received, thanks.</strong>
|
||||
We review every ad and put it live within 24 hours. To change
|
||||
anything, email
|
||||
<a
|
||||
href="mailto:contact@bentopdf.com?subject=Ad%20for%20BentoPDF"
|
||||
class="text-indigo-400 hover:underline"
|
||||
>contact@bentopdf.com</a
|
||||
>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="ad-failed" class="lp-sec" hidden>
|
||||
<div class="lp-frame">
|
||||
<div class="lp-pad--tight">
|
||||
<div class="lp-note">
|
||||
<i data-lucide="circle-alert"></i>
|
||||
<p>
|
||||
<strong>Checkout didn't go through.</strong>
|
||||
Nothing was charged. Try again below or email
|
||||
<a
|
||||
href="mailto:contact@bentopdf.com?subject=Advertise%20on%20BentoPDF"
|
||||
class="text-indigo-400 hover:underline"
|
||||
>contact@bentopdf.com</a
|
||||
>.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="advertise-hero" class="lp-sec lp-sec--first">
|
||||
<div class="lp-frame">
|
||||
<div class="lp-head lp-head--center">
|
||||
<div>
|
||||
<h1 class="lp-h1">
|
||||
<span class="line">Advertise on</span>
|
||||
<span class="line dim">BentoPDF</span>
|
||||
</h1>
|
||||
<p class="lp-head-p">
|
||||
Put your logo on the BentoPDF homepage, right above the tools
|
||||
people open to work on their PDFs. Eight slots, a flat monthly
|
||||
price, and no tracking of any kind.
|
||||
</p>
|
||||
<div class="lp-actions">
|
||||
<span class="lp-brackets">
|
||||
<a href="#pricing" class="lp-btn lp-btn--primary">
|
||||
<span>See pricing</span>
|
||||
<i data-lucide="arrow-right"></i>
|
||||
</a>
|
||||
</span>
|
||||
<a
|
||||
href="mailto:contact@bentopdf.com?subject=Advertise%20on%20BentoPDF"
|
||||
class="lp-btn lp-btn--ghost"
|
||||
>
|
||||
<i data-lucide="mail"></i>
|
||||
<span>Email us</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section id="pricing" class="lp-sec lp-band">
|
||||
<div class="lp-frame">
|
||||
<div class="lp-head lp-head--center">
|
||||
<div>
|
||||
<h2 class="lp-h2">
|
||||
<span class="line">Pick a</span>
|
||||
<span class="line dim">row</span>
|
||||
</h2>
|
||||
<p class="lp-head-p">
|
||||
Billed monthly. Cancel anytime and your ad stays up until the
|
||||
end of the month you paid for.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="lp-grid lp-grid--2">
|
||||
<div class="lp-cell lp-tier lp-cell--accent lp-reveal">
|
||||
<h3>Top row</h3>
|
||||
<p class="lp-tier-for">
|
||||
Four slots, first in line above the tools
|
||||
</p>
|
||||
<div class="lp-tier-price"><b>$199</b><span>/ month</span></div>
|
||||
<ul>
|
||||
<li><i data-lucide="check"></i>Larger tile in the first row</li>
|
||||
<li><i data-lucide="check"></i>Your logo, name and link</li>
|
||||
<li>
|
||||
<i data-lucide="check"></i>On every language version of the
|
||||
homepage
|
||||
</li>
|
||||
<li><i data-lucide="check"></i>Cancel anytime</li>
|
||||
</ul>
|
||||
<a
|
||||
href="https://www.bentopdf.com/api/ad-checkout?row=top"
|
||||
class="lp-btn lp-btn--primary lp-btn--sm"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>Book the top row</a
|
||||
>
|
||||
</div>
|
||||
<div class="lp-cell lp-tier lp-reveal">
|
||||
<h3>Second row</h3>
|
||||
<p class="lp-tier-for">Four slots, right below the top row</p>
|
||||
<div class="lp-tier-price"><b>$129</b><span>/ month</span></div>
|
||||
<ul>
|
||||
<li>
|
||||
<i data-lucide="check"></i>Standard tile in the second row
|
||||
</li>
|
||||
<li><i data-lucide="check"></i>Your logo, name and link</li>
|
||||
<li>
|
||||
<i data-lucide="check"></i>On every language version of the
|
||||
homepage
|
||||
</li>
|
||||
<li><i data-lucide="check"></i>Cancel anytime</li>
|
||||
</ul>
|
||||
<a
|
||||
href="https://www.bentopdf.com/api/ad-checkout?row=second"
|
||||
class="lp-btn lp-btn--ghost lp-btn--sm"
|
||||
target="_blank"
|
||||
rel="noopener noreferrer"
|
||||
>Book the second row</a
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="lp-sec">
|
||||
<div class="lp-frame">
|
||||
<div class="lp-head lp-head--center">
|
||||
<div>
|
||||
<h2 class="lp-h2">
|
||||
<span class="line">How it</span>
|
||||
<span class="line dim">works</span>
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="lp-grid lp-grid--3">
|
||||
<div class="lp-cell lp-reveal">
|
||||
<span class="lp-tile"><i data-lucide="credit-card"></i></span>
|
||||
<h3>Book a row</h3>
|
||||
<p>
|
||||
Checkout is handled by Dodo Payments, our merchant of record, so
|
||||
you get a proper invoice with sales tax taken care of.
|
||||
</p>
|
||||
</div>
|
||||
<div class="lp-cell lp-reveal">
|
||||
<span class="lp-tile"><i data-lucide="image"></i></span>
|
||||
<h3>Add your ad</h3>
|
||||
<p>
|
||||
Checkout asks for the name to show, your link, and a link to
|
||||
your logo as a square SVG or PNG of at least 128 by 128 pixels.
|
||||
</p>
|
||||
</div>
|
||||
<div class="lp-cell lp-reveal">
|
||||
<span class="lp-tile"><i data-lucide="rocket"></i></span>
|
||||
<h3>Go live</h3>
|
||||
<p>
|
||||
We review every ad by hand and put it live within 24 hours. Need
|
||||
a new logo or link later? Just email us.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="lp-sec">
|
||||
<div class="lp-frame">
|
||||
<div class="lp-pad--tight">
|
||||
<div class="lp-note lp-reveal">
|
||||
<i data-lucide="eye-off"></i>
|
||||
<p>
|
||||
<strong
|
||||
>We don't track our visitors, so we don't track your ad
|
||||
either.</strong
|
||||
>
|
||||
No pixels, no scripts, no impression or click counts. Your logo
|
||||
is served from bentopdf.com and links straight to your site. To
|
||||
measure visits, add UTM parameters to your link and read them in
|
||||
your own analytics.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="lp-sec">
|
||||
<div class="lp-frame">
|
||||
<div class="lp-head lp-head--center">
|
||||
<div>
|
||||
<h2 class="lp-h2">
|
||||
<span class="line">Frequently asked</span>
|
||||
<span class="line dim">questions</span>
|
||||
</h2>
|
||||
</div>
|
||||
</div>
|
||||
<div class="lp-faq-wrap">
|
||||
<div id="faq-accordion" class="lp-faq lp-reveal">
|
||||
<div class="faq-item">
|
||||
<button
|
||||
class="faq-question w-full flex justify-between items-center text-left"
|
||||
type="button"
|
||||
>
|
||||
<span>What can I advertise?</span>
|
||||
<i data-lucide="plus" class="faq-icon"></i>
|
||||
</button>
|
||||
<div
|
||||
class="faq-answer max-h-0 overflow-hidden transition-all duration-300 ease-in-out"
|
||||
>
|
||||
<p>
|
||||
Software, services and products that are useful to people
|
||||
who work with documents. We don't accept gambling, adult
|
||||
content, malware, or anything misleading. If we turn your ad
|
||||
down, we refund you in full.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="faq-item">
|
||||
<button
|
||||
class="faq-question w-full flex justify-between items-center text-left"
|
||||
type="button"
|
||||
>
|
||||
<span>Where does my ad show?</span>
|
||||
<i data-lucide="plus" class="faq-icon"></i>
|
||||
</button>
|
||||
<div
|
||||
class="faq-answer max-h-0 overflow-hidden transition-all duration-300 ease-in-out"
|
||||
>
|
||||
<p>
|
||||
On the bentopdf.com homepage, in every language, directly
|
||||
above the tool grid. Self-hosted copies of BentoPDF never
|
||||
show ads.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="faq-item">
|
||||
<button
|
||||
class="faq-question w-full flex justify-between items-center text-left"
|
||||
type="button"
|
||||
>
|
||||
<span>Can you tell me how many people saw my ad?</span>
|
||||
<i data-lucide="plus" class="faq-icon"></i>
|
||||
</button>
|
||||
<div
|
||||
class="faq-answer max-h-0 overflow-hidden transition-all duration-300 ease-in-out"
|
||||
>
|
||||
<p>
|
||||
No. BentoPDF has no analytics, so there are no impression or
|
||||
click numbers to share. Add UTM parameters to your link to
|
||||
see the visits we send you in your own analytics.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
<div class="faq-item">
|
||||
<button
|
||||
class="faq-question w-full flex justify-between items-center text-left"
|
||||
type="button"
|
||||
>
|
||||
<span>How do I cancel?</span>
|
||||
<i data-lucide="plus" class="faq-icon"></i>
|
||||
</button>
|
||||
<div
|
||||
class="faq-answer max-h-0 overflow-hidden transition-all duration-300 ease-in-out"
|
||||
>
|
||||
<p>
|
||||
Email us and we'll cancel your subscription. Your ad stays
|
||||
up until the end of the month you paid for.
|
||||
</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
|
||||
<section class="lp-sec">
|
||||
<div class="lp-frame">
|
||||
<div class="lp-cta">
|
||||
<h2 class="lp-h2">Questions before you book?</h2>
|
||||
<p>Email us about slots, pricing or anything else.</p>
|
||||
<div class="lp-cta-actions">
|
||||
<span class="lp-brackets">
|
||||
<a
|
||||
href="mailto:contact@bentopdf.com?subject=Advertise%20on%20BentoPDF"
|
||||
class="lp-btn lp-btn--primary"
|
||||
>
|
||||
<span>contact@bentopdf.com</span>
|
||||
<i data-lucide="arrow-right"></i>
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
</div>
|
||||
|
||||
{{> footer }}
|
||||
<script type="module" src="src/js/utils/lucide-init.ts"></script>
|
||||
<script type="module" src="src/js/main.ts"></script>
|
||||
<script type="module" src="src/js/mobileMenu.ts"></script>
|
||||
<script type="module" src="src/js/landing.ts"></script>
|
||||
<script type="module" src="src/js/advertise.ts"></script>
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "https://schema.org",
|
||||
"@type": "WebPage",
|
||||
"name": "Advertise on BentoPDF - Homepage Logo Ads | BentoPDF",
|
||||
"url": "https://www.bentopdf.com/advertise"
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,92 @@
|
||||
const MODES = {
|
||||
live: {
|
||||
api: 'https://live.dodopayments.com',
|
||||
products: new Map([
|
||||
['top', 'pdt_0Nqv9McKI1iCBXb7z4DB7'],
|
||||
['second', 'pdt_0Nqv9OYDLwWZsu1hzpZ0c'],
|
||||
]),
|
||||
},
|
||||
test: {
|
||||
api: 'https://test.dodopayments.com',
|
||||
products: new Map([
|
||||
['top', 'pdt_0Nqt0672sYJEtrkIb2K6m'],
|
||||
['second', 'pdt_0Nqt069LgdQFPo1tFS1yF'],
|
||||
]),
|
||||
},
|
||||
};
|
||||
|
||||
const FIELDS = [
|
||||
{
|
||||
key: 'ad_name',
|
||||
label: 'Name on the ad',
|
||||
field_type: 'text',
|
||||
placeholder: 'Acme Invoices',
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
key: 'ad_link',
|
||||
label: 'Link',
|
||||
field_type: 'url',
|
||||
placeholder: 'https://example.com',
|
||||
required: true,
|
||||
},
|
||||
{
|
||||
key: 'ad_logo',
|
||||
label: 'Logo link (square SVG or PNG)',
|
||||
field_type: 'url',
|
||||
placeholder: 'https://example.com/logo.svg',
|
||||
required: true,
|
||||
},
|
||||
];
|
||||
|
||||
function redirect(location) {
|
||||
return new Response(null, {
|
||||
status: 303,
|
||||
headers: { Location: location, 'Cache-Control': 'no-store' },
|
||||
});
|
||||
}
|
||||
|
||||
async function createCheckout(key, api, productId, page) {
|
||||
const response = await fetch(`${api}/checkouts`, {
|
||||
method: 'POST',
|
||||
headers: {
|
||||
Authorization: `Bearer ${key}`,
|
||||
'Content-Type': 'application/json',
|
||||
},
|
||||
body: JSON.stringify({
|
||||
product_cart: [{ product_id: productId, quantity: 1 }],
|
||||
custom_fields: FIELDS,
|
||||
return_url: `${page}?paid=1`,
|
||||
cancel_url: `${page}#pricing`,
|
||||
}),
|
||||
signal: AbortSignal.timeout(10000),
|
||||
});
|
||||
const body = await response.text();
|
||||
if (!response.ok) {
|
||||
throw new Error(`Dodo returned ${response.status}: ${body}`);
|
||||
}
|
||||
const { checkout_url } = JSON.parse(body);
|
||||
if (
|
||||
typeof checkout_url !== 'string' ||
|
||||
!checkout_url.startsWith('https://')
|
||||
) {
|
||||
throw new Error('Dodo returned no checkout URL');
|
||||
}
|
||||
return checkout_url;
|
||||
}
|
||||
|
||||
export async function GET(request) {
|
||||
const url = new URL(request.url);
|
||||
const page = `${url.origin}/advertise`;
|
||||
const key = process.env.DODO_PAYMENTS_API_KEY ?? '';
|
||||
const mode = key.startsWith('dodo_live_') ? MODES.live : MODES.test;
|
||||
const productId = mode.products.get(url.searchParams.get('row'));
|
||||
if (!productId) return redirect(`${page}#pricing`);
|
||||
|
||||
try {
|
||||
return redirect(await createCheckout(key, mode.api, productId, page));
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
return redirect(`${page}?checkout=failed`);
|
||||
}
|
||||
}
|
||||
+2
-2
@@ -7,10 +7,10 @@ type: application
|
||||
# This is the chart version. This version number should be incremented each time you make changes
|
||||
# to the chart and its templates, including the app version.
|
||||
# Versions are expected to follow Semantic Versioning (https://semver.org/)
|
||||
version: 1.0.9
|
||||
version: 1.0.10
|
||||
|
||||
# This is the version number of the application being deployed. This version number should be
|
||||
# incremented each time you make changes to the application. Versions are not expected to
|
||||
# follow Semantic Versioning. They should reflect the version the application is using.
|
||||
# It is recommended to use it with quotes.
|
||||
appVersion: '2.8.10'
|
||||
appVersion: '2.8.11'
|
||||
+31
-19
@@ -63,29 +63,33 @@ The commercial license covers BentoPDF's own code. If you configure and use AGPL
|
||||
|
||||
## What's Included
|
||||
|
||||
| Feature | Included |
|
||||
| ----------------------------- | -------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
| Feature | Included |
|
||||
| ----------------------------- | --------------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ (conditions apply) |
|
||||
| Products covered | One per license |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
|
||||
## One License Per Product
|
||||
|
||||
A license covers one Product: one application offered under one name, on any number of platforms, domains and deployments. Each additional Product, including the same application under another brand, needs its own license. Agencies need one license per client Product, held by the client. Reselling BentoPDF as a template, white-label product or developer SDK is not allowed; [OEM terms](mailto:contact@bentopdf.com) are available for that.
|
||||
|
||||
## Bundled Components
|
||||
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component, so you don't need a separate Hyper Compress license to use it inside BentoPDF.
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component for eligible Products, so you don't need a separate Hyper Compress license to use it inside BentoPDF. It is included when:
|
||||
|
||||
You may use a bundled component only through BentoPDF's own tools, as part of the BentoPDF application you deploy, including your branded or modified version of BentoPDF. You may not:
|
||||
- you and your affiliates have under US$1 million in combined revenue and funding over the last 12 months;
|
||||
- it runs only through the BentoPDF features that use it: the Compress PDF tool and the Compress step of the PDF Workflow builder;
|
||||
- it runs on the end user's device and is started by the end user in your Product's interface, never on servers or headless browsers, through an API, or from your own automation;
|
||||
- your Product is a general PDF toolkit, not a compression product: it offers at least 10 other BentoPDF tools and is not named, marketed or opened on compression;
|
||||
- the engine itself is not modified, extracted or made available for use elsewhere.
|
||||
|
||||
- call it from your own code through an API, SDK, command line, or headless or server process;
|
||||
- separate, repackage or sublicense it, or use it in other software;
|
||||
- offer a product or service whose main purpose is what the bundled component does, such as a compression-only app or website;
|
||||
- modify the bundled component itself.
|
||||
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year.
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year. The [full license terms](https://github.com/alam00000/bentopdf/blob/main/COMMERCIAL-LICENSE.md) cover every condition in detail.
|
||||
|
||||
## FAQ
|
||||
|
||||
@@ -97,9 +101,17 @@ No. BentoPDF does not use license keys. The commercial license grants you legal
|
||||
|
||||
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.
|
||||
|
||||
### Do I need a license for each product?
|
||||
|
||||
Yes. One license covers one Product, on any number of platforms, domains and deployments. The same application under a different brand is a separate Product.
|
||||
|
||||
### Can an agency use one license for several clients?
|
||||
|
||||
No. Each client Product needs its own license, held by the client. You can buy it for your client and hand it over with the Product.
|
||||
|
||||
### Does the commercial license cover Hyper Compress or Kura?
|
||||
|
||||
Hyper Compress, yes, when you use it through BentoPDF. It is included as a [bundled component](#bundled-components). Using the engine on its own, or inside other software, needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
Hyper Compress, yes, through BentoPDF's own features in an eligible Product. It is included as a [bundled component](#bundled-components) for companies under US$1 million in revenue and funding, in general PDF toolkits, running on the end user's device. Using the engine on its own, on a server, through an API, or inside other software needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
|
||||
### What about the AGPL components?
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root
|
||||
@@ -122,11 +122,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# ADD .HTML EXTENSION (ROOT LEVEL)
|
||||
@@ -183,10 +183,10 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
|
||||
@@ -149,7 +149,7 @@ docker run -d -p 3000:8080 bentopdf:custom
|
||||
|
||||
بالنسبة لـ OCR، اترك متغيرات `VITE_TESSERACT_*` فارغة لاستخدام الأصول الافتراضية عبر الإنترنت، أو اضبطها الثلاثة معًا لـ OCR المستضاف ذاتيًا أو بدون اتصال. تُرفض التغييرات الجزئية لإعدادات OCR لأن العامل والبيئة الأساسية ومجلد traineddata يجب أن تتطابق. وللحصول على ملف PDF قابل للبحث بالكامل دون اتصال، اضبط أيضًا `VITE_OCR_FONT_BASE_URL` لكي تُحمَّل خطوط الطبقة النصية الخاصة بـ OCR من خادمك الداخلي بدل روابط خطوط Noto العامة.
|
||||
|
||||
يحدد `VITE_DEFAULT_LANGUAGE` لغة الواجهة للزوار لأول مرة. القيم المدعومة: `en` و`ar` و`be` و`fr` و`de` و`es` و`zh` و`zh-TW` و`vi` و`tr` و`id` و`it` و`pt` و`nl` و`da`. ما زال بإمكان المستخدمين تبديل اللغة، وهذا يغيّر الافتراضي فقط.
|
||||
يحدد `VITE_DEFAULT_LANGUAGE` لغة الواجهة للزوار لأول مرة. القيم المدعومة: `en` و`ar` و`be` و`fr` و`de` و`es` و`zh` و`zh-TW` و`vi` و`tr` و`id` و`it` و`pt` و`nl` و`da` و`ko` و`sv` و`ru` و`pl` و`ja` و`uk` و`sk` و`ca` و`fa`. ما زال بإمكان المستخدمين تبديل اللغة، وهذا يغيّر الافتراضي فقط.
|
||||
|
||||
مثال:
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ 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} !^/(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/$
|
||||
RewriteCond %{REQUEST_URI} (.+)/$
|
||||
RewriteRule ^ %1 [R=301,L]
|
||||
|
||||
@@ -163,7 +163,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# 5.1. LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root (for SEO consistency)
|
||||
@@ -172,11 +172,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# 5.5. DOCS ROUTING (VitePress)
|
||||
@@ -211,11 +211,11 @@ RewriteBase /pdf-tools/
|
||||
|
||||
# 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf-tools/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
@@ -254,7 +254,7 @@ Header always set Cross-Origin-Embedder-Policy "require-corp"
|
||||
```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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# Root level pages
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
|
||||
+31
-19
@@ -63,29 +63,33 @@ The commercial license covers BentoPDF's own code. If you configure and use AGPL
|
||||
|
||||
## What's Included
|
||||
|
||||
| Feature | Included |
|
||||
| ----------------------------- | -------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
| Feature | Included |
|
||||
| ----------------------------- | --------------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ (conditions apply) |
|
||||
| Products covered | One per license |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
|
||||
## One License Per Product
|
||||
|
||||
A license covers one Product: one application offered under one name, on any number of platforms, domains and deployments. Each additional Product, including the same application under another brand, needs its own license. Agencies need one license per client Product, held by the client. Reselling BentoPDF as a template, white-label product or developer SDK is not allowed; [OEM terms](mailto:contact@bentopdf.com) are available for that.
|
||||
|
||||
## Bundled Components
|
||||
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component, so you don't need a separate Hyper Compress license to use it inside BentoPDF.
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component for eligible Products, so you don't need a separate Hyper Compress license to use it inside BentoPDF. It is included when:
|
||||
|
||||
You may use a bundled component only through BentoPDF's own tools, as part of the BentoPDF application you deploy, including your branded or modified version of BentoPDF. You may not:
|
||||
- you and your affiliates have under US$1 million in combined revenue and funding over the last 12 months;
|
||||
- it runs only through the BentoPDF features that use it: the Compress PDF tool and the Compress step of the PDF Workflow builder;
|
||||
- it runs on the end user's device and is started by the end user in your Product's interface, never on servers or headless browsers, through an API, or from your own automation;
|
||||
- your Product is a general PDF toolkit, not a compression product: it offers at least 10 other BentoPDF tools and is not named, marketed or opened on compression;
|
||||
- the engine itself is not modified, extracted or made available for use elsewhere.
|
||||
|
||||
- call it from your own code through an API, SDK, command line, or headless or server process;
|
||||
- separate, repackage or sublicense it, or use it in other software;
|
||||
- offer a product or service whose main purpose is what the bundled component does, such as a compression-only app or website;
|
||||
- modify the bundled component itself.
|
||||
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year.
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year. The [full license terms](https://github.com/alam00000/bentopdf/blob/main/COMMERCIAL-LICENSE.md) cover every condition in detail.
|
||||
|
||||
## FAQ
|
||||
|
||||
@@ -97,9 +101,17 @@ No. BentoPDF does not use license keys. The commercial license grants you legal
|
||||
|
||||
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.
|
||||
|
||||
### Do I need a license for each product?
|
||||
|
||||
Yes. One license covers one Product, on any number of platforms, domains and deployments. The same application under a different brand is a separate Product.
|
||||
|
||||
### Can an agency use one license for several clients?
|
||||
|
||||
No. Each client Product needs its own license, held by the client. You can buy it for your client and hand it over with the Product.
|
||||
|
||||
### Does the commercial license cover Hyper Compress or Kura?
|
||||
|
||||
Hyper Compress, yes, when you use it through BentoPDF. It is included as a [bundled component](#bundled-components). Using the engine on its own, or inside other software, needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
Hyper Compress, yes, through BentoPDF's own features in an eligible Product. It is included as a [bundled component](#bundled-components) for companies under US$1 million in revenue and funding, in general PDF toolkits, running on the end user's device. Using the engine on its own, on a server, through an API, or inside other software needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
|
||||
### What about the AGPL components?
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root
|
||||
@@ -122,11 +122,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# ADD .HTML EXTENSION (ROOT LEVEL)
|
||||
@@ -183,10 +183,10 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
|
||||
@@ -149,7 +149,7 @@ CSP уключае `'unsafe-eval'` у `script-src`, бо асяроддзе вы
|
||||
|
||||
Для OCR пакіньце зменныя `VITE_TESSERACT_*` пустымі, каб выкарыстоўваць анлайн-рэсурсы па змаўчанні, або задайце ўсе тры разам для ўласнага/аўтаномнага OCR. Частковыя перавызначэнні OCR адхіляюцца, бо воркер, асноўнае асяроддзе выканання і каталог traineddata павінны адпавядаць адно аднаму. Для цалкам аўтаномнага PDF з магчымасцю пошуку таксама задайце `VITE_OCR_FONT_BASE_URL`, каб шрыфты тэкставага слоя OCR загружаліся з вашага ўнутранага сервера, а не з публічных URL шрыфтоў Noto.
|
||||
|
||||
`VITE_DEFAULT_LANGUAGE` задае мову інтэрфейсу для новых наведвальнікаў. Падтрымліваемыя значэнні: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`. Карыстальнікі ўсё роўна могуць пераключаць мову, гэта змяняе толькі значэнне па змаўчанні.
|
||||
`VITE_DEFAULT_LANGUAGE` задае мову інтэрфейсу для новых наведвальнікаў. Падтрымліваемыя значэнні: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`, `ko`, `sv`, `ru`, `pl`, `ja`, `uk`, `sk`, `ca`, `fa`. Карыстальнікі ўсё роўна могуць пераключаць мову, гэта змяняе толькі значэнне па змаўчанні.
|
||||
|
||||
Прыклад:
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ 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} !^/(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/$
|
||||
RewriteCond %{REQUEST_URI} (.+)/$
|
||||
RewriteRule ^ %1 [R=301,L]
|
||||
|
||||
@@ -163,7 +163,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# 5.1. LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root (for SEO consistency)
|
||||
@@ -172,11 +172,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# 5.5. DOCS ROUTING (VitePress)
|
||||
@@ -211,11 +211,11 @@ RewriteBase /pdf-tools/
|
||||
|
||||
# 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf-tools/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
@@ -254,7 +254,7 @@ Header always set Cross-Origin-Embedder-Policy "require-corp"
|
||||
```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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# Root level pages
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
|
||||
+31
-19
@@ -63,29 +63,33 @@ The commercial license covers BentoPDF's own code. If you configure and use AGPL
|
||||
|
||||
## What's Included
|
||||
|
||||
| Feature | Included |
|
||||
| ----------------------------- | -------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
| Feature | Included |
|
||||
| ----------------------------- | --------------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ (conditions apply) |
|
||||
| Products covered | One per license |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
|
||||
## One License Per Product
|
||||
|
||||
A license covers one Product: one application offered under one name, on any number of platforms, domains and deployments. Each additional Product, including the same application under another brand, needs its own license. Agencies need one license per client Product, held by the client. Reselling BentoPDF as a template, white-label product or developer SDK is not allowed; [OEM terms](mailto:contact@bentopdf.com) are available for that.
|
||||
|
||||
## Bundled Components
|
||||
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component, so you don't need a separate Hyper Compress license to use it inside BentoPDF.
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component for eligible Products, so you don't need a separate Hyper Compress license to use it inside BentoPDF. It is included when:
|
||||
|
||||
You may use a bundled component only through BentoPDF's own tools, as part of the BentoPDF application you deploy, including your branded or modified version of BentoPDF. You may not:
|
||||
- you and your affiliates have under US$1 million in combined revenue and funding over the last 12 months;
|
||||
- it runs only through the BentoPDF features that use it: the Compress PDF tool and the Compress step of the PDF Workflow builder;
|
||||
- it runs on the end user's device and is started by the end user in your Product's interface, never on servers or headless browsers, through an API, or from your own automation;
|
||||
- your Product is a general PDF toolkit, not a compression product: it offers at least 10 other BentoPDF tools and is not named, marketed or opened on compression;
|
||||
- the engine itself is not modified, extracted or made available for use elsewhere.
|
||||
|
||||
- call it from your own code through an API, SDK, command line, or headless or server process;
|
||||
- separate, repackage or sublicense it, or use it in other software;
|
||||
- offer a product or service whose main purpose is what the bundled component does, such as a compression-only app or website;
|
||||
- modify the bundled component itself.
|
||||
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year.
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year. The [full license terms](https://github.com/alam00000/bentopdf/blob/main/COMMERCIAL-LICENSE.md) cover every condition in detail.
|
||||
|
||||
## FAQ
|
||||
|
||||
@@ -97,9 +101,17 @@ No. BentoPDF does not use license keys. The commercial license grants you legal
|
||||
|
||||
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.
|
||||
|
||||
### Do I need a license for each product?
|
||||
|
||||
Yes. One license covers one Product, on any number of platforms, domains and deployments. The same application under a different brand is a separate Product.
|
||||
|
||||
### Can an agency use one license for several clients?
|
||||
|
||||
No. Each client Product needs its own license, held by the client. You can buy it for your client and hand it over with the Product.
|
||||
|
||||
### Does the commercial license cover Hyper Compress or Kura?
|
||||
|
||||
Hyper Compress, yes, when you use it through BentoPDF. It is included as a [bundled component](#bundled-components). Using the engine on its own, or inside other software, needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
Hyper Compress, yes, through BentoPDF's own features in an eligible Product. It is included as a [bundled component](#bundled-components) for companies under US$1 million in revenue and funding, in general PDF toolkits, running on the end user's device. Using the engine on its own, on a server, through an API, or inside other software needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
|
||||
### What about the AGPL components?
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root
|
||||
@@ -122,11 +122,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# ADD .HTML EXTENSION (ROOT LEVEL)
|
||||
@@ -183,10 +183,10 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
|
||||
@@ -149,7 +149,7 @@ La CSP inclou `'unsafe-eval'` a `script-src` perquè el runtime de LibreOffice W
|
||||
|
||||
Per a l'OCR, deixa buides les variables `VITE_TESSERACT_*` per utilitzar els recursos en línia per defecte, o defineix-les totes tres alhora per a l'OCR autoallotjat o sense connexió. Les substitucions parcials d'OCR es rebutgen perquè el worker, el runtime principal i el directori de traineddata han de coincidir. Per generar PDF cercables totalment sense connexió, defineix també `VITE_OCR_FONT_BASE_URL` perquè les fonts de la capa de text d'OCR es carreguin des del teu servidor intern i no des de les URL públiques de fonts Noto.
|
||||
|
||||
`VITE_DEFAULT_LANGUAGE` defineix l'idioma de la interfície per als visitants que hi entren per primera vegada. Valors admesos: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`. Els usuaris poden canviar d'idioma igualment: això només canvia el valor per defecte.
|
||||
`VITE_DEFAULT_LANGUAGE` defineix l'idioma de la interfície per als visitants que hi entren per primera vegada. Valors admesos: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`, `ko`, `sv`, `ru`, `pl`, `ja`, `uk`, `sk`, `ca`, `fa`. Els usuaris poden canviar d'idioma igualment: això només canvia el valor per defecte.
|
||||
|
||||
Exemple:
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ 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} !^/(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/$
|
||||
RewriteCond %{REQUEST_URI} (.+)/$
|
||||
RewriteRule ^ %1 [R=301,L]
|
||||
|
||||
@@ -163,7 +163,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# 5.1. LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root (for SEO consistency)
|
||||
@@ -172,11 +172,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# 5.5. DOCS ROUTING (VitePress)
|
||||
@@ -211,11 +211,11 @@ RewriteBase /pdf-tools/
|
||||
|
||||
# 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf-tools/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
@@ -254,7 +254,7 @@ Assegura't que la regla de l'extensió `.html` i les rutes d'idioma estan ben co
|
||||
```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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# Root level pages
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
|
||||
+31
-19
@@ -63,29 +63,33 @@ The commercial license covers BentoPDF's own code. If you configure and use AGPL
|
||||
|
||||
## What's Included
|
||||
|
||||
| Feature | Included |
|
||||
| ----------------------------- | -------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
| Feature | Included |
|
||||
| ----------------------------- | --------------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ (conditions apply) |
|
||||
| Products covered | One per license |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
|
||||
## One License Per Product
|
||||
|
||||
A license covers one Product: one application offered under one name, on any number of platforms, domains and deployments. Each additional Product, including the same application under another brand, needs its own license. Agencies need one license per client Product, held by the client. Reselling BentoPDF as a template, white-label product or developer SDK is not allowed; [OEM terms](mailto:contact@bentopdf.com) are available for that.
|
||||
|
||||
## Bundled Components
|
||||
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component, so you don't need a separate Hyper Compress license to use it inside BentoPDF.
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component for eligible Products, so you don't need a separate Hyper Compress license to use it inside BentoPDF. It is included when:
|
||||
|
||||
You may use a bundled component only through BentoPDF's own tools, as part of the BentoPDF application you deploy, including your branded or modified version of BentoPDF. You may not:
|
||||
- you and your affiliates have under US$1 million in combined revenue and funding over the last 12 months;
|
||||
- it runs only through the BentoPDF features that use it: the Compress PDF tool and the Compress step of the PDF Workflow builder;
|
||||
- it runs on the end user's device and is started by the end user in your Product's interface, never on servers or headless browsers, through an API, or from your own automation;
|
||||
- your Product is a general PDF toolkit, not a compression product: it offers at least 10 other BentoPDF tools and is not named, marketed or opened on compression;
|
||||
- the engine itself is not modified, extracted or made available for use elsewhere.
|
||||
|
||||
- call it from your own code through an API, SDK, command line, or headless or server process;
|
||||
- separate, repackage or sublicense it, or use it in other software;
|
||||
- offer a product or service whose main purpose is what the bundled component does, such as a compression-only app or website;
|
||||
- modify the bundled component itself.
|
||||
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year.
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year. The [full license terms](https://github.com/alam00000/bentopdf/blob/main/COMMERCIAL-LICENSE.md) cover every condition in detail.
|
||||
|
||||
## FAQ
|
||||
|
||||
@@ -97,9 +101,17 @@ No. BentoPDF does not use license keys. The commercial license grants you legal
|
||||
|
||||
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.
|
||||
|
||||
### Do I need a license for each product?
|
||||
|
||||
Yes. One license covers one Product, on any number of platforms, domains and deployments. The same application under a different brand is a separate Product.
|
||||
|
||||
### Can an agency use one license for several clients?
|
||||
|
||||
No. Each client Product needs its own license, held by the client. You can buy it for your client and hand it over with the Product.
|
||||
|
||||
### Does the commercial license cover Hyper Compress or Kura?
|
||||
|
||||
Hyper Compress, yes, when you use it through BentoPDF. It is included as a [bundled component](#bundled-components). Using the engine on its own, or inside other software, needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
Hyper Compress, yes, through BentoPDF's own features in an eligible Product. It is included as a [bundled component](#bundled-components) for companies under US$1 million in revenue and funding, in general PDF toolkits, running on the end user's device. Using the engine on its own, on a server, through an API, or inside other software needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
|
||||
### What about the AGPL components?
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root
|
||||
@@ -122,11 +122,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# ADD .HTML EXTENSION (ROOT LEVEL)
|
||||
@@ -183,10 +183,10 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
|
||||
@@ -149,7 +149,7 @@ CSP indeholder `'unsafe-eval'` i `script-src`, fordi LibreOffice WASM-runtime (b
|
||||
|
||||
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.
|
||||
`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`, `ko`, `sv`, `ru`, `pl`, `ja`, `uk`, `sk`, `ca`, `fa`. Brugere kan stadig skifte sprog, det ændrer kun standarden.
|
||||
|
||||
Eksempel:
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ 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} !^/(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/$
|
||||
RewriteCond %{REQUEST_URI} (.+)/$
|
||||
RewriteRule ^ %1 [R=301,L]
|
||||
|
||||
@@ -163,7 +163,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# 5.1. LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root (for SEO consistency)
|
||||
@@ -172,11 +172,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# 5.5. DOCS ROUTING (VitePress)
|
||||
@@ -211,11 +211,11 @@ RewriteBase /pdf-tools/
|
||||
|
||||
# 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf-tools/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
@@ -254,7 +254,7 @@ Sørg for, at reglen for filtypen `.html` og sprogrutene er konfigureret korrekt
|
||||
```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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# Root level pages
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
|
||||
+31
-19
@@ -63,29 +63,33 @@ The commercial license covers BentoPDF's own code. If you configure and use AGPL
|
||||
|
||||
## What's Included
|
||||
|
||||
| Feature | Included |
|
||||
| ----------------------------- | -------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
| Feature | Included |
|
||||
| ----------------------------- | --------------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ (conditions apply) |
|
||||
| Products covered | One per license |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
|
||||
## One License Per Product
|
||||
|
||||
A license covers one Product: one application offered under one name, on any number of platforms, domains and deployments. Each additional Product, including the same application under another brand, needs its own license. Agencies need one license per client Product, held by the client. Reselling BentoPDF as a template, white-label product or developer SDK is not allowed; [OEM terms](mailto:contact@bentopdf.com) are available for that.
|
||||
|
||||
## Bundled Components
|
||||
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component, so you don't need a separate Hyper Compress license to use it inside BentoPDF.
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component for eligible Products, so you don't need a separate Hyper Compress license to use it inside BentoPDF. It is included when:
|
||||
|
||||
You may use a bundled component only through BentoPDF's own tools, as part of the BentoPDF application you deploy, including your branded or modified version of BentoPDF. You may not:
|
||||
- you and your affiliates have under US$1 million in combined revenue and funding over the last 12 months;
|
||||
- it runs only through the BentoPDF features that use it: the Compress PDF tool and the Compress step of the PDF Workflow builder;
|
||||
- it runs on the end user's device and is started by the end user in your Product's interface, never on servers or headless browsers, through an API, or from your own automation;
|
||||
- your Product is a general PDF toolkit, not a compression product: it offers at least 10 other BentoPDF tools and is not named, marketed or opened on compression;
|
||||
- the engine itself is not modified, extracted or made available for use elsewhere.
|
||||
|
||||
- call it from your own code through an API, SDK, command line, or headless or server process;
|
||||
- separate, repackage or sublicense it, or use it in other software;
|
||||
- offer a product or service whose main purpose is what the bundled component does, such as a compression-only app or website;
|
||||
- modify the bundled component itself.
|
||||
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year.
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year. The [full license terms](https://github.com/alam00000/bentopdf/blob/main/COMMERCIAL-LICENSE.md) cover every condition in detail.
|
||||
|
||||
## FAQ
|
||||
|
||||
@@ -97,9 +101,17 @@ No. BentoPDF does not use license keys. The commercial license grants you legal
|
||||
|
||||
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.
|
||||
|
||||
### Do I need a license for each product?
|
||||
|
||||
Yes. One license covers one Product, on any number of platforms, domains and deployments. The same application under a different brand is a separate Product.
|
||||
|
||||
### Can an agency use one license for several clients?
|
||||
|
||||
No. Each client Product needs its own license, held by the client. You can buy it for your client and hand it over with the Product.
|
||||
|
||||
### Does the commercial license cover Hyper Compress or Kura?
|
||||
|
||||
Hyper Compress, yes, when you use it through BentoPDF. It is included as a [bundled component](#bundled-components). Using the engine on its own, or inside other software, needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
Hyper Compress, yes, through BentoPDF's own features in an eligible Product. It is included as a [bundled component](#bundled-components) for companies under US$1 million in revenue and funding, in general PDF toolkits, running on the end user's device. Using the engine on its own, on a server, through an API, or inside other software needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
|
||||
### What about the AGPL components?
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root
|
||||
@@ -122,11 +122,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# ADD .HTML EXTENSION (ROOT LEVEL)
|
||||
@@ -183,10 +183,10 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
|
||||
@@ -149,7 +149,7 @@ Die CSP enthält `'unsafe-eval'` in `script-src`, weil die LibreOffice-WASM-Runt
|
||||
|
||||
Lassen Sie für OCR die `VITE_TESSERACT_*`-Variablen leer, um die Standard-Online-Ressourcen zu nutzen, oder setzen Sie alle drei zusammen für selbst gehostetes/Offline-OCR. Teilweise Überschreibungen werden abgelehnt, weil Worker, Core-Runtime und traineddata-Verzeichnis zusammenpassen müssen. Für eine vollständig offline erzeugte durchsuchbare PDF setzen Sie zusätzlich `VITE_OCR_FONT_BASE_URL`, damit die OCR-Textebenen-Schriften von Ihrem internen Server statt von den öffentlichen Noto-Schrift-URLs geladen werden.
|
||||
|
||||
`VITE_DEFAULT_LANGUAGE` legt die Oberflächensprache für Erstbesucher fest. Unterstützte Werte: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`. Nutzer können die Sprache weiterhin wechseln, das ändert nur den Standard.
|
||||
`VITE_DEFAULT_LANGUAGE` legt die Oberflächensprache für Erstbesucher fest. Unterstützte Werte: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`, `ko`, `sv`, `ru`, `pl`, `ja`, `uk`, `sk`, `ca`, `fa`. Nutzer können die Sprache weiterhin wechseln, das ändert nur den Standard.
|
||||
|
||||
Beispiel:
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ 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} !^/(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/$
|
||||
RewriteCond %{REQUEST_URI} (.+)/$
|
||||
RewriteRule ^ %1 [R=301,L]
|
||||
|
||||
@@ -163,7 +163,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# 5.1. LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root (for SEO consistency)
|
||||
@@ -172,11 +172,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# 5.5. DOCS ROUTING (VitePress)
|
||||
@@ -211,11 +211,11 @@ RewriteBase /pdf-tools/
|
||||
|
||||
# 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf-tools/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
@@ -254,7 +254,7 @@ Stellen Sie sicher, dass die Regel für die Endung `.html` und die Sprachrouten
|
||||
```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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# Root level pages
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
|
||||
+31
-19
@@ -63,29 +63,33 @@ The commercial license covers BentoPDF's own code. If you configure and use AGPL
|
||||
|
||||
## What's Included
|
||||
|
||||
| Feature | Included |
|
||||
| ----------------------------- | -------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
| Feature | Included |
|
||||
| ----------------------------- | --------------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ (conditions apply) |
|
||||
| Products covered | One per license |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
|
||||
## One License Per Product
|
||||
|
||||
A license covers one Product: one application offered under one name, on any number of platforms, domains and deployments. Each additional Product, including the same application under another brand, needs its own license. Agencies need one license per client Product, held by the client. Reselling BentoPDF as a template, white-label product or developer SDK is not allowed; [OEM terms](mailto:contact@bentopdf.com) are available for that.
|
||||
|
||||
## Bundled Components
|
||||
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component, so you don't need a separate Hyper Compress license to use it inside BentoPDF.
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component for eligible Products, so you don't need a separate Hyper Compress license to use it inside BentoPDF. It is included when:
|
||||
|
||||
You may use a bundled component only through BentoPDF's own tools, as part of the BentoPDF application you deploy, including your branded or modified version of BentoPDF. You may not:
|
||||
- you and your affiliates have under US$1 million in combined revenue and funding over the last 12 months;
|
||||
- it runs only through the BentoPDF features that use it: the Compress PDF tool and the Compress step of the PDF Workflow builder;
|
||||
- it runs on the end user's device and is started by the end user in your Product's interface, never on servers or headless browsers, through an API, or from your own automation;
|
||||
- your Product is a general PDF toolkit, not a compression product: it offers at least 10 other BentoPDF tools and is not named, marketed or opened on compression;
|
||||
- the engine itself is not modified, extracted or made available for use elsewhere.
|
||||
|
||||
- call it from your own code through an API, SDK, command line, or headless or server process;
|
||||
- separate, repackage or sublicense it, or use it in other software;
|
||||
- offer a product or service whose main purpose is what the bundled component does, such as a compression-only app or website;
|
||||
- modify the bundled component itself.
|
||||
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year.
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year. The [full license terms](https://github.com/alam00000/bentopdf/blob/main/COMMERCIAL-LICENSE.md) cover every condition in detail.
|
||||
|
||||
## FAQ
|
||||
|
||||
@@ -97,9 +101,17 @@ No. BentoPDF does not use license keys. The commercial license grants you legal
|
||||
|
||||
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.
|
||||
|
||||
### Do I need a license for each product?
|
||||
|
||||
Yes. One license covers one Product, on any number of platforms, domains and deployments. The same application under a different brand is a separate Product.
|
||||
|
||||
### Can an agency use one license for several clients?
|
||||
|
||||
No. Each client Product needs its own license, held by the client. You can buy it for your client and hand it over with the Product.
|
||||
|
||||
### Does the commercial license cover Hyper Compress or Kura?
|
||||
|
||||
Hyper Compress, yes, when you use it through BentoPDF. It is included as a [bundled component](#bundled-components). Using the engine on its own, or inside other software, needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
Hyper Compress, yes, through BentoPDF's own features in an eligible Product. It is included as a [bundled component](#bundled-components) for companies under US$1 million in revenue and funding, in general PDF toolkits, running on the end user's device. Using the engine on its own, on a server, through an API, or inside other software needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
|
||||
### What about the AGPL components?
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root
|
||||
@@ -122,11 +122,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# ADD .HTML EXTENSION (ROOT LEVEL)
|
||||
@@ -183,10 +183,10 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
|
||||
@@ -149,7 +149,7 @@ La CSP incluye `'unsafe-eval'` en `script-src` porque el runtime WASM de LibreOf
|
||||
|
||||
Para el OCR, deja vacías las variables `VITE_TESSERACT_*` para usar los recursos en línea predeterminados, o define las tres juntas para un OCR autoalojado o sin conexión. Las sobrescrituras parciales de OCR se rechazan porque el worker, el runtime principal y el directorio de traineddata deben coincidir. Para una salida de PDF con texto buscable totalmente sin conexión, define también `VITE_OCR_FONT_BASE_URL` para que las fuentes de la capa de texto del OCR se carguen desde tu servidor interno en lugar de las URL públicas de las fuentes Noto.
|
||||
|
||||
`VITE_DEFAULT_LANGUAGE` define el idioma de la interfaz para quienes visitan por primera vez. Valores admitidos: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`. Los usuarios pueden seguir cambiando de idioma: esto solo cambia el valor predeterminado.
|
||||
`VITE_DEFAULT_LANGUAGE` define el idioma de la interfaz para quienes visitan por primera vez. Valores admitidos: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`, `ko`, `sv`, `ru`, `pl`, `ja`, `uk`, `sk`, `ca`, `fa`. Los usuarios pueden seguir cambiando de idioma: esto solo cambia el valor predeterminado.
|
||||
|
||||
Ejemplo:
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ 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} !^/(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/$
|
||||
RewriteCond %{REQUEST_URI} (.+)/$
|
||||
RewriteRule ^ %1 [R=301,L]
|
||||
|
||||
@@ -163,7 +163,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# 5.1. LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root (for SEO consistency)
|
||||
@@ -172,11 +172,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# 5.5. DOCS ROUTING (VitePress)
|
||||
@@ -211,11 +211,11 @@ RewriteBase /pdf-tools/
|
||||
|
||||
# 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf-tools/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
@@ -254,7 +254,7 @@ Asegúrate de que la regla de la extensión `.html` y las rutas de idioma estén
|
||||
```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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# Root level pages
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
|
||||
+31
-19
@@ -63,29 +63,33 @@ The commercial license covers BentoPDF's own code. If you configure and use AGPL
|
||||
|
||||
## What's Included
|
||||
|
||||
| Feature | Included |
|
||||
| ----------------------------- | -------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
| Feature | Included |
|
||||
| ----------------------------- | --------------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ (conditions apply) |
|
||||
| Products covered | One per license |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
|
||||
## One License Per Product
|
||||
|
||||
A license covers one Product: one application offered under one name, on any number of platforms, domains and deployments. Each additional Product, including the same application under another brand, needs its own license. Agencies need one license per client Product, held by the client. Reselling BentoPDF as a template, white-label product or developer SDK is not allowed; [OEM terms](mailto:contact@bentopdf.com) are available for that.
|
||||
|
||||
## Bundled Components
|
||||
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component, so you don't need a separate Hyper Compress license to use it inside BentoPDF.
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component for eligible Products, so you don't need a separate Hyper Compress license to use it inside BentoPDF. It is included when:
|
||||
|
||||
You may use a bundled component only through BentoPDF's own tools, as part of the BentoPDF application you deploy, including your branded or modified version of BentoPDF. You may not:
|
||||
- you and your affiliates have under US$1 million in combined revenue and funding over the last 12 months;
|
||||
- it runs only through the BentoPDF features that use it: the Compress PDF tool and the Compress step of the PDF Workflow builder;
|
||||
- it runs on the end user's device and is started by the end user in your Product's interface, never on servers or headless browsers, through an API, or from your own automation;
|
||||
- your Product is a general PDF toolkit, not a compression product: it offers at least 10 other BentoPDF tools and is not named, marketed or opened on compression;
|
||||
- the engine itself is not modified, extracted or made available for use elsewhere.
|
||||
|
||||
- call it from your own code through an API, SDK, command line, or headless or server process;
|
||||
- separate, repackage or sublicense it, or use it in other software;
|
||||
- offer a product or service whose main purpose is what the bundled component does, such as a compression-only app or website;
|
||||
- modify the bundled component itself.
|
||||
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year.
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year. The [full license terms](https://github.com/alam00000/bentopdf/blob/main/COMMERCIAL-LICENSE.md) cover every condition in detail.
|
||||
|
||||
## FAQ
|
||||
|
||||
@@ -97,9 +101,17 @@ No. BentoPDF does not use license keys. The commercial license grants you legal
|
||||
|
||||
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.
|
||||
|
||||
### Do I need a license for each product?
|
||||
|
||||
Yes. One license covers one Product, on any number of platforms, domains and deployments. The same application under a different brand is a separate Product.
|
||||
|
||||
### Can an agency use one license for several clients?
|
||||
|
||||
No. Each client Product needs its own license, held by the client. You can buy it for your client and hand it over with the Product.
|
||||
|
||||
### Does the commercial license cover Hyper Compress or Kura?
|
||||
|
||||
Hyper Compress, yes, when you use it through BentoPDF. It is included as a [bundled component](#bundled-components). Using the engine on its own, or inside other software, needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
Hyper Compress, yes, through BentoPDF's own features in an eligible Product. It is included as a [bundled component](#bundled-components) for companies under US$1 million in revenue and funding, in general PDF toolkits, running on the end user's device. Using the engine on its own, on a server, through an API, or inside other software needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
|
||||
### What about the AGPL components?
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root
|
||||
@@ -122,11 +122,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# ADD .HTML EXTENSION (ROOT LEVEL)
|
||||
@@ -183,10 +183,10 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
|
||||
@@ -149,7 +149,7 @@ CSP شامل `'unsafe-eval'` در `script-src` است، زیرا محیط اجر
|
||||
|
||||
برای OCR، متغیرهای `VITE_TESSERACT_*` را خالی بگذارید تا از منابع آنلاین پیشفرض استفاده شود، یا برای OCR میزبانیشده یا آفلاین هر سه را با هم تنظیم کنید. بازنویسیهای ناقص OCR رد میشوند، چون worker، هستهٔ اجرایی و پوشهٔ traineddata باید با هم سازگار باشند. برای خروجی PDF قابلجستجوی کاملاً آفلاین، `VITE_OCR_FONT_BASE_URL` را نیز تنظیم کنید تا فونتهای لایهٔ متنی OCR بهجای URLهای عمومی فونت Noto از سرور داخلی شما بارگذاری شوند.
|
||||
|
||||
`VITE_DEFAULT_LANGUAGE` زبان رابط کاربری را برای بازدیدکنندگان بار اول تعیین میکند. مقادیر پشتیبانیشده: `en`، `ar`، `be`، `fr`، `de`، `es`، `zh`، `zh-TW`، `vi`، `tr`، `id`، `it`، `pt`، `nl`، `da`. کاربران همچنان میتوانند زبان را تغییر دهند؛ این فقط پیشفرض را تغییر میدهد.
|
||||
`VITE_DEFAULT_LANGUAGE` زبان رابط کاربری را برای بازدیدکنندگان بار اول تعیین میکند. مقادیر پشتیبانیشده: `en`، `ar`، `be`، `fr`، `de`، `es`، `zh`، `zh-TW`، `vi`، `tr`، `id`، `it`، `pt`، `nl`، `da`، `ko`، `sv`، `ru`، `pl`، `ja`، `uk`، `sk`، `ca`، `fa`. کاربران همچنان میتوانند زبان را تغییر دهند؛ این فقط پیشفرض را تغییر میدهد.
|
||||
|
||||
مثال:
|
||||
|
||||
|
||||
@@ -152,7 +152,7 @@ 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} !^/(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/$
|
||||
RewriteCond %{REQUEST_URI} (.+)/$
|
||||
RewriteRule ^ %1 [R=301,L]
|
||||
|
||||
@@ -164,7 +164,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# 5.1. LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root (for SEO consistency)
|
||||
@@ -173,11 +173,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# 5.5. DOCS ROUTING (VitePress)
|
||||
@@ -212,11 +212,11 @@ RewriteBase /pdf-tools/
|
||||
|
||||
# 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf-tools/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
@@ -255,7 +255,7 @@ Header always set Cross-Origin-Embedder-Policy "require-corp"
|
||||
```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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# Root level pages
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
|
||||
+31
-19
@@ -63,29 +63,33 @@ The commercial license covers BentoPDF's own code. If you configure and use AGPL
|
||||
|
||||
## What's Included
|
||||
|
||||
| Feature | Included |
|
||||
| ----------------------------- | -------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
| Feature | Included |
|
||||
| ----------------------------- | --------------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ (conditions apply) |
|
||||
| Products covered | One per license |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
|
||||
## One License Per Product
|
||||
|
||||
A license covers one Product: one application offered under one name, on any number of platforms, domains and deployments. Each additional Product, including the same application under another brand, needs its own license. Agencies need one license per client Product, held by the client. Reselling BentoPDF as a template, white-label product or developer SDK is not allowed; [OEM terms](mailto:contact@bentopdf.com) are available for that.
|
||||
|
||||
## Bundled Components
|
||||
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component, so you don't need a separate Hyper Compress license to use it inside BentoPDF.
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component for eligible Products, so you don't need a separate Hyper Compress license to use it inside BentoPDF. It is included when:
|
||||
|
||||
You may use a bundled component only through BentoPDF's own tools, as part of the BentoPDF application you deploy, including your branded or modified version of BentoPDF. You may not:
|
||||
- you and your affiliates have under US$1 million in combined revenue and funding over the last 12 months;
|
||||
- it runs only through the BentoPDF features that use it: the Compress PDF tool and the Compress step of the PDF Workflow builder;
|
||||
- it runs on the end user's device and is started by the end user in your Product's interface, never on servers or headless browsers, through an API, or from your own automation;
|
||||
- your Product is a general PDF toolkit, not a compression product: it offers at least 10 other BentoPDF tools and is not named, marketed or opened on compression;
|
||||
- the engine itself is not modified, extracted or made available for use elsewhere.
|
||||
|
||||
- call it from your own code through an API, SDK, command line, or headless or server process;
|
||||
- separate, repackage or sublicense it, or use it in other software;
|
||||
- offer a product or service whose main purpose is what the bundled component does, such as a compression-only app or website;
|
||||
- modify the bundled component itself.
|
||||
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year.
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year. The [full license terms](https://github.com/alam00000/bentopdf/blob/main/COMMERCIAL-LICENSE.md) cover every condition in detail.
|
||||
|
||||
## FAQ
|
||||
|
||||
@@ -97,9 +101,17 @@ No. BentoPDF does not use license keys. The commercial license grants you legal
|
||||
|
||||
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.
|
||||
|
||||
### Do I need a license for each product?
|
||||
|
||||
Yes. One license covers one Product, on any number of platforms, domains and deployments. The same application under a different brand is a separate Product.
|
||||
|
||||
### Can an agency use one license for several clients?
|
||||
|
||||
No. Each client Product needs its own license, held by the client. You can buy it for your client and hand it over with the Product.
|
||||
|
||||
### Does the commercial license cover Hyper Compress or Kura?
|
||||
|
||||
Hyper Compress, yes, when you use it through BentoPDF. It is included as a [bundled component](#bundled-components). Using the engine on its own, or inside other software, needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
Hyper Compress, yes, through BentoPDF's own features in an eligible Product. It is included as a [bundled component](#bundled-components) for companies under US$1 million in revenue and funding, in general PDF toolkits, running on the end user's device. Using the engine on its own, on a server, through an API, or inside other software needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
|
||||
### What about the AGPL components?
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root
|
||||
@@ -122,11 +122,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# ADD .HTML EXTENSION (ROOT LEVEL)
|
||||
@@ -183,10 +183,10 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
|
||||
@@ -149,7 +149,7 @@ La CSP inclut `'unsafe-eval'` dans `script-src`, car le runtime LibreOffice WASM
|
||||
|
||||
Pour l'OCR, laissez les variables `VITE_TESSERACT_*` vides afin d'utiliser les ressources en ligne par défaut, ou définissez les trois ensemble pour un OCR auto-hébergé/hors ligne. Les remplacements OCR partiels sont refusés, car le worker, le runtime principal et le dossier traineddata doivent correspondre. Pour une production de PDF avec texte recherchable entièrement hors ligne, définissez aussi `VITE_OCR_FONT_BASE_URL` afin que les polices de la couche de texte OCR soient chargées depuis votre serveur interne plutôt que depuis les URL publiques des polices Noto.
|
||||
|
||||
`VITE_DEFAULT_LANGUAGE` définit la langue de l'interface pour les nouveaux visiteurs. Valeurs prises en charge : `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`. Les utilisateurs peuvent toujours changer de langue : cela ne modifie que la valeur par défaut.
|
||||
`VITE_DEFAULT_LANGUAGE` définit la langue de l'interface pour les nouveaux visiteurs. Valeurs prises en charge : `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`, `ko`, `sv`, `ru`, `pl`, `ja`, `uk`, `sk`, `ca`, `fa`. Les utilisateurs peuvent toujours changer de langue : cela ne modifie que la valeur par défaut.
|
||||
|
||||
Exemple :
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ 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} !^/(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/$
|
||||
RewriteCond %{REQUEST_URI} (.+)/$
|
||||
RewriteRule ^ %1 [R=301,L]
|
||||
|
||||
@@ -163,7 +163,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# 5.1. LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root (for SEO consistency)
|
||||
@@ -172,11 +172,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# 5.5. DOCS ROUTING (VitePress)
|
||||
@@ -211,11 +211,11 @@ RewriteBase /pdf-tools/
|
||||
|
||||
# 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf-tools/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
@@ -254,7 +254,7 @@ Assurez-vous que la règle d'extension `.html` et les routes de langue sont corr
|
||||
```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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# Root level pages
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
|
||||
+31
-19
@@ -63,29 +63,33 @@ The commercial license covers BentoPDF's own code. If you configure and use AGPL
|
||||
|
||||
## What's Included
|
||||
|
||||
| Feature | Included |
|
||||
| ----------------------------- | -------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
| Feature | Included |
|
||||
| ----------------------------- | --------------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ (conditions apply) |
|
||||
| Products covered | One per license |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
|
||||
## One License Per Product
|
||||
|
||||
A license covers one Product: one application offered under one name, on any number of platforms, domains and deployments. Each additional Product, including the same application under another brand, needs its own license. Agencies need one license per client Product, held by the client. Reselling BentoPDF as a template, white-label product or developer SDK is not allowed; [OEM terms](mailto:contact@bentopdf.com) are available for that.
|
||||
|
||||
## Bundled Components
|
||||
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component, so you don't need a separate Hyper Compress license to use it inside BentoPDF.
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component for eligible Products, so you don't need a separate Hyper Compress license to use it inside BentoPDF. It is included when:
|
||||
|
||||
You may use a bundled component only through BentoPDF's own tools, as part of the BentoPDF application you deploy, including your branded or modified version of BentoPDF. You may not:
|
||||
- you and your affiliates have under US$1 million in combined revenue and funding over the last 12 months;
|
||||
- it runs only through the BentoPDF features that use it: the Compress PDF tool and the Compress step of the PDF Workflow builder;
|
||||
- it runs on the end user's device and is started by the end user in your Product's interface, never on servers or headless browsers, through an API, or from your own automation;
|
||||
- your Product is a general PDF toolkit, not a compression product: it offers at least 10 other BentoPDF tools and is not named, marketed or opened on compression;
|
||||
- the engine itself is not modified, extracted or made available for use elsewhere.
|
||||
|
||||
- call it from your own code through an API, SDK, command line, or headless or server process;
|
||||
- separate, repackage or sublicense it, or use it in other software;
|
||||
- offer a product or service whose main purpose is what the bundled component does, such as a compression-only app or website;
|
||||
- modify the bundled component itself.
|
||||
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year.
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year. The [full license terms](https://github.com/alam00000/bentopdf/blob/main/COMMERCIAL-LICENSE.md) cover every condition in detail.
|
||||
|
||||
## FAQ
|
||||
|
||||
@@ -97,9 +101,17 @@ No. BentoPDF does not use license keys. The commercial license grants you legal
|
||||
|
||||
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.
|
||||
|
||||
### Do I need a license for each product?
|
||||
|
||||
Yes. One license covers one Product, on any number of platforms, domains and deployments. The same application under a different brand is a separate Product.
|
||||
|
||||
### Can an agency use one license for several clients?
|
||||
|
||||
No. Each client Product needs its own license, held by the client. You can buy it for your client and hand it over with the Product.
|
||||
|
||||
### Does the commercial license cover Hyper Compress or Kura?
|
||||
|
||||
Hyper Compress, yes, when you use it through BentoPDF. It is included as a [bundled component](#bundled-components). Using the engine on its own, or inside other software, needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
Hyper Compress, yes, through BentoPDF's own features in an eligible Product. It is included as a [bundled component](#bundled-components) for companies under US$1 million in revenue and funding, in general PDF toolkits, running on the end user's device. Using the engine on its own, on a server, through an API, or inside other software needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
|
||||
### What about the AGPL components?
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root
|
||||
@@ -122,11 +122,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# ADD .HTML EXTENSION (ROOT LEVEL)
|
||||
@@ -183,10 +183,10 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
|
||||
@@ -149,7 +149,7 @@ CSP menyertakan `'unsafe-eval'` di `script-src` karena runtime LibreOffice WASM
|
||||
|
||||
Untuk OCR, biarkan variabel `VITE_TESSERACT_*` kosong untuk memakai aset online default, atau atur ketiganya sekaligus untuk OCR hosting mandiri/offline. Penimpaan OCR sebagian ditolak karena worker, runtime inti, dan direktori traineddata harus cocok. Untuk keluaran PDF yang dapat dicari secara offline penuh, atur juga `VITE_OCR_FONT_BASE_URL` agar font lapisan teks OCR dimuat dari server internal Anda, bukan dari URL font Noto publik.
|
||||
|
||||
`VITE_DEFAULT_LANGUAGE` menentukan bahasa UI untuk pengunjung pertama kali. Nilai yang didukung: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`. Pengguna tetap dapat berganti bahasa, ini hanya mengubah default.
|
||||
`VITE_DEFAULT_LANGUAGE` menentukan bahasa UI untuk pengunjung pertama kali. Nilai yang didukung: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`, `ko`, `sv`, `ru`, `pl`, `ja`, `uk`, `sk`, `ca`, `fa`. Pengguna tetap dapat berganti bahasa, ini hanya mengubah default.
|
||||
|
||||
Contoh:
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ 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} !^/(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/$
|
||||
RewriteCond %{REQUEST_URI} (.+)/$
|
||||
RewriteRule ^ %1 [R=301,L]
|
||||
|
||||
@@ -163,7 +163,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# 5.1. LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root (for SEO consistency)
|
||||
@@ -172,11 +172,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# 5.5. DOCS ROUTING (VitePress)
|
||||
@@ -211,11 +211,11 @@ RewriteBase /pdf-tools/
|
||||
|
||||
# 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf-tools/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
@@ -254,7 +254,7 @@ Pastikan aturan ekstensi `.html` dan rute bahasa dikonfigurasi dengan benar. Ben
|
||||
```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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# Root level pages
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
|
||||
+31
-19
@@ -63,29 +63,33 @@ The commercial license covers BentoPDF's own code. If you configure and use AGPL
|
||||
|
||||
## What's Included
|
||||
|
||||
| Feature | Included |
|
||||
| ----------------------------- | -------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
| Feature | Included |
|
||||
| ----------------------------- | --------------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ (conditions apply) |
|
||||
| Products covered | One per license |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
|
||||
## One License Per Product
|
||||
|
||||
A license covers one Product: one application offered under one name, on any number of platforms, domains and deployments. Each additional Product, including the same application under another brand, needs its own license. Agencies need one license per client Product, held by the client. Reselling BentoPDF as a template, white-label product or developer SDK is not allowed; [OEM terms](mailto:contact@bentopdf.com) are available for that.
|
||||
|
||||
## Bundled Components
|
||||
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component, so you don't need a separate Hyper Compress license to use it inside BentoPDF.
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component for eligible Products, so you don't need a separate Hyper Compress license to use it inside BentoPDF. It is included when:
|
||||
|
||||
You may use a bundled component only through BentoPDF's own tools, as part of the BentoPDF application you deploy, including your branded or modified version of BentoPDF. You may not:
|
||||
- you and your affiliates have under US$1 million in combined revenue and funding over the last 12 months;
|
||||
- it runs only through the BentoPDF features that use it: the Compress PDF tool and the Compress step of the PDF Workflow builder;
|
||||
- it runs on the end user's device and is started by the end user in your Product's interface, never on servers or headless browsers, through an API, or from your own automation;
|
||||
- your Product is a general PDF toolkit, not a compression product: it offers at least 10 other BentoPDF tools and is not named, marketed or opened on compression;
|
||||
- the engine itself is not modified, extracted or made available for use elsewhere.
|
||||
|
||||
- call it from your own code through an API, SDK, command line, or headless or server process;
|
||||
- separate, repackage or sublicense it, or use it in other software;
|
||||
- offer a product or service whose main purpose is what the bundled component does, such as a compression-only app or website;
|
||||
- modify the bundled component itself.
|
||||
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year.
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year. The [full license terms](https://github.com/alam00000/bentopdf/blob/main/COMMERCIAL-LICENSE.md) cover every condition in detail.
|
||||
|
||||
## FAQ
|
||||
|
||||
@@ -97,9 +101,17 @@ No. BentoPDF does not use license keys. The commercial license grants you legal
|
||||
|
||||
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.
|
||||
|
||||
### Do I need a license for each product?
|
||||
|
||||
Yes. One license covers one Product, on any number of platforms, domains and deployments. The same application under a different brand is a separate Product.
|
||||
|
||||
### Can an agency use one license for several clients?
|
||||
|
||||
No. Each client Product needs its own license, held by the client. You can buy it for your client and hand it over with the Product.
|
||||
|
||||
### Does the commercial license cover Hyper Compress or Kura?
|
||||
|
||||
Hyper Compress, yes, when you use it through BentoPDF. It is included as a [bundled component](#bundled-components). Using the engine on its own, or inside other software, needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
Hyper Compress, yes, through BentoPDF's own features in an eligible Product. It is included as a [bundled component](#bundled-components) for companies under US$1 million in revenue and funding, in general PDF toolkits, running on the end user's device. Using the engine on its own, on a server, through an API, or inside other software needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
|
||||
### What about the AGPL components?
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root
|
||||
@@ -122,11 +122,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# ADD .HTML EXTENSION (ROOT LEVEL)
|
||||
@@ -183,10 +183,10 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
|
||||
@@ -149,7 +149,7 @@ La CSP include `'unsafe-eval'` in `script-src` perché il runtime LibreOffice WA
|
||||
|
||||
Per l'OCR, lascia vuote le variabili `VITE_TESSERACT_*` per usare le risorse online predefinite, oppure impostale tutte e tre insieme per un OCR self-hosted/offline. Le sostituzioni parziali dell'OCR vengono rifiutate perché worker, runtime core e directory dei traineddata devono corrispondere. Per un output PDF ricercabile completamente offline, imposta anche `VITE_OCR_FONT_BASE_URL` in modo che i font del livello di testo OCR vengano caricati dal tuo server interno invece che dagli URL pubblici dei font Noto.
|
||||
|
||||
`VITE_DEFAULT_LANGUAGE` imposta la lingua dell'interfaccia per i nuovi visitatori. Valori supportati: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`. Gli utenti possono comunque cambiare lingua: questo modifica solo il valore predefinito.
|
||||
`VITE_DEFAULT_LANGUAGE` imposta la lingua dell'interfaccia per i nuovi visitatori. Valori supportati: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`, `ko`, `sv`, `ru`, `pl`, `ja`, `uk`, `sk`, `ca`, `fa`. Gli utenti possono comunque cambiare lingua: questo modifica solo il valore predefinito.
|
||||
|
||||
Esempio:
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ 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} !^/(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/$
|
||||
RewriteCond %{REQUEST_URI} (.+)/$
|
||||
RewriteRule ^ %1 [R=301,L]
|
||||
|
||||
@@ -163,7 +163,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# 5.1. LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root (for SEO consistency)
|
||||
@@ -172,11 +172,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# 5.5. DOCS ROUTING (VitePress)
|
||||
@@ -211,11 +211,11 @@ RewriteBase /pdf-tools/
|
||||
|
||||
# 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf-tools/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
@@ -254,7 +254,7 @@ Verifica che la regola per l'estensione `.html` e le route delle lingue siano co
|
||||
```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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# Root level pages
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
|
||||
+31
-19
@@ -63,29 +63,33 @@ The commercial license covers BentoPDF's own code. If you configure and use AGPL
|
||||
|
||||
## What's Included
|
||||
|
||||
| Feature | Included |
|
||||
| ----------------------------- | -------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
| Feature | Included |
|
||||
| ----------------------------- | --------------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ (conditions apply) |
|
||||
| Products covered | One per license |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
|
||||
## One License Per Product
|
||||
|
||||
A license covers one Product: one application offered under one name, on any number of platforms, domains and deployments. Each additional Product, including the same application under another brand, needs its own license. Agencies need one license per client Product, held by the client. Reselling BentoPDF as a template, white-label product or developer SDK is not allowed; [OEM terms](mailto:contact@bentopdf.com) are available for that.
|
||||
|
||||
## Bundled Components
|
||||
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component, so you don't need a separate Hyper Compress license to use it inside BentoPDF.
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component for eligible Products, so you don't need a separate Hyper Compress license to use it inside BentoPDF. It is included when:
|
||||
|
||||
You may use a bundled component only through BentoPDF's own tools, as part of the BentoPDF application you deploy, including your branded or modified version of BentoPDF. You may not:
|
||||
- you and your affiliates have under US$1 million in combined revenue and funding over the last 12 months;
|
||||
- it runs only through the BentoPDF features that use it: the Compress PDF tool and the Compress step of the PDF Workflow builder;
|
||||
- it runs on the end user's device and is started by the end user in your Product's interface, never on servers or headless browsers, through an API, or from your own automation;
|
||||
- your Product is a general PDF toolkit, not a compression product: it offers at least 10 other BentoPDF tools and is not named, marketed or opened on compression;
|
||||
- the engine itself is not modified, extracted or made available for use elsewhere.
|
||||
|
||||
- call it from your own code through an API, SDK, command line, or headless or server process;
|
||||
- separate, repackage or sublicense it, or use it in other software;
|
||||
- offer a product or service whose main purpose is what the bundled component does, such as a compression-only app or website;
|
||||
- modify the bundled component itself.
|
||||
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year.
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year. The [full license terms](https://github.com/alam00000/bentopdf/blob/main/COMMERCIAL-LICENSE.md) cover every condition in detail.
|
||||
|
||||
## FAQ
|
||||
|
||||
@@ -97,9 +101,17 @@ No. BentoPDF does not use license keys. The commercial license grants you legal
|
||||
|
||||
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.
|
||||
|
||||
### Do I need a license for each product?
|
||||
|
||||
Yes. One license covers one Product, on any number of platforms, domains and deployments. The same application under a different brand is a separate Product.
|
||||
|
||||
### Can an agency use one license for several clients?
|
||||
|
||||
No. Each client Product needs its own license, held by the client. You can buy it for your client and hand it over with the Product.
|
||||
|
||||
### Does the commercial license cover Hyper Compress or Kura?
|
||||
|
||||
Hyper Compress, yes, when you use it through BentoPDF. It is included as a [bundled component](#bundled-components). Using the engine on its own, or inside other software, needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
Hyper Compress, yes, through BentoPDF's own features in an eligible Product. It is included as a [bundled component](#bundled-components) for companies under US$1 million in revenue and funding, in general PDF toolkits, running on the end user's device. Using the engine on its own, on a server, through an API, or inside other software needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
|
||||
### What about the AGPL components?
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root
|
||||
@@ -122,11 +122,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# ADD .HTML EXTENSION (ROOT LEVEL)
|
||||
@@ -183,10 +183,10 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
|
||||
@@ -149,7 +149,7 @@ CSPの `script-src` に `'unsafe-eval'` が含まれているのは、LibreOffic
|
||||
|
||||
OCRでは、`VITE_TESSERACT_*` 変数を空のままにするとデフォルトのオンラインアセットを使い、セルフホスト/オフラインのOCRでは3つすべてを一緒に設定します。ワーカー、コアランタイム、traineddataディレクトリは対応している必要があるため、一部だけの上書きは拒否されます。完全オフラインで検索可能なPDFを出力するには、`VITE_OCR_FONT_BASE_URL` も設定して、OCRテキストレイヤー用フォントを公開のNotoフォントURLではなく社内サーバーから読み込むようにします。
|
||||
|
||||
`VITE_DEFAULT_LANGUAGE` は、初めて訪れたユーザーのUI言語を設定します。サポートされる値:`en`、`ar`、`be`、`fr`、`de`、`es`、`zh`、`zh-TW`、`vi`、`tr`、`id`、`it`、`pt`、`nl`、`da`。ユーザーは引き続き言語を切り替えられ、これは既定値を変えるだけです。
|
||||
`VITE_DEFAULT_LANGUAGE` は、初めて訪れたユーザーのUI言語を設定します。サポートされる値:`en`、`ar`、`be`、`fr`、`de`、`es`、`zh`、`zh-TW`、`vi`、`tr`、`id`、`it`、`pt`、`nl`、`da`、`ko`、`sv`、`ru`、`pl`、`ja`、`uk`、`sk`、`ca`、`fa`。ユーザーは引き続き言語を切り替えられ、これは既定値を変えるだけです。
|
||||
|
||||
例:
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ 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} !^/(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/$
|
||||
RewriteCond %{REQUEST_URI} (.+)/$
|
||||
RewriteRule ^ %1 [R=301,L]
|
||||
|
||||
@@ -163,7 +163,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# 5.1. LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root (for SEO consistency)
|
||||
@@ -172,11 +172,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# 5.5. DOCS ROUTING (VitePress)
|
||||
@@ -211,11 +211,11 @@ RewriteBase /pdf-tools/
|
||||
|
||||
# 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf-tools/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
@@ -254,7 +254,7 @@ Header always set Cross-Origin-Embedder-Policy "require-corp"
|
||||
```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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# Root level pages
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
|
||||
+31
-19
@@ -63,29 +63,33 @@ The commercial license covers BentoPDF's own code. If you configure and use AGPL
|
||||
|
||||
## What's Included
|
||||
|
||||
| Feature | Included |
|
||||
| ----------------------------- | -------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
| Feature | Included |
|
||||
| ----------------------------- | --------------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ (conditions apply) |
|
||||
| Products covered | One per license |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
|
||||
## One License Per Product
|
||||
|
||||
A license covers one Product: one application offered under one name, on any number of platforms, domains and deployments. Each additional Product, including the same application under another brand, needs its own license. Agencies need one license per client Product, held by the client. Reselling BentoPDF as a template, white-label product or developer SDK is not allowed; [OEM terms](mailto:contact@bentopdf.com) are available for that.
|
||||
|
||||
## Bundled Components
|
||||
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component, so you don't need a separate Hyper Compress license to use it inside BentoPDF.
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component for eligible Products, so you don't need a separate Hyper Compress license to use it inside BentoPDF. It is included when:
|
||||
|
||||
You may use a bundled component only through BentoPDF's own tools, as part of the BentoPDF application you deploy, including your branded or modified version of BentoPDF. You may not:
|
||||
- you and your affiliates have under US$1 million in combined revenue and funding over the last 12 months;
|
||||
- it runs only through the BentoPDF features that use it: the Compress PDF tool and the Compress step of the PDF Workflow builder;
|
||||
- it runs on the end user's device and is started by the end user in your Product's interface, never on servers or headless browsers, through an API, or from your own automation;
|
||||
- your Product is a general PDF toolkit, not a compression product: it offers at least 10 other BentoPDF tools and is not named, marketed or opened on compression;
|
||||
- the engine itself is not modified, extracted or made available for use elsewhere.
|
||||
|
||||
- call it from your own code through an API, SDK, command line, or headless or server process;
|
||||
- separate, repackage or sublicense it, or use it in other software;
|
||||
- offer a product or service whose main purpose is what the bundled component does, such as a compression-only app or website;
|
||||
- modify the bundled component itself.
|
||||
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year.
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year. The [full license terms](https://github.com/alam00000/bentopdf/blob/main/COMMERCIAL-LICENSE.md) cover every condition in detail.
|
||||
|
||||
## FAQ
|
||||
|
||||
@@ -97,9 +101,17 @@ No. BentoPDF does not use license keys. The commercial license grants you legal
|
||||
|
||||
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.
|
||||
|
||||
### Do I need a license for each product?
|
||||
|
||||
Yes. One license covers one Product, on any number of platforms, domains and deployments. The same application under a different brand is a separate Product.
|
||||
|
||||
### Can an agency use one license for several clients?
|
||||
|
||||
No. Each client Product needs its own license, held by the client. You can buy it for your client and hand it over with the Product.
|
||||
|
||||
### Does the commercial license cover Hyper Compress or Kura?
|
||||
|
||||
Hyper Compress, yes, when you use it through BentoPDF. It is included as a [bundled component](#bundled-components). Using the engine on its own, or inside other software, needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
Hyper Compress, yes, through BentoPDF's own features in an eligible Product. It is included as a [bundled component](#bundled-components) for companies under US$1 million in revenue and funding, in general PDF toolkits, running on the end user's device. Using the engine on its own, on a server, through an API, or inside other software needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
|
||||
### What about the AGPL components?
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root
|
||||
@@ -122,11 +122,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# ADD .HTML EXTENSION (ROOT LEVEL)
|
||||
@@ -183,10 +183,10 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
|
||||
@@ -149,7 +149,7 @@ CSP의 `script-src`에는 `'unsafe-eval'`이 포함되어 있습니다. LibreOff
|
||||
|
||||
OCR의 경우 `VITE_TESSERACT_*` 변수를 비워 두면 기본 온라인 에셋을 사용하고, 직접 호스팅하거나 오프라인 OCR을 쓰려면 세 가지를 함께 설정하세요. 워커, 코어 런타임, traineddata 디렉터리가 서로 일치해야 하므로 일부만 덮어쓰는 것은 거부됩니다. 완전히 오프라인으로 검색 가능한 PDF를 만들려면 `VITE_OCR_FONT_BASE_URL`도 설정하여 OCR 텍스트 레이어 글꼴을 공개 Noto 글꼴 URL 대신 내부 서버에서 불러오도록 하세요.
|
||||
|
||||
`VITE_DEFAULT_LANGUAGE`는 처음 방문하는 사용자의 UI 언어를 설정합니다. 지원되는 값: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`. 사용자는 언제든 언어를 바꿀 수 있으며, 이 값은 기본값만 바꿉니다.
|
||||
`VITE_DEFAULT_LANGUAGE`는 처음 방문하는 사용자의 UI 언어를 설정합니다. 지원되는 값: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`, `ko`, `sv`, `ru`, `pl`, `ja`, `uk`, `sk`, `ca`, `fa`. 사용자는 언제든 언어를 바꿀 수 있으며, 이 값은 기본값만 바꿉니다.
|
||||
|
||||
예시:
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ 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} !^/(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/$
|
||||
RewriteCond %{REQUEST_URI} (.+)/$
|
||||
RewriteRule ^ %1 [R=301,L]
|
||||
|
||||
@@ -163,7 +163,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# 5.1. LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root (for SEO consistency)
|
||||
@@ -172,11 +172,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# 5.5. DOCS ROUTING (VitePress)
|
||||
@@ -211,11 +211,11 @@ RewriteBase /pdf-tools/
|
||||
|
||||
# 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf-tools/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
@@ -254,7 +254,7 @@ Header always set Cross-Origin-Embedder-Policy "require-corp"
|
||||
```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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# Root level pages
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
|
||||
+31
-19
@@ -63,29 +63,33 @@ The commercial license covers BentoPDF's own code. If you configure and use AGPL
|
||||
|
||||
## What's Included
|
||||
|
||||
| Feature | Included |
|
||||
| ----------------------------- | -------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
| Feature | Included |
|
||||
| ----------------------------- | --------------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ (conditions apply) |
|
||||
| Products covered | One per license |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
|
||||
## One License Per Product
|
||||
|
||||
A license covers one Product: one application offered under one name, on any number of platforms, domains and deployments. Each additional Product, including the same application under another brand, needs its own license. Agencies need one license per client Product, held by the client. Reselling BentoPDF as a template, white-label product or developer SDK is not allowed; [OEM terms](mailto:contact@bentopdf.com) are available for that.
|
||||
|
||||
## Bundled Components
|
||||
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component, so you don't need a separate Hyper Compress license to use it inside BentoPDF.
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component for eligible Products, so you don't need a separate Hyper Compress license to use it inside BentoPDF. It is included when:
|
||||
|
||||
You may use a bundled component only through BentoPDF's own tools, as part of the BentoPDF application you deploy, including your branded or modified version of BentoPDF. You may not:
|
||||
- you and your affiliates have under US$1 million in combined revenue and funding over the last 12 months;
|
||||
- it runs only through the BentoPDF features that use it: the Compress PDF tool and the Compress step of the PDF Workflow builder;
|
||||
- it runs on the end user's device and is started by the end user in your Product's interface, never on servers or headless browsers, through an API, or from your own automation;
|
||||
- your Product is a general PDF toolkit, not a compression product: it offers at least 10 other BentoPDF tools and is not named, marketed or opened on compression;
|
||||
- the engine itself is not modified, extracted or made available for use elsewhere.
|
||||
|
||||
- call it from your own code through an API, SDK, command line, or headless or server process;
|
||||
- separate, repackage or sublicense it, or use it in other software;
|
||||
- offer a product or service whose main purpose is what the bundled component does, such as a compression-only app or website;
|
||||
- modify the bundled component itself.
|
||||
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year.
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), an annual subscription from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) that are annual subscriptions from $99/year. The [full license terms](https://github.com/alam00000/bentopdf/blob/main/COMMERCIAL-LICENSE.md) cover every condition in detail, and the [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress/blob/main/COMMERCIAL-LICENSE.md) and [Kura](https://github.com/alam00000/bentopdf-kura/blob/main/COMMERCIAL-LICENSE.md) commercial licenses cover those subscriptions.
|
||||
|
||||
## FAQ
|
||||
|
||||
@@ -97,9 +101,17 @@ No. BentoPDF does not use license keys. The commercial license grants you legal
|
||||
|
||||
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.
|
||||
|
||||
### Do I need a license for each product?
|
||||
|
||||
Yes. One license covers one Product, on any number of platforms, domains and deployments. The same application under a different brand is a separate Product.
|
||||
|
||||
### Can an agency use one license for several clients?
|
||||
|
||||
No. Each client Product needs its own license, held by the client. You can buy it for your client and hand it over with the Product.
|
||||
|
||||
### Does the commercial license cover Hyper Compress or Kura?
|
||||
|
||||
Hyper Compress, yes, when you use it through BentoPDF. It is included as a [bundled component](#bundled-components). Using the engine on its own, or inside other software, needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
Hyper Compress, yes, through BentoPDF's own features in an eligible Product. It is included as a [bundled component](#bundled-components) for companies under US$1 million in revenue and funding, in general PDF toolkits, running on the end user's device. Using the engine on its own, on a server, through an API, or inside other software needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), an annual subscription from $99/year. Kura is not included and is licensed separately, as an annual subscription from [$99/year](https://www.bentopdf.com/kura#pricing). Both follow their own commercial licenses: [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress/blob/main/COMMERCIAL-LICENSE.md) and [Kura](https://github.com/alam00000/bentopdf-kura/blob/main/COMMERCIAL-LICENSE.md).
|
||||
|
||||
### What about the AGPL components?
|
||||
|
||||
|
||||
+31
-19
@@ -63,29 +63,33 @@ The commercial license covers BentoPDF's own code. If you configure and use AGPL
|
||||
|
||||
## What's Included
|
||||
|
||||
| Feature | Included |
|
||||
| ----------------------------- | -------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
| Feature | Included |
|
||||
| ----------------------------- | --------------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ (conditions apply) |
|
||||
| Products covered | One per license |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
|
||||
## One License Per Product
|
||||
|
||||
A license covers one Product: one application offered under one name, on any number of platforms, domains and deployments. Each additional Product, including the same application under another brand, needs its own license. Agencies need one license per client Product, held by the client. Reselling BentoPDF as a template, white-label product or developer SDK is not allowed; [OEM terms](mailto:contact@bentopdf.com) are available for that.
|
||||
|
||||
## Bundled Components
|
||||
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component, so you don't need a separate Hyper Compress license to use it inside BentoPDF.
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component for eligible Products, so you don't need a separate Hyper Compress license to use it inside BentoPDF. It is included when:
|
||||
|
||||
You may use a bundled component only through BentoPDF's own tools, as part of the BentoPDF application you deploy, including your branded or modified version of BentoPDF. You may not:
|
||||
- you and your affiliates have under US$1 million in combined revenue and funding over the last 12 months;
|
||||
- it runs only through the BentoPDF features that use it: the Compress PDF tool and the Compress step of the PDF Workflow builder;
|
||||
- it runs on the end user's device and is started by the end user in your Product's interface, never on servers or headless browsers, through an API, or from your own automation;
|
||||
- your Product is a general PDF toolkit, not a compression product: it offers at least 10 other BentoPDF tools and is not named, marketed or opened on compression;
|
||||
- the engine itself is not modified, extracted or made available for use elsewhere.
|
||||
|
||||
- call it from your own code through an API, SDK, command line, or headless or server process;
|
||||
- separate, repackage or sublicense it, or use it in other software;
|
||||
- offer a product or service whose main purpose is what the bundled component does, such as a compression-only app or website;
|
||||
- modify the bundled component itself.
|
||||
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year.
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year. The [full license terms](https://github.com/alam00000/bentopdf/blob/main/COMMERCIAL-LICENSE.md) cover every condition in detail.
|
||||
|
||||
## FAQ
|
||||
|
||||
@@ -97,9 +101,17 @@ No. BentoPDF does not use license keys. The commercial license grants you legal
|
||||
|
||||
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.
|
||||
|
||||
### Do I need a license for each product?
|
||||
|
||||
Yes. One license covers one Product, on any number of platforms, domains and deployments. The same application under a different brand is a separate Product.
|
||||
|
||||
### Can an agency use one license for several clients?
|
||||
|
||||
No. Each client Product needs its own license, held by the client. You can buy it for your client and hand it over with the Product.
|
||||
|
||||
### Does the commercial license cover Hyper Compress or Kura?
|
||||
|
||||
Hyper Compress, yes, when you use it through BentoPDF. It is included as a [bundled component](#bundled-components). Using the engine on its own, or inside other software, needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
Hyper Compress, yes, through BentoPDF's own features in an eligible Product. It is included as a [bundled component](#bundled-components) for companies under US$1 million in revenue and funding, in general PDF toolkits, running on the end user's device. Using the engine on its own, on a server, through an API, or inside other software needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
|
||||
### What about the AGPL components?
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root
|
||||
@@ -122,11 +122,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# ADD .HTML EXTENSION (ROOT LEVEL)
|
||||
@@ -183,10 +183,10 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
|
||||
@@ -149,7 +149,7 @@ De CSP bevat `'unsafe-eval'` in `script-src`, omdat de LibreOffice WASM-runtime
|
||||
|
||||
Laat voor OCR de `VITE_TESSERACT_*`-variabelen leeg om de standaard online assets te gebruiken, of stel alle drie samen in voor zelfgehoste/offline OCR. Gedeeltelijke OCR-overschrijvingen worden geweigerd, omdat de worker, de core-runtime en de traineddata-map bij elkaar moeten passen. Stel voor volledig offline doorzoekbare PDF-uitvoer ook `VITE_OCR_FONT_BASE_URL` in, zodat de OCR-tekstlaaglettertypen van je interne server worden geladen in plaats van van de openbare Noto-lettertype-URL's.
|
||||
|
||||
`VITE_DEFAULT_LANGUAGE` stelt de interfacetaal in voor nieuwe bezoekers. Ondersteunde waarden: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`. Gebruikers kunnen nog steeds van taal wisselen: dit verandert alleen de standaardtaal.
|
||||
`VITE_DEFAULT_LANGUAGE` stelt de interfacetaal in voor nieuwe bezoekers. Ondersteunde waarden: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`, `ko`, `sv`, `ru`, `pl`, `ja`, `uk`, `sk`, `ca`, `fa`. Gebruikers kunnen nog steeds van taal wisselen: dit verandert alleen de standaardtaal.
|
||||
|
||||
Voorbeeld:
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ 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} !^/(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/$
|
||||
RewriteCond %{REQUEST_URI} (.+)/$
|
||||
RewriteRule ^ %1 [R=301,L]
|
||||
|
||||
@@ -163,7 +163,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# 5.1. LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root (for SEO consistency)
|
||||
@@ -172,11 +172,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# 5.5. DOCS ROUTING (VitePress)
|
||||
@@ -211,11 +211,11 @@ RewriteBase /pdf-tools/
|
||||
|
||||
# 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf-tools/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
@@ -254,7 +254,7 @@ Controleer of de regel voor de extensie `.html` en de taalroutes correct zijn ge
|
||||
```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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# Root level pages
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
|
||||
+31
-19
@@ -63,29 +63,33 @@ The commercial license covers BentoPDF's own code. If you configure and use AGPL
|
||||
|
||||
## What's Included
|
||||
|
||||
| Feature | Included |
|
||||
| ----------------------------- | -------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
| Feature | Included |
|
||||
| ----------------------------- | --------------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ (conditions apply) |
|
||||
| Products covered | One per license |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
|
||||
## One License Per Product
|
||||
|
||||
A license covers one Product: one application offered under one name, on any number of platforms, domains and deployments. Each additional Product, including the same application under another brand, needs its own license. Agencies need one license per client Product, held by the client. Reselling BentoPDF as a template, white-label product or developer SDK is not allowed; [OEM terms](mailto:contact@bentopdf.com) are available for that.
|
||||
|
||||
## Bundled Components
|
||||
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component, so you don't need a separate Hyper Compress license to use it inside BentoPDF.
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component for eligible Products, so you don't need a separate Hyper Compress license to use it inside BentoPDF. It is included when:
|
||||
|
||||
You may use a bundled component only through BentoPDF's own tools, as part of the BentoPDF application you deploy, including your branded or modified version of BentoPDF. You may not:
|
||||
- you and your affiliates have under US$1 million in combined revenue and funding over the last 12 months;
|
||||
- it runs only through the BentoPDF features that use it: the Compress PDF tool and the Compress step of the PDF Workflow builder;
|
||||
- it runs on the end user's device and is started by the end user in your Product's interface, never on servers or headless browsers, through an API, or from your own automation;
|
||||
- your Product is a general PDF toolkit, not a compression product: it offers at least 10 other BentoPDF tools and is not named, marketed or opened on compression;
|
||||
- the engine itself is not modified, extracted or made available for use elsewhere.
|
||||
|
||||
- call it from your own code through an API, SDK, command line, or headless or server process;
|
||||
- separate, repackage or sublicense it, or use it in other software;
|
||||
- offer a product or service whose main purpose is what the bundled component does, such as a compression-only app or website;
|
||||
- modify the bundled component itself.
|
||||
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year.
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year. The [full license terms](https://github.com/alam00000/bentopdf/blob/main/COMMERCIAL-LICENSE.md) cover every condition in detail.
|
||||
|
||||
## FAQ
|
||||
|
||||
@@ -97,9 +101,17 @@ No. BentoPDF does not use license keys. The commercial license grants you legal
|
||||
|
||||
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.
|
||||
|
||||
### Do I need a license for each product?
|
||||
|
||||
Yes. One license covers one Product, on any number of platforms, domains and deployments. The same application under a different brand is a separate Product.
|
||||
|
||||
### Can an agency use one license for several clients?
|
||||
|
||||
No. Each client Product needs its own license, held by the client. You can buy it for your client and hand it over with the Product.
|
||||
|
||||
### Does the commercial license cover Hyper Compress or Kura?
|
||||
|
||||
Hyper Compress, yes, when you use it through BentoPDF. It is included as a [bundled component](#bundled-components). Using the engine on its own, or inside other software, needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
Hyper Compress, yes, through BentoPDF's own features in an eligible Product. It is included as a [bundled component](#bundled-components) for companies under US$1 million in revenue and funding, in general PDF toolkits, running on the end user's device. Using the engine on its own, on a server, through an API, or inside other software needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
|
||||
### What about the AGPL components?
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root
|
||||
@@ -122,11 +122,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# ADD .HTML EXTENSION (ROOT LEVEL)
|
||||
@@ -183,10 +183,10 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
|
||||
@@ -149,7 +149,7 @@ CSP zawiera `'unsafe-eval'` w `script-src`, ponieważ środowisko LibreOffice WA
|
||||
|
||||
W przypadku OCR zostaw zmienne `VITE_TESSERACT_*` puste, aby używać domyślnych zasobów online, albo ustaw wszystkie trzy razem dla OCR hostowanego samodzielnie lub offline. Częściowe nadpisania OCR są odrzucane, ponieważ worker, środowisko uruchomieniowe i katalog traineddata muszą do siebie pasować. Aby uzyskać w pełni offline przeszukiwalny plik PDF, ustaw też `VITE_OCR_FONT_BASE_URL`, aby czcionki warstwy tekstowej OCR były ładowane z Twojego wewnętrznego serwera, a nie z publicznych adresów czcionek Noto.
|
||||
|
||||
`VITE_DEFAULT_LANGUAGE` ustawia język interfejsu dla nowych odwiedzających. Obsługiwane wartości: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`. Użytkownicy nadal mogą zmienić język: to zmienia tylko wartość domyślną.
|
||||
`VITE_DEFAULT_LANGUAGE` ustawia język interfejsu dla nowych odwiedzających. Obsługiwane wartości: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`, `ko`, `sv`, `ru`, `pl`, `ja`, `uk`, `sk`, `ca`, `fa`. Użytkownicy nadal mogą zmienić język: to zmienia tylko wartość domyślną.
|
||||
|
||||
Przykład:
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ 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} !^/(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/$
|
||||
RewriteCond %{REQUEST_URI} (.+)/$
|
||||
RewriteRule ^ %1 [R=301,L]
|
||||
|
||||
@@ -163,7 +163,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# 5.1. LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root (for SEO consistency)
|
||||
@@ -172,11 +172,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# 5.5. DOCS ROUTING (VitePress)
|
||||
@@ -211,11 +211,11 @@ RewriteBase /pdf-tools/
|
||||
|
||||
# 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf-tools/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
@@ -254,7 +254,7 @@ Upewnij się, że reguła rozszerzenia `.html` i trasy językowe są poprawnie s
|
||||
```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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# Root level pages
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
|
||||
+31
-19
@@ -63,29 +63,33 @@ The commercial license covers BentoPDF's own code. If you configure and use AGPL
|
||||
|
||||
## What's Included
|
||||
|
||||
| Feature | Included |
|
||||
| ----------------------------- | -------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
| Feature | Included |
|
||||
| ----------------------------- | --------------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ (conditions apply) |
|
||||
| Products covered | One per license |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
|
||||
## One License Per Product
|
||||
|
||||
A license covers one Product: one application offered under one name, on any number of platforms, domains and deployments. Each additional Product, including the same application under another brand, needs its own license. Agencies need one license per client Product, held by the client. Reselling BentoPDF as a template, white-label product or developer SDK is not allowed; [OEM terms](mailto:contact@bentopdf.com) are available for that.
|
||||
|
||||
## Bundled Components
|
||||
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component, so you don't need a separate Hyper Compress license to use it inside BentoPDF.
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component for eligible Products, so you don't need a separate Hyper Compress license to use it inside BentoPDF. It is included when:
|
||||
|
||||
You may use a bundled component only through BentoPDF's own tools, as part of the BentoPDF application you deploy, including your branded or modified version of BentoPDF. You may not:
|
||||
- you and your affiliates have under US$1 million in combined revenue and funding over the last 12 months;
|
||||
- it runs only through the BentoPDF features that use it: the Compress PDF tool and the Compress step of the PDF Workflow builder;
|
||||
- it runs on the end user's device and is started by the end user in your Product's interface, never on servers or headless browsers, through an API, or from your own automation;
|
||||
- your Product is a general PDF toolkit, not a compression product: it offers at least 10 other BentoPDF tools and is not named, marketed or opened on compression;
|
||||
- the engine itself is not modified, extracted or made available for use elsewhere.
|
||||
|
||||
- call it from your own code through an API, SDK, command line, or headless or server process;
|
||||
- separate, repackage or sublicense it, or use it in other software;
|
||||
- offer a product or service whose main purpose is what the bundled component does, such as a compression-only app or website;
|
||||
- modify the bundled component itself.
|
||||
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year.
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year. The [full license terms](https://github.com/alam00000/bentopdf/blob/main/COMMERCIAL-LICENSE.md) cover every condition in detail.
|
||||
|
||||
## FAQ
|
||||
|
||||
@@ -97,9 +101,17 @@ No. BentoPDF does not use license keys. The commercial license grants you legal
|
||||
|
||||
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.
|
||||
|
||||
### Do I need a license for each product?
|
||||
|
||||
Yes. One license covers one Product, on any number of platforms, domains and deployments. The same application under a different brand is a separate Product.
|
||||
|
||||
### Can an agency use one license for several clients?
|
||||
|
||||
No. Each client Product needs its own license, held by the client. You can buy it for your client and hand it over with the Product.
|
||||
|
||||
### Does the commercial license cover Hyper Compress or Kura?
|
||||
|
||||
Hyper Compress, yes, when you use it through BentoPDF. It is included as a [bundled component](#bundled-components). Using the engine on its own, or inside other software, needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
Hyper Compress, yes, through BentoPDF's own features in an eligible Product. It is included as a [bundled component](#bundled-components) for companies under US$1 million in revenue and funding, in general PDF toolkits, running on the end user's device. Using the engine on its own, on a server, through an API, or inside other software needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
|
||||
### What about the AGPL components?
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root
|
||||
@@ -122,11 +122,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# ADD .HTML EXTENSION (ROOT LEVEL)
|
||||
@@ -183,10 +183,10 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
|
||||
@@ -149,7 +149,7 @@ A CSP inclui `'unsafe-eval'` no `script-src` porque o runtime do LibreOffice WAS
|
||||
|
||||
Para o OCR, deixe as variáveis `VITE_TESSERACT_*` vazias para usar os recursos online padrão, ou defina as três juntas para OCR hospedado por conta própria/offline. Substituições parciais do OCR são rejeitadas porque o worker, o runtime principal e o diretório traineddata precisam corresponder. Para uma saída de PDF pesquisável totalmente offline, defina também `VITE_OCR_FONT_BASE_URL`, de modo que as fontes da camada de texto do OCR sejam carregadas do seu servidor interno e não das URLs públicas de fontes Noto.
|
||||
|
||||
`VITE_DEFAULT_LANGUAGE` define o idioma da interface para quem visita pela primeira vez. Valores aceitos: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`. Os usuários ainda podem trocar de idioma; isso só muda o padrão.
|
||||
`VITE_DEFAULT_LANGUAGE` define o idioma da interface para quem visita pela primeira vez. Valores aceitos: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`, `ko`, `sv`, `ru`, `pl`, `ja`, `uk`, `sk`, `ca`, `fa`. Os usuários ainda podem trocar de idioma; isso só muda o padrão.
|
||||
|
||||
Exemplo:
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ 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} !^/(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/$
|
||||
RewriteCond %{REQUEST_URI} (.+)/$
|
||||
RewriteRule ^ %1 [R=301,L]
|
||||
|
||||
@@ -163,7 +163,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# 5.1. LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root (for SEO consistency)
|
||||
@@ -172,11 +172,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# 5.5. DOCS ROUTING (VitePress)
|
||||
@@ -211,11 +211,11 @@ RewriteBase /pdf-tools/
|
||||
|
||||
# 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf-tools/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
@@ -254,7 +254,7 @@ Verifique se a regra da extensão `.html` e as rotas de idioma estão configurad
|
||||
```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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# Root level pages
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
|
||||
+31
-19
@@ -63,29 +63,33 @@ The commercial license covers BentoPDF's own code. If you configure and use AGPL
|
||||
|
||||
## What's Included
|
||||
|
||||
| Feature | Included |
|
||||
| ----------------------------- | -------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
| Feature | Included |
|
||||
| ----------------------------- | --------------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ (conditions apply) |
|
||||
| Products covered | One per license |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
|
||||
## One License Per Product
|
||||
|
||||
A license covers one Product: one application offered under one name, on any number of platforms, domains and deployments. Each additional Product, including the same application under another brand, needs its own license. Agencies need one license per client Product, held by the client. Reselling BentoPDF as a template, white-label product or developer SDK is not allowed; [OEM terms](mailto:contact@bentopdf.com) are available for that.
|
||||
|
||||
## Bundled Components
|
||||
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component, so you don't need a separate Hyper Compress license to use it inside BentoPDF.
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component for eligible Products, so you don't need a separate Hyper Compress license to use it inside BentoPDF. It is included when:
|
||||
|
||||
You may use a bundled component only through BentoPDF's own tools, as part of the BentoPDF application you deploy, including your branded or modified version of BentoPDF. You may not:
|
||||
- you and your affiliates have under US$1 million in combined revenue and funding over the last 12 months;
|
||||
- it runs only through the BentoPDF features that use it: the Compress PDF tool and the Compress step of the PDF Workflow builder;
|
||||
- it runs on the end user's device and is started by the end user in your Product's interface, never on servers or headless browsers, through an API, or from your own automation;
|
||||
- your Product is a general PDF toolkit, not a compression product: it offers at least 10 other BentoPDF tools and is not named, marketed or opened on compression;
|
||||
- the engine itself is not modified, extracted or made available for use elsewhere.
|
||||
|
||||
- call it from your own code through an API, SDK, command line, or headless or server process;
|
||||
- separate, repackage or sublicense it, or use it in other software;
|
||||
- offer a product or service whose main purpose is what the bundled component does, such as a compression-only app or website;
|
||||
- modify the bundled component itself.
|
||||
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year.
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year. The [full license terms](https://github.com/alam00000/bentopdf/blob/main/COMMERCIAL-LICENSE.md) cover every condition in detail.
|
||||
|
||||
## FAQ
|
||||
|
||||
@@ -97,9 +101,17 @@ No. BentoPDF does not use license keys. The commercial license grants you legal
|
||||
|
||||
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.
|
||||
|
||||
### Do I need a license for each product?
|
||||
|
||||
Yes. One license covers one Product, on any number of platforms, domains and deployments. The same application under a different brand is a separate Product.
|
||||
|
||||
### Can an agency use one license for several clients?
|
||||
|
||||
No. Each client Product needs its own license, held by the client. You can buy it for your client and hand it over with the Product.
|
||||
|
||||
### Does the commercial license cover Hyper Compress or Kura?
|
||||
|
||||
Hyper Compress, yes, when you use it through BentoPDF. It is included as a [bundled component](#bundled-components). Using the engine on its own, or inside other software, needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
Hyper Compress, yes, through BentoPDF's own features in an eligible Product. It is included as a [bundled component](#bundled-components) for companies under US$1 million in revenue and funding, in general PDF toolkits, running on the end user's device. Using the engine on its own, on a server, through an API, or inside other software needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
|
||||
### What about the AGPL components?
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root
|
||||
@@ -122,11 +122,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# ADD .HTML EXTENSION (ROOT LEVEL)
|
||||
@@ -183,10 +183,10 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
|
||||
@@ -149,7 +149,7 @@ CSP включает `'unsafe-eval'` в `script-src`, потому что сре
|
||||
|
||||
Для OCR оставьте переменные `VITE_TESSERACT_*` пустыми, чтобы использовать онлайн-ресурсы по умолчанию, или задайте все три вместе для OCR на своём сервере или офлайн. Частичное переопределение отклоняется, потому что воркер, основной рантайм и каталог traineddata должны соответствовать друг другу. Для полностью офлайнового вывода PDF с возможностью поиска также задайте `VITE_OCR_FONT_BASE_URL`, чтобы шрифты текстового слоя OCR загружались с вашего внутреннего сервера, а не по публичным URL Noto.
|
||||
|
||||
`VITE_DEFAULT_LANGUAGE` задаёт язык интерфейса для новых посетителей. Поддерживаемые значения: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`. Пользователи по-прежнему могут переключать язык: меняется только значение по умолчанию.
|
||||
`VITE_DEFAULT_LANGUAGE` задаёт язык интерфейса для новых посетителей. Поддерживаемые значения: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`, `ko`, `sv`, `ru`, `pl`, `ja`, `uk`, `sk`, `ca`, `fa`. Пользователи по-прежнему могут переключать язык: меняется только значение по умолчанию.
|
||||
|
||||
Пример:
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ 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} !^/(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/$
|
||||
RewriteCond %{REQUEST_URI} (.+)/$
|
||||
RewriteRule ^ %1 [R=301,L]
|
||||
|
||||
@@ -163,7 +163,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# 5.1. LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root (for SEO consistency)
|
||||
@@ -172,11 +172,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# 5.5. DOCS ROUTING (VitePress)
|
||||
@@ -211,11 +211,11 @@ RewriteBase /pdf-tools/
|
||||
|
||||
# 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf-tools/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
@@ -254,7 +254,7 @@ Header always set Cross-Origin-Embedder-Policy "require-corp"
|
||||
```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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# Root level pages
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
|
||||
@@ -113,7 +113,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root
|
||||
@@ -122,11 +122,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# ADD .HTML EXTENSION (ROOT LEVEL)
|
||||
@@ -183,10 +183,10 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
|
||||
@@ -149,7 +149,7 @@ The CSP includes `'unsafe-eval'` in `script-src` because the LibreOffice WASM ru
|
||||
|
||||
For OCR, leave the `VITE_TESSERACT_*` variables empty to use the default online assets, or set all three together for self-hosted/offline OCR. Partial OCR overrides are rejected because the worker, core runtime, and traineddata directory must match. For fully offline searchable PDF output, also set `VITE_OCR_FONT_BASE_URL` so the OCR text-layer fonts are loaded from your internal server instead of the public Noto font URLs.
|
||||
|
||||
`VITE_DEFAULT_LANGUAGE` sets the UI language for first-time visitors. Supported values: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`. Users can still switch languages — this only changes the default.
|
||||
`VITE_DEFAULT_LANGUAGE` sets the UI language for first-time visitors. Supported values: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`, `ko`, `sv`, `ru`, `pl`, `ja`, `uk`, `sk`, `ca`, `fa`. Users can still switch languages — this only changes the default.
|
||||
|
||||
Example:
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ 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} !^/(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/$
|
||||
RewriteCond %{REQUEST_URI} (.+)/$
|
||||
RewriteRule ^ %1 [R=301,L]
|
||||
|
||||
@@ -163,7 +163,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# 5.1. LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root (for SEO consistency)
|
||||
@@ -172,11 +172,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# 5.5. DOCS ROUTING (VitePress)
|
||||
@@ -211,11 +211,11 @@ RewriteBase /pdf-tools/
|
||||
|
||||
# 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf-tools/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
@@ -254,7 +254,7 @@ Make sure the `.html` extension rule and language routes are correctly configure
|
||||
```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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# Root level pages
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
|
||||
+31
-19
@@ -63,29 +63,33 @@ The commercial license covers BentoPDF's own code. If you configure and use AGPL
|
||||
|
||||
## What's Included
|
||||
|
||||
| Feature | Included |
|
||||
| ----------------------------- | -------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
| Feature | Included |
|
||||
| ----------------------------- | --------------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ (conditions apply) |
|
||||
| Products covered | One per license |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
|
||||
## One License Per Product
|
||||
|
||||
A license covers one Product: one application offered under one name, on any number of platforms, domains and deployments. Each additional Product, including the same application under another brand, needs its own license. Agencies need one license per client Product, held by the client. Reselling BentoPDF as a template, white-label product or developer SDK is not allowed; [OEM terms](mailto:contact@bentopdf.com) are available for that.
|
||||
|
||||
## Bundled Components
|
||||
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component, so you don't need a separate Hyper Compress license to use it inside BentoPDF.
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component for eligible Products, so you don't need a separate Hyper Compress license to use it inside BentoPDF. It is included when:
|
||||
|
||||
You may use a bundled component only through BentoPDF's own tools, as part of the BentoPDF application you deploy, including your branded or modified version of BentoPDF. You may not:
|
||||
- you and your affiliates have under US$1 million in combined revenue and funding over the last 12 months;
|
||||
- it runs only through the BentoPDF features that use it: the Compress PDF tool and the Compress step of the PDF Workflow builder;
|
||||
- it runs on the end user's device and is started by the end user in your Product's interface, never on servers or headless browsers, through an API, or from your own automation;
|
||||
- your Product is a general PDF toolkit, not a compression product: it offers at least 10 other BentoPDF tools and is not named, marketed or opened on compression;
|
||||
- the engine itself is not modified, extracted or made available for use elsewhere.
|
||||
|
||||
- call it from your own code through an API, SDK, command line, or headless or server process;
|
||||
- separate, repackage or sublicense it, or use it in other software;
|
||||
- offer a product or service whose main purpose is what the bundled component does, such as a compression-only app or website;
|
||||
- modify the bundled component itself.
|
||||
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year.
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year. The [full license terms](https://github.com/alam00000/bentopdf/blob/main/COMMERCIAL-LICENSE.md) cover every condition in detail.
|
||||
|
||||
## FAQ
|
||||
|
||||
@@ -97,9 +101,17 @@ No. BentoPDF does not use license keys. The commercial license grants you legal
|
||||
|
||||
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.
|
||||
|
||||
### Do I need a license for each product?
|
||||
|
||||
Yes. One license covers one Product, on any number of platforms, domains and deployments. The same application under a different brand is a separate Product.
|
||||
|
||||
### Can an agency use one license for several clients?
|
||||
|
||||
No. Each client Product needs its own license, held by the client. You can buy it for your client and hand it over with the Product.
|
||||
|
||||
### Does the commercial license cover Hyper Compress or Kura?
|
||||
|
||||
Hyper Compress, yes, when you use it through BentoPDF. It is included as a [bundled component](#bundled-components). Using the engine on its own, or inside other software, needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
Hyper Compress, yes, through BentoPDF's own features in an eligible Product. It is included as a [bundled component](#bundled-components) for companies under US$1 million in revenue and funding, in general PDF toolkits, running on the end user's device. Using the engine on its own, on a server, through an API, or inside other software needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
|
||||
### What about the AGPL components?
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root
|
||||
@@ -122,11 +122,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# ADD .HTML EXTENSION (ROOT LEVEL)
|
||||
@@ -183,10 +183,10 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
|
||||
@@ -149,7 +149,7 @@ CSP obsahuje `'unsafe-eval'` v `script-src`, pretože runtime LibreOffice WASM (
|
||||
|
||||
Pre OCR nechajte premenné `VITE_TESSERACT_*` prázdne, ak chcete použiť predvolené online zdroje, alebo nastavte všetky tri naraz pre vlastné či offline OCR. Čiastočné prepísanie OCR sa odmietne, pretože worker, základný runtime a priečinok traineddata musia zodpovedať. Pre úplne offline prehľadávateľné PDF nastavte aj `VITE_OCR_FONT_BASE_URL`, aby sa písma textovej vrstvy OCR načítali z vášho interného servera namiesto verejných URL písiem Noto.
|
||||
|
||||
`VITE_DEFAULT_LANGUAGE` nastavuje jazyk rozhrania pre nových návštevníkov. Podporované hodnoty: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`. Používatelia môžu jazyk stále prepnúť, mení sa len predvolená hodnota.
|
||||
`VITE_DEFAULT_LANGUAGE` nastavuje jazyk rozhrania pre nových návštevníkov. Podporované hodnoty: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`, `ko`, `sv`, `ru`, `pl`, `ja`, `uk`, `sk`, `ca`, `fa`. Používatelia môžu jazyk stále prepnúť, mení sa len predvolená hodnota.
|
||||
|
||||
Príklad:
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ 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} !^/(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/$
|
||||
RewriteCond %{REQUEST_URI} (.+)/$
|
||||
RewriteRule ^ %1 [R=301,L]
|
||||
|
||||
@@ -163,7 +163,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# 5.1. LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root (for SEO consistency)
|
||||
@@ -172,11 +172,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# 5.5. DOCS ROUTING (VitePress)
|
||||
@@ -211,11 +211,11 @@ RewriteBase /pdf-tools/
|
||||
|
||||
# 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf-tools/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
@@ -254,7 +254,7 @@ Uistite sa, že pravidlo pre príponu `.html` a jazykové trasy sú správne nas
|
||||
```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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# Root level pages
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
|
||||
+31
-19
@@ -63,29 +63,33 @@ The commercial license covers BentoPDF's own code. If you configure and use AGPL
|
||||
|
||||
## What's Included
|
||||
|
||||
| Feature | Included |
|
||||
| ----------------------------- | -------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
| Feature | Included |
|
||||
| ----------------------------- | --------------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ (conditions apply) |
|
||||
| Products covered | One per license |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
|
||||
## One License Per Product
|
||||
|
||||
A license covers one Product: one application offered under one name, on any number of platforms, domains and deployments. Each additional Product, including the same application under another brand, needs its own license. Agencies need one license per client Product, held by the client. Reselling BentoPDF as a template, white-label product or developer SDK is not allowed; [OEM terms](mailto:contact@bentopdf.com) are available for that.
|
||||
|
||||
## Bundled Components
|
||||
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component, so you don't need a separate Hyper Compress license to use it inside BentoPDF.
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component for eligible Products, so you don't need a separate Hyper Compress license to use it inside BentoPDF. It is included when:
|
||||
|
||||
You may use a bundled component only through BentoPDF's own tools, as part of the BentoPDF application you deploy, including your branded or modified version of BentoPDF. You may not:
|
||||
- you and your affiliates have under US$1 million in combined revenue and funding over the last 12 months;
|
||||
- it runs only through the BentoPDF features that use it: the Compress PDF tool and the Compress step of the PDF Workflow builder;
|
||||
- it runs on the end user's device and is started by the end user in your Product's interface, never on servers or headless browsers, through an API, or from your own automation;
|
||||
- your Product is a general PDF toolkit, not a compression product: it offers at least 10 other BentoPDF tools and is not named, marketed or opened on compression;
|
||||
- the engine itself is not modified, extracted or made available for use elsewhere.
|
||||
|
||||
- call it from your own code through an API, SDK, command line, or headless or server process;
|
||||
- separate, repackage or sublicense it, or use it in other software;
|
||||
- offer a product or service whose main purpose is what the bundled component does, such as a compression-only app or website;
|
||||
- modify the bundled component itself.
|
||||
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year.
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year. The [full license terms](https://github.com/alam00000/bentopdf/blob/main/COMMERCIAL-LICENSE.md) cover every condition in detail.
|
||||
|
||||
## FAQ
|
||||
|
||||
@@ -97,9 +101,17 @@ No. BentoPDF does not use license keys. The commercial license grants you legal
|
||||
|
||||
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.
|
||||
|
||||
### Do I need a license for each product?
|
||||
|
||||
Yes. One license covers one Product, on any number of platforms, domains and deployments. The same application under a different brand is a separate Product.
|
||||
|
||||
### Can an agency use one license for several clients?
|
||||
|
||||
No. Each client Product needs its own license, held by the client. You can buy it for your client and hand it over with the Product.
|
||||
|
||||
### Does the commercial license cover Hyper Compress or Kura?
|
||||
|
||||
Hyper Compress, yes, when you use it through BentoPDF. It is included as a [bundled component](#bundled-components). Using the engine on its own, or inside other software, needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
Hyper Compress, yes, through BentoPDF's own features in an eligible Product. It is included as a [bundled component](#bundled-components) for companies under US$1 million in revenue and funding, in general PDF toolkits, running on the end user's device. Using the engine on its own, on a server, through an API, or inside other software needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
|
||||
### What about the AGPL components?
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root
|
||||
@@ -122,11 +122,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# ADD .HTML EXTENSION (ROOT LEVEL)
|
||||
@@ -183,10 +183,10 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
|
||||
@@ -149,7 +149,7 @@ CSP innehåller `'unsafe-eval'` i `script-src` eftersom LibreOffice WASM-körmil
|
||||
|
||||
För OCR, lämna variablerna `VITE_TESSERACT_*` tomma för att använda de förvalda onlineresurserna, eller ange alla tre tillsammans för självhostad/offline-OCR. Partiella OCR-åsidosättningar avvisas eftersom workern, kärnkörmiljön och traineddata-katalogen måste matcha varandra. För sökbara PDF-filer helt offline, ange även `VITE_OCR_FONT_BASE_URL` så att OCR-textlagrets typsnitt laddas från din interna server i stället för de publika Noto-typsnitts-URL:erna.
|
||||
|
||||
`VITE_DEFAULT_LANGUAGE` anger gränssnittsspråk för förstagångsbesökare. Värden som stöds: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`. Användare kan fortfarande byta språk, det är bara standardvärdet som ändras.
|
||||
`VITE_DEFAULT_LANGUAGE` anger gränssnittsspråk för förstagångsbesökare. Värden som stöds: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`, `ko`, `sv`, `ru`, `pl`, `ja`, `uk`, `sk`, `ca`, `fa`. Användare kan fortfarande byta språk, det är bara standardvärdet som ändras.
|
||||
|
||||
Exempel:
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ 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} !^/(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/$
|
||||
RewriteCond %{REQUEST_URI} (.+)/$
|
||||
RewriteRule ^ %1 [R=301,L]
|
||||
|
||||
@@ -163,7 +163,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# 5.1. LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root (for SEO consistency)
|
||||
@@ -172,11 +172,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# 5.5. DOCS ROUTING (VitePress)
|
||||
@@ -211,11 +211,11 @@ RewriteBase /pdf-tools/
|
||||
|
||||
# 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf-tools/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
@@ -254,7 +254,7 @@ Kontrollera att regeln för filändelsen `.html` och språkrouterna är rätt ko
|
||||
```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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# Root level pages
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
|
||||
+31
-19
@@ -63,29 +63,33 @@ The commercial license covers BentoPDF's own code. If you configure and use AGPL
|
||||
|
||||
## What's Included
|
||||
|
||||
| Feature | Included |
|
||||
| ----------------------------- | -------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
| Feature | Included |
|
||||
| ----------------------------- | --------------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ (conditions apply) |
|
||||
| Products covered | One per license |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
|
||||
## One License Per Product
|
||||
|
||||
A license covers one Product: one application offered under one name, on any number of platforms, domains and deployments. Each additional Product, including the same application under another brand, needs its own license. Agencies need one license per client Product, held by the client. Reselling BentoPDF as a template, white-label product or developer SDK is not allowed; [OEM terms](mailto:contact@bentopdf.com) are available for that.
|
||||
|
||||
## Bundled Components
|
||||
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component, so you don't need a separate Hyper Compress license to use it inside BentoPDF.
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component for eligible Products, so you don't need a separate Hyper Compress license to use it inside BentoPDF. It is included when:
|
||||
|
||||
You may use a bundled component only through BentoPDF's own tools, as part of the BentoPDF application you deploy, including your branded or modified version of BentoPDF. You may not:
|
||||
- you and your affiliates have under US$1 million in combined revenue and funding over the last 12 months;
|
||||
- it runs only through the BentoPDF features that use it: the Compress PDF tool and the Compress step of the PDF Workflow builder;
|
||||
- it runs on the end user's device and is started by the end user in your Product's interface, never on servers or headless browsers, through an API, or from your own automation;
|
||||
- your Product is a general PDF toolkit, not a compression product: it offers at least 10 other BentoPDF tools and is not named, marketed or opened on compression;
|
||||
- the engine itself is not modified, extracted or made available for use elsewhere.
|
||||
|
||||
- call it from your own code through an API, SDK, command line, or headless or server process;
|
||||
- separate, repackage or sublicense it, or use it in other software;
|
||||
- offer a product or service whose main purpose is what the bundled component does, such as a compression-only app or website;
|
||||
- modify the bundled component itself.
|
||||
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year.
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year. The [full license terms](https://github.com/alam00000/bentopdf/blob/main/COMMERCIAL-LICENSE.md) cover every condition in detail.
|
||||
|
||||
## FAQ
|
||||
|
||||
@@ -97,9 +101,17 @@ No. BentoPDF does not use license keys. The commercial license grants you legal
|
||||
|
||||
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.
|
||||
|
||||
### Do I need a license for each product?
|
||||
|
||||
Yes. One license covers one Product, on any number of platforms, domains and deployments. The same application under a different brand is a separate Product.
|
||||
|
||||
### Can an agency use one license for several clients?
|
||||
|
||||
No. Each client Product needs its own license, held by the client. You can buy it for your client and hand it over with the Product.
|
||||
|
||||
### Does the commercial license cover Hyper Compress or Kura?
|
||||
|
||||
Hyper Compress, yes, when you use it through BentoPDF. It is included as a [bundled component](#bundled-components). Using the engine on its own, or inside other software, needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
Hyper Compress, yes, through BentoPDF's own features in an eligible Product. It is included as a [bundled component](#bundled-components) for companies under US$1 million in revenue and funding, in general PDF toolkits, running on the end user's device. Using the engine on its own, on a server, through an API, or inside other software needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
|
||||
### What about the AGPL components?
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root
|
||||
@@ -122,11 +122,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# ADD .HTML EXTENSION (ROOT LEVEL)
|
||||
@@ -183,10 +183,10 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
|
||||
@@ -149,7 +149,7 @@ CSP, `script-src` içinde `'unsafe-eval'` içerir, çünkü LibreOffice WASM ça
|
||||
|
||||
OCR için, varsayılan çevrimiçi varlıkları kullanmak üzere `VITE_TESSERACT_*` değişkenlerini boş bırakın veya kendi sunucunuzdaki/çevrimdışı OCR için üçünü birlikte ayarlayın. Kısmi OCR geçersiz kılmaları reddedilir, çünkü worker, çekirdek çalışma zamanı ve traineddata dizini birbiriyle eşleşmelidir. Tamamen çevrimdışı aranabilir PDF çıktısı için ayrıca `VITE_OCR_FONT_BASE_URL` değerini ayarlayın, böylece OCR metin katmanı yazı tipleri herkese açık Noto yazı tipi URL'leri yerine dahili sunucunuzdan yüklenir.
|
||||
|
||||
`VITE_DEFAULT_LANGUAGE`, ilk kez gelen ziyaretçiler için arayüz dilini belirler. Desteklenen değerler: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`. Kullanıcılar dili yine değiştirebilir, bu yalnızca varsayılanı değiştirir.
|
||||
`VITE_DEFAULT_LANGUAGE`, ilk kez gelen ziyaretçiler için arayüz dilini belirler. Desteklenen değerler: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`, `ko`, `sv`, `ru`, `pl`, `ja`, `uk`, `sk`, `ca`, `fa`. Kullanıcılar dili yine değiştirebilir, bu yalnızca varsayılanı değiştirir.
|
||||
|
||||
Örnek:
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ 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} !^/(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/$
|
||||
RewriteCond %{REQUEST_URI} (.+)/$
|
||||
RewriteRule ^ %1 [R=301,L]
|
||||
|
||||
@@ -163,7 +163,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# 5.1. LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root (for SEO consistency)
|
||||
@@ -172,11 +172,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# 5.5. DOCS ROUTING (VitePress)
|
||||
@@ -211,11 +211,11 @@ RewriteBase /pdf-tools/
|
||||
|
||||
# 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf-tools/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
@@ -254,7 +254,7 @@ Başlıklar uygulanmıyorsa, `mod_headers` modülünü etkinleştirmek için Hos
|
||||
```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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# Root level pages
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
|
||||
+31
-19
@@ -63,29 +63,33 @@ The commercial license covers BentoPDF's own code. If you configure and use AGPL
|
||||
|
||||
## What's Included
|
||||
|
||||
| Feature | Included |
|
||||
| ----------------------------- | -------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
| Feature | Included |
|
||||
| ----------------------------- | --------------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ (conditions apply) |
|
||||
| Products covered | One per license |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
|
||||
## One License Per Product
|
||||
|
||||
A license covers one Product: one application offered under one name, on any number of platforms, domains and deployments. Each additional Product, including the same application under another brand, needs its own license. Agencies need one license per client Product, held by the client. Reselling BentoPDF as a template, white-label product or developer SDK is not allowed; [OEM terms](mailto:contact@bentopdf.com) are available for that.
|
||||
|
||||
## Bundled Components
|
||||
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component, so you don't need a separate Hyper Compress license to use it inside BentoPDF.
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component for eligible Products, so you don't need a separate Hyper Compress license to use it inside BentoPDF. It is included when:
|
||||
|
||||
You may use a bundled component only through BentoPDF's own tools, as part of the BentoPDF application you deploy, including your branded or modified version of BentoPDF. You may not:
|
||||
- you and your affiliates have under US$1 million in combined revenue and funding over the last 12 months;
|
||||
- it runs only through the BentoPDF features that use it: the Compress PDF tool and the Compress step of the PDF Workflow builder;
|
||||
- it runs on the end user's device and is started by the end user in your Product's interface, never on servers or headless browsers, through an API, or from your own automation;
|
||||
- your Product is a general PDF toolkit, not a compression product: it offers at least 10 other BentoPDF tools and is not named, marketed or opened on compression;
|
||||
- the engine itself is not modified, extracted or made available for use elsewhere.
|
||||
|
||||
- call it from your own code through an API, SDK, command line, or headless or server process;
|
||||
- separate, repackage or sublicense it, or use it in other software;
|
||||
- offer a product or service whose main purpose is what the bundled component does, such as a compression-only app or website;
|
||||
- modify the bundled component itself.
|
||||
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year.
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year. The [full license terms](https://github.com/alam00000/bentopdf/blob/main/COMMERCIAL-LICENSE.md) cover every condition in detail.
|
||||
|
||||
## FAQ
|
||||
|
||||
@@ -97,9 +101,17 @@ No. BentoPDF does not use license keys. The commercial license grants you legal
|
||||
|
||||
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.
|
||||
|
||||
### Do I need a license for each product?
|
||||
|
||||
Yes. One license covers one Product, on any number of platforms, domains and deployments. The same application under a different brand is a separate Product.
|
||||
|
||||
### Can an agency use one license for several clients?
|
||||
|
||||
No. Each client Product needs its own license, held by the client. You can buy it for your client and hand it over with the Product.
|
||||
|
||||
### Does the commercial license cover Hyper Compress or Kura?
|
||||
|
||||
Hyper Compress, yes, when you use it through BentoPDF. It is included as a [bundled component](#bundled-components). Using the engine on its own, or inside other software, needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
Hyper Compress, yes, through BentoPDF's own features in an eligible Product. It is included as a [bundled component](#bundled-components) for companies under US$1 million in revenue and funding, in general PDF toolkits, running on the end user's device. Using the engine on its own, on a server, through an API, or inside other software needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
|
||||
### What about the AGPL components?
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root
|
||||
@@ -122,11 +122,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# ADD .HTML EXTENSION (ROOT LEVEL)
|
||||
@@ -183,10 +183,10 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
|
||||
@@ -149,7 +149,7 @@ CSP містить `'unsafe-eval'` у `script-src`, тому що runtime LibreO
|
||||
|
||||
Для OCR залиште змінні `VITE_TESSERACT_*` порожніми, щоб використовувати типові онлайн-ресурси, або задайте всі три разом для самостійного/офлайн OCR. Часткові перевизначення OCR відхиляються, бо worker, основний runtime і каталог traineddata мають збігатися. Для повністю офлайн-виводу пошукового PDF також задайте `VITE_OCR_FONT_BASE_URL`, щоб шрифти текстового шару OCR завантажувалися з вашого внутрішнього сервера, а не з публічних URL шрифтів Noto.
|
||||
|
||||
`VITE_DEFAULT_LANGUAGE` задає мову інтерфейсу для нових відвідувачів. Підтримувані значення: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`. Користувачі й далі можуть змінювати мову: це змінює лише типове значення.
|
||||
`VITE_DEFAULT_LANGUAGE` задає мову інтерфейсу для нових відвідувачів. Підтримувані значення: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`, `ko`, `sv`, `ru`, `pl`, `ja`, `uk`, `sk`, `ca`, `fa`. Користувачі й далі можуть змінювати мову: це змінює лише типове значення.
|
||||
|
||||
Приклад:
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ 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} !^/(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/$
|
||||
RewriteCond %{REQUEST_URI} (.+)/$
|
||||
RewriteRule ^ %1 [R=301,L]
|
||||
|
||||
@@ -163,7 +163,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# 5.1. LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root (for SEO consistency)
|
||||
@@ -172,11 +172,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# 5.5. DOCS ROUTING (VitePress)
|
||||
@@ -211,11 +211,11 @@ RewriteBase /pdf-tools/
|
||||
|
||||
# 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf-tools/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
@@ -254,7 +254,7 @@ Header always set Cross-Origin-Embedder-Policy "require-corp"
|
||||
```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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# Root level pages
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
|
||||
+31
-19
@@ -63,29 +63,33 @@ The commercial license covers BentoPDF's own code. If you configure and use AGPL
|
||||
|
||||
## What's Included
|
||||
|
||||
| Feature | Included |
|
||||
| ----------------------------- | -------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
| Feature | Included |
|
||||
| ----------------------------- | --------------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ (conditions apply) |
|
||||
| Products covered | One per license |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
|
||||
## One License Per Product
|
||||
|
||||
A license covers one Product: one application offered under one name, on any number of platforms, domains and deployments. Each additional Product, including the same application under another brand, needs its own license. Agencies need one license per client Product, held by the client. Reselling BentoPDF as a template, white-label product or developer SDK is not allowed; [OEM terms](mailto:contact@bentopdf.com) are available for that.
|
||||
|
||||
## Bundled Components
|
||||
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component, so you don't need a separate Hyper Compress license to use it inside BentoPDF.
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component for eligible Products, so you don't need a separate Hyper Compress license to use it inside BentoPDF. It is included when:
|
||||
|
||||
You may use a bundled component only through BentoPDF's own tools, as part of the BentoPDF application you deploy, including your branded or modified version of BentoPDF. You may not:
|
||||
- you and your affiliates have under US$1 million in combined revenue and funding over the last 12 months;
|
||||
- it runs only through the BentoPDF features that use it: the Compress PDF tool and the Compress step of the PDF Workflow builder;
|
||||
- it runs on the end user's device and is started by the end user in your Product's interface, never on servers or headless browsers, through an API, or from your own automation;
|
||||
- your Product is a general PDF toolkit, not a compression product: it offers at least 10 other BentoPDF tools and is not named, marketed or opened on compression;
|
||||
- the engine itself is not modified, extracted or made available for use elsewhere.
|
||||
|
||||
- call it from your own code through an API, SDK, command line, or headless or server process;
|
||||
- separate, repackage or sublicense it, or use it in other software;
|
||||
- offer a product or service whose main purpose is what the bundled component does, such as a compression-only app or website;
|
||||
- modify the bundled component itself.
|
||||
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year.
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year. The [full license terms](https://github.com/alam00000/bentopdf/blob/main/COMMERCIAL-LICENSE.md) cover every condition in detail.
|
||||
|
||||
## FAQ
|
||||
|
||||
@@ -97,9 +101,17 @@ No. BentoPDF does not use license keys. The commercial license grants you legal
|
||||
|
||||
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.
|
||||
|
||||
### Do I need a license for each product?
|
||||
|
||||
Yes. One license covers one Product, on any number of platforms, domains and deployments. The same application under a different brand is a separate Product.
|
||||
|
||||
### Can an agency use one license for several clients?
|
||||
|
||||
No. Each client Product needs its own license, held by the client. You can buy it for your client and hand it over with the Product.
|
||||
|
||||
### Does the commercial license cover Hyper Compress or Kura?
|
||||
|
||||
Hyper Compress, yes, when you use it through BentoPDF. It is included as a [bundled component](#bundled-components). Using the engine on its own, or inside other software, needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
Hyper Compress, yes, through BentoPDF's own features in an eligible Product. It is included as a [bundled component](#bundled-components) for companies under US$1 million in revenue and funding, in general PDF toolkits, running on the end user's device. Using the engine on its own, on a server, through an API, or inside other software needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
|
||||
### What about the AGPL components?
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root
|
||||
@@ -122,11 +122,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# ADD .HTML EXTENSION (ROOT LEVEL)
|
||||
@@ -183,10 +183,10 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
|
||||
@@ -149,7 +149,7 @@ CSP có `'unsafe-eval'` trong `script-src` vì runtime LibreOffice WASM (dùng c
|
||||
|
||||
Với OCR, hãy để trống các biến `VITE_TESSERACT_*` để dùng tài nguyên trực tuyến mặc định, hoặc đặt cả ba cùng lúc cho OCR tự lưu trữ/ngoại tuyến. Ghi đè OCR một phần sẽ bị từ chối vì worker, runtime lõi và thư mục traineddata phải khớp nhau. Để có đầu ra PDF có thể tìm kiếm hoàn toàn ngoại tuyến, hãy đặt thêm `VITE_OCR_FONT_BASE_URL` để phông chữ lớp văn bản OCR được tải từ máy chủ nội bộ của bạn thay vì URL phông Noto công khai.
|
||||
|
||||
`VITE_DEFAULT_LANGUAGE` đặt ngôn ngữ giao diện cho khách truy cập lần đầu. Giá trị được hỗ trợ: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`. Người dùng vẫn có thể đổi ngôn ngữ, giá trị này chỉ đổi mặc định.
|
||||
`VITE_DEFAULT_LANGUAGE` đặt ngôn ngữ giao diện cho khách truy cập lần đầu. Giá trị được hỗ trợ: `en`, `ar`, `be`, `fr`, `de`, `es`, `zh`, `zh-TW`, `vi`, `tr`, `id`, `it`, `pt`, `nl`, `da`, `ko`, `sv`, `ru`, `pl`, `ja`, `uk`, `sk`, `ca`, `fa`. Người dùng vẫn có thể đổi ngôn ngữ, giá trị này chỉ đổi mặc định.
|
||||
|
||||
Ví dụ:
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ 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} !^/(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/$
|
||||
RewriteCond %{REQUEST_URI} (.+)/$
|
||||
RewriteRule ^ %1 [R=301,L]
|
||||
|
||||
@@ -163,7 +163,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# 5.1. LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root (for SEO consistency)
|
||||
@@ -172,11 +172,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# 5.5. DOCS ROUTING (VitePress)
|
||||
@@ -211,11 +211,11 @@ RewriteBase /pdf-tools/
|
||||
|
||||
# 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf-tools/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
@@ -254,7 +254,7 @@ Nếu các header không được áp dụng, hãy liên hệ bộ phận hỗ t
|
||||
```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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# Root level pages
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
|
||||
+31
-19
@@ -63,29 +63,33 @@ The commercial license covers BentoPDF's own code. If you configure and use AGPL
|
||||
|
||||
## What's Included
|
||||
|
||||
| Feature | Included |
|
||||
| ----------------------------- | -------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
| Feature | Included |
|
||||
| ----------------------------- | --------------------- |
|
||||
| Full source code | ✅ |
|
||||
| All 50+ PDF tools | ✅ |
|
||||
| Self-hosting rights | ✅ |
|
||||
| Lifetime updates | ✅ |
|
||||
| Remove branding (Simple Mode) | ✅ |
|
||||
| Hyper Compress (bundled) | ✅ (conditions apply) |
|
||||
| Products covered | One per license |
|
||||
| Commercial support | ✅ (via email) |
|
||||
| Priority feature requests | ✅ |
|
||||
|
||||
## One License Per Product
|
||||
|
||||
A license covers one Product: one application offered under one name, on any number of platforms, domains and deployments. Each additional Product, including the same application under another brand, needs its own license. Agencies need one license per client Product, held by the client. Reselling BentoPDF as a template, white-label product or developer SDK is not allowed; [OEM terms](mailto:contact@bentopdf.com) are available for that.
|
||||
|
||||
## Bundled Components
|
||||
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component, so you don't need a separate Hyper Compress license to use it inside BentoPDF.
|
||||
**Building on BentoPDF? Hyper Compress is included.** The BentoPDF commercial license includes [Hyper Compress](https://github.com/alam00000/bentopdf-hyper-compress) as a bundled component for eligible Products, so you don't need a separate Hyper Compress license to use it inside BentoPDF. It is included when:
|
||||
|
||||
You may use a bundled component only through BentoPDF's own tools, as part of the BentoPDF application you deploy, including your branded or modified version of BentoPDF. You may not:
|
||||
- you and your affiliates have under US$1 million in combined revenue and funding over the last 12 months;
|
||||
- it runs only through the BentoPDF features that use it: the Compress PDF tool and the Compress step of the PDF Workflow builder;
|
||||
- it runs on the end user's device and is started by the end user in your Product's interface, never on servers or headless browsers, through an API, or from your own automation;
|
||||
- your Product is a general PDF toolkit, not a compression product: it offers at least 10 other BentoPDF tools and is not named, marketed or opened on compression;
|
||||
- the engine itself is not modified, extracted or made available for use elsewhere.
|
||||
|
||||
- call it from your own code through an API, SDK, command line, or headless or server process;
|
||||
- separate, repackage or sublicense it, or use it in other software;
|
||||
- offer a product or service whose main purpose is what the bundled component does, such as a compression-only app or website;
|
||||
- modify the bundled component itself.
|
||||
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year.
|
||||
Any other use requires a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. [Kura](https://github.com/alam00000/bentopdf-kura) is not a bundled component and is always licensed separately, with [commercial licenses](https://www.bentopdf.com/kura#pricing) from $99/year. The [full license terms](https://github.com/alam00000/bentopdf/blob/main/COMMERCIAL-LICENSE.md) cover every condition in detail.
|
||||
|
||||
## FAQ
|
||||
|
||||
@@ -97,9 +101,17 @@ No. BentoPDF does not use license keys. The commercial license grants you legal
|
||||
|
||||
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.
|
||||
|
||||
### Do I need a license for each product?
|
||||
|
||||
Yes. One license covers one Product, on any number of platforms, domains and deployments. The same application under a different brand is a separate Product.
|
||||
|
||||
### Can an agency use one license for several clients?
|
||||
|
||||
No. Each client Product needs its own license, held by the client. You can buy it for your client and hand it over with the Product.
|
||||
|
||||
### Does the commercial license cover Hyper Compress or Kura?
|
||||
|
||||
Hyper Compress, yes, when you use it through BentoPDF. It is included as a [bundled component](#bundled-components). Using the engine on its own, or inside other software, needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
Hyper Compress, yes, through BentoPDF's own features in an eligible Product. It is included as a [bundled component](#bundled-components) for companies under US$1 million in revenue and funding, in general PDF toolkits, running on the end user's device. Using the engine on its own, on a server, through an API, or inside other software needs a separate [Hyper Compress license](https://www.bentopdf.com/hyper-compress#pricing), from $99/year. Kura is not included and is licensed separately, from [$99/year](https://www.bentopdf.com/kura#pricing).
|
||||
|
||||
### What about the AGPL components?
|
||||
|
||||
|
||||
@@ -113,7 +113,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root
|
||||
@@ -122,11 +122,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# ADD .HTML EXTENSION (ROOT LEVEL)
|
||||
@@ -183,10 +183,10 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
|
||||
@@ -149,7 +149,7 @@ CSP 在 `script-src` 中包含 `'unsafe-eval'`,因為 LibreOffice WASM 執行
|
||||
|
||||
OCR 方面,將 `VITE_TESSERACT_*` 變數留空即使用預設的線上資源,或三個一起設定以使用自行架設/離線 OCR。部分覆寫 OCR 設定會被拒絕,因為 worker、核心執行環境與 traineddata 目錄必須相符。若要完全離線產生可搜尋的 PDF,也請設定 `VITE_OCR_FONT_BASE_URL`,讓 OCR 文字層字型從您的內部伺服器載入,而不是公開的 Noto 字型 URL。
|
||||
|
||||
`VITE_DEFAULT_LANGUAGE` 設定首次造訪者的介面語言。支援的值:`en`、`ar`、`be`、`fr`、`de`、`es`、`zh`、`zh-TW`、`vi`、`tr`、`id`、`it`、`pt`、`nl`、`da`。使用者仍可切換語言,此設定只會變更預設值。
|
||||
`VITE_DEFAULT_LANGUAGE` 設定首次造訪者的介面語言。支援的值:`en`、`ar`、`be`、`fr`、`de`、`es`、`zh`、`zh-TW`、`vi`、`tr`、`id`、`it`、`pt`、`nl`、`da`、`ko`、`sv`、`ru`、`pl`、`ja`、`uk`、`sk`、`ca`、`fa`。使用者仍可切換語言,此設定只會變更預設值。
|
||||
|
||||
範例:
|
||||
|
||||
|
||||
@@ -151,7 +151,7 @@ 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} !^/(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/$
|
||||
RewriteCond %{REQUEST_URI} (.+)/$
|
||||
RewriteRule ^ %1 [R=301,L]
|
||||
|
||||
@@ -163,7 +163,7 @@ RewriteRule ^ - [L]
|
||||
# ============================================
|
||||
# 5.1. LANGUAGE ROUTES
|
||||
# ============================================
|
||||
# Supported languages: de, es, zh, zh-TW, vi, it, id, tr, fr, pt
|
||||
# Supported languages: ar, be, da, de, es, fr, id, it, ja, ko, nl, pl, pt, ru, sk, sv, tr, uk, vi, zh, zh-TW, ca, fa
|
||||
# English has no prefix - served from root
|
||||
|
||||
# English prefix redirects to root (for SEO consistency)
|
||||
@@ -172,11 +172,11 @@ 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /$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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# ============================================
|
||||
# 5.5. DOCS ROUTING (VitePress)
|
||||
@@ -211,11 +211,11 @@ RewriteBase /pdf-tools/
|
||||
|
||||
# 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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/?$ /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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /pdf-tools/$1/$2.html [L]
|
||||
|
||||
# Root level .html extension
|
||||
RewriteCond %{REQUEST_FILENAME} !-f
|
||||
@@ -254,7 +254,7 @@ Header always set Cross-Origin-Embedder-Policy "require-corp"
|
||||
```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]
|
||||
RewriteRule ^(ar|be|da|de|es|fr|id|it|ja|ko|nl|pl|pt|ru|sk|sv|tr|uk|vi|zh|zh-TW|ca|fa)/([^/]+)/?$ /$1/$2.html [L]
|
||||
|
||||
# Root level pages
|
||||
RewriteCond %{REQUEST_FILENAME}.html -f
|
||||
|
||||
Loaded 100 of 185 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user