mirror of
https://github.com/alam00000/bentopdf.git
synced 2026-11-10 09:14:34 +01:00
Compare commits
51
Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6f7a7bfdb3 | ||
|
|
77ee986e2c | ||
|
|
606a3603f4 | ||
|
|
8a8ae3f0c5 | ||
|
|
092f84be23 | ||
|
|
2aa26e496c | ||
|
|
900196879f | ||
|
|
bd985f06f8 | ||
|
|
98467f4809 | ||
|
|
151060204d | ||
|
|
3019195fe5 | ||
|
|
3673b6e434 | ||
|
|
ad915b7527 | ||
|
|
bbafb11246 | ||
|
|
e33e79ef4d | ||
|
|
1e557d5b2a | ||
|
|
720a14c305 | ||
|
|
c60d3508bb | ||
|
|
b09f476b26 | ||
|
|
f78cc54cc0 | ||
|
|
ad481f4c1c | ||
|
|
a44449aba7 | ||
|
|
4b9d740d29 | ||
|
|
05e8f6cfde | ||
|
|
ab651a5970 | ||
|
|
9ee8225114 | ||
|
|
95bfda0e99 | ||
|
|
d19e8ad10b | ||
|
|
d4de963bf2 | ||
|
|
54770ea16f | ||
|
|
75000e1dcf | ||
|
|
bdb85b013c | ||
|
|
ae8bd3a004 | ||
|
|
c31704eb0e | ||
|
|
ba669a8952 | ||
|
|
68561b28b7 | ||
|
|
f70265136f | ||
|
|
cb53370a26 | ||
|
|
18ecaf4228 | ||
|
|
fe10335fde | ||
|
|
503c5972eb | ||
|
|
6bf5fad275 | ||
|
|
842d940801 | ||
|
|
85ce0c97b5 | ||
|
|
4125302d01 | ||
|
|
9704e8ab96 | ||
|
|
875f552881 | ||
|
|
eacee28853 | ||
|
|
7e14c83ab8 | ||
|
|
0634600073 | ||
|
|
4b5b29bf9a |
No files matched your search
@@ -3,12 +3,52 @@ name: Build and Push Docker Images (Default + Simple Mode)
|
|||||||
on:
|
on:
|
||||||
push:
|
push:
|
||||||
branches:
|
branches:
|
||||||
- 'main'
|
- "main"
|
||||||
tags:
|
tags:
|
||||||
- 'v*'
|
- "v*"
|
||||||
workflow_dispatch:
|
workflow_dispatch:
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
|
# New job to build dist and create release
|
||||||
|
build-and-release:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
if: startsWith(github.ref, 'refs/tags/')
|
||||||
|
permissions:
|
||||||
|
contents: write
|
||||||
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@v4
|
||||||
|
with:
|
||||||
|
node-version: "20"
|
||||||
|
|
||||||
|
- name: Install dependencies
|
||||||
|
run: npm ci
|
||||||
|
|
||||||
|
- name: Build distribution
|
||||||
|
run: npm run build
|
||||||
|
|
||||||
|
- name: Extract version
|
||||||
|
id: version
|
||||||
|
run: |
|
||||||
|
VERSION=${GITHUB_REF#refs/tags/v}
|
||||||
|
echo "version=${VERSION}" >> $GITHUB_OUTPUT
|
||||||
|
|
||||||
|
- name: Package distribution
|
||||||
|
run: npm run package
|
||||||
|
|
||||||
|
- name: Create GitHub Release
|
||||||
|
uses: softprops/action-gh-release@v2
|
||||||
|
with:
|
||||||
|
files: dist-${{ steps.version.outputs.version }}.zip
|
||||||
|
generate_release_notes: true
|
||||||
|
draft: false
|
||||||
|
prerelease: false
|
||||||
|
env:
|
||||||
|
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
docker-build-and-push:
|
docker-build-and-push:
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
permissions:
|
permissions:
|
||||||
@@ -19,26 +59,33 @@ jobs:
|
|||||||
mode:
|
mode:
|
||||||
- name: default
|
- name: default
|
||||||
simple_mode: false
|
simple_mode: false
|
||||||
suffix: ''
|
suffix: ""
|
||||||
- name: simple
|
- name: simple
|
||||||
simple_mode: true
|
simple_mode: true
|
||||||
suffix: '-simple'
|
suffix: "-simple"
|
||||||
steps:
|
steps:
|
||||||
|
- name: Checkout code
|
||||||
|
uses: actions/checkout@v6
|
||||||
|
|
||||||
- name: Set up QEMU
|
- name: Set up QEMU
|
||||||
uses: docker/setup-qemu-action@v3
|
uses: docker/setup-qemu-action@v3
|
||||||
|
|
||||||
- name: Set up Docker Buildx
|
- name: Set up Docker Buildx
|
||||||
uses: docker/setup-buildx-action@v3
|
uses: docker/setup-buildx-action@v3
|
||||||
|
|
||||||
- name: Login to DockerHub
|
- name: Login to DockerHub
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
username: ${{ secrets.DOCKER_USERNAME }}
|
username: ${{ secrets.DOCKER_USERNAME }}
|
||||||
password: ${{ secrets.DOCKER_TOKEN }}
|
password: ${{ secrets.DOCKER_TOKEN }}
|
||||||
|
|
||||||
- name: Login to GitHub Container Registry
|
- name: Login to GitHub Container Registry
|
||||||
uses: docker/login-action@v3
|
uses: docker/login-action@v3
|
||||||
with:
|
with:
|
||||||
registry: ghcr.io
|
registry: ghcr.io
|
||||||
username: ${{ github.repository_owner }}
|
username: ${{ github.repository_owner }}
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
- name: Extract version from tag
|
- name: Extract version from tag
|
||||||
id: version
|
id: version
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@@ -1,10 +1,26 @@
|
|||||||
# BentoPDF
|
<p align="center"><img src="public/images/favicon.svg" width="80"></p>
|
||||||
|
<h1 align="center">BentoPDF</h1>
|
||||||
|
|
||||||
**BentoPDF** is a powerful, privacy-first, client-side PDF toolkit that allows you to manipulate, edit, merge, and process PDF files directly in your browser. No server-side processing is required, ensuring your files remain secure and private.
|
**BentoPDF** is a powerful, privacy-first, client-side PDF toolkit that is self hostable and allows you to manipulate, edit, merge, and process PDF files directly in your browser. No server-side processing is required, ensuring your files remain secure and private.
|
||||||
|
|
||||||
 [](https://ko-fi.com/alio0) 
|
 [](https://ko-fi.com/alio0) 
|
||||||
[](https://github.com/sponsors/alam00000)
|
[](https://github.com/sponsors/alam00000)
|
||||||
|
|
||||||
|

|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## 📜 Licensing
|
||||||
|
|
||||||
|
BentoPDF is dual-licensed:
|
||||||
|
|
||||||
|
- **AGPL-3.0** for open-source projects where you share your full source code publicly
|
||||||
|
- **Commercial License** for proprietary/closed-source applications - **[Get Lifetime License for $49](https://ko-fi.com/s/f32ca4cb75)** (a one-time lifetime purchase, includes all feature updates forever)
|
||||||
|
|
||||||
|
For more details, see our [Licensing Page](https://bentopdf.com/licensing.html)
|
||||||
|
|
||||||
|
<hr>
|
||||||
|
|
||||||
## ⭐ Stargazers over time
|
## ⭐ Stargazers over time
|
||||||
|
|
||||||
[](https://star-history.com/#alam00000/bentopdf&Date)
|
[](https://star-history.com/#alam00000/bentopdf&Date)
|
||||||
@@ -38,6 +54,17 @@ BentoPDF offers a comprehensive suite of tools to handle all your PDF needs.
|
|||||||
| **View PDF** | A powerful, integrated PDF viewer. |
|
| **View PDF** | A powerful, integrated PDF viewer. |
|
||||||
| **Alternate & Mix pages** | Merge pages by alternating pages from each PDF. |
|
| **Alternate & Mix pages** | Merge pages by alternating pages from each PDF. |
|
||||||
| **Posterize PDF** | Split a PDF into multiple smaller pages for print. |
|
| **Posterize PDF** | Split a PDF into multiple smaller pages for print. |
|
||||||
|
| **PDF Multi Tool** | Merge, Split, Organize, Delete, Rotate, Add Blank Pages, Extract and Duplicate in an unified interface. |
|
||||||
|
| **Add Attachments** | Embed one or more files into your PDF. |
|
||||||
|
| **Extract Attachments** | Extract all embedded files from PDF(s) as a ZIP. |
|
||||||
|
| **Edit Attachments** | View or remove attachments in your PDF. |
|
||||||
|
| **Divide Pages** | Divide pages horizontally or vertically. |
|
||||||
|
| **Combine to Single Page**| Stitch all pages into one continuous scroll. |
|
||||||
|
| **Add Blank Page** | Insert an empty page anywhere in your PDF. |
|
||||||
|
| **Reverse Pages** | Flip the order of all pages in your document. |
|
||||||
|
| **View Metadata** | Inspect the hidden properties of your PDF. |
|
||||||
|
| **PDFs to ZIP** | Package multiple PDF files into a ZIP archive. |
|
||||||
|
| **Compare PDFs** | Compare two PDFs side by side. |
|
||||||
|
|
||||||
### Edit & Modify PDFs
|
### Edit & Modify PDFs
|
||||||
|
|
||||||
@@ -56,12 +83,22 @@ BentoPDF offers a comprehensive suite of tools to handle all your PDF needs.
|
|||||||
| **Remove Annotations** | Remove comments, highlights, and other annotations. |
|
| **Remove Annotations** | Remove comments, highlights, and other annotations. |
|
||||||
| **Remove Blank Pages** | Auto detect and remove blank pages in a PDF. |
|
| **Remove Blank Pages** | Auto detect and remove blank pages in a PDF. |
|
||||||
| **Edit Bookmarks** | Add, Edit, Create, Import and Export PDF Bookmarks. |
|
| **Edit Bookmarks** | Add, Edit, Create, Import and Export PDF Bookmarks. |
|
||||||
|
| **Add Stamps** | Add image stamps to your PDF using the annotation toolbar. |
|
||||||
|
| **Table of Contents** | Generate a table of contents page from PDF bookmarks. |
|
||||||
|
| **Redact Content** | Permanently remove sensitive content from your PDFs. |
|
||||||
|
|
||||||
### Convert to PDF
|
### Convert to PDF
|
||||||
|
|
||||||
| Tool Name | Description |
|
| Tool Name | Description |
|
||||||
| :------------------ | :-------------------------------------------------------------- |
|
| :------------------ | :-------------------------------------------------------------- |
|
||||||
| **Image to PDF** | Convert JPG, PNG, WebP, SVG, BMP, HEIC, and TIFF images to PDF. |
|
| **Image to PDF** | Convert JPG, PNG, WebP, SVG, BMP, HEIC, and TIFF images to PDF. |
|
||||||
|
| **JPG to PDF** | Convert JPG images to PDF. |
|
||||||
|
| **PNG to PDF** | Convert PNG images to PDF. |
|
||||||
|
| **WebP to PDF** | Convert WebP images to PDF. |
|
||||||
|
| **SVG to PDF** | Convert SVG images to PDF. |
|
||||||
|
| **BMP to PDF** | Convert BMP images to PDF. |
|
||||||
|
| **HEIC to PDF** | Convert HEIC images to PDF. |
|
||||||
|
| **TIFF to PDF** | Convert TIFF images to PDF. |
|
||||||
| **Markdown to PDF** | Convert `.md` files into professional PDF documents. |
|
| **Markdown to PDF** | Convert `.md` files into professional PDF documents. |
|
||||||
| **Text to PDF** | Convert plain text files into a PDF. |
|
| **Text to PDF** | Convert plain text files into a PDF. |
|
||||||
| **JSON to PDF** | Convert JSON to PDF. |
|
| **JSON to PDF** | Convert JSON to PDF. |
|
||||||
@@ -71,9 +108,14 @@ BentoPDF offers a comprehensive suite of tools to handle all your PDF needs.
|
|||||||
| Tool Name | Description |
|
| Tool Name | Description |
|
||||||
| :------------------- | :----------------------------------------------------------------------------- |
|
| :------------------- | :----------------------------------------------------------------------------- |
|
||||||
| **PDF to Image** | Convert PDF pages to JPG, PNG, WebP, BMP, or TIFF formats. |
|
| **PDF to Image** | Convert PDF pages to JPG, PNG, WebP, BMP, or TIFF formats. |
|
||||||
|
| **PDF to JPG** | Convert each PDF page into a JPG image. |
|
||||||
|
| **PDF to PNG** | Convert each PDF page into a PNG image. |
|
||||||
|
| **PDF to WebP** | Convert each PDF page into a WebP image. |
|
||||||
|
| **PDF to BMP** | Convert each PDF page into a BMP image. |
|
||||||
|
| **PDF to TIFF** | Convert each PDF page into a TIFF image. |
|
||||||
| **PDF to Greyscale** | Convert a color PDF into a black-and-white version. |
|
| **PDF to Greyscale** | Convert a color PDF into a black-and-white version. |
|
||||||
| **OCR PDF** | Make scanned PDFs searchable and copyable using Optical Character Recognition. |
|
| **OCR PDF** | Make scanned PDFs searchable and copyable using Optical Character Recognition. |
|
||||||
| **PDF to JSON** | Convert JSON to PDFs. |
|
| **PDF to JSON** | Convert PDF files to JSON format. |
|
||||||
|
|
||||||
### Secure & Optimize PDFs
|
### Secure & Optimize PDFs
|
||||||
|
|
||||||
@@ -90,6 +132,9 @@ BentoPDF offers a comprehensive suite of tools to handle all your PDF needs.
|
|||||||
| **Remove Metadata** | Strip all metadata from your PDF for privacy. |
|
| **Remove Metadata** | Strip all metadata from your PDF for privacy. |
|
||||||
| **Linearize PDF** | Optimize PDF for fast web view. |
|
| **Linearize PDF** | Optimize PDF for fast web view. |
|
||||||
| **Sanitize PDF** | Remove potentially unwanted or malicous files from PDF. |
|
| **Sanitize PDF** | Remove potentially unwanted or malicous files from PDF. |
|
||||||
|
| **Fix Page Size** | Standardize all pages to a uniform size. |
|
||||||
|
| **Page Dimensions** | Analyze page size, orientation, and units. |
|
||||||
|
| **Remove Restrictions**| Remove password protection and security restrictions associated with digitally signed PDF files. |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -105,7 +150,7 @@ You can run BentoPDF locally for development or personal use.
|
|||||||
|
|
||||||
### 🚀 Quick Start with Docker
|
### 🚀 Quick Start with Docker
|
||||||
|
|
||||||
[](https://zeabur.com/templates/LWO8I0?referralCode=LokiSalmonNeko)
|
[](https://zeabur.com/templates/K4AU2B)
|
||||||
|
|
||||||
You can run BentoPDF directly from Docker Hub or GitHub Container Registry without cloning the repository:
|
You can run BentoPDF directly from Docker Hub or GitHub Container Registry without cloning the repository:
|
||||||
|
|
||||||
@@ -128,6 +173,87 @@ Open your browser at: http://localhost:3000
|
|||||||
|
|
||||||
This is the fastest way to try BentoPDF without setting up a development environment.
|
This is the fastest way to try BentoPDF without setting up a development environment.
|
||||||
|
|
||||||
|
### 🏠 Self-Hosting
|
||||||
|
|
||||||
|
Since BentoPDF is fully client-side, all processing happens in the user's browser and no server-side processing is required. This means you can host BentoPDF as simple static files on any web server or hosting platform.
|
||||||
|
|
||||||
|
**Download from Releases (Recommended):**
|
||||||
|
|
||||||
|
The easiest way to self-host is to download the pre-built distribution file from our [GitHub releases](https://github.com/alam00000/bentopdf/releases). Each release includes a `dist-{version}.zip` file that contains all necessary files for self-hosting.
|
||||||
|
|
||||||
|
1. Go to [BentoPDF Releases](https://github.com/alam00000/bentopdf/releases)
|
||||||
|
2. Download the latest `dist-{version}.zip` file
|
||||||
|
3. Extract the zip file
|
||||||
|
4. Serve the extracted folder with your preferred web server
|
||||||
|
|
||||||
|
**Navigate to the extracted Folder:**
|
||||||
|
```bash
|
||||||
|
# Navigate to the extracted folder
|
||||||
|
cd dist-1.7.3 # Replace with your version
|
||||||
|
```
|
||||||
|
|
||||||
|
**Serve with Python:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# For Python 3
|
||||||
|
python -m http.server 8000
|
||||||
|
```
|
||||||
|
|
||||||
|
The website can be accessible at: ```http://[::1]:8000/```
|
||||||
|
|
||||||
|
**Serve with Node.js:**
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Install a simple server
|
||||||
|
npx serve .
|
||||||
|
|
||||||
|
# Or if you have serve installed globally
|
||||||
|
npm install -g serve
|
||||||
|
serve .
|
||||||
|
```
|
||||||
|
|
||||||
|
The website can be accessible at: ```http://localhost:3000/```
|
||||||
|
|
||||||
|
**Serve with other tools:**
|
||||||
|
|
||||||
|
You can also use other static file servers like:
|
||||||
|
- Go: `go run main.go` with a simple Go server
|
||||||
|
- PHP: `php -S localhost:8000`
|
||||||
|
- Ruby: `ruby -run -e httpd . -p 8000`
|
||||||
|
|
||||||
|
The website can be accessible at:
|
||||||
|
- Go: ```http://localhost:8080/``` (default) or as specified
|
||||||
|
- PHP: ```http://localhost:8000/```
|
||||||
|
- Ruby: ```http://localhost:8000/``` (default port can be changed)
|
||||||
|
|
||||||
|
Simply serve the extracted folder using any static file server, and BentoPDF will work completely client-side without any server-side dependencies.
|
||||||
|
|
||||||
|
**Build from Source (Advanced):**
|
||||||
|
|
||||||
|
If you prefer to build from source:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Clone the repository
|
||||||
|
git clone https://github.com/alam00000/bentopdf.git
|
||||||
|
cd bentopdf
|
||||||
|
|
||||||
|
# Install dependencies
|
||||||
|
npm install
|
||||||
|
|
||||||
|
# Build the project
|
||||||
|
npm run build
|
||||||
|
|
||||||
|
# Package the distribution for hosting (optional)
|
||||||
|
npm run package
|
||||||
|
|
||||||
|
# Serve the dist folder
|
||||||
|
npx serve dist
|
||||||
|
```
|
||||||
|
|
||||||
|
The website can be accessible at: ```http://localhost:3000/```
|
||||||
|
|
||||||
|
The `npm run package` command creates a `dist-{version}.zip` file that you can use for self-hosting.
|
||||||
|
|
||||||
### 🚀 Run with Docker Compose (Recommended)
|
### 🚀 Run with Docker Compose (Recommended)
|
||||||
|
|
||||||
For a more robust setup with auto-restart capabilities:
|
For a more robust setup with auto-restart capabilities:
|
||||||
@@ -318,7 +444,3 @@ BentoPDF wouldn't be possible without the amazing open-source tools and librarie
|
|||||||
- **[cpdf](https://www.coherentpdf.com/)** – For content preserving pdf operations.
|
- **[cpdf](https://www.coherentpdf.com/)** – For content preserving pdf operations.
|
||||||
|
|
||||||
Your work inspires and empowers developers everywhere. Thank you for making open-source amazing!
|
Your work inspires and empowers developers everywhere. Thank you for making open-source amazing!
|
||||||
|
|
||||||
## 📜 License
|
|
||||||
|
|
||||||
This project is licensed under the **GNU AGPLv3**. See the [LICENSE](https://github.com/alam00000/bentopdf/blob/main/LICENSE) file for details.
|
|
||||||
+63
-133
@@ -1,5 +1,6 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
@@ -11,15 +12,8 @@
|
|||||||
<nav class="bg-gray-800 border-b border-gray-700 sticky top-0 z-30">
|
<nav class="bg-gray-800 border-b border-gray-700 sticky top-0 z-30">
|
||||||
<div class="container mx-auto px-4">
|
<div class="container mx-auto px-4">
|
||||||
<div class="flex justify-between items-center h-16">
|
<div class="flex justify-between items-center h-16">
|
||||||
<div
|
<div class="flex-shrink-0 flex items-center cursor-pointer" id="home-logo">
|
||||||
class="flex-shrink-0 flex items-center cursor-pointer"
|
<img src="images/favicon.svg" alt="Bento PDF Logo" class="h-8 w-8" />
|
||||||
id="home-logo"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
src="images/favicon.svg"
|
|
||||||
alt="Bento PDF Logo"
|
|
||||||
class="h-8 w-8"
|
|
||||||
/>
|
|
||||||
<span class="text-white font-bold text-xl ml-2">
|
<span class="text-white font-bold text-xl ml-2">
|
||||||
<a href="index.html">BentoPDF</a>
|
<a href="index.html">BentoPDF</a>
|
||||||
</span>
|
</span>
|
||||||
@@ -30,52 +24,25 @@
|
|||||||
<a href="index.html" class="nav-link">Home</a>
|
<a href="index.html" class="nav-link">Home</a>
|
||||||
<a href="./about.html" class="nav-link">About</a>
|
<a href="./about.html" class="nav-link">About</a>
|
||||||
<a href="./contact.html" class="nav-link">Contact</a>
|
<a href="./contact.html" class="nav-link">Contact</a>
|
||||||
|
<a href="./licensing.html" class="nav-link">Licensing</a>
|
||||||
<a href="index.html#tools-header" class="nav-link">All Tools</a>
|
<a href="index.html#tools-header" class="nav-link">All Tools</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Mobile Hamburger Button -->
|
<!-- Mobile Hamburger Button -->
|
||||||
<div class="md:hidden flex items-center">
|
<div class="md:hidden flex items-center">
|
||||||
<button
|
<button id="mobile-menu-button" type="button"
|
||||||
id="mobile-menu-button"
|
|
||||||
type="button"
|
|
||||||
class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500 transition-colors"
|
class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500 transition-colors"
|
||||||
aria-controls="mobile-menu"
|
aria-controls="mobile-menu" aria-expanded="false">
|
||||||
aria-expanded="false"
|
|
||||||
>
|
|
||||||
<span class="sr-only">Open main menu</span>
|
<span class="sr-only">Open main menu</span>
|
||||||
<!-- Hamburger Icon -->
|
<!-- Hamburger Icon -->
|
||||||
<svg
|
<svg id="menu-icon" class="block h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
|
||||||
id="menu-icon"
|
stroke="currentColor" aria-hidden="true">
|
||||||
class="block h-6 w-6"
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" />
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
fill="none"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
stroke="currentColor"
|
|
||||||
aria-hidden="true"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
stroke-width="2"
|
|
||||||
d="M4 6h16M4 12h16M4 18h16"
|
|
||||||
/>
|
|
||||||
</svg>
|
</svg>
|
||||||
<!-- Close Icon -->
|
<!-- Close Icon -->
|
||||||
<svg
|
<svg id="close-icon" class="hidden h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none"
|
||||||
id="close-icon"
|
viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
|
||||||
class="hidden h-6 w-6"
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
fill="none"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
stroke="currentColor"
|
|
||||||
aria-hidden="true"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
stroke-width="2"
|
|
||||||
d="M6 18L18 6M6 6l12 12"
|
|
||||||
/>
|
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -83,17 +50,13 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Mobile Menu Dropdown -->
|
<!-- Mobile Menu Dropdown -->
|
||||||
<div
|
<div id="mobile-menu" class="hidden md:hidden bg-gray-800 border-t border-gray-700">
|
||||||
id="mobile-menu"
|
|
||||||
class="hidden md:hidden bg-gray-800 border-t border-gray-700"
|
|
||||||
>
|
|
||||||
<div class="px-2 pt-2 pb-3 space-y-1 text-center">
|
<div class="px-2 pt-2 pb-3 space-y-1 text-center">
|
||||||
<a href="index.html" class="mobile-nav-link">Home</a>
|
<a href="index.html" class="mobile-nav-link">Home</a>
|
||||||
<a href="./about.html" class="mobile-nav-link">About</a>
|
<a href="./about.html" class="mobile-nav-link">About</a>
|
||||||
<a href="./contact.html" class="mobile-nav-link">Contact</a>
|
<a href="./contact.html" class="mobile-nav-link">Contact</a>
|
||||||
<a href="index.html#tools-header" class="mobile-nav-link"
|
<a href="./licensing.html" class="mobile-nav-link">Licensing</a>
|
||||||
>All Tools</a
|
<a href="index.html#tools-header" class="mobile-nav-link">All Tools</a>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
@@ -111,10 +74,7 @@
|
|||||||
|
|
||||||
<section id="mission-section" class="py-16 max-w-4xl mx-auto">
|
<section id="mission-section" class="py-16 max-w-4xl mx-auto">
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<i
|
<i data-lucide="rocket" class="w-16 h-16 text-indigo-400 mx-auto mb-6"></i>
|
||||||
data-lucide="rocket"
|
|
||||||
class="w-16 h-16 text-indigo-400 mx-auto mb-6"
|
|
||||||
></i>
|
|
||||||
<h2 class="text-3xl md:text-4xl font-bold text-white mb-4">
|
<h2 class="text-3xl md:text-4xl font-bold text-white mb-4">
|
||||||
Our Mission
|
Our Mission
|
||||||
</h2>
|
</h2>
|
||||||
@@ -127,14 +87,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
<div
|
<div class="bg-gray-800 rounded-xl p-8 md:p-12 my-16 border border-gray-700">
|
||||||
class="bg-gray-800 rounded-xl p-8 md:p-12 my-16 border border-gray-700"
|
|
||||||
>
|
|
||||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-12 items-center">
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-12 items-center">
|
||||||
<div class="text-center md:text-left">
|
<div class="text-center md:text-left">
|
||||||
<span class="text-indigo-400 font-bold uppercase"
|
<span class="text-indigo-400 font-bold uppercase">Our Core Philosophy</span>
|
||||||
>Our Core Philosophy</span
|
|
||||||
>
|
|
||||||
<h2 class="text-3xl md:text-4xl font-bold text-white mt-2 mb-4">
|
<h2 class="text-3xl md:text-4xl font-bold text-white mt-2 mb-4">
|
||||||
Privacy First. Always.
|
Privacy First. Always.
|
||||||
</h2>
|
</h2>
|
||||||
@@ -149,16 +105,9 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="flex justify-center">
|
<div class="flex justify-center">
|
||||||
<div class="relative w-48 h-48">
|
<div class="relative w-48 h-48">
|
||||||
<div
|
<div class="absolute inset-0 bg-indigo-500 rounded-full opacity-20 animate-pulse"></div>
|
||||||
class="absolute inset-0 bg-indigo-500 rounded-full opacity-20 animate-pulse"
|
<div class="absolute inset-4 bg-indigo-500 rounded-full opacity-30 animate-pulse delay-500"></div>
|
||||||
></div>
|
<i data-lucide="shield-check" class="w-48 h-48 text-indigo-400"></i>
|
||||||
<div
|
|
||||||
class="absolute inset-4 bg-indigo-500 rounded-full opacity-30 animate-pulse delay-500"
|
|
||||||
></div>
|
|
||||||
<i
|
|
||||||
data-lucide="shield-check"
|
|
||||||
class="w-48 h-48 text-indigo-400"
|
|
||||||
></i>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -170,10 +119,7 @@
|
|||||||
</h2>
|
</h2>
|
||||||
<div class="grid grid-cols-1 md:grid-cols-2 gap-8 max-w-5xl mx-auto">
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-8 max-w-5xl mx-auto">
|
||||||
<div class="bg-gray-800 p-6 rounded-lg flex items-start gap-4">
|
<div class="bg-gray-800 p-6 rounded-lg flex items-start gap-4">
|
||||||
<i
|
<i data-lucide="zap" class="w-10 h-10 text-indigo-400 flex-shrink-0 mt-1"></i>
|
||||||
data-lucide="zap"
|
|
||||||
class="w-10 h-10 text-indigo-400 flex-shrink-0 mt-1"
|
|
||||||
></i>
|
|
||||||
<div>
|
<div>
|
||||||
<h3 class="text-xl font-bold text-white">Built for Speed</h3>
|
<h3 class="text-xl font-bold text-white">Built for Speed</h3>
|
||||||
<p class="text-gray-400 mt-2">
|
<p class="text-gray-400 mt-2">
|
||||||
@@ -184,10 +130,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="bg-gray-800 p-6 rounded-lg flex items-start gap-4">
|
<div class="bg-gray-800 p-6 rounded-lg flex items-start gap-4">
|
||||||
<i
|
<i data-lucide="badge-dollar-sign" class="w-10 h-10 text-indigo-400 flex-shrink-0 mt-1"></i>
|
||||||
data-lucide="badge-dollar-sign"
|
|
||||||
class="w-10 h-10 text-indigo-400 flex-shrink-0 mt-1"
|
|
||||||
></i>
|
|
||||||
<div>
|
<div>
|
||||||
<h3 class="text-xl font-bold text-white">Completely Free</h3>
|
<h3 class="text-xl font-bold text-white">Completely Free</h3>
|
||||||
<p class="text-gray-400 mt-2">
|
<p class="text-gray-400 mt-2">
|
||||||
@@ -198,10 +141,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="bg-gray-800 p-6 rounded-lg flex items-start gap-4">
|
<div class="bg-gray-800 p-6 rounded-lg flex items-start gap-4">
|
||||||
<i
|
<i data-lucide="user-plus" class="w-10 h-10 text-indigo-400 flex-shrink-0 mt-1"></i>
|
||||||
data-lucide="user-plus"
|
|
||||||
class="w-10 h-10 text-indigo-400 flex-shrink-0 mt-1"
|
|
||||||
></i>
|
|
||||||
<div>
|
<div>
|
||||||
<h3 class="text-xl font-bold text-white">No Account Required</h3>
|
<h3 class="text-xl font-bold text-white">No Account Required</h3>
|
||||||
<p class="text-gray-400 mt-2">
|
<p class="text-gray-400 mt-2">
|
||||||
@@ -212,10 +152,7 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="bg-gray-800 p-6 rounded-lg flex items-start gap-4">
|
<div class="bg-gray-800 p-6 rounded-lg flex items-start gap-4">
|
||||||
<i
|
<i data-lucide="code-2" class="w-10 h-10 text-indigo-400 flex-shrink-0 mt-1"></i>
|
||||||
data-lucide="code-2"
|
|
||||||
class="w-10 h-10 text-indigo-400 flex-shrink-0 mt-1"
|
|
||||||
></i>
|
|
||||||
<div>
|
<div>
|
||||||
<h3 class="text-xl font-bold text-white">Open Source Spirit</h3>
|
<h3 class="text-xl font-bold text-white">Open Source Spirit</h3>
|
||||||
<p class="text-gray-400 mt-2">
|
<p class="text-gray-400 mt-2">
|
||||||
@@ -240,10 +177,8 @@
|
|||||||
needs. Experience the difference that privacy and performance can
|
needs. Experience the difference that privacy and performance can
|
||||||
make.
|
make.
|
||||||
</p>
|
</p>
|
||||||
<a
|
<a href="index.html#tools-header"
|
||||||
href="index.html#tools-header"
|
class="inline-block px-8 py-3 rounded-full bg-gradient-to-b from-indigo-500 to-indigo-600 text-white font-semibold focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-900 focus:ring-indigo-400 hover:shadow-xl hover:shadow-indigo-500/30 transition-all duration-200 transform hover:-translate-y-1">
|
||||||
class="inline-block px-8 py-3 rounded-full bg-gradient-to-b from-indigo-500 to-indigo-600 text-white font-semibold focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-900 focus:ring-indigo-400 hover:shadow-xl hover:shadow-indigo-500/30 transition-all duration-200 transform hover:-translate-y-1"
|
|
||||||
>
|
|
||||||
Explore All Tools
|
Explore All Tools
|
||||||
</a>
|
</a>
|
||||||
</section>
|
</section>
|
||||||
@@ -251,38 +186,31 @@
|
|||||||
|
|
||||||
<footer class="mt-16 border-t-2 border-gray-700 py-8">
|
<footer class="mt-16 border-t-2 border-gray-700 py-8">
|
||||||
<div class="container mx-auto px-4">
|
<div class="container mx-auto px-4">
|
||||||
<div
|
<div class="grid grid-cols-1 md:grid-cols-4 gap-8 text-center md:text-left">
|
||||||
class="grid grid-cols-1 md:grid-cols-4 gap-8 text-center md:text-left"
|
|
||||||
>
|
|
||||||
<div class="mb-8 md:mb-0">
|
<div class="mb-8 md:mb-0">
|
||||||
<div class="flex items-center justify-center md:justify-start mb-4">
|
<div class="flex items-center justify-center md:justify-start mb-4">
|
||||||
<img
|
<img src="images/favicon.svg" alt="Bento PDF Logo" class="h-10 w-10 mr-3" />
|
||||||
src="images/favicon.svg"
|
|
||||||
alt="Bentopdf Logo"
|
|
||||||
class="h-10 w-10 mr-3"
|
|
||||||
/>
|
|
||||||
<span class="text-xl font-bold text-white">BentoPDF</span>
|
<span class="text-xl font-bold text-white">BentoPDF</span>
|
||||||
</div>
|
</div>
|
||||||
<p class="text-gray-400 text-sm">
|
<p class="text-gray-400 text-sm">
|
||||||
© 2025 BentoPDF. All rights reserved.
|
© 2025 BentoPDF. All rights reserved.
|
||||||
</p>
|
</p>
|
||||||
|
<p class="text-gray-500 text-xs mt-2">
|
||||||
|
Version <span id="app-version"></span>
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<h3 class="font-bold text-white mb-4">Company</h3>
|
<h3 class="font-bold text-white mb-4">Company</h3>
|
||||||
<ul class="space-y-2 text-gray-400">
|
<ul class="space-y-2 text-gray-400">
|
||||||
<li>
|
<li>
|
||||||
<a href="./about.html" class="hover:text-indigo-400"
|
<a href="./about.html" class="hover:text-indigo-400">About Us</a>
|
||||||
>About Us</a
|
|
||||||
>
|
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="./faq.html" class="hover:text-indigo-400">FAQ</a>
|
<a href="./faq.html" class="hover:text-indigo-400">FAQ</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="./contact.html" class="hover:text-indigo-400"
|
<a href="./contact.html" class="hover:text-indigo-400">Contact Us</a>
|
||||||
>Contact Us</a
|
|
||||||
>
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@@ -291,14 +219,13 @@
|
|||||||
<h3 class="font-bold text-white mb-4">Legal</h3>
|
<h3 class="font-bold text-white mb-4">Legal</h3>
|
||||||
<ul class="space-y-2 text-gray-400">
|
<ul class="space-y-2 text-gray-400">
|
||||||
<li>
|
<li>
|
||||||
<a href="./terms.html" class="hover:text-indigo-400"
|
<a href="./licensing.html" class="hover:text-indigo-400">Licensing</a>
|
||||||
>Terms and Conditions</a
|
|
||||||
>
|
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="./privacy.html" class="hover:text-indigo-400"
|
<a href="./terms.html" class="hover:text-indigo-400">Terms and Conditions</a>
|
||||||
>Privacy Policy</a
|
</li>
|
||||||
>
|
<li>
|
||||||
|
<a href="./privacy.html" class="hover:text-indigo-400">Privacy Policy</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@@ -306,31 +233,33 @@
|
|||||||
<div>
|
<div>
|
||||||
<h3 class="font-bold text-white mb-4">Follow Us</h3>
|
<h3 class="font-bold text-white mb-4">Follow Us</h3>
|
||||||
<div class="flex justify-center md:justify-start space-x-4">
|
<div class="flex justify-center md:justify-start space-x-4">
|
||||||
<a
|
<a href="https://github.com/alam00000/bentopdf" target="_blank" rel="noopener noreferrer"
|
||||||
href="https://www.instagram.com/thebentopdf/"
|
class="text-gray-400 hover:text-indigo-400" title="GitHub">
|
||||||
class="text-gray-400 hover:text-indigo-400"
|
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
>
|
<path fill-rule="evenodd"
|
||||||
|
d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z"
|
||||||
|
clip-rule="evenodd" />
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
<a href="https://discord.gg/q42xWQmJ" target="_blank" rel="noopener noreferrer"
|
||||||
|
class="text-gray-400 hover:text-indigo-400" title="Discord">
|
||||||
|
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
|
<path
|
||||||
|
d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515a.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0a12.64 12.64 0 0 0-.617-1.25a.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057a19.9 19.9 0 0 0 5.993 3.03a.078.078 0 0 0 .084-.028a14.09 14.09 0 0 0 1.226-1.994a.076.076 0 0 0-.041-.106a13.107 13.107 0 0 1-1.872-.892a.077.077 0 0 1-.008-.128a10.2 10.2 0 0 0 .372-.292a.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127a12.299 12.299 0 0 1-1.873.892a.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028a19.839 19.839 0 0 0 6.002-3.03a.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419c0-1.333.956-2.419 2.157-2.419c1.21 0 2.176 1.096 2.157 2.42c0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419c0-1.333.955-2.419 2.157-2.419c1.21 0 2.176 1.096 2.157 2.42c0 1.333-.946 2.418-2.157 2.418z" />
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
<a href="https://www.instagram.com/thebentopdf/" class="text-gray-400 hover:text-indigo-400"
|
||||||
|
title="Instagram">
|
||||||
<i data-lucide="instagram"></i>
|
<i data-lucide="instagram"></i>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a href="https://www.linkedin.com/company/bentopdf/" class="text-gray-400 hover:text-indigo-400"
|
||||||
href="https://www.linkedin.com/company/bentopdf/"
|
title="LinkedIn">
|
||||||
class="text-gray-400 hover:text-indigo-400"
|
|
||||||
>
|
|
||||||
<i data-lucide="linkedin"></i>
|
<i data-lucide="linkedin"></i>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a href="https://x.com/BentoPDF" class="text-gray-400 hover:text-indigo-400" title="X (Twitter)">
|
||||||
href="https://x.com/BentoPDF"
|
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
class="text-gray-400 hover:text-indigo-400"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
class="w-6 h-6"
|
|
||||||
fill="currentColor"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
aria-hidden="true"
|
|
||||||
>
|
|
||||||
<path
|
<path
|
||||||
d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"
|
d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" />
|
||||||
/>
|
|
||||||
</svg>
|
</svg>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -340,7 +269,8 @@
|
|||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script type="module" src="src/js/utils/lucide-init.ts"></script>
|
<script type="module" src="src/js/utils/lucide-init.ts"></script>
|
||||||
|
<script type="module" src="src/version.ts"></script>
|
||||||
<script type="module" src="src/js/mobileMenu.ts"></script>
|
<script type="module" src="src/js/mobileMenu.ts"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
+61
-101
@@ -1,5 +1,6 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
@@ -11,15 +12,8 @@
|
|||||||
<nav class="bg-gray-800 border-b border-gray-700 sticky top-0 z-30">
|
<nav class="bg-gray-800 border-b border-gray-700 sticky top-0 z-30">
|
||||||
<div class="container mx-auto px-4">
|
<div class="container mx-auto px-4">
|
||||||
<div class="flex justify-between items-center h-16">
|
<div class="flex justify-between items-center h-16">
|
||||||
<div
|
<div class="flex-shrink-0 flex items-center cursor-pointer" id="home-logo">
|
||||||
class="flex-shrink-0 flex items-center cursor-pointer"
|
<img src="images/favicon.svg" alt="Bento PDF Logo" class="h-8 w-8" />
|
||||||
id="home-logo"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
src="images/favicon.svg"
|
|
||||||
alt="Bento PDF Logo"
|
|
||||||
class="h-8 w-8"
|
|
||||||
/>
|
|
||||||
<span class="text-white font-bold text-xl ml-2">
|
<span class="text-white font-bold text-xl ml-2">
|
||||||
<a href="index.html">BentoPDF</a>
|
<a href="index.html">BentoPDF</a>
|
||||||
</span>
|
</span>
|
||||||
@@ -30,52 +24,25 @@
|
|||||||
<a href="index.html" class="nav-link">Home</a>
|
<a href="index.html" class="nav-link">Home</a>
|
||||||
<a href="./about.html" class="nav-link">About</a>
|
<a href="./about.html" class="nav-link">About</a>
|
||||||
<a href="./contact.html" class="nav-link">Contact</a>
|
<a href="./contact.html" class="nav-link">Contact</a>
|
||||||
|
<a href="./licensing.html" class="nav-link">Licensing</a>
|
||||||
<a href="index.html#tools-header" class="nav-link">All Tools</a>
|
<a href="index.html#tools-header" class="nav-link">All Tools</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Mobile Hamburger Button -->
|
<!-- Mobile Hamburger Button -->
|
||||||
<div class="md:hidden flex items-center">
|
<div class="md:hidden flex items-center">
|
||||||
<button
|
<button id="mobile-menu-button" type="button"
|
||||||
id="mobile-menu-button"
|
|
||||||
type="button"
|
|
||||||
class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500 transition-colors"
|
class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500 transition-colors"
|
||||||
aria-controls="mobile-menu"
|
aria-controls="mobile-menu" aria-expanded="false">
|
||||||
aria-expanded="false"
|
|
||||||
>
|
|
||||||
<span class="sr-only">Open main menu</span>
|
<span class="sr-only">Open main menu</span>
|
||||||
<!-- Hamburger Icon -->
|
<!-- Hamburger Icon -->
|
||||||
<svg
|
<svg id="menu-icon" class="block h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
|
||||||
id="menu-icon"
|
stroke="currentColor" aria-hidden="true">
|
||||||
class="block h-6 w-6"
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" />
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
fill="none"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
stroke="currentColor"
|
|
||||||
aria-hidden="true"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
stroke-width="2"
|
|
||||||
d="M4 6h16M4 12h16M4 18h16"
|
|
||||||
/>
|
|
||||||
</svg>
|
</svg>
|
||||||
<!-- Close Icon -->
|
<!-- Close Icon -->
|
||||||
<svg
|
<svg id="close-icon" class="hidden h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none"
|
||||||
id="close-icon"
|
viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
|
||||||
class="hidden h-6 w-6"
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
fill="none"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
stroke="currentColor"
|
|
||||||
aria-hidden="true"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
stroke-width="2"
|
|
||||||
d="M6 18L18 6M6 6l12 12"
|
|
||||||
/>
|
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -83,17 +50,13 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Mobile Menu Dropdown -->
|
<!-- Mobile Menu Dropdown -->
|
||||||
<div
|
<div id="mobile-menu" class="hidden md:hidden bg-gray-800 border-t border-gray-700">
|
||||||
id="mobile-menu"
|
|
||||||
class="hidden md:hidden bg-gray-800 border-t border-gray-700"
|
|
||||||
>
|
|
||||||
<div class="px-2 pt-2 pb-3 space-y-1 text-center">
|
<div class="px-2 pt-2 pb-3 space-y-1 text-center">
|
||||||
<a href="index.html" class="mobile-nav-link">Home</a>
|
<a href="index.html" class="mobile-nav-link">Home</a>
|
||||||
<a href="./about.html" class="mobile-nav-link">About</a>
|
<a href="./about.html" class="mobile-nav-link">About</a>
|
||||||
<a href="./contact.html" class="mobile-nav-link">Contact</a>
|
<a href="./contact.html" class="mobile-nav-link">Contact</a>
|
||||||
<a href="index.html#tools-header" class="mobile-nav-link"
|
<a href="./licensing.html" class="mobile-nav-link">Licensing</a>
|
||||||
>All Tools</a
|
<a href="index.html#tools-header" class="mobile-nav-link">All Tools</a>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
@@ -112,94 +75,90 @@
|
|||||||
<div class="max-w-2xl mx-auto text-center py-8">
|
<div class="max-w-2xl mx-auto text-center py-8">
|
||||||
<p class="text-lg text-gray-400">
|
<p class="text-lg text-gray-400">
|
||||||
You can reach us directly by email at:
|
You can reach us directly by email at:
|
||||||
<a
|
<a href="mailto:contact@bentopdf.com"
|
||||||
href="mailto:contact@bentopdf.com"
|
class="text-indigo-400 underline hover:text-indigo-300">contact@bentopdf.com</a>
|
||||||
class="text-indigo-400 underline hover:text-indigo-300"
|
|
||||||
>contact@bentopdf.com</a
|
|
||||||
>
|
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<footer class="mt-16 border-t-2 border-gray-700 py-8">
|
<footer class="mt-16 border-t-2 border-gray-700 py-8">
|
||||||
<div class="container mx-auto px-4">
|
<div class="container mx-auto px-4">
|
||||||
<div
|
<div class="grid grid-cols-1 md:grid-cols-4 gap-8 text-center md:text-left">
|
||||||
class="grid grid-cols-1 md:grid-cols-4 gap-8 text-center md:text-left"
|
|
||||||
>
|
|
||||||
<div class="mb-8 md:mb-0">
|
<div class="mb-8 md:mb-0">
|
||||||
<div class="flex items-center justify-center md:justify-start mb-4">
|
<div class="flex items-center justify-center md:justify-start mb-4">
|
||||||
<img
|
<img src="images/favicon.svg" alt="Bento PDF Logo" class="h-10 w-10 mr-3" />
|
||||||
src="images/favicon.svg"
|
<span class="text-xl font-bold text-white">BentoPDF</span>
|
||||||
alt="Bento PDF Logo"
|
|
||||||
class="h-10 w-10 mr-3"
|
|
||||||
/>
|
|
||||||
<span class="text-xl font-bold text-white">Bentopdf</span>
|
|
||||||
</div>
|
</div>
|
||||||
<p class="text-gray-400 text-sm">
|
<p class="text-gray-400 text-sm">
|
||||||
© 2025 Bentopdf. All rights reserved.
|
© 2025 BentoPDF. All rights reserved.
|
||||||
|
</p>
|
||||||
|
<p class="text-gray-500 text-xs mt-2">
|
||||||
|
Version <span id="app-version"></span>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<h3 class="font-bold text-white mb-4">Company</h3>
|
<h3 class="font-bold text-white mb-4">Company</h3>
|
||||||
<ul class="space-y-2 text-gray-400">
|
<ul class="space-y-2 text-gray-400">
|
||||||
<li>
|
<li>
|
||||||
<a href="about.html" class="hover:text-indigo-400">About Us</a>
|
<a href="./about.html" class="hover:text-indigo-400">About Us</a>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="faq.html" class="hover:text-indigo-400">FAQ</a></li>
|
|
||||||
<li>
|
<li>
|
||||||
<a href="contact.html" class="hover:text-indigo-400"
|
<a href="./faq.html" class="hover:text-indigo-400">FAQ</a>
|
||||||
>Contact Us</a
|
</li>
|
||||||
>
|
<li>
|
||||||
|
<a href="./contact.html" class="hover:text-indigo-400">Contact Us</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<h3 class="font-bold text-white mb-4">Legal</h3>
|
<h3 class="font-bold text-white mb-4">Legal</h3>
|
||||||
<ul class="space-y-2 text-gray-400">
|
<ul class="space-y-2 text-gray-400">
|
||||||
<li>
|
<li>
|
||||||
<a href="./terms.html" class="hover:text-indigo-400"
|
<a href="./licensing.html" class="hover:text-indigo-400">Licensing</a>
|
||||||
>Terms and Conditions</a
|
|
||||||
>
|
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="./privacy.html" class="hover:text-indigo-400"
|
<a href="./terms.html" class="hover:text-indigo-400">Terms and Conditions</a>
|
||||||
>Privacy Policy</a
|
</li>
|
||||||
>
|
<li>
|
||||||
|
<a href="./privacy.html" class="hover:text-indigo-400">Privacy Policy</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div>
|
|
||||||
<div>
|
<div>
|
||||||
<h3 class="font-bold text-white mb-4">Follow Us</h3>
|
<h3 class="font-bold text-white mb-4">Follow Us</h3>
|
||||||
<div class="flex justify-center md:justify-start space-x-4">
|
<div class="flex justify-center md:justify-start space-x-4">
|
||||||
<a
|
<a href="https://github.com/alam00000/bentopdf" target="_blank" rel="noopener noreferrer"
|
||||||
href="https://www.instagram.com/thebentopdf/"
|
class="text-gray-400 hover:text-indigo-400" title="GitHub">
|
||||||
class="text-gray-400 hover:text-indigo-400"
|
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
>
|
<path fill-rule="evenodd"
|
||||||
|
d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z"
|
||||||
|
clip-rule="evenodd" />
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
<a href="https://discord.gg/q42xWQmJ" target="_blank" rel="noopener noreferrer"
|
||||||
|
class="text-gray-400 hover:text-indigo-400" title="Discord">
|
||||||
|
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
|
<path
|
||||||
|
d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515a.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0a12.64 12.64 0 0 0-.617-1.25a.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057a19.9 19.9 0 0 0 5.993 3.03a.078.078 0 0 0 .084-.028a14.09 14.09 0 0 0 1.226-1.994a.076.076 0 0 0-.041-.106a13.107 13.107 0 0 1-1.872-.892a.077.077 0 0 1-.008-.128a10.2 10.2 0 0 0 .372-.292a.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127a12.299 12.299 0 0 1-1.873.892a.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028a19.839 19.839 0 0 0 6.002-3.03a.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419c0-1.333.956-2.419 2.157-2.419c1.21 0 2.176 1.096 2.157 2.42c0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419c0-1.333.955-2.419 2.157-2.419c1.21 0 2.176 1.096 2.157 2.42c0 1.333-.946 2.418-2.157 2.418z" />
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
<a href="https://www.instagram.com/thebentopdf/" class="text-gray-400 hover:text-indigo-400"
|
||||||
|
title="Instagram">
|
||||||
<i data-lucide="instagram"></i>
|
<i data-lucide="instagram"></i>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a href="https://www.linkedin.com/company/bentopdf/" class="text-gray-400 hover:text-indigo-400"
|
||||||
href="https://www.linkedin.com/company/bentopdf/"
|
title="LinkedIn">
|
||||||
class="text-gray-400 hover:text-indigo-400"
|
|
||||||
>
|
|
||||||
<i data-lucide="linkedin"></i>
|
<i data-lucide="linkedin"></i>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a href="https://x.com/BentoPDF" class="text-gray-400 hover:text-indigo-400" title="X (Twitter)">
|
||||||
href="https://x.com/BentoPDF"
|
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
class="text-gray-400 hover:text-indigo-400"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
class="w-6 h-6"
|
|
||||||
fill="currentColor"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
aria-hidden="true"
|
|
||||||
>
|
|
||||||
<path
|
<path
|
||||||
d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"
|
d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" />
|
||||||
/>
|
|
||||||
</svg>
|
</svg>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -207,7 +166,8 @@
|
|||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script type="module" src="src/js/utils/lucide-init.ts"></script>
|
<script type="module" src="src/js/utils/lucide-init.ts"></script>
|
||||||
|
<script type="module" src="src/version.ts"></script>
|
||||||
<script type="module" src="src/js/mobileMenu.ts"></script>
|
<script type="module" src="src/js/mobileMenu.ts"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
@@ -1,5 +1,6 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
@@ -11,15 +12,8 @@
|
|||||||
<nav class="bg-gray-800 border-b border-gray-700 sticky top-0 z-30">
|
<nav class="bg-gray-800 border-b border-gray-700 sticky top-0 z-30">
|
||||||
<div class="container mx-auto px-4">
|
<div class="container mx-auto px-4">
|
||||||
<div class="flex justify-between items-center h-16">
|
<div class="flex justify-between items-center h-16">
|
||||||
<div
|
<div class="flex-shrink-0 flex items-center cursor-pointer" id="home-logo">
|
||||||
class="flex-shrink-0 flex items-center cursor-pointer"
|
<img src="images/favicon.svg" alt="Bento PDF Logo" class="h-8 w-8" />
|
||||||
id="home-logo"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
src="images/favicon.svg"
|
|
||||||
alt="Bento PDF Logo"
|
|
||||||
class="h-8 w-8"
|
|
||||||
/>
|
|
||||||
<span class="text-white font-bold text-xl ml-2">
|
<span class="text-white font-bold text-xl ml-2">
|
||||||
<a href="index.html">BentoPDF</a>
|
<a href="index.html">BentoPDF</a>
|
||||||
</span>
|
</span>
|
||||||
@@ -30,52 +24,25 @@
|
|||||||
<a href="index.html" class="nav-link">Home</a>
|
<a href="index.html" class="nav-link">Home</a>
|
||||||
<a href="./about.html" class="nav-link">About</a>
|
<a href="./about.html" class="nav-link">About</a>
|
||||||
<a href="./contact.html" class="nav-link">Contact</a>
|
<a href="./contact.html" class="nav-link">Contact</a>
|
||||||
|
<a href="./licensing.html" class="nav-link">Licensing</a>
|
||||||
<a href="index.html#tools-header" class="nav-link">All Tools</a>
|
<a href="index.html#tools-header" class="nav-link">All Tools</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Mobile Hamburger Button -->
|
<!-- Mobile Hamburger Button -->
|
||||||
<div class="md:hidden flex items-center">
|
<div class="md:hidden flex items-center">
|
||||||
<button
|
<button id="mobile-menu-button" type="button"
|
||||||
id="mobile-menu-button"
|
|
||||||
type="button"
|
|
||||||
class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500 transition-colors"
|
class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500 transition-colors"
|
||||||
aria-controls="mobile-menu"
|
aria-controls="mobile-menu" aria-expanded="false">
|
||||||
aria-expanded="false"
|
|
||||||
>
|
|
||||||
<span class="sr-only">Open main menu</span>
|
<span class="sr-only">Open main menu</span>
|
||||||
<!-- Hamburger Icon -->
|
<!-- Hamburger Icon -->
|
||||||
<svg
|
<svg id="menu-icon" class="block h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
|
||||||
id="menu-icon"
|
stroke="currentColor" aria-hidden="true">
|
||||||
class="block h-6 w-6"
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" />
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
fill="none"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
stroke="currentColor"
|
|
||||||
aria-hidden="true"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
stroke-width="2"
|
|
||||||
d="M4 6h16M4 12h16M4 18h16"
|
|
||||||
/>
|
|
||||||
</svg>
|
</svg>
|
||||||
<!-- Close Icon -->
|
<!-- Close Icon -->
|
||||||
<svg
|
<svg id="close-icon" class="hidden h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none"
|
||||||
id="close-icon"
|
viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
|
||||||
class="hidden h-6 w-6"
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
fill="none"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
stroke="currentColor"
|
|
||||||
aria-hidden="true"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
stroke-width="2"
|
|
||||||
d="M6 18L18 6M6 6l12 12"
|
|
||||||
/>
|
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -83,17 +50,13 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Mobile Menu Dropdown -->
|
<!-- Mobile Menu Dropdown -->
|
||||||
<div
|
<div id="mobile-menu" class="hidden md:hidden bg-gray-800 border-t border-gray-700">
|
||||||
id="mobile-menu"
|
|
||||||
class="hidden md:hidden bg-gray-800 border-t border-gray-700"
|
|
||||||
>
|
|
||||||
<div class="px-2 pt-2 pb-3 space-y-1 text-center">
|
<div class="px-2 pt-2 pb-3 space-y-1 text-center">
|
||||||
<a href="index.html" class="mobile-nav-link">Home</a>
|
<a href="index.html" class="mobile-nav-link">Home</a>
|
||||||
<a href="./about.html" class="mobile-nav-link">About</a>
|
<a href="./about.html" class="mobile-nav-link">About</a>
|
||||||
<a href="./contact.html" class="mobile-nav-link">Contact</a>
|
<a href="./contact.html" class="mobile-nav-link">Contact</a>
|
||||||
<a href="index.html#tools-header" class="mobile-nav-link"
|
<a href="./licensing.html" class="mobile-nav-link">Licensing</a>
|
||||||
>All Tools</a
|
<a href="index.html#tools-header" class="mobile-nav-link">All Tools</a>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
@@ -110,17 +73,12 @@
|
|||||||
</section>
|
</section>
|
||||||
|
|
||||||
<div class="max-w-4xl mx-auto space-y-4">
|
<div class="max-w-4xl mx-auto space-y-4">
|
||||||
<details
|
<details class="bg-gray-800 border border-gray-700 rounded-lg p-5 group">
|
||||||
class="bg-gray-800 border border-gray-700 rounded-lg p-5 group"
|
|
||||||
>
|
|
||||||
<summary class="flex items-center justify-between cursor-pointer">
|
<summary class="flex items-center justify-between cursor-pointer">
|
||||||
<h3 class="font-semibold text-white text-lg">
|
<h3 class="font-semibold text-white text-lg">
|
||||||
Are my files safe and private?
|
Are my files safe and private?
|
||||||
</h3>
|
</h3>
|
||||||
<i
|
<i data-lucide="plus" class="w-6 h-6 text-indigo-400 icon flex-shrink-0"></i>
|
||||||
data-lucide="plus"
|
|
||||||
class="w-6 h-6 text-indigo-400 icon flex-shrink-0"
|
|
||||||
></i>
|
|
||||||
</summary>
|
</summary>
|
||||||
<div class="mt-4 text-gray-400">
|
<div class="mt-4 text-gray-400">
|
||||||
<p>
|
<p>
|
||||||
@@ -132,17 +90,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details
|
<details class="bg-gray-800 border border-gray-700 rounded-lg p-5 group">
|
||||||
class="bg-gray-800 border border-gray-700 rounded-lg p-5 group"
|
|
||||||
>
|
|
||||||
<summary class="flex items-center justify-between cursor-pointer">
|
<summary class="flex items-center justify-between cursor-pointer">
|
||||||
<h3 class="font-semibold text-white text-lg">
|
<h3 class="font-semibold text-white text-lg">
|
||||||
Is BentoPDF really free? What's the catch?
|
Is BentoPDF really free? What's the catch?
|
||||||
</h3>
|
</h3>
|
||||||
<i
|
<i data-lucide="plus" class="w-6 h-6 text-indigo-400 icon flex-shrink-0"></i>
|
||||||
data-lucide="plus"
|
|
||||||
class="w-6 h-6 text-indigo-400 icon flex-shrink-0"
|
|
||||||
></i>
|
|
||||||
</summary>
|
</summary>
|
||||||
<div class="mt-4 text-gray-400">
|
<div class="mt-4 text-gray-400">
|
||||||
<p>
|
<p>
|
||||||
@@ -154,17 +107,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details
|
<details class="bg-gray-800 border border-gray-700 rounded-lg p-5 group">
|
||||||
class="bg-gray-800 border border-gray-700 rounded-lg p-5 group"
|
|
||||||
>
|
|
||||||
<summary class="flex items-center justify-between cursor-pointer">
|
<summary class="flex items-center justify-between cursor-pointer">
|
||||||
<h3 class="font-semibold text-white text-lg">
|
<h3 class="font-semibold text-white text-lg">
|
||||||
Do I need an internet connection to use the tools?
|
Do I need an internet connection to use the tools?
|
||||||
</h3>
|
</h3>
|
||||||
<i
|
<i data-lucide="plus" class="w-6 h-6 text-indigo-400 icon flex-shrink-0"></i>
|
||||||
data-lucide="plus"
|
|
||||||
class="w-6 h-6 text-indigo-400 icon flex-shrink-0"
|
|
||||||
></i>
|
|
||||||
</summary>
|
</summary>
|
||||||
<div class="mt-4 text-gray-400">
|
<div class="mt-4 text-gray-400">
|
||||||
<p>
|
<p>
|
||||||
@@ -178,17 +126,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details
|
<details class="bg-gray-800 border border-gray-700 rounded-lg p-5 group">
|
||||||
class="bg-gray-800 border border-gray-700 rounded-lg p-5 group"
|
|
||||||
>
|
|
||||||
<summary class="flex items-center justify-between cursor-pointer">
|
<summary class="flex items-center justify-between cursor-pointer">
|
||||||
<h3 class="font-semibold text-white text-lg">
|
<h3 class="font-semibold text-white text-lg">
|
||||||
Are there any file size or usage limitations?
|
Are there any file size or usage limitations?
|
||||||
</h3>
|
</h3>
|
||||||
<i
|
<i data-lucide="plus" class="w-6 h-6 text-indigo-400 icon flex-shrink-0"></i>
|
||||||
data-lucide="plus"
|
|
||||||
class="w-6 h-6 text-indigo-400 icon flex-shrink-0"
|
|
||||||
></i>
|
|
||||||
</summary>
|
</summary>
|
||||||
<div class="mt-4 text-gray-400">
|
<div class="mt-4 text-gray-400">
|
||||||
<p>
|
<p>
|
||||||
@@ -201,17 +144,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details
|
<details class="bg-gray-800 border border-gray-700 rounded-lg p-5 group">
|
||||||
class="bg-gray-800 border border-gray-700 rounded-lg p-5 group"
|
|
||||||
>
|
|
||||||
<summary class="flex items-center justify-between cursor-pointer">
|
<summary class="flex items-center justify-between cursor-pointer">
|
||||||
<h3 class="font-semibold text-white text-lg">
|
<h3 class="font-semibold text-white text-lg">
|
||||||
Why did my PDF fail to process?
|
Why did my PDF fail to process?
|
||||||
</h3>
|
</h3>
|
||||||
<i
|
<i data-lucide="plus" class="w-6 h-6 text-indigo-400 icon flex-shrink-0"></i>
|
||||||
data-lucide="plus"
|
|
||||||
class="w-6 h-6 text-indigo-400 icon flex-shrink-0"
|
|
||||||
></i>
|
|
||||||
</summary>
|
</summary>
|
||||||
<div class="mt-4 text-gray-400">
|
<div class="mt-4 text-gray-400">
|
||||||
<p>Failures are rare but can happen for a few reasons:</p>
|
<p>Failures are rare but can happen for a few reasons:</p>
|
||||||
@@ -232,29 +170,19 @@
|
|||||||
</div>
|
</div>
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details
|
<details class="bg-gray-800 border border-gray-700 rounded-lg p-5 group">
|
||||||
class="bg-gray-800 border border-gray-700 rounded-lg p-5 group"
|
|
||||||
>
|
|
||||||
<summary class="flex items-center justify-between cursor-pointer">
|
<summary class="flex items-center justify-between cursor-pointer">
|
||||||
<h3 class="font-semibold text-white text-lg">
|
<h3 class="font-semibold text-white text-lg">
|
||||||
Do you track my activity on BentoPDF?
|
Do you track my activity on BentoPDF?
|
||||||
</h3>
|
</h3>
|
||||||
<i
|
<i data-lucide="plus" class="w-6 h-6 text-indigo-400 icon flex-shrink-0"></i>
|
||||||
data-lucide="plus"
|
|
||||||
class="w-6 h-6 text-indigo-400 icon flex-shrink-0"
|
|
||||||
></i>
|
|
||||||
</summary>
|
</summary>
|
||||||
<div class="mt-4 text-gray-400">
|
<div class="mt-4 text-gray-400">
|
||||||
<p>
|
<p>
|
||||||
We care about your privacy. BentoPDF does not track personal
|
We care about your privacy. BentoPDF does not track personal
|
||||||
information. We use
|
information. We use
|
||||||
<a
|
<a href="https://simpleanalytics.com" class="text-indigo-400 hover:underline" target="_blank"
|
||||||
href="https://simpleanalytics.com"
|
rel="noopener noreferrer">Simple Analytics</a>
|
||||||
class="text-indigo-400 hover:underline"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
>Simple Analytics</a
|
|
||||||
>
|
|
||||||
solely to see anonymous visit counts. This means we can know how
|
solely to see anonymous visit counts. This means we can know how
|
||||||
many users visit our site, but
|
many users visit our site, but
|
||||||
<strong>we never know who you are</strong>. Simple Analytics is
|
<strong>we never know who you are</strong>. Simple Analytics is
|
||||||
@@ -263,17 +191,12 @@
|
|||||||
</div>
|
</div>
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
<details
|
<details class="bg-gray-800 border border-gray-700 rounded-lg p-5 group">
|
||||||
class="bg-gray-800 border border-gray-700 rounded-lg p-5 group"
|
|
||||||
>
|
|
||||||
<summary class="flex items-center justify-between cursor-pointer">
|
<summary class="flex items-center justify-between cursor-pointer">
|
||||||
<h3 class="font-semibold text-white text-lg">
|
<h3 class="font-semibold text-white text-lg">
|
||||||
What technology does BentoPDF use?
|
What technology does BentoPDF use?
|
||||||
</h3>
|
</h3>
|
||||||
<i
|
<i data-lucide="plus" class="w-6 h-6 text-indigo-400 icon flex-shrink-0"></i>
|
||||||
data-lucide="plus"
|
|
||||||
class="w-6 h-6 text-indigo-400 icon flex-shrink-0"
|
|
||||||
></i>
|
|
||||||
</summary>
|
</summary>
|
||||||
<div class="mt-4 text-gray-400">
|
<div class="mt-4 text-gray-400">
|
||||||
<p>
|
<p>
|
||||||
@@ -298,10 +221,8 @@
|
|||||||
If you can't find the answer you're looking for, feel free to reach
|
If you can't find the answer you're looking for, feel free to reach
|
||||||
out to our support team. We're always Bento to help.
|
out to our support team. We're always Bento to help.
|
||||||
</p>
|
</p>
|
||||||
<a
|
<a href="contact.html"
|
||||||
href="contact.html"
|
class="inline-block px-8 py-3 rounded-full bg-gray-700 text-white font-semibold focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-900 focus:ring-indigo-400 hover:bg-gray-600 transition-colors duration-200">
|
||||||
class="inline-block px-8 py-3 rounded-full bg-gray-700 text-white font-semibold focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-900 focus:ring-indigo-400 hover:bg-gray-600 transition-colors duration-200"
|
|
||||||
>
|
|
||||||
Contact Us
|
Contact Us
|
||||||
</a>
|
</a>
|
||||||
</section>
|
</section>
|
||||||
@@ -309,34 +230,31 @@
|
|||||||
|
|
||||||
<footer class="mt-16 border-t-2 border-gray-700 py-8">
|
<footer class="mt-16 border-t-2 border-gray-700 py-8">
|
||||||
<div class="container mx-auto px-4">
|
<div class="container mx-auto px-4">
|
||||||
<div
|
<div class="grid grid-cols-1 md:grid-cols-4 gap-8 text-center md:text-left">
|
||||||
class="grid grid-cols-1 md:grid-cols-4 gap-8 text-center md:text-left"
|
|
||||||
>
|
|
||||||
<div class="mb-8 md:mb-0">
|
<div class="mb-8 md:mb-0">
|
||||||
<div class="flex items-center justify-center md:justify-start mb-4">
|
<div class="flex items-center justify-center md:justify-start mb-4">
|
||||||
<img
|
<img src="images/favicon.svg" alt="Bento PDF Logo" class="h-10 w-10 mr-3" />
|
||||||
src="images/favicon.svg"
|
|
||||||
alt="Bento PDF Logo"
|
|
||||||
class="h-10 w-10 mr-3"
|
|
||||||
/>
|
|
||||||
<span class="text-xl font-bold text-white">BentoPDF</span>
|
<span class="text-xl font-bold text-white">BentoPDF</span>
|
||||||
</div>
|
</div>
|
||||||
<p class="text-gray-400 text-sm">
|
<p class="text-gray-400 text-sm">
|
||||||
© 2025 BentoPDF. All rights reserved.
|
© 2025 BentoPDF. All rights reserved.
|
||||||
</p>
|
</p>
|
||||||
|
<p class="text-gray-500 text-xs mt-2">
|
||||||
|
Version <span id="app-version"></span>
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<h3 class="font-bold text-white mb-4">Company</h3>
|
<h3 class="font-bold text-white mb-4">Company</h3>
|
||||||
<ul class="space-y-2 text-gray-400">
|
<ul class="space-y-2 text-gray-400">
|
||||||
<li>
|
<li>
|
||||||
<a href="about.html" class="hover:text-indigo-400">About Us</a>
|
<a href="./about.html" class="hover:text-indigo-400">About Us</a>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="faq.html" class="hover:text-indigo-400">FAQ</a></li>
|
|
||||||
<li>
|
<li>
|
||||||
<a href="contact.html" class="hover:text-indigo-400"
|
<a href="./faq.html" class="hover:text-indigo-400">FAQ</a>
|
||||||
>Contact Us</a
|
</li>
|
||||||
>
|
<li>
|
||||||
|
<a href="./contact.html" class="hover:text-indigo-400">Contact Us</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@@ -345,14 +263,13 @@
|
|||||||
<h3 class="font-bold text-white mb-4">Legal</h3>
|
<h3 class="font-bold text-white mb-4">Legal</h3>
|
||||||
<ul class="space-y-2 text-gray-400">
|
<ul class="space-y-2 text-gray-400">
|
||||||
<li>
|
<li>
|
||||||
<a href="./terms.html" class="hover:text-indigo-400"
|
<a href="./licensing.html" class="hover:text-indigo-400">Licensing</a>
|
||||||
>Terms and Conditions</a
|
|
||||||
>
|
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="./privacy.html" class="hover:text-indigo-400"
|
<a href="./terms.html" class="hover:text-indigo-400">Terms and Conditions</a>
|
||||||
>Privacy Policy</a
|
</li>
|
||||||
>
|
<li>
|
||||||
|
<a href="./privacy.html" class="hover:text-indigo-400">Privacy Policy</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@@ -360,29 +277,33 @@
|
|||||||
<div>
|
<div>
|
||||||
<h3 class="font-bold text-white mb-4">Follow Us</h3>
|
<h3 class="font-bold text-white mb-4">Follow Us</h3>
|
||||||
<div class="flex justify-center md:justify-start space-x-4">
|
<div class="flex justify-center md:justify-start space-x-4">
|
||||||
<a
|
<a href="https://github.com/alam00000/bentopdf" target="_blank" rel="noopener noreferrer"
|
||||||
href="https://www.instagram.com/thebentopdf/"
|
class="text-gray-400 hover:text-indigo-400" title="GitHub">
|
||||||
class="text-gray-400 hover:text-indigo-400"
|
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
><i data-lucide="instagram"></i
|
<path fill-rule="evenodd"
|
||||||
></a>
|
d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z"
|
||||||
<a
|
clip-rule="evenodd" />
|
||||||
href="https://www.linkedin.com/company/bentopdf/"
|
</svg>
|
||||||
class="text-gray-400 hover:text-indigo-400"
|
</a>
|
||||||
><i data-lucide="linkedin"></i
|
<a href="https://discord.gg/q42xWQmJ" target="_blank" rel="noopener noreferrer"
|
||||||
></a>
|
class="text-gray-400 hover:text-indigo-400" title="Discord">
|
||||||
<a
|
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
href="https://x.com/BentoPDF"
|
|
||||||
class="text-gray-400 hover:text-indigo-400"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
class="w-6 h-6"
|
|
||||||
fill="currentColor"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
aria-hidden="true"
|
|
||||||
>
|
|
||||||
<path
|
<path
|
||||||
d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"
|
d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515a.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0a12.64 12.64 0 0 0-.617-1.25a.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057a19.9 19.9 0 0 0 5.993 3.03a.078.078 0 0 0 .084-.028a14.09 14.09 0 0 0 1.226-1.994a.076.076 0 0 0-.041-.106a13.107 13.107 0 0 1-1.872-.892a.077.077 0 0 1-.008-.128a10.2 10.2 0 0 0 .372-.292a.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127a12.299 12.299 0 0 1-1.873.892a.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028a19.839 19.839 0 0 0 6.002-3.03a.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419c0-1.333.956-2.419 2.157-2.419c1.21 0 2.176 1.096 2.157 2.42c0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419c0-1.333.955-2.419 2.157-2.419c1.21 0 2.176 1.096 2.157 2.42c0 1.333-.946 2.418-2.157 2.418z" />
|
||||||
/>
|
</svg>
|
||||||
|
</a>
|
||||||
|
<a href="https://www.instagram.com/thebentopdf/" class="text-gray-400 hover:text-indigo-400"
|
||||||
|
title="Instagram">
|
||||||
|
<i data-lucide="instagram"></i>
|
||||||
|
</a>
|
||||||
|
<a href="https://www.linkedin.com/company/bentopdf/" class="text-gray-400 hover:text-indigo-400"
|
||||||
|
title="LinkedIn">
|
||||||
|
<i data-lucide="linkedin"></i>
|
||||||
|
</a>
|
||||||
|
<a href="https://x.com/BentoPDF" class="text-gray-400 hover:text-indigo-400" title="X (Twitter)">
|
||||||
|
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
|
<path
|
||||||
|
d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" />
|
||||||
</svg>
|
</svg>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -392,7 +313,8 @@
|
|||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script type="module" src="src/js/utils/lucide-init.ts"></script>
|
<script type="module" src="src/js/utils/lucide-init.ts"></script>
|
||||||
|
<script type="module" src="src/version.ts"></script>
|
||||||
<script type="module" src="src/js/mobileMenu.ts"></script>
|
<script type="module" src="src/js/mobileMenu.ts"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
+150
-395
@@ -1,5 +1,6 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
@@ -12,15 +13,8 @@
|
|||||||
<nav class="bg-gray-800 border-b border-gray-700 sticky top-0 z-30">
|
<nav class="bg-gray-800 border-b border-gray-700 sticky top-0 z-30">
|
||||||
<div class="container mx-auto px-4">
|
<div class="container mx-auto px-4">
|
||||||
<div class="flex justify-between items-center h-16">
|
<div class="flex justify-between items-center h-16">
|
||||||
<div
|
<div class="flex-shrink-0 flex items-center cursor-pointer" id="home-logo">
|
||||||
class="flex-shrink-0 flex items-center cursor-pointer"
|
<img src="images/favicon.svg" alt="Bento PDF Logo" class="h-8 w-8" />
|
||||||
id="home-logo"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
src="images/favicon.svg"
|
|
||||||
alt="Bento PDF Logo"
|
|
||||||
class="h-8 w-8"
|
|
||||||
/>
|
|
||||||
<span class="text-white font-bold text-xl ml-2">
|
<span class="text-white font-bold text-xl ml-2">
|
||||||
<a href="index.html">BentoPDF</a>
|
<a href="index.html">BentoPDF</a>
|
||||||
</span>
|
</span>
|
||||||
@@ -31,52 +25,25 @@
|
|||||||
<a href="index.html" class="nav-link">Home</a>
|
<a href="index.html" class="nav-link">Home</a>
|
||||||
<a href="./about.html" class="nav-link">About</a>
|
<a href="./about.html" class="nav-link">About</a>
|
||||||
<a href="./contact.html" class="nav-link">Contact</a>
|
<a href="./contact.html" class="nav-link">Contact</a>
|
||||||
|
<a href="./licensing.html" class="nav-link">Licensing</a>
|
||||||
<a href="index.html#tools-header" class="nav-link">All Tools</a>
|
<a href="index.html#tools-header" class="nav-link">All Tools</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Mobile Hamburger Button -->
|
<!-- Mobile Hamburger Button -->
|
||||||
<div class="md:hidden flex items-center">
|
<div class="md:hidden flex items-center">
|
||||||
<button
|
<button id="mobile-menu-button" type="button"
|
||||||
id="mobile-menu-button"
|
|
||||||
type="button"
|
|
||||||
class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500 transition-colors"
|
class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500 transition-colors"
|
||||||
aria-controls="mobile-menu"
|
aria-controls="mobile-menu" aria-expanded="false">
|
||||||
aria-expanded="false"
|
|
||||||
>
|
|
||||||
<span class="sr-only">Open main menu</span>
|
<span class="sr-only">Open main menu</span>
|
||||||
<!-- Hamburger Icon -->
|
<!-- Hamburger Icon -->
|
||||||
<svg
|
<svg id="menu-icon" class="block h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
|
||||||
id="menu-icon"
|
stroke="currentColor" aria-hidden="true">
|
||||||
class="block h-6 w-6"
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" />
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
fill="none"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
stroke="currentColor"
|
|
||||||
aria-hidden="true"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
stroke-width="2"
|
|
||||||
d="M4 6h16M4 12h16M4 18h16"
|
|
||||||
/>
|
|
||||||
</svg>
|
</svg>
|
||||||
<!-- Close Icon -->
|
<!-- Close Icon -->
|
||||||
<svg
|
<svg id="close-icon" class="hidden h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none"
|
||||||
id="close-icon"
|
viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
|
||||||
class="hidden h-6 w-6"
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
fill="none"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
stroke="currentColor"
|
|
||||||
aria-hidden="true"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
stroke-width="2"
|
|
||||||
d="M6 18L18 6M6 6l12 12"
|
|
||||||
/>
|
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -84,17 +51,13 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Mobile Menu Dropdown -->
|
<!-- Mobile Menu Dropdown -->
|
||||||
<div
|
<div id="mobile-menu" class="hidden md:hidden bg-gray-800 border-t border-gray-700">
|
||||||
id="mobile-menu"
|
|
||||||
class="hidden md:hidden bg-gray-800 border-t border-gray-700"
|
|
||||||
>
|
|
||||||
<div class="px-2 pt-2 pb-3 space-y-1 text-center">
|
<div class="px-2 pt-2 pb-3 space-y-1 text-center">
|
||||||
<a href="index.html" class="mobile-nav-link">Home</a>
|
<a href="index.html" class="mobile-nav-link">Home</a>
|
||||||
<a href="./about.html" class="mobile-nav-link">About</a>
|
<a href="./about.html" class="mobile-nav-link">About</a>
|
||||||
<a href="./contact.html" class="mobile-nav-link">Contact</a>
|
<a href="./contact.html" class="mobile-nav-link">Contact</a>
|
||||||
<a href="index.html#tools-header" class="mobile-nav-link"
|
<a href="./licensing.html" class="mobile-nav-link">Licensing</a>
|
||||||
>All Tools</a
|
<a href="index.html#tools-header" class="mobile-nav-link">All Tools</a>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
@@ -103,40 +66,48 @@
|
|||||||
<h1 class="text-4xl md:text-7xl font-bold text-white mb-4">
|
<h1 class="text-4xl md:text-7xl font-bold text-white mb-4">
|
||||||
The <span class="marker-slanted"> PDF Toolkit </span> built for
|
The <span class="marker-slanted"> PDF Toolkit </span> built for
|
||||||
privacy<span
|
privacy<span
|
||||||
class="text-4xl md:text-6xl text-transparent bg-clip-text bg-gradient-to-r from-indigo-500 to-purple-500"
|
class="text-4xl md:text-6xl text-transparent bg-clip-text bg-gradient-to-r from-indigo-500 to-purple-500">.</span>
|
||||||
>.</span
|
|
||||||
>
|
|
||||||
</h1>
|
</h1>
|
||||||
<p class="text-lg text-gray-400 mb-8">Fast, Secure and Forever Free.</p>
|
<p class="text-lg text-gray-400 mb-8">Fast, Secure and Forever Free.</p>
|
||||||
<div
|
<div class="flex flex-wrap justify-center items-center gap-2 sm:gap-4 mb-8">
|
||||||
class="flex flex-wrap justify-center items-center gap-2 sm:gap-4 mb-8"
|
|
||||||
>
|
|
||||||
<span
|
<span
|
||||||
class="inline-flex items-center gap-2 px-4 py-2 rounded-lg bg-gray-800/50 border border-indigo-500/30 text-indigo-300 text-sm font-medium backdrop-blur-sm"
|
class="inline-flex items-center gap-2 px-4 py-2 rounded-lg bg-gray-800/50 border border-indigo-500/30 text-indigo-300 text-sm font-medium backdrop-blur-sm">
|
||||||
>
|
|
||||||
<i data-lucide="check-circle" class="w-4 h-4"></i>
|
<i data-lucide="check-circle" class="w-4 h-4"></i>
|
||||||
No Signups
|
No Signups
|
||||||
</span>
|
</span>
|
||||||
<span
|
<span
|
||||||
class="inline-flex items-center gap-2 px-4 py-2 rounded-lg bg-gray-800/50 border border-indigo-500/30 text-indigo-300 text-sm font-medium backdrop-blur-sm"
|
class="inline-flex items-center gap-2 px-4 py-2 rounded-lg bg-gray-800/50 border border-indigo-500/30 text-indigo-300 text-sm font-medium backdrop-blur-sm">
|
||||||
>
|
|
||||||
<i data-lucide="check-circle" class="w-4 h-4"></i>
|
<i data-lucide="check-circle" class="w-4 h-4"></i>
|
||||||
Unlimited Use
|
Unlimited Use
|
||||||
</span>
|
</span>
|
||||||
<span
|
<span
|
||||||
class="inline-flex items-center gap-2 px-4 py-2 rounded-lg bg-gray-800/50 border border-indigo-500/30 text-indigo-300 text-sm font-medium backdrop-blur-sm"
|
class="inline-flex items-center gap-2 px-4 py-2 rounded-lg bg-gray-800/50 border border-indigo-500/30 text-indigo-300 text-sm font-medium backdrop-blur-sm">
|
||||||
>
|
|
||||||
<i data-lucide="check-circle" class="w-4 h-4"></i>
|
<i data-lucide="check-circle" class="w-4 h-4"></i>
|
||||||
Works Offline
|
Works Offline
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex flex-col items-center gap-4">
|
<div class="flex flex-col items-center gap-4">
|
||||||
<a
|
<a href="#tools-header"
|
||||||
href="#tools-header"
|
class="inline-block px-8 py-3 rounded-full bg-gradient-to-b from-indigo-500 to-indigo-600 text-white font-semibold focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-900 focus:ring-indigo-400 hover:shadow-xl hover:shadow-indigo-500/30 transition-all duration-200 transform hover:-translate-y-1">Start
|
||||||
class="inline-block px-8 py-3 rounded-full bg-gradient-to-b from-indigo-500 to-indigo-600 text-white font-semibold focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-900 focus:ring-indigo-400 hover:shadow-xl hover:shadow-indigo-500/30 transition-all duration-200 transform hover:-translate-y-1"
|
Using - Forever Free</a>
|
||||||
>Start Using - Forever Free</a
|
<a href="https://github.com/alam00000/bentopdf/stargazers" target="_blank" rel="noopener noreferrer" class="
|
||||||
>
|
inline-flex items-center gap-1.5 text-sm font-medium
|
||||||
|
bg-white text-gray-800 border border-gray-300
|
||||||
|
dark:bg-gray-800 dark:text-gray-200 dark:border-gray-600
|
||||||
|
pl-2.5 pr-3 py-1
|
||||||
|
rounded-full transition-colors duration-200
|
||||||
|
shadow-sm hover:shadow-md hover:bg-gray-50 dark:hover:bg-gray-700
|
||||||
|
">
|
||||||
|
<svg class="w-4 h-4 flex-shrink-0 text-gray-800 dark:text-gray-200" fill="currentColor" viewBox="0 0 24 24"
|
||||||
|
aria-hidden="true">
|
||||||
|
<path fill-rule="evenodd"
|
||||||
|
d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z"
|
||||||
|
clip-rule="evenodd" />
|
||||||
|
</svg>
|
||||||
|
|
||||||
|
<span id="github-stars">-</span>
|
||||||
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
||||||
@@ -149,10 +120,7 @@
|
|||||||
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
|
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
|
||||||
<div class="bg-gray-800 p-6 rounded-lg">
|
<div class="bg-gray-800 p-6 rounded-lg">
|
||||||
<div class="flex items-center gap-4 mb-3">
|
<div class="flex items-center gap-4 mb-3">
|
||||||
<i
|
<i data-lucide="user-plus" class="w-10 h-10 text-indigo-400 flex-shrink-0"></i>
|
||||||
data-lucide="user-plus"
|
|
||||||
class="w-10 h-10 text-indigo-400 flex-shrink-0"
|
|
||||||
></i>
|
|
||||||
<h3 class="text-xl font-bold text-white">No Signup</h3>
|
<h3 class="text-xl font-bold text-white">No Signup</h3>
|
||||||
</div>
|
</div>
|
||||||
<p class="text-gray-400 pl-14">
|
<p class="text-gray-400 pl-14">
|
||||||
@@ -161,10 +129,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="bg-gray-800 p-6 rounded-lg">
|
<div class="bg-gray-800 p-6 rounded-lg">
|
||||||
<div class="flex items-center gap-4 mb-3">
|
<div class="flex items-center gap-4 mb-3">
|
||||||
<i
|
<i data-lucide="shield" class="w-10 h-10 text-indigo-400 flex-shrink-0"></i>
|
||||||
data-lucide="shield"
|
|
||||||
class="w-10 h-10 text-indigo-400 flex-shrink-0"
|
|
||||||
></i>
|
|
||||||
<h3 class="text-xl font-bold text-white">No Uploads</h3>
|
<h3 class="text-xl font-bold text-white">No Uploads</h3>
|
||||||
</div>
|
</div>
|
||||||
<p class="text-gray-400 pl-14">
|
<p class="text-gray-400 pl-14">
|
||||||
@@ -173,10 +138,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="bg-gray-800 p-6 rounded-lg">
|
<div class="bg-gray-800 p-6 rounded-lg">
|
||||||
<div class="flex items-center gap-4 mb-3">
|
<div class="flex items-center gap-4 mb-3">
|
||||||
<i
|
<i data-lucide="badge-dollar-sign" class="w-10 h-10 text-indigo-400 flex-shrink-0"></i>
|
||||||
data-lucide="badge-dollar-sign"
|
|
||||||
class="w-10 h-10 text-indigo-400 flex-shrink-0"
|
|
||||||
></i>
|
|
||||||
<h3 class="text-xl font-bold text-white">Forever Free</h3>
|
<h3 class="text-xl font-bold text-white">Forever Free</h3>
|
||||||
</div>
|
</div>
|
||||||
<p class="text-gray-400 pl-14">
|
<p class="text-gray-400 pl-14">
|
||||||
@@ -185,10 +147,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="bg-gray-800 p-6 rounded-lg">
|
<div class="bg-gray-800 p-6 rounded-lg">
|
||||||
<div class="flex items-center gap-4 mb-3">
|
<div class="flex items-center gap-4 mb-3">
|
||||||
<i
|
<i data-lucide="infinity" class="w-10 h-10 text-indigo-400 flex-shrink-0"></i>
|
||||||
data-lucide="infinity"
|
|
||||||
class="w-10 h-10 text-indigo-400 flex-shrink-0"
|
|
||||||
></i>
|
|
||||||
<h3 class="text-xl font-bold text-white">No Limits</h3>
|
<h3 class="text-xl font-bold text-white">No Limits</h3>
|
||||||
</div>
|
</div>
|
||||||
<p class="text-gray-400 pl-14">
|
<p class="text-gray-400 pl-14">
|
||||||
@@ -197,20 +156,14 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="bg-gray-800 p-6 rounded-lg">
|
<div class="bg-gray-800 p-6 rounded-lg">
|
||||||
<div class="flex items-center gap-4 mb-3">
|
<div class="flex items-center gap-4 mb-3">
|
||||||
<i
|
<i data-lucide="layers" class="w-10 h-10 text-indigo-400 flex-shrink-0"></i>
|
||||||
data-lucide="layers"
|
|
||||||
class="w-10 h-10 text-indigo-400 flex-shrink-0"
|
|
||||||
></i>
|
|
||||||
<h3 class="text-xl font-bold text-white">Batch Processing</h3>
|
<h3 class="text-xl font-bold text-white">Batch Processing</h3>
|
||||||
</div>
|
</div>
|
||||||
<p class="text-gray-400 pl-14">Handle unlimited PDFs in one go.</p>
|
<p class="text-gray-400 pl-14">Handle unlimited PDFs in one go.</p>
|
||||||
</div>
|
</div>
|
||||||
<div class="bg-gray-800 p-6 rounded-lg">
|
<div class="bg-gray-800 p-6 rounded-lg">
|
||||||
<div class="flex items-center gap-4 mb-3">
|
<div class="flex items-center gap-4 mb-3">
|
||||||
<i
|
<i data-lucide="zap" class="w-10 h-10 text-indigo-400 flex-shrink-0"></i>
|
||||||
data-lucide="zap"
|
|
||||||
class="w-10 h-10 text-indigo-400 flex-shrink-0"
|
|
||||||
></i>
|
|
||||||
<h3 class="text-xl font-bold text-white">Lightning Fast</h3>
|
<h3 class="text-xl font-bold text-white">Lightning Fast</h3>
|
||||||
</div>
|
</div>
|
||||||
<p class="text-gray-400 pl-14">
|
<p class="text-gray-400 pl-14">
|
||||||
@@ -235,47 +188,30 @@
|
|||||||
<span class="absolute inset-y-0 left-0 flex items-center pl-3">
|
<span class="absolute inset-y-0 left-0 flex items-center pl-3">
|
||||||
<i data-lucide="search" class="w-5 h-5 text-gray-400"></i>
|
<i data-lucide="search" class="w-5 h-5 text-gray-400"></i>
|
||||||
</span>
|
</span>
|
||||||
<input
|
<input type="text" id="search-bar"
|
||||||
type="text"
|
|
||||||
id="search-bar"
|
|
||||||
class="w-full pl-10 pr-4 py-3 bg-gray-700 text-white border border-gray-600 rounded-lg focus:ring-indigo-500 focus:border-indigo-500"
|
class="w-full pl-10 pr-4 py-3 bg-gray-700 text-white border border-gray-600 rounded-lg focus:ring-indigo-500 focus:border-indigo-500"
|
||||||
placeholder="Search for a tool (e.g., 'split', 'organize'...)"
|
placeholder="Search for a tool (e.g., 'split', 'organize'...)" />
|
||||||
/>
|
<span class="absolute inset-y-0 right-0 flex items-center rounded-lg pr-2">
|
||||||
<span
|
|
||||||
class="absolute inset-y-0 right-0 flex items-center rounded-lg pr-2"
|
|
||||||
>
|
|
||||||
<kbd id="shortcut" class="bg-gray-800 px-1 rounded-lg"></kbd>
|
<kbd id="shortcut" class="bg-gray-800 px-1 rounded-lg"></kbd>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div
|
<div id="tool-grid" class="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 gap-4 md:gap-6"></div>
|
||||||
id="tool-grid"
|
|
||||||
class="grid grid-cols-2 sm:grid-cols-3 md:grid-cols-4 lg:grid-cols-5 gap-4 md:gap-6"
|
|
||||||
></div>
|
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div
|
<div id="tool-interface"
|
||||||
id="tool-interface"
|
class="hidden w-full max-w-4xl mx-auto bg-gray-800 rounded-xl shadow-2xl p-6 md:p-8 border border-gray-700">
|
||||||
class="hidden w-full max-w-4xl mx-auto bg-gray-800 rounded-xl shadow-2xl p-6 md:p-8 border border-gray-700"
|
<button id="back-to-grid"
|
||||||
>
|
class="flex items-center gap-2 text-indigo-400 hover:text-indigo-300 mb-6 font-semibold">
|
||||||
<button
|
|
||||||
id="back-to-grid"
|
|
||||||
class="flex items-center gap-2 text-indigo-400 hover:text-indigo-300 mb-6 font-semibold"
|
|
||||||
>
|
|
||||||
<i data-lucide="arrow-left" class="cursor-pointer"></i>
|
<i data-lucide="arrow-left" class="cursor-pointer"></i>
|
||||||
<span class="cursor-pointer"> Back to Tools </span>
|
<span class="cursor-pointer"> Back to Tools </span>
|
||||||
</button>
|
</button>
|
||||||
<div id="tool-content"></div>
|
<div id="tool-content"></div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div
|
<div id="loader-modal" class="hidden fixed inset-0 bg-black bg-opacity-75 flex items-center justify-center z-50">
|
||||||
id="loader-modal"
|
<div class="bg-gray-800 p-8 rounded-lg flex flex-col items-center gap-4 border border-gray-700 shadow-xl">
|
||||||
class="hidden fixed inset-0 bg-black bg-opacity-75 flex items-center justify-center z-50"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="bg-gray-800 p-8 rounded-lg flex flex-col items-center gap-4 border border-gray-700 shadow-xl"
|
|
||||||
>
|
|
||||||
<div class="solid-spinner"></div>
|
<div class="solid-spinner"></div>
|
||||||
<p id="loader-text" class="text-white text-lg font-medium">
|
<p id="loader-text" class="text-white text-lg font-medium">
|
||||||
Processing...
|
Processing...
|
||||||
@@ -283,48 +219,33 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div
|
<div id="alert-modal" class="hidden fixed inset-0 bg-black bg-opacity-75 flex items-center justify-center z-50 p-4">
|
||||||
id="alert-modal"
|
<div class="bg-gray-800 max-w-sm w-full p-6 rounded-lg border border-gray-700 shadow-xl text-center">
|
||||||
class="hidden fixed inset-0 bg-black bg-opacity-75 flex items-center justify-center z-50 p-4"
|
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="bg-gray-800 max-w-sm w-full p-6 rounded-lg border border-gray-700 shadow-xl text-center"
|
|
||||||
>
|
|
||||||
<h3 id="alert-title" class="text-xl font-bold text-white mb-2">
|
<h3 id="alert-title" class="text-xl font-bold text-white mb-2">
|
||||||
Alert
|
Alert
|
||||||
</h3>
|
</h3>
|
||||||
<p id="alert-message" class="text-gray-300 mb-6 whitespace-pre-line">
|
<p id="alert-message" class="text-gray-300 mb-6 whitespace-pre-line">
|
||||||
This is an alert message.
|
This is an alert message.
|
||||||
</p>
|
</p>
|
||||||
<button
|
<button id="alert-ok"
|
||||||
id="alert-ok"
|
class="btn bg-indigo-600 text-white font-semibold py-2 px-6 rounded-lg hover:bg-indigo-700">
|
||||||
class="btn bg-indigo-600 text-white font-semibold py-2 px-6 rounded-lg hover:bg-indigo-700"
|
|
||||||
>
|
|
||||||
OK
|
OK
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div
|
<div id="preview-modal"
|
||||||
id="preview-modal"
|
class="hidden fixed inset-0 bg-black bg-opacity-75 flex items-center justify-center z-40 p-4">
|
||||||
class="hidden fixed inset-0 bg-black bg-opacity-75 flex items-center justify-center z-40 p-4"
|
<div class="bg-white text-black rounded-lg shadow-xl w-full max-w-4xl h-[90vh] flex flex-col">
|
||||||
>
|
|
||||||
<div
|
|
||||||
class="bg-white text-black rounded-lg shadow-xl w-full max-w-4xl h-[90vh] flex flex-col"
|
|
||||||
>
|
|
||||||
<div class="p-4 border-b flex justify-between items-center">
|
<div class="p-4 border-b flex justify-between items-center">
|
||||||
<h3 class="text-xl font-bold">Document Preview</h3>
|
<h3 class="text-xl font-bold">Document Preview</h3>
|
||||||
<div class="flex gap-4">
|
<div class="flex gap-4">
|
||||||
<button
|
<button id="preview-download-btn"
|
||||||
id="preview-download-btn"
|
class="btn bg-indigo-600 text-white font-semibold py-2 px-6 rounded-lg hover:bg-indigo-700">
|
||||||
class="btn bg-indigo-600 text-white font-semibold py-2 px-6 rounded-lg hover:bg-indigo-700"
|
|
||||||
>
|
|
||||||
Download as PDF
|
Download as PDF
|
||||||
</button>
|
</button>
|
||||||
<button
|
<button id="preview-close-btn"
|
||||||
id="preview-close-btn"
|
class="btn bg-gray-600 text-white font-semibold py-2 px-6 rounded-lg hover:bg-gray-700">
|
||||||
class="btn bg-gray-600 text-white font-semibold py-2 px-6 rounded-lg hover:bg-gray-700"
|
|
||||||
>
|
|
||||||
Close
|
Close
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -338,96 +259,62 @@
|
|||||||
<!-- COMPLIANCE SECTION START -->
|
<!-- COMPLIANCE SECTION START -->
|
||||||
<section id="security-compliance-section" class="py-20 hide-section">
|
<section id="security-compliance-section" class="py-20 hide-section">
|
||||||
<div class="mb-8 text-center">
|
<div class="mb-8 text-center">
|
||||||
<h2
|
<h2 class="text-3xl md:text-4xl lg:text-5xl font-bold text-white leading-tight mb-6 text-balance">
|
||||||
class="text-3xl md:text-4xl lg:text-5xl font-bold text-white leading-tight mb-6 text-balance"
|
|
||||||
>
|
|
||||||
Your data never leaves your device
|
Your data never leaves your device
|
||||||
<span class="inline-flex items-center gap-2">
|
<span class="inline-flex items-center gap-2">
|
||||||
<i
|
<i data-lucide="shield" class="w-8 h-8 md:w-10 md:h-10 text-indigo-400 bg-indigo-900 rounded-lg p-1.5"></i>
|
||||||
data-lucide="shield"
|
|
||||||
class="w-8 h-8 md:w-10 md:h-10 text-indigo-400 bg-indigo-900 rounded-lg p-1.5"
|
|
||||||
></i>
|
|
||||||
We keep
|
We keep
|
||||||
</span>
|
</span>
|
||||||
<br class="hidden sm:block" />
|
<br class="hidden sm:block" />
|
||||||
<span
|
<span
|
||||||
class="inline-block border-2 border-indigo-400 bg-indigo-900 text-indigo-300 px-4 py-2 rounded-full mx-2 text-2xl md:text-3xl lg:text-4xl font-bold"
|
class="inline-block border-2 border-indigo-400 bg-indigo-900 text-indigo-300 px-4 py-2 rounded-full mx-2 text-2xl md:text-3xl lg:text-4xl font-bold">
|
||||||
>
|
|
||||||
your information safe
|
your information safe
|
||||||
</span>
|
</span>
|
||||||
by following global security standards.
|
by following global security standards.
|
||||||
</h2>
|
</h2>
|
||||||
</div>
|
</div>
|
||||||
<div class="mb-16 text-center">
|
<div class="mb-16 text-center">
|
||||||
<span
|
<span class="inline-flex items-center gap-2 text-indigo-400 text-lg font-medium transition-colors">
|
||||||
class="inline-flex items-center gap-2 text-indigo-400 text-lg font-medium transition-colors"
|
|
||||||
>
|
|
||||||
All the processing happens locally on your device.
|
All the processing happens locally on your device.
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div
|
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-8 lg:gap-4">
|
||||||
class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-8 lg:gap-4"
|
|
||||||
>
|
|
||||||
<!-- GDPR Compliance -->
|
<!-- GDPR Compliance -->
|
||||||
<div class="flex flex-col items-center text-center">
|
<div class="flex flex-col items-center text-center">
|
||||||
<div
|
<div class="w-20 h-20 md:w-24 md:h-24 rounded-full bg-blue-600 flex items-center justify-center mb-4">
|
||||||
class="w-20 h-20 md:w-24 md:h-24 rounded-full bg-blue-600 flex items-center justify-center mb-4"
|
<img src="/images/gdpr.svg" alt="GDPR compliance" class="w-full h-full" />
|
||||||
>
|
|
||||||
<img
|
|
||||||
src="/images/gdpr.svg"
|
|
||||||
alt="GDPR compliance"
|
|
||||||
class="w-full h-full"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
<h3 class="text-lg md:text-xl font-bold text-white mb-3">
|
<h3 class="text-lg md:text-xl font-bold text-white mb-3">
|
||||||
GDPR compliance
|
GDPR compliance
|
||||||
</h3>
|
</h3>
|
||||||
<p
|
<p class="text-gray-400 text-sm md:text-base leading-relaxed max-w-xs">
|
||||||
class="text-gray-400 text-sm md:text-base leading-relaxed max-w-xs"
|
|
||||||
>
|
|
||||||
Protects the personal data and privacy of individuals within the
|
Protects the personal data and privacy of individuals within the
|
||||||
European Union.
|
European Union.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex flex-col items-center text-center">
|
<div class="flex flex-col items-center text-center">
|
||||||
<div
|
<div class="w-20 h-20 md:w-24 md:h-24 rounded-full bg-blue-600 flex items-center justify-center mb-4">
|
||||||
class="w-20 h-20 md:w-24 md:h-24 rounded-full bg-blue-600 flex items-center justify-center mb-4"
|
<img src="/images/ccpa.svg" alt="CCPA compliance" class="w-full h-full" />
|
||||||
>
|
|
||||||
<img
|
|
||||||
src="/images/ccpa.svg"
|
|
||||||
alt="CCPA compliance"
|
|
||||||
class="w-full h-full"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
<h3 class="text-lg md:text-xl font-bold text-white mb-3">
|
<h3 class="text-lg md:text-xl font-bold text-white mb-3">
|
||||||
CCPA compliance
|
CCPA compliance
|
||||||
</h3>
|
</h3>
|
||||||
<p
|
<p class="text-gray-400 text-sm md:text-base leading-relaxed max-w-xs">
|
||||||
class="text-gray-400 text-sm md:text-base leading-relaxed max-w-xs"
|
|
||||||
>
|
|
||||||
Gives California residents rights over how their personal
|
Gives California residents rights over how their personal
|
||||||
information is collected, used, and shared.
|
information is collected, used, and shared.
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="flex flex-col items-center text-center">
|
<div class="flex flex-col items-center text-center">
|
||||||
<div
|
<div class="w-20 h-20 md:w-24 md:h-24 rounded-full bg-blue-600 flex items-center justify-center mb-4">
|
||||||
class="w-20 h-20 md:w-24 md:h-24 rounded-full bg-blue-600 flex items-center justify-center mb-4"
|
<img src="/images/hipaa.svg" alt="HIPAA compliance" class="w-full h-full" />
|
||||||
>
|
|
||||||
<img
|
|
||||||
src="/images/hipaa.svg"
|
|
||||||
alt="HIPAA compliance"
|
|
||||||
class="w-full h-full"
|
|
||||||
/>
|
|
||||||
</div>
|
</div>
|
||||||
<h3 class="text-lg md:text-xl font-bold text-white mb-3">
|
<h3 class="text-lg md:text-xl font-bold text-white mb-3">
|
||||||
HIPAA compliance
|
HIPAA compliance
|
||||||
</h3>
|
</h3>
|
||||||
<p
|
<p class="text-gray-400 text-sm md:text-base leading-relaxed max-w-xs">
|
||||||
class="text-gray-400 text-sm md:text-base leading-relaxed max-w-xs"
|
|
||||||
>
|
|
||||||
Sets safeguards for handling sensitive health information in the
|
Sets safeguards for handling sensitive health information in the
|
||||||
United States healthcare system.
|
United States healthcare system.
|
||||||
</p>
|
</p>
|
||||||
@@ -440,27 +327,16 @@
|
|||||||
<div class="section-divider hide-section"></div>
|
<div class="section-divider hide-section"></div>
|
||||||
|
|
||||||
<section id="faq-accordion" class="space-y-4 hide-section">
|
<section id="faq-accordion" class="space-y-4 hide-section">
|
||||||
<h2
|
<h2 class="text-3xl md:text-4xl font-bold text-center text-white mb-12 mt-8">
|
||||||
class="text-3xl md:text-4xl font-bold text-center text-white mb-12 mt-8"
|
|
||||||
>
|
|
||||||
Frequently Asked <span class="marker-slanted">Questions</span>
|
Frequently Asked <span class="marker-slanted">Questions</span>
|
||||||
</h2>
|
</h2>
|
||||||
<!-- Existing FAQs here... -->
|
<!-- Existing FAQs here... -->
|
||||||
<div class="faq-item bg-gray-800 rounded-lg border border-gray-700">
|
<div class="faq-item bg-gray-800 rounded-lg border border-gray-700">
|
||||||
<button
|
<button class="faq-question w-full flex justify-between items-center text-left p-6">
|
||||||
class="faq-question w-full flex justify-between items-center text-left p-6"
|
<span class="text-lg font-semibold text-white">Is BentoPDF really free?</span>
|
||||||
>
|
<i data-lucide="chevron-down" class="faq-icon w-6 h-6 text-gray-400 transition-transform"></i>
|
||||||
<span class="text-lg font-semibold text-white"
|
|
||||||
>Is BentoPDF really free?</span
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
data-lucide="chevron-down"
|
|
||||||
class="faq-icon w-6 h-6 text-gray-400 transition-transform"
|
|
||||||
></i>
|
|
||||||
</button>
|
</button>
|
||||||
<div
|
<div class="faq-answer max-h-0 overflow-hidden transition-all duration-300 ease-in-out">
|
||||||
class="faq-answer max-h-0 overflow-hidden transition-all duration-300 ease-in-out"
|
|
||||||
>
|
|
||||||
<p class="p-6 pt-0 text-gray-400">
|
<p class="p-6 pt-0 text-gray-400">
|
||||||
Yes, absolutely. All tools on BentoPDF are 100% free to use, with
|
Yes, absolutely. All tools on BentoPDF are 100% free to use, with
|
||||||
no file limits, no sign-ups, and no watermarks. We believe
|
no file limits, no sign-ups, and no watermarks. We believe
|
||||||
@@ -471,20 +347,11 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="faq-item bg-gray-800 rounded-lg border border-gray-700">
|
<div class="faq-item bg-gray-800 rounded-lg border border-gray-700">
|
||||||
<button
|
<button class="faq-question w-full flex justify-between items-center text-left p-6">
|
||||||
class="faq-question w-full flex justify-between items-center text-left p-6"
|
<span class="text-lg font-semibold text-white">Are my files secure? Where are they processed?</span>
|
||||||
>
|
<i data-lucide="chevron-down" class="faq-icon w-6 h-6 text-gray-400 transition-transform"></i>
|
||||||
<span class="text-lg font-semibold text-white"
|
|
||||||
>Are my files secure? Where are they processed?</span
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
data-lucide="chevron-down"
|
|
||||||
class="faq-icon w-6 h-6 text-gray-400 transition-transform"
|
|
||||||
></i>
|
|
||||||
</button>
|
</button>
|
||||||
<div
|
<div class="faq-answer max-h-0 overflow-hidden transition-all duration-300 ease-in-out">
|
||||||
class="faq-answer max-h-0 overflow-hidden transition-all duration-300 ease-in-out"
|
|
||||||
>
|
|
||||||
<p class="p-6 pt-0 text-gray-400">
|
<p class="p-6 pt-0 text-gray-400">
|
||||||
Your files are as secure as possible because they **never leave
|
Your files are as secure as possible because they **never leave
|
||||||
your computer**. All processing happens directly in your web
|
your computer**. All processing happens directly in your web
|
||||||
@@ -495,20 +362,11 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div class="faq-item bg-gray-800 rounded-lg border border-gray-700">
|
<div class="faq-item bg-gray-800 rounded-lg border border-gray-700">
|
||||||
<button
|
<button class="faq-question w-full flex justify-between items-center text-left p-6">
|
||||||
class="faq-question w-full flex justify-between items-center text-left p-6"
|
<span class="text-lg font-semibold text-white">Does it work on Mac, Windows, and Mobile?</span>
|
||||||
>
|
<i data-lucide="chevron-down" class="faq-icon w-6 h-6 text-gray-400 transition-transform"></i>
|
||||||
<span class="text-lg font-semibold text-white"
|
|
||||||
>Does it work on Mac, Windows, and Mobile?</span
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
data-lucide="chevron-down"
|
|
||||||
class="faq-icon w-6 h-6 text-gray-400 transition-transform"
|
|
||||||
></i>
|
|
||||||
</button>
|
</button>
|
||||||
<div
|
<div class="faq-answer max-h-0 overflow-hidden transition-all duration-300 ease-in-out">
|
||||||
class="faq-answer max-h-0 overflow-hidden transition-all duration-300 ease-in-out"
|
|
||||||
>
|
|
||||||
<p class="p-6 pt-0 text-gray-400">
|
<p class="p-6 pt-0 text-gray-400">
|
||||||
Yes! Since BentoPDF runs entirely in your browser, it works on any
|
Yes! Since BentoPDF runs entirely in your browser, it works on any
|
||||||
operating system with a modern web browser, including Windows,
|
operating system with a modern web browser, including Windows,
|
||||||
@@ -519,20 +377,11 @@
|
|||||||
|
|
||||||
<!-- New FAQ: GDPR Compliance -->
|
<!-- New FAQ: GDPR Compliance -->
|
||||||
<div class="faq-item bg-gray-800 rounded-lg border border-gray-700">
|
<div class="faq-item bg-gray-800 rounded-lg border border-gray-700">
|
||||||
<button
|
<button class="faq-question w-full flex justify-between items-center text-left p-6">
|
||||||
class="faq-question w-full flex justify-between items-center text-left p-6"
|
<span class="text-lg font-semibold text-white">Is BentoPDF GDPR compliant?</span>
|
||||||
>
|
<i data-lucide="chevron-down" class="faq-icon w-6 h-6 text-gray-400 transition-transform"></i>
|
||||||
<span class="text-lg font-semibold text-white"
|
|
||||||
>Is BentoPDF GDPR compliant?</span
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
data-lucide="chevron-down"
|
|
||||||
class="faq-icon w-6 h-6 text-gray-400 transition-transform"
|
|
||||||
></i>
|
|
||||||
</button>
|
</button>
|
||||||
<div
|
<div class="faq-answer max-h-0 overflow-hidden transition-all duration-300 ease-in-out">
|
||||||
class="faq-answer max-h-0 overflow-hidden transition-all duration-300 ease-in-out"
|
|
||||||
>
|
|
||||||
<p class="p-6 pt-0 text-gray-400">
|
<p class="p-6 pt-0 text-gray-400">
|
||||||
Yes. BentoPDF is fully GDPR compliant. Since all file processing
|
Yes. BentoPDF is fully GDPR compliant. Since all file processing
|
||||||
happens locally in your browser and we never collect or transmit
|
happens locally in your browser and we never collect or transmit
|
||||||
@@ -544,20 +393,11 @@
|
|||||||
|
|
||||||
<!-- New FAQ: Data Storage -->
|
<!-- New FAQ: Data Storage -->
|
||||||
<div class="faq-item bg-gray-800 rounded-lg border border-gray-700">
|
<div class="faq-item bg-gray-800 rounded-lg border border-gray-700">
|
||||||
<button
|
<button class="faq-question w-full flex justify-between items-center text-left p-6">
|
||||||
class="faq-question w-full flex justify-between items-center text-left p-6"
|
<span class="text-lg font-semibold text-white">Do you store or track any of my files?</span>
|
||||||
>
|
<i data-lucide="chevron-down" class="faq-icon w-6 h-6 text-gray-400 transition-transform"></i>
|
||||||
<span class="text-lg font-semibold text-white"
|
|
||||||
>Do you store or track any of my files?</span
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
data-lucide="chevron-down"
|
|
||||||
class="faq-icon w-6 h-6 text-gray-400 transition-transform"
|
|
||||||
></i>
|
|
||||||
</button>
|
</button>
|
||||||
<div
|
<div class="faq-answer max-h-0 overflow-hidden transition-all duration-300 ease-in-out">
|
||||||
class="faq-answer max-h-0 overflow-hidden transition-all duration-300 ease-in-out"
|
|
||||||
>
|
|
||||||
<p class="p-6 pt-0 text-gray-400">
|
<p class="p-6 pt-0 text-gray-400">
|
||||||
No. We never store, track, or log your files. Everything you do on
|
No. We never store, track, or log your files. Everything you do on
|
||||||
BentoPDF happens in your browser memory and disappears once you
|
BentoPDF happens in your browser memory and disappears once you
|
||||||
@@ -569,20 +409,11 @@
|
|||||||
|
|
||||||
<!-- New FAQ: Privacy -->
|
<!-- New FAQ: Privacy -->
|
||||||
<div class="faq-item bg-gray-800 rounded-lg border border-gray-700">
|
<div class="faq-item bg-gray-800 rounded-lg border border-gray-700">
|
||||||
<button
|
<button class="faq-question w-full flex justify-between items-center text-left p-6">
|
||||||
class="faq-question w-full flex justify-between items-center text-left p-6"
|
<span class="text-lg font-semibold text-white">What makes BentoPDF different from other PDF tools?</span>
|
||||||
>
|
<i data-lucide="chevron-down" class="faq-icon w-6 h-6 text-gray-400 transition-transform"></i>
|
||||||
<span class="text-lg font-semibold text-white"
|
|
||||||
>What makes BentoPDF different from other PDF tools?</span
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
data-lucide="chevron-down"
|
|
||||||
class="faq-icon w-6 h-6 text-gray-400 transition-transform"
|
|
||||||
></i>
|
|
||||||
</button>
|
</button>
|
||||||
<div
|
<div class="faq-answer max-h-0 overflow-hidden transition-all duration-300 ease-in-out">
|
||||||
class="faq-answer max-h-0 overflow-hidden transition-all duration-300 ease-in-out"
|
|
||||||
>
|
|
||||||
<p class="p-6 pt-0 text-gray-400">
|
<p class="p-6 pt-0 text-gray-400">
|
||||||
Most PDF tools upload your files to a server for processing.
|
Most PDF tools upload your files to a server for processing.
|
||||||
BentoPDF never does that. We use secure, modern web technology to
|
BentoPDF never does that. We use secure, modern web technology to
|
||||||
@@ -594,20 +425,11 @@
|
|||||||
|
|
||||||
<!-- New FAQ: Browser-Based -->
|
<!-- New FAQ: Browser-Based -->
|
||||||
<div class="faq-item bg-gray-800 rounded-lg border border-gray-700">
|
<div class="faq-item bg-gray-800 rounded-lg border border-gray-700">
|
||||||
<button
|
<button class="faq-question w-full flex justify-between items-center text-left p-6">
|
||||||
class="faq-question w-full flex justify-between items-center text-left p-6"
|
<span class="text-lg font-semibold text-white">How does browser-based processing keep me safe?</span>
|
||||||
>
|
<i data-lucide="chevron-down" class="faq-icon w-6 h-6 text-gray-400 transition-transform"></i>
|
||||||
<span class="text-lg font-semibold text-white"
|
|
||||||
>How does browser-based processing keep me safe?</span
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
data-lucide="chevron-down"
|
|
||||||
class="faq-icon w-6 h-6 text-gray-400 transition-transform"
|
|
||||||
></i>
|
|
||||||
</button>
|
</button>
|
||||||
<div
|
<div class="faq-answer max-h-0 overflow-hidden transition-all duration-300 ease-in-out">
|
||||||
class="faq-answer max-h-0 overflow-hidden transition-all duration-300 ease-in-out"
|
|
||||||
>
|
|
||||||
<p class="p-6 pt-0 text-gray-400">
|
<p class="p-6 pt-0 text-gray-400">
|
||||||
By running entirely inside your browser, BentoPDF ensures that
|
By running entirely inside your browser, BentoPDF ensures that
|
||||||
your files never leave your device. This eliminates the risks of
|
your files never leave your device. This eliminates the risks of
|
||||||
@@ -619,30 +441,16 @@
|
|||||||
|
|
||||||
<!-- New FAQ: Analytics -->
|
<!-- New FAQ: Analytics -->
|
||||||
<div class="faq-item bg-gray-800 rounded-lg border border-gray-700">
|
<div class="faq-item bg-gray-800 rounded-lg border border-gray-700">
|
||||||
<button
|
<button class="faq-question w-full flex justify-between items-center text-left p-6">
|
||||||
class="faq-question w-full flex justify-between items-center text-left p-6"
|
<span class="text-lg font-semibold text-white">Do you use cookies or analytics to track me?</span>
|
||||||
>
|
<i data-lucide="chevron-down" class="faq-icon w-6 h-6 text-gray-400 transition-transform"></i>
|
||||||
<span class="text-lg font-semibold text-white"
|
|
||||||
>Do you use cookies or analytics to track me?</span
|
|
||||||
>
|
|
||||||
<i
|
|
||||||
data-lucide="chevron-down"
|
|
||||||
class="faq-icon w-6 h-6 text-gray-400 transition-transform"
|
|
||||||
></i>
|
|
||||||
</button>
|
</button>
|
||||||
<div
|
<div class="faq-answer max-h-0 overflow-hidden transition-all duration-300 ease-in-out">
|
||||||
class="faq-answer max-h-0 overflow-hidden transition-all duration-300 ease-in-out"
|
|
||||||
>
|
|
||||||
<p class="p-6 pt-0 text-gray-400">
|
<p class="p-6 pt-0 text-gray-400">
|
||||||
We care about your privacy. BentoPDF does not track personal
|
We care about your privacy. BentoPDF does not track personal
|
||||||
information. We use
|
information. We use
|
||||||
<a
|
<a href="https://simpleanalytics.com" class="text-indigo-400 hover:underline" target="_blank"
|
||||||
href="https://simpleanalytics.com"
|
rel="noopener noreferrer">Simple Analytics</a>
|
||||||
class="text-indigo-400 hover:underline"
|
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
>Simple Analytics</a
|
|
||||||
>
|
|
||||||
solely to see anonymous visit counts. This means we can know how
|
solely to see anonymous visit counts. This means we can know how
|
||||||
many users visit our site, but
|
many users visit our site, but
|
||||||
<strong>we never know who you are</strong>. Simple Analytics is
|
<strong>we never know who you are</strong>. Simple Analytics is
|
||||||
@@ -658,9 +466,7 @@
|
|||||||
<h2 class="text-3xl md:text-4xl font-bold text-center text-white mb-12">
|
<h2 class="text-3xl md:text-4xl font-bold text-center text-white mb-12">
|
||||||
What Our <span class="marker-slanted">Users</span> Say
|
What Our <span class="marker-slanted">Users</span> Say
|
||||||
</h2>
|
</h2>
|
||||||
<div
|
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8 max-w-7xl mx-auto">
|
||||||
class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8 max-w-7xl mx-auto"
|
|
||||||
>
|
|
||||||
<div class="testimonial-card">
|
<div class="testimonial-card">
|
||||||
<div class="flex items-center mb-4">
|
<div class="flex items-center mb-4">
|
||||||
<div>
|
<div>
|
||||||
@@ -757,9 +563,7 @@
|
|||||||
|
|
||||||
<div class="section-divider"></div>
|
<div class="section-divider"></div>
|
||||||
<section id="support-section" class="py-20">
|
<section id="support-section" class="py-20">
|
||||||
<div
|
<div class="max-w-4xl mx-auto text-center bg-gray-800 p-8 md:p-12 rounded-xl border border-gray-700 shadow-2xl">
|
||||||
class="max-w-4xl mx-auto text-center bg-gray-800 p-8 md:p-12 rounded-xl border border-gray-700 shadow-2xl"
|
|
||||||
>
|
|
||||||
<h2 class="text-3xl md:text-4xl font-bold text-white mb-4">
|
<h2 class="text-3xl md:text-4xl font-bold text-white mb-4">
|
||||||
Like My Work?
|
Like My Work?
|
||||||
</h2>
|
</h2>
|
||||||
@@ -769,12 +573,8 @@
|
|||||||
supporting its development. Every coffee helps!
|
supporting its development. Every coffee helps!
|
||||||
</p>
|
</p>
|
||||||
|
|
||||||
<a
|
<a href="https://ko-fi.com/alio01" target="_blank" rel="noopener noreferrer"
|
||||||
href="https://ko-fi.com/alio01"
|
class="inline-flex items-center gap-3 px-8 py-3 rounded-full bg-gradient-to-b from-indigo-500 to-indigo-600 text-white font-semibold focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-900 focus:ring-indigo-400 hover:shadow-xl hover:shadow-indigo-500/30 transition-all duration-200 transform hover:-translate-y-1 mt-5">
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
class="inline-flex items-center gap-3 px-8 py-3 rounded-full bg-gradient-to-b from-indigo-500 to-indigo-600 text-white font-semibold focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-900 focus:ring-indigo-400 hover:shadow-xl hover:shadow-indigo-500/30 transition-all duration-200 transform hover:-translate-y-1 mt-5"
|
|
||||||
>
|
|
||||||
<i data-lucide="coffee" class="w-7 h-7"></i>
|
<i data-lucide="coffee" class="w-7 h-7"></i>
|
||||||
<span>Buy Me a Coffee</span>
|
<span>Buy Me a Coffee</span>
|
||||||
</a>
|
</a>
|
||||||
@@ -786,38 +586,31 @@
|
|||||||
|
|
||||||
<footer class="mt-16 border-t-2 border-gray-700 py-8">
|
<footer class="mt-16 border-t-2 border-gray-700 py-8">
|
||||||
<div class="container mx-auto px-4">
|
<div class="container mx-auto px-4">
|
||||||
<div
|
<div class="grid grid-cols-1 md:grid-cols-4 gap-8 text-center md:text-left">
|
||||||
class="grid grid-cols-1 md:grid-cols-4 gap-8 text-center md:text-left"
|
|
||||||
>
|
|
||||||
<div class="mb-8 md:mb-0">
|
<div class="mb-8 md:mb-0">
|
||||||
<div class="flex items-center justify-center md:justify-start mb-4">
|
<div class="flex items-center justify-center md:justify-start mb-4">
|
||||||
<img
|
<img src="public/images/favicon.svg" alt="Bento PDF Logo" class="h-10 w-10 mr-3" />
|
||||||
src="public/images/favicon.svg"
|
|
||||||
alt="Bento PDF Logo"
|
|
||||||
class="h-10 w-10 mr-3"
|
|
||||||
/>
|
|
||||||
<span class="text-xl font-bold text-white">BentoPDF</span>
|
<span class="text-xl font-bold text-white">BentoPDF</span>
|
||||||
</div>
|
</div>
|
||||||
<p class="text-gray-400 text-sm">
|
<p class="text-gray-400 text-sm">
|
||||||
© 2025 BentoPDF. All rights reserved.
|
© 2025 BentoPDF. All rights reserved.
|
||||||
</p>
|
</p>
|
||||||
|
<p class="text-gray-500 text-xs mt-2">
|
||||||
|
Version <span id="app-version"></span>
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<h3 class="font-bold text-white mb-4">Company</h3>
|
<h3 class="font-bold text-white mb-4">Company</h3>
|
||||||
<ul class="space-y-2 text-gray-400">
|
<ul class="space-y-2 text-gray-400">
|
||||||
<li>
|
<li>
|
||||||
<a href="./about.html" class="hover:text-indigo-400"
|
<a href="./about.html" class="hover:text-indigo-400">About Us</a>
|
||||||
>About Us</a
|
|
||||||
>
|
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="./faq.html" class="hover:text-indigo-400">FAQ</a>
|
<a href="./faq.html" class="hover:text-indigo-400">FAQ</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="./contact.html" class="hover:text-indigo-400"
|
<a href="./contact.html" class="hover:text-indigo-400">Contact Us</a>
|
||||||
>Contact Us</a
|
|
||||||
>
|
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@@ -826,14 +619,13 @@
|
|||||||
<h3 class="font-bold text-white mb-4">Legal</h3>
|
<h3 class="font-bold text-white mb-4">Legal</h3>
|
||||||
<ul class="space-y-2 text-gray-400">
|
<ul class="space-y-2 text-gray-400">
|
||||||
<li>
|
<li>
|
||||||
<a href="./terms.html" class="hover:text-indigo-400"
|
<a href="./licensing.html" class="hover:text-indigo-400">Licensing</a>
|
||||||
>Terms and Conditions</a
|
|
||||||
>
|
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="./privacy.html" class="hover:text-indigo-400"
|
<a href="./terms.html" class="hover:text-indigo-400">Terms and Conditions</a>
|
||||||
>Privacy Policy</a
|
</li>
|
||||||
>
|
<li>
|
||||||
|
<a href="./privacy.html" class="hover:text-indigo-400">Privacy Policy</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@@ -841,72 +633,33 @@
|
|||||||
<div>
|
<div>
|
||||||
<h3 class="font-bold text-white mb-4">Follow Us</h3>
|
<h3 class="font-bold text-white mb-4">Follow Us</h3>
|
||||||
<div class="flex justify-center md:justify-start space-x-4">
|
<div class="flex justify-center md:justify-start space-x-4">
|
||||||
<a
|
<a href="https://github.com/alam00000/bentopdf" target="_blank" rel="noopener noreferrer"
|
||||||
href="https://github.com/alam00000/bentopdf"
|
class="text-gray-400 hover:text-indigo-400" title="GitHub">
|
||||||
target="_blank"
|
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
rel="noopener noreferrer"
|
<path fill-rule="evenodd"
|
||||||
class="text-gray-400 hover:text-indigo-400"
|
|
||||||
title="GitHub"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
class="w-6 h-6"
|
|
||||||
fill="currentColor"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
aria-hidden="true"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
fill-rule="evenodd"
|
|
||||||
d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z"
|
d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z"
|
||||||
clip-rule="evenodd"
|
clip-rule="evenodd" />
|
||||||
/>
|
|
||||||
</svg>
|
</svg>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a href="https://discord.gg/q42xWQmJ" target="_blank" rel="noopener noreferrer"
|
||||||
href="https://discord.gg/q42xWQmJ"
|
class="text-gray-400 hover:text-indigo-400" title="Discord">
|
||||||
target="_blank"
|
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
rel="noopener noreferrer"
|
|
||||||
class="text-gray-400 hover:text-indigo-400"
|
|
||||||
title="Discord"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
class="w-6 h-6"
|
|
||||||
fill="currentColor"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
aria-hidden="true"
|
|
||||||
>
|
|
||||||
<path
|
<path
|
||||||
d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515a.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0a12.64 12.64 0 0 0-.617-1.25a.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057a19.9 19.9 0 0 0 5.993 3.03a.078.078 0 0 0 .084-.028a14.09 14.09 0 0 0 1.226-1.994a.076.076 0 0 0-.041-.106a13.107 13.107 0 0 1-1.872-.892a.077.077 0 0 1-.008-.128a10.2 10.2 0 0 0 .372-.292a.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127a12.299 12.299 0 0 1-1.873.892a.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028a19.839 19.839 0 0 0 6.002-3.03a.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419c0-1.333.956-2.419 2.157-2.419c1.21 0 2.176 1.096 2.157 2.42c0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419c0-1.333.955-2.419 2.157-2.419c1.21 0 2.176 1.096 2.157 2.42c0 1.333-.946 2.418-2.157 2.418z"
|
d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515a.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0a12.64 12.64 0 0 0-.617-1.25a.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057a19.9 19.9 0 0 0 5.993 3.03a.078.078 0 0 0 .084-.028a14.09 14.09 0 0 0 1.226-1.994a.076.076 0 0 0-.041-.106a13.107 13.107 0 0 1-1.872-.892a.077.077 0 0 1-.008-.128a10.2 10.2 0 0 0 .372-.292a.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127a12.299 12.299 0 0 1-1.873.892a.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028a19.839 19.839 0 0 0 6.002-3.03a.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419c0-1.333.956-2.419 2.157-2.419c1.21 0 2.176 1.096 2.157 2.42c0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419c0-1.333.955-2.419 2.157-2.419c1.21 0 2.176 1.096 2.157 2.42c0 1.333-.946 2.418-2.157 2.418z" />
|
||||||
/>
|
|
||||||
</svg>
|
</svg>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a href="https://www.instagram.com/thebentopdf/" class="text-gray-400 hover:text-indigo-400"
|
||||||
href="https://www.instagram.com/thebentopdf/"
|
title="Instagram">
|
||||||
class="text-gray-400 hover:text-indigo-400"
|
|
||||||
title="Instagram"
|
|
||||||
>
|
|
||||||
<i data-lucide="instagram"></i>
|
<i data-lucide="instagram"></i>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a href="https://www.linkedin.com/company/bentopdf/" class="text-gray-400 hover:text-indigo-400"
|
||||||
href="https://www.linkedin.com/company/bentopdf/"
|
title="LinkedIn">
|
||||||
class="text-gray-400 hover:text-indigo-400"
|
|
||||||
title="LinkedIn"
|
|
||||||
>
|
|
||||||
<i data-lucide="linkedin"></i>
|
<i data-lucide="linkedin"></i>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a href="https://x.com/BentoPDF" class="text-gray-400 hover:text-indigo-400" title="X (Twitter)">
|
||||||
href="https://x.com/BentoPDF"
|
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
class="text-gray-400 hover:text-indigo-400"
|
|
||||||
title="X (Twitter)"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
class="w-6 h-6"
|
|
||||||
fill="currentColor"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
aria-hidden="true"
|
|
||||||
>
|
|
||||||
<path
|
<path
|
||||||
d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"
|
d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" />
|
||||||
/>
|
|
||||||
</svg>
|
</svg>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -916,7 +669,9 @@
|
|||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
<script type="module" src="src/js/utils/lucide-init.ts"></script>
|
<script type="module" src="src/js/utils/lucide-init.ts"></script>
|
||||||
|
<script type="module" src="src/version.ts"></script>
|
||||||
<script type="module" src="src/js/main.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/mobileMenu.ts"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
+656
@@ -0,0 +1,656 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="en">
|
||||||
|
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>Licensing - BentoPDF</title>
|
||||||
|
<link href="/src/css/styles.css" rel="stylesheet" />
|
||||||
|
</head>
|
||||||
|
|
||||||
|
<body class="antialiased bg-gray-900 text-gray-300">
|
||||||
|
<nav class="bg-gray-800 border-b border-gray-700 sticky top-0 z-30">
|
||||||
|
<div class="container mx-auto px-4">
|
||||||
|
<div class="flex justify-between items-center h-16">
|
||||||
|
<div class="flex-shrink-0 flex items-center cursor-pointer" id="home-logo">
|
||||||
|
<img src="images/favicon.svg" alt="Bento PDF Logo" class="h-8 w-8" />
|
||||||
|
<span class="text-white font-bold text-xl ml-2">
|
||||||
|
<a href="index.html">BentoPDF</a>
|
||||||
|
</span>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Desktop Navigation -->
|
||||||
|
<div class="hidden md:flex items-center space-x-8">
|
||||||
|
<a href="index.html" class="nav-link">Home</a>
|
||||||
|
<a href="./about.html" class="nav-link">About</a>
|
||||||
|
<a href="./contact.html" class="nav-link">Contact</a>
|
||||||
|
<a href="./licensing.html" class="nav-link">Licensing</a>
|
||||||
|
<a href="index.html#tools-header" class="nav-link">All Tools</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Mobile Hamburger Button -->
|
||||||
|
<div class="md:hidden flex items-center">
|
||||||
|
<button id="mobile-menu-button" type="button"
|
||||||
|
class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500 transition-colors"
|
||||||
|
aria-controls="mobile-menu" aria-expanded="false">
|
||||||
|
<span class="sr-only">Open main menu</span>
|
||||||
|
<!-- Hamburger Icon -->
|
||||||
|
<svg id="menu-icon" class="block h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none"
|
||||||
|
viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M4 6h16M4 12h16M4 18h16" />
|
||||||
|
</svg>
|
||||||
|
<!-- Close Icon -->
|
||||||
|
<svg id="close-icon" class="hidden h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none"
|
||||||
|
viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
|
||||||
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
|
||||||
|
d="M6 18L18 6M6 6l12 12" />
|
||||||
|
</svg>
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Mobile Menu Dropdown -->
|
||||||
|
<div id="mobile-menu" class="hidden md:hidden bg-gray-800 border-t border-gray-700">
|
||||||
|
<div class="px-2 pt-2 pb-3 space-y-1 text-center">
|
||||||
|
<a href="index.html" class="mobile-nav-link">Home</a>
|
||||||
|
<a href="./about.html" class="mobile-nav-link">About</a>
|
||||||
|
<a href="./contact.html" class="mobile-nav-link">Contact</a>
|
||||||
|
<a href="./licensing.html" class="mobile-nav-link">Licensing</a>
|
||||||
|
<a href="index.html#tools-header" class="mobile-nav-link">All Tools</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</nav>
|
||||||
|
|
||||||
|
<div id="app" class="min-h-screen container mx-auto p-4 md:p-8">
|
||||||
|
<section id="licensing-hero" class="text-center py-16 md:py-24">
|
||||||
|
<h1 class="text-3xl md:text-6xl font-bold text-white mb-4">
|
||||||
|
Licensing for
|
||||||
|
<span class="marker-slanted">BentoPDF</span>
|
||||||
|
</h1>
|
||||||
|
<p class="text-lg md:text-xl text-gray-400">
|
||||||
|
Choose the license that fits your needs.
|
||||||
|
</p>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<div class="section-divider"></div>
|
||||||
|
|
||||||
|
<section id="licensing-options" class="py-16 max-w-6xl mx-auto">
|
||||||
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-8">
|
||||||
|
<!-- Open Source License -->
|
||||||
|
<div class="bg-gray-800 rounded-xl p-8 border border-gray-700">
|
||||||
|
<div class="flex items-center gap-4 mb-6">
|
||||||
|
<i data-lucide="code-2" class="w-12 h-12 text-green-400 flex-shrink-0"></i>
|
||||||
|
<h2 class="text-3xl font-bold text-white">Open Source</h2>
|
||||||
|
</div>
|
||||||
|
<p class="text-gray-400 mb-6 leading-relaxed">
|
||||||
|
BentoPDF is licensed under the
|
||||||
|
<strong class="text-white">GNU Affero General Public License v3.0 (AGPL-3.0)</strong>.
|
||||||
|
You are free to use, modify, and distribute BentoPDF in your open-source projects.
|
||||||
|
</p>
|
||||||
|
<div class="space-y-4">
|
||||||
|
<div class="flex items-start gap-3">
|
||||||
|
<i data-lucide="check-circle" class="w-6 h-6 text-green-400 flex-shrink-0 mt-1"></i>
|
||||||
|
<div>
|
||||||
|
<h3 class="text-white font-semibold mb-1">Free to Use</h3>
|
||||||
|
<p class="text-gray-400 text-sm">
|
||||||
|
Use BentoPDF for free in open-source projects where you
|
||||||
|
make your source code publicly available.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-start gap-3">
|
||||||
|
<i data-lucide="check-circle" class="w-6 h-6 text-green-400 flex-shrink-0 mt-1"></i>
|
||||||
|
<div>
|
||||||
|
<h3 class="text-white font-semibold mb-1">
|
||||||
|
Modify & Distribute
|
||||||
|
</h3>
|
||||||
|
<p class="text-gray-400 text-sm">
|
||||||
|
Modify the source code and distribute your version, as long
|
||||||
|
as you comply with AGPL-3.0 requirements.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-start gap-3">
|
||||||
|
<i data-lucide="alert-circle" class="w-6 h-6 text-yellow-400 flex-shrink-0 mt-1"></i>
|
||||||
|
<div>
|
||||||
|
<h3 class="text-white font-semibold mb-1">Share Alike</h3>
|
||||||
|
<p class="text-gray-400 text-sm">
|
||||||
|
Any modifications or derivative works must also be licensed
|
||||||
|
under AGPL-3.0 and made publicly available.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<a href="https://github.com/alam00000/bentopdf" target="_blank" rel="noopener noreferrer"
|
||||||
|
class="inline-block mt-8 px-6 py-3 rounded-lg bg-green-600 text-white font-semibold hover:bg-green-700 transition-colors">
|
||||||
|
View on GitHub
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- Commercial License -->
|
||||||
|
<div class="bg-gray-800 rounded-xl p-8 border border-indigo-500">
|
||||||
|
<div class="flex items-center gap-4 mb-6">
|
||||||
|
<i data-lucide="briefcase" class="w-12 h-12 text-indigo-400 flex-shrink-0"></i>
|
||||||
|
<h2 class="text-3xl font-bold text-white">Commercial</h2>
|
||||||
|
</div>
|
||||||
|
<p class="text-gray-400 mb-6 leading-relaxed">
|
||||||
|
If you want to use BentoPDF in a
|
||||||
|
<strong class="text-white">closed-source or proprietary application</strong>
|
||||||
|
without sharing your source code, you must purchase a commercial license.
|
||||||
|
</p>
|
||||||
|
<div class="space-y-4">
|
||||||
|
<div class="flex items-start gap-3">
|
||||||
|
<i data-lucide="lock" class="w-6 h-6 text-indigo-400 flex-shrink-0 mt-1"></i>
|
||||||
|
<div>
|
||||||
|
<h3 class="text-white font-semibold mb-1">
|
||||||
|
Proprietary Use
|
||||||
|
</h3>
|
||||||
|
<p class="text-gray-400 text-sm">
|
||||||
|
Use BentoPDF in closed-source applications without the
|
||||||
|
obligation to disclose your source code.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-start gap-3">
|
||||||
|
<i data-lucide="shield-check" class="w-6 h-6 text-indigo-400 flex-shrink-0 mt-1"></i>
|
||||||
|
<div>
|
||||||
|
<h3 class="text-white font-semibold mb-1">
|
||||||
|
Enterprise Support
|
||||||
|
</h3>
|
||||||
|
<p class="text-gray-400 text-sm">
|
||||||
|
Get priority support, custom features, and assistance with
|
||||||
|
integration.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-start gap-3">
|
||||||
|
<i data-lucide="zap" class="w-6 h-6 text-indigo-400 flex-shrink-0 mt-1"></i>
|
||||||
|
<div>
|
||||||
|
<h3 class="text-white font-semibold mb-1">
|
||||||
|
Early Access to New Features
|
||||||
|
</h3>
|
||||||
|
<p class="text-gray-400 text-sm">
|
||||||
|
Commercial license holders get early access to new features and updates.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-start gap-3">
|
||||||
|
<i data-lucide="file-check" class="w-6 h-6 text-indigo-400 flex-shrink-0 mt-1"></i>
|
||||||
|
<div>
|
||||||
|
<h3 class="text-white font-semibold mb-1">
|
||||||
|
Flexible Terms
|
||||||
|
</h3>
|
||||||
|
<p class="text-gray-400 text-sm">
|
||||||
|
Licensing terms tailored to your business needs and project
|
||||||
|
requirements.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="mt-8 bg-gradient-to-r from-indigo-900/40 to-purple-900/40 rounded-lg p-6 border border-indigo-500/50">
|
||||||
|
<div class="text-center">
|
||||||
|
<p class="text-white text-2xl font-bold mb-2">Lifetime License</p>
|
||||||
|
<p class="text-indigo-300 text-4xl font-bold mb-3">$49 <span
|
||||||
|
class="text-lg font-normal text-gray-400">one-time</span></p>
|
||||||
|
<p class="text-gray-300 text-sm mb-4">Includes all feature updates forever</p>
|
||||||
|
<a href="https://ko-fi.com/s/f32ca4cb75" target="_blank" rel="noopener noreferrer"
|
||||||
|
class="inline-block px-8 py-3 rounded-lg bg-indigo-600 text-white font-semibold hover:bg-indigo-700 transition-colors shadow-lg">
|
||||||
|
Purchase Lifetime License
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<p class="mt-4 text-sm text-gray-400 italic text-center">
|
||||||
|
💡 Custom requests and development are available for separate charges. <a href="./contact.html"
|
||||||
|
class="text-indigo-400 hover:underline">Contact us</a> for details.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<div class="section-divider"></div>
|
||||||
|
|
||||||
|
<section id="license-comparison" class="py-16 max-w-6xl mx-auto">
|
||||||
|
<h2 class="text-3xl md:text-4xl font-bold text-center text-white mb-4">
|
||||||
|
Do I Need a <span class="marker-slanted">Commercial License?</span>
|
||||||
|
</h2>
|
||||||
|
<p class="text-center text-gray-400 mb-12 max-w-3xl mx-auto">
|
||||||
|
Use this quick reference chart to determine if your use case requires a commercial license.
|
||||||
|
</p>
|
||||||
|
|
||||||
|
<div class="overflow-x-auto">
|
||||||
|
<table class="w-full bg-gray-800 rounded-xl overflow-hidden border border-gray-700">
|
||||||
|
<thead>
|
||||||
|
<tr class="bg-gray-700">
|
||||||
|
<th class="px-6 py-4 text-left text-white font-semibold border-b border-gray-600">Use Case
|
||||||
|
</th>
|
||||||
|
<th class="px-6 py-4 text-center text-white font-semibold border-b border-gray-600 w-48">
|
||||||
|
License Required</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody class="divide-y divide-gray-700">
|
||||||
|
<tr class="hover:bg-gray-750 transition-colors">
|
||||||
|
<td class="px-6 py-4 text-gray-300">Personal use (not hosting as a service)</td>
|
||||||
|
<td class="px-6 py-4 text-center">
|
||||||
|
<span
|
||||||
|
class="inline-flex items-center gap-2 px-3 py-1 bg-green-900/30 text-green-400 rounded-full text-sm font-semibold">
|
||||||
|
<i data-lucide="check" class="w-4 h-4"></i> AGPL (Free)
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="hover:bg-gray-750 transition-colors">
|
||||||
|
<td class="px-6 py-4 text-gray-300">Open-source project with publicly available source code
|
||||||
|
</td>
|
||||||
|
<td class="px-6 py-4 text-center">
|
||||||
|
<span
|
||||||
|
class="inline-flex items-center gap-2 px-3 py-1 bg-green-900/30 text-green-400 rounded-full text-sm font-semibold">
|
||||||
|
<i data-lucide="check" class="w-4 h-4"></i> AGPL (Free)
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="hover:bg-gray-750 transition-colors">
|
||||||
|
<td class="px-6 py-4 text-gray-300">Public website where you share your full modified source
|
||||||
|
code under AGPL</td>
|
||||||
|
<td class="px-6 py-4 text-center">
|
||||||
|
<span
|
||||||
|
class="inline-flex items-center gap-2 px-3 py-1 bg-green-900/30 text-green-400 rounded-full text-sm font-semibold">
|
||||||
|
<i data-lucide="check" class="w-4 h-4"></i> AGPL (Free)
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="hover:bg-gray-750 transition-colors">
|
||||||
|
<td class="px-6 py-4 text-gray-300">Educational/research project with publicly shared code
|
||||||
|
</td>
|
||||||
|
<td class="px-6 py-4 text-center">
|
||||||
|
<span
|
||||||
|
class="inline-flex items-center gap-2 px-3 py-1 bg-green-900/30 text-green-400 rounded-full text-sm font-semibold">
|
||||||
|
<i data-lucide="check" class="w-4 h-4"></i> AGPL (Free)
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="bg-red-900/10 hover:bg-red-900/20 transition-colors">
|
||||||
|
<td class="px-6 py-4 text-gray-300 font-medium">SaaS or web application (closed-source)</td>
|
||||||
|
<td class="px-6 py-4 text-center">
|
||||||
|
<span
|
||||||
|
class="inline-flex items-center gap-2 px-3 py-1 bg-red-900/30 text-red-400 rounded-full text-sm font-semibold">
|
||||||
|
<i data-lucide="shopping-cart" class="w-4 h-4"></i> Commercial
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="bg-red-900/10 hover:bg-red-900/20 transition-colors">
|
||||||
|
<td class="px-6 py-4 text-gray-300 font-medium">Internal company tool/dashboard (source not
|
||||||
|
shared with users)</td>
|
||||||
|
<td class="px-6 py-4 text-center">
|
||||||
|
<span
|
||||||
|
class="inline-flex items-center gap-2 px-3 py-1 bg-red-900/30 text-red-400 rounded-full text-sm font-semibold">
|
||||||
|
<i data-lucide="shopping-cart" class="w-4 h-4"></i> Commercial
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="bg-red-900/10 hover:bg-red-900/20 transition-colors">
|
||||||
|
<td class="px-6 py-4 text-gray-300 font-medium">Commercial product (keeping source code
|
||||||
|
private)</td>
|
||||||
|
<td class="px-6 py-4 text-center">
|
||||||
|
<span
|
||||||
|
class="inline-flex items-center gap-2 px-3 py-1 bg-red-900/30 text-red-400 rounded-full text-sm font-semibold">
|
||||||
|
<i data-lucide="shopping-cart" class="w-4 h-4"></i> Commercial
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="bg-red-900/10 hover:bg-red-900/20 transition-colors">
|
||||||
|
<td class="px-6 py-4 text-gray-300 font-medium">Network service where source code is not
|
||||||
|
accessible to users</td>
|
||||||
|
<td class="px-6 py-4 text-center">
|
||||||
|
<span
|
||||||
|
class="inline-flex items-center gap-2 px-3 py-1 bg-red-900/30 text-red-400 rounded-full text-sm font-semibold">
|
||||||
|
<i data-lucide="shopping-cart" class="w-4 h-4"></i> Commercial
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
<tr class="bg-red-900/10 hover:bg-red-900/20 transition-colors">
|
||||||
|
<td class="px-6 py-4 text-gray-300 font-medium">Any app where you want to keep modifications
|
||||||
|
private</td>
|
||||||
|
<td class="px-6 py-4 text-center">
|
||||||
|
<span
|
||||||
|
class="inline-flex items-center gap-2 px-3 py-1 bg-red-900/30 text-red-400 rounded-full text-sm font-semibold">
|
||||||
|
<i data-lucide="shopping-cart" class="w-4 h-4"></i> Commercial
|
||||||
|
</span>
|
||||||
|
</td>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="mt-8 text-center">
|
||||||
|
<p class="text-gray-400 text-sm">
|
||||||
|
Still not sure? <a href="./contact.html"
|
||||||
|
class="text-indigo-400 hover:underline font-semibold">Contact us</a> to discuss your specific
|
||||||
|
use case.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<div class="section-divider"></div>
|
||||||
|
|
||||||
|
<section id="agpl-requirements" class="py-16 max-w-6xl mx-auto">
|
||||||
|
<h2 class="text-3xl md:text-4xl font-bold text-center text-white mb-12">
|
||||||
|
AGPL <span class="marker-slanted">Requirements</span>
|
||||||
|
</h2>
|
||||||
|
<div class="bg-gray-800 rounded-xl p-8 border border-gray-700 mb-8">
|
||||||
|
<p class="text-gray-300 mb-6 leading-relaxed">
|
||||||
|
When using BentoPDF under AGPL-3.0, you must comply with the following requirements:
|
||||||
|
</p>
|
||||||
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
|
||||||
|
<div class="flex items-start gap-3">
|
||||||
|
<i data-lucide="file-text" class="w-6 h-6 text-indigo-400 flex-shrink-0 mt-1"></i>
|
||||||
|
<div>
|
||||||
|
<h3 class="text-white font-semibold mb-2">Producer Line & Copyright</h3>
|
||||||
|
<p class="text-gray-400 text-sm">
|
||||||
|
You should mention our open-source and include AGPL license details in the PDF metadata.
|
||||||
|
You should also retain the producer line in all PDFs created or modified using our
|
||||||
|
open-source.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-start gap-3">
|
||||||
|
<i data-lucide="code" class="w-6 h-6 text-indigo-400 flex-shrink-0 mt-1"></i>
|
||||||
|
<div>
|
||||||
|
<h3 class="text-white font-semibold mb-2">Code Modifications</h3>
|
||||||
|
<p class="text-gray-400 text-sm">
|
||||||
|
Any modifications to our open-source must be disclosed under the AGPL. This includes
|
||||||
|
sharing the modified code with any users interacting with it.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-start gap-3">
|
||||||
|
<i data-lucide="check-circle-2" class="w-6 h-6 text-indigo-400 flex-shrink-0 mt-1"></i>
|
||||||
|
<div>
|
||||||
|
<h3 class="text-white font-semibold mb-2">AGPL-Compliant Environments Only</h3>
|
||||||
|
<p class="text-gray-400 text-sm">
|
||||||
|
Usage of our open-source Community Edition must be limited to AGPL-compliant
|
||||||
|
environments, where all AGPL requirements are fully respected.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="flex items-start gap-3">
|
||||||
|
<i data-lucide="git-branch" class="w-6 h-6 text-indigo-400 flex-shrink-0 mt-1"></i>
|
||||||
|
<div>
|
||||||
|
<h3 class="text-white font-semibold mb-2">Source Code Disclosure</h3>
|
||||||
|
<p class="text-gray-400 text-sm">
|
||||||
|
You cannot deploy our open-source as part of a server-based application or service
|
||||||
|
without disclosing your own application's full source code under AGPL to any users
|
||||||
|
interacting with it.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<div class="section-divider"></div>
|
||||||
|
|
||||||
|
<section id="agpl-compliance" class="py-16 max-w-6xl mx-auto">
|
||||||
|
<h2 class="text-3xl md:text-4xl font-bold text-center text-white mb-12">
|
||||||
|
What is <span class="marker-slanted">AGPL-Compliant?</span>
|
||||||
|
</h2>
|
||||||
|
<div class="grid grid-cols-1 md:grid-cols-2 gap-8">
|
||||||
|
<!-- AGPL-Compliant -->
|
||||||
|
<div class="bg-green-900/20 border-2 border-green-500/30 rounded-xl p-6">
|
||||||
|
<div class="flex items-center gap-3 mb-4">
|
||||||
|
<i data-lucide="check-circle" class="w-8 h-8 text-green-400"></i>
|
||||||
|
<h3 class="text-2xl font-bold text-white">AGPL-Compliant</h3>
|
||||||
|
</div>
|
||||||
|
<ul class="space-y-3">
|
||||||
|
<li class="flex items-start gap-2">
|
||||||
|
<i data-lucide="check" class="w-5 h-5 text-green-400 flex-shrink-0 mt-0.5"></i>
|
||||||
|
<span class="text-gray-300 text-sm">Open-source projects where you share your full source
|
||||||
|
code publicly</span>
|
||||||
|
</li>
|
||||||
|
<li class="flex items-start gap-2">
|
||||||
|
<i data-lucide="check" class="w-5 h-5 text-green-400 flex-shrink-0 mt-0.5"></i>
|
||||||
|
<span class="text-gray-300 text-sm">Personal use where you're not distributing or hosting it
|
||||||
|
as a service</span>
|
||||||
|
</li>
|
||||||
|
<li class="flex items-start gap-2">
|
||||||
|
<i data-lucide="check" class="w-5 h-5 text-green-400 flex-shrink-0 mt-0.5"></i>
|
||||||
|
<span class="text-gray-300 text-sm">Publicly hosted tools where you provide the complete
|
||||||
|
source code (including modifications) under AGPL</span>
|
||||||
|
</li>
|
||||||
|
<li class="flex items-start gap-2">
|
||||||
|
<i data-lucide="check" class="w-5 h-5 text-green-400 flex-shrink-0 mt-0.5"></i>
|
||||||
|
<span class="text-gray-300 text-sm">Educational or research projects that make all code
|
||||||
|
publicly available</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<!-- NOT AGPL-Compliant -->
|
||||||
|
<div class="bg-red-900/20 border-2 border-red-500/30 rounded-xl p-6">
|
||||||
|
<div class="flex items-center gap-3 mb-4">
|
||||||
|
<i data-lucide="x-circle" class="w-8 h-8 text-red-400"></i>
|
||||||
|
<h3 class="text-2xl font-bold text-white">NOT AGPL-Compliant</h3>
|
||||||
|
</div>
|
||||||
|
<ul class="space-y-3">
|
||||||
|
<li class="flex items-start gap-2">
|
||||||
|
<i data-lucide="x" class="w-5 h-5 text-red-400 flex-shrink-0 mt-0.5"></i>
|
||||||
|
<span class="text-gray-300 text-sm">Proprietary/closed-source SaaS applications</span>
|
||||||
|
</li>
|
||||||
|
<li class="flex items-start gap-2">
|
||||||
|
<i data-lucide="x" class="w-5 h-5 text-red-400 flex-shrink-0 mt-0.5"></i>
|
||||||
|
<span class="text-gray-300 text-sm">Internal company tools where source code is not shared
|
||||||
|
with users</span>
|
||||||
|
</li>
|
||||||
|
<li class="flex items-start gap-2">
|
||||||
|
<i data-lucide="x" class="w-5 h-5 text-red-400 flex-shrink-0 mt-0.5"></i>
|
||||||
|
<span class="text-gray-300 text-sm">Commercial products that don't disclose the full source
|
||||||
|
code</span>
|
||||||
|
</li>
|
||||||
|
<li class="flex items-start gap-2">
|
||||||
|
<i data-lucide="x" class="w-5 h-5 text-red-400 flex-shrink-0 mt-0.5"></i>
|
||||||
|
<span class="text-gray-300 text-sm">Network services that don't provide source code access
|
||||||
|
to users</span>
|
||||||
|
</li>
|
||||||
|
<li class="flex items-start gap-2">
|
||||||
|
<i data-lucide="x" class="w-5 h-5 text-red-400 flex-shrink-0 mt-0.5"></i>
|
||||||
|
<span class="text-gray-300 text-sm">Any application where you want to keep your source code
|
||||||
|
private</span>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
<p class="mt-4 text-sm text-yellow-400 italic">
|
||||||
|
⚠️ These use cases require a commercial license.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<div class="section-divider"></div>
|
||||||
|
|
||||||
|
<section id="licensing-faq" class="py-16 max-w-4xl mx-auto">
|
||||||
|
<h2 class="text-3xl md:text-4xl font-bold text-center text-white mb-12">
|
||||||
|
Licensing <span class="marker-slanted">FAQs</span>
|
||||||
|
</h2>
|
||||||
|
<div id="faq-accordion" class="space-y-4">
|
||||||
|
<div class="faq-item bg-gray-800 rounded-lg border border-gray-700">
|
||||||
|
<button class="faq-question w-full flex justify-between items-center text-left p-6">
|
||||||
|
<span class="text-lg font-semibold text-white">Do I need a commercial license if I'm using
|
||||||
|
BentoPDF on my
|
||||||
|
website?</span>
|
||||||
|
<i data-lucide="chevron-down" class="faq-icon w-6 h-6 text-gray-400 transition-transform"></i>
|
||||||
|
</button>
|
||||||
|
<div class="faq-answer max-h-0 overflow-hidden transition-all duration-300 ease-in-out">
|
||||||
|
<p class="p-6 pt-0 text-gray-400">
|
||||||
|
If you're using BentoPDF on a public website and have not modified the
|
||||||
|
source code, you do not need a commercial license. However, if you modify
|
||||||
|
BentoPDF in any way and make it available to users over a network, the
|
||||||
|
AGPLv3 requires you to provide your modified source code to those users.
|
||||||
|
If you want to keep your modifications closed-source, or if you are
|
||||||
|
integrating BentoPDF into a proprietary or commercial product, you will
|
||||||
|
need a commercial license. Contact us to discuss your specific use case.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="faq-item bg-gray-800 rounded-lg border border-gray-700">
|
||||||
|
<button class="faq-question w-full flex justify-between items-center text-left p-6">
|
||||||
|
<span class="text-lg font-semibold text-white">Can I use BentoPDF for internal company
|
||||||
|
tools?</span>
|
||||||
|
<i data-lucide="chevron-down" class="faq-icon w-6 h-6 text-gray-400 transition-transform"></i>
|
||||||
|
</button>
|
||||||
|
<div class="faq-answer max-h-0 overflow-hidden transition-all duration-300 ease-in-out">
|
||||||
|
<p class="p-6 pt-0 text-gray-400">
|
||||||
|
If your internal tool is closed-source and not shared publicly,
|
||||||
|
you will need a commercial license. The AGPL-3.0 license
|
||||||
|
requires that you make the source code of any network-accessible
|
||||||
|
service using BentoPDF available to its users. If you cannot or
|
||||||
|
do not want to do that, a commercial license is the right
|
||||||
|
choice.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="faq-item bg-gray-800 rounded-lg border border-gray-700">
|
||||||
|
<button class="faq-question w-full flex justify-between items-center text-left p-6">
|
||||||
|
<span class="text-lg font-semibold text-white">What if I modify BentoPDF for my own use?</span>
|
||||||
|
<i data-lucide="chevron-down" class="faq-icon w-6 h-6 text-gray-400 transition-transform"></i>
|
||||||
|
</button>
|
||||||
|
<div class="faq-answer max-h-0 overflow-hidden transition-all duration-300 ease-in-out">
|
||||||
|
<p class="p-6 pt-0 text-gray-400">
|
||||||
|
If you modify BentoPDF and deploy it as a network service
|
||||||
|
(e.g., a web application), you must make your modified source
|
||||||
|
code available under AGPL-3.0. If you do not want to share your
|
||||||
|
modifications, you must obtain a commercial license.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div class="faq-item bg-gray-800 rounded-lg border border-gray-700">
|
||||||
|
<button class="faq-question w-full flex justify-between items-center text-left p-6">
|
||||||
|
<span class="text-lg font-semibold text-white">How do I purchase a commercial license?</span>
|
||||||
|
<i data-lucide="chevron-down" class="faq-icon w-6 h-6 text-gray-400 transition-transform"></i>
|
||||||
|
</button>
|
||||||
|
<div class="faq-answer max-h-0 overflow-hidden transition-all duration-300 ease-in-out">
|
||||||
|
<p class="p-6 pt-0 text-gray-400">
|
||||||
|
BentoPDF is available under a lifetime, one-time purchase commercial license.
|
||||||
|
You can purchase it directly here:
|
||||||
|
<a href="https://ko-fi.com/s/f32ca4cb75" class="text-indigo-400 hover:underline">Buy Commercial License</a>.
|
||||||
|
<br><br>
|
||||||
|
If you have specific requirements or want a custom licensing arrangement,
|
||||||
|
feel free to <a href="./contact.html" class="text-indigo-400 hover:underline">contact us</a>
|
||||||
|
with details about your use case, company size, and deployment needs.
|
||||||
|
We're happy to work with you to find the best fit.
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<div class="section-divider"></div>
|
||||||
|
|
||||||
|
<section id="cta-section" class="text-center py-16">
|
||||||
|
<h2 class="text-3xl font-bold text-white mb-4">
|
||||||
|
Still have questions?
|
||||||
|
</h2>
|
||||||
|
<p class="text-lg text-gray-400 mb-8 max-w-2xl mx-auto">
|
||||||
|
We're here to help. Reach out to discuss your licensing needs.
|
||||||
|
</p>
|
||||||
|
<a href="./contact.html"
|
||||||
|
class="inline-block px-8 py-3 rounded-full bg-gradient-to-b from-indigo-500 to-indigo-600 text-white font-semibold focus:ring-2 focus:ring-offset-2 focus:ring-offset-gray-900 focus:ring-indigo-400 hover:shadow-xl hover:shadow-indigo-500/30 transition-all duration-200 transform hover:-translate-y-1">
|
||||||
|
Contact Us
|
||||||
|
</a>
|
||||||
|
</section>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<footer class="mt-16 border-t-2 border-gray-700 py-8">
|
||||||
|
<div class="container mx-auto px-4">
|
||||||
|
<div class="grid grid-cols-1 md:grid-cols-4 gap-8 text-center md:text-left">
|
||||||
|
<div class="mb-8 md:mb-0">
|
||||||
|
<div class="flex items-center justify-center md:justify-start mb-4">
|
||||||
|
<img src="images/favicon.svg" alt="Bento PDF Logo" class="h-10 w-10 mr-3" />
|
||||||
|
<span class="text-xl font-bold text-white">BentoPDF</span>
|
||||||
|
</div>
|
||||||
|
<p class="text-gray-400 text-sm">
|
||||||
|
© 2025 BentoPDF. All rights reserved.
|
||||||
|
</p>
|
||||||
|
<p class="text-gray-500 text-xs mt-2">
|
||||||
|
Version <span id="app-version"></span>
|
||||||
|
</p>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h3 class="font-bold text-white mb-4">Company</h3>
|
||||||
|
<ul class="space-y-2 text-gray-400">
|
||||||
|
<li>
|
||||||
|
<a href="./about.html" class="hover:text-indigo-400">About Us</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="./faq.html" class="hover:text-indigo-400">FAQ</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="./contact.html" class="hover:text-indigo-400">Contact Us</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h3 class="font-bold text-white mb-4">Legal</h3>
|
||||||
|
<ul class="space-y-2 text-gray-400">
|
||||||
|
<li>
|
||||||
|
<a href="./licensing.html" class="hover:text-indigo-400">Licensing</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="./terms.html" class="hover:text-indigo-400">Terms and Conditions</a>
|
||||||
|
</li>
|
||||||
|
<li>
|
||||||
|
<a href="./privacy.html" class="hover:text-indigo-400">Privacy Policy</a>
|
||||||
|
</li>
|
||||||
|
</ul>
|
||||||
|
</div>
|
||||||
|
|
||||||
|
<div>
|
||||||
|
<h3 class="font-bold text-white mb-4">Follow Us</h3>
|
||||||
|
<div class="flex justify-center md:justify-start space-x-4">
|
||||||
|
<a href="https://github.com/alam00000/bentopdf" target="_blank" rel="noopener noreferrer"
|
||||||
|
class="text-gray-400 hover:text-indigo-400" title="GitHub">
|
||||||
|
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
|
<path fill-rule="evenodd"
|
||||||
|
d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z"
|
||||||
|
clip-rule="evenodd" />
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
<a href="https://discord.gg/q42xWQmJ" target="_blank" rel="noopener noreferrer"
|
||||||
|
class="text-gray-400 hover:text-indigo-400" title="Discord">
|
||||||
|
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
|
<path
|
||||||
|
d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515a.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0a12.64 12.64 0 0 0-.617-1.25a.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057a19.9 19.9 0 0 0 5.993 3.03a.078.078 0 0 0 .084-.028a14.09 14.09 0 0 0 1.226-1.994a.076.076 0 0 0-.041-.106a13.107 13.107 0 0 1-1.872-.892a.077.077 0 0 1-.008-.128a10.2 10.2 0 0 0 .372-.292a.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127a12.299 12.299 0 0 1-1.873.892a.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028a19.839 19.839 0 0 0 6.002-3.03a.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419c0-1.333.956-2.419 2.157-2.419c1.21 0 2.176 1.096 2.157 2.42c0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419c0-1.333.955-2.419 2.157-2.419c1.21 0 2.176 1.096 2.157 2.42c0 1.333-.946 2.418-2.157 2.418z" />
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
<a href="https://www.instagram.com/thebentopdf/" class="text-gray-400 hover:text-indigo-400"
|
||||||
|
title="Instagram">
|
||||||
|
<i data-lucide="instagram"></i>
|
||||||
|
</a>
|
||||||
|
<a href="https://www.linkedin.com/company/bentopdf/" class="text-gray-400 hover:text-indigo-400"
|
||||||
|
title="LinkedIn">
|
||||||
|
<i data-lucide="linkedin"></i>
|
||||||
|
</a>
|
||||||
|
<a href="https://x.com/BentoPDF" class="text-gray-400 hover:text-indigo-400"
|
||||||
|
title="X (Twitter)">
|
||||||
|
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
|
<path
|
||||||
|
d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" />
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</footer>
|
||||||
|
|
||||||
|
<script type="module" src="src/js/utils/lucide-init.ts"></script>
|
||||||
|
<script type="module" src="src/version.ts"></script>
|
||||||
|
<script type="module" src="src/js/faq.ts"></script>
|
||||||
|
<script type="module" src="src/js/mobileMenu.ts"></script>
|
||||||
|
</body>
|
||||||
|
|
||||||
|
</html>
|
||||||
@@ -34,5 +34,7 @@ http {
|
|||||||
add_header X-Frame-Options "SAMEORIGIN" always;
|
add_header X-Frame-Options "SAMEORIGIN" always;
|
||||||
add_header X-Content-Type-Options "nosniff" always;
|
add_header X-Content-Type-Options "nosniff" always;
|
||||||
add_header X-XSS-Protection "1; mode=block" always;
|
add_header X-XSS-Protection "1; mode=block" always;
|
||||||
|
add_header Cross-Origin-Opener-Policy "same-origin" always;
|
||||||
|
add_header Cross-Origin-Resource-Policy "cross-origin" always;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Generated
+662
-34
File diff suppressed because it is too large.
Load diff
+6
-2
@@ -1,7 +1,7 @@
|
|||||||
{
|
{
|
||||||
"name": "bento-pdf",
|
"name": "bento-pdf",
|
||||||
"private": true,
|
"private": true,
|
||||||
"version": "1.3.2",
|
"version": "1.7.7",
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"type": "module",
|
"type": "module",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
@@ -16,10 +16,13 @@
|
|||||||
"test:watch": "vitest watch",
|
"test:watch": "vitest watch",
|
||||||
"build:docker": "vite build",
|
"build:docker": "vite build",
|
||||||
"format": "prettier --write .",
|
"format": "prettier --write .",
|
||||||
|
"update-version": "node scripts/update-version.js",
|
||||||
"release": "node scripts/release.js patch",
|
"release": "node scripts/release.js patch",
|
||||||
"release:minor": "node scripts/release.js minor",
|
"release:minor": "node scripts/release.js minor",
|
||||||
"release:major": "node scripts/release.js major",
|
"release:major": "node scripts/release.js major",
|
||||||
"serve:simple": "SIMPLE_MODE=true npm run build && npx serve dist -p 3000"
|
"serve:simple": "SIMPLE_MODE=true npm run build && npm run preview -- --port 3000",
|
||||||
|
"serve": "npm run build && npm run preview -- --port 3000",
|
||||||
|
"package": "node scripts/package-dist.js"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@testing-library/dom": "^10.4.1",
|
"@testing-library/dom": "^10.4.1",
|
||||||
@@ -48,6 +51,7 @@
|
|||||||
"@fontsource/merriweather": "^5.2.11",
|
"@fontsource/merriweather": "^5.2.11",
|
||||||
"@neslinesli93/qpdf-wasm": "^0.3.0",
|
"@neslinesli93/qpdf-wasm": "^0.3.0",
|
||||||
"@tailwindcss/vite": "^4.1.15",
|
"@tailwindcss/vite": "^4.1.15",
|
||||||
|
"archiver": "^7.0.1",
|
||||||
"blob-stream": "^0.1.3",
|
"blob-stream": "^0.1.3",
|
||||||
"cropperjs": "^1.6.1",
|
"cropperjs": "^1.6.1",
|
||||||
"heic2any": "^0.0.4",
|
"heic2any": "^0.0.4",
|
||||||
|
|||||||
+61
-103
@@ -1,5 +1,6 @@
|
|||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
|
||||||
<head>
|
<head>
|
||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
@@ -11,15 +12,8 @@
|
|||||||
<nav class="bg-gray-800 border-b border-gray-700 sticky top-0 z-30">
|
<nav class="bg-gray-800 border-b border-gray-700 sticky top-0 z-30">
|
||||||
<div class="container mx-auto px-4">
|
<div class="container mx-auto px-4">
|
||||||
<div class="flex justify-between items-center h-16">
|
<div class="flex justify-between items-center h-16">
|
||||||
<div
|
<div class="flex-shrink-0 flex items-center cursor-pointer" id="home-logo">
|
||||||
class="flex-shrink-0 flex items-center cursor-pointer"
|
<img src="images/favicon.svg" alt="Bento PDF Logo" class="h-8 w-8" />
|
||||||
id="home-logo"
|
|
||||||
>
|
|
||||||
<img
|
|
||||||
src="images/favicon.svg"
|
|
||||||
alt="Bento PDF Logo"
|
|
||||||
class="h-8 w-8"
|
|
||||||
/>
|
|
||||||
<span class="text-white font-bold text-xl ml-2">
|
<span class="text-white font-bold text-xl ml-2">
|
||||||
<a href="index.html">BentoPDF</a>
|
<a href="index.html">BentoPDF</a>
|
||||||
</span>
|
</span>
|
||||||
@@ -30,52 +24,25 @@
|
|||||||
<a href="index.html" class="nav-link">Home</a>
|
<a href="index.html" class="nav-link">Home</a>
|
||||||
<a href="./about.html" class="nav-link">About</a>
|
<a href="./about.html" class="nav-link">About</a>
|
||||||
<a href="./contact.html" class="nav-link">Contact</a>
|
<a href="./contact.html" class="nav-link">Contact</a>
|
||||||
|
<a href="./licensing.html" class="nav-link">Licensing</a>
|
||||||
<a href="index.html#tools-header" class="nav-link">All Tools</a>
|
<a href="index.html#tools-header" class="nav-link">All Tools</a>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Mobile Hamburger Button -->
|
<!-- Mobile Hamburger Button -->
|
||||||
<div class="md:hidden flex items-center">
|
<div class="md:hidden flex items-center">
|
||||||
<button
|
<button id="mobile-menu-button" type="button"
|
||||||
id="mobile-menu-button"
|
|
||||||
type="button"
|
|
||||||
class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500 transition-colors"
|
class="inline-flex items-center justify-center p-2 rounded-md text-gray-400 hover:text-white hover:bg-gray-700 focus:outline-none focus:ring-2 focus:ring-inset focus:ring-indigo-500 transition-colors"
|
||||||
aria-controls="mobile-menu"
|
aria-controls="mobile-menu" aria-expanded="false">
|
||||||
aria-expanded="false"
|
|
||||||
>
|
|
||||||
<span class="sr-only">Open main menu</span>
|
<span class="sr-only">Open main menu</span>
|
||||||
<!-- Hamburger Icon -->
|
<!-- Hamburger Icon -->
|
||||||
<svg
|
<svg id="menu-icon" class="block h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24"
|
||||||
id="menu-icon"
|
stroke="currentColor" aria-hidden="true">
|
||||||
class="block h-6 w-6"
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16" />
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
fill="none"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
stroke="currentColor"
|
|
||||||
aria-hidden="true"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
stroke-width="2"
|
|
||||||
d="M4 6h16M4 12h16M4 18h16"
|
|
||||||
/>
|
|
||||||
</svg>
|
</svg>
|
||||||
<!-- Close Icon -->
|
<!-- Close Icon -->
|
||||||
<svg
|
<svg id="close-icon" class="hidden h-6 w-6" xmlns="http://www.w3.org/2000/svg" fill="none"
|
||||||
id="close-icon"
|
viewBox="0 0 24 24" stroke="currentColor" aria-hidden="true">
|
||||||
class="hidden h-6 w-6"
|
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M6 18L18 6M6 6l12 12" />
|
||||||
xmlns="http://www.w3.org/2000/svg"
|
|
||||||
fill="none"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
stroke="currentColor"
|
|
||||||
aria-hidden="true"
|
|
||||||
>
|
|
||||||
<path
|
|
||||||
stroke-linecap="round"
|
|
||||||
stroke-linejoin="round"
|
|
||||||
stroke-width="2"
|
|
||||||
d="M6 18L18 6M6 6l12 12"
|
|
||||||
/>
|
|
||||||
</svg>
|
</svg>
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
@@ -83,17 +50,13 @@
|
|||||||
</div>
|
</div>
|
||||||
|
|
||||||
<!-- Mobile Menu Dropdown -->
|
<!-- Mobile Menu Dropdown -->
|
||||||
<div
|
<div id="mobile-menu" class="hidden md:hidden bg-gray-800 border-t border-gray-700">
|
||||||
id="mobile-menu"
|
|
||||||
class="hidden md:hidden bg-gray-800 border-t border-gray-700"
|
|
||||||
>
|
|
||||||
<div class="px-2 pt-2 pb-3 space-y-1 text-center">
|
<div class="px-2 pt-2 pb-3 space-y-1 text-center">
|
||||||
<a href="index.html" class="mobile-nav-link">Home</a>
|
<a href="index.html" class="mobile-nav-link">Home</a>
|
||||||
<a href="./about.html" class="mobile-nav-link">About</a>
|
<a href="./about.html" class="mobile-nav-link">About</a>
|
||||||
<a href="./contact.html" class="mobile-nav-link">Contact</a>
|
<a href="./contact.html" class="mobile-nav-link">Contact</a>
|
||||||
<a href="index.html#tools-header" class="mobile-nav-link"
|
<a href="./licensing.html" class="mobile-nav-link">Licensing</a>
|
||||||
>All Tools</a
|
<a href="index.html#tools-header" class="mobile-nav-link">All Tools</a>
|
||||||
>
|
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</nav>
|
</nav>
|
||||||
@@ -170,19 +133,12 @@
|
|||||||
<p>
|
<p>
|
||||||
We use privacy-respecting analytics platforms for this purpose.
|
We use privacy-respecting analytics platforms for this purpose.
|
||||||
Specifically, we use
|
Specifically, we use
|
||||||
<a
|
<a href="https://simpleanalytics.com" target="_blank" rel="noopener noreferrer"
|
||||||
href="https://simpleanalytics.com"
|
class="text-indigo-400 hover:underline">Simple Analytics</a>
|
||||||
target="_blank"
|
|
||||||
rel="noopener noreferrer"
|
|
||||||
class="text-indigo-400 hover:underline"
|
|
||||||
>Simple Analytics</a
|
|
||||||
>
|
|
||||||
to track anonymous visit counts. This means we can see how many
|
to track anonymous visit counts. This means we can see how many
|
||||||
users visit our site, but
|
users visit our site, but
|
||||||
<strong
|
<strong>we never collect personal information or identify individual
|
||||||
>we never collect personal information or identify individual
|
users</strong>. Simple Analytics is fully GDPR-compliant and respects user
|
||||||
users</strong
|
|
||||||
>. Simple Analytics is fully GDPR-compliant and respects user
|
|
||||||
privacy. We do not use tracking cookies for advertising or
|
privacy. We do not use tracking cookies for advertising or
|
||||||
cross-site profiling.
|
cross-site profiling.
|
||||||
</p>
|
</p>
|
||||||
@@ -234,79 +190,80 @@
|
|||||||
|
|
||||||
<footer class="mt-16 border-t-2 border-gray-700 py-8">
|
<footer class="mt-16 border-t-2 border-gray-700 py-8">
|
||||||
<div class="container mx-auto px-4">
|
<div class="container mx-auto px-4">
|
||||||
<div
|
<div class="grid grid-cols-1 md:grid-cols-4 gap-8 text-center md:text-left">
|
||||||
class="grid grid-cols-1 md:grid-cols-4 gap-8 text-center md:text-left"
|
|
||||||
>
|
|
||||||
<div class="mb-8 md:mb-0">
|
<div class="mb-8 md:mb-0">
|
||||||
<div class="flex items-center justify-center md:justify-start mb-4">
|
<div class="flex items-center justify-center md:justify-start mb-4">
|
||||||
<img
|
<img src="images/favicon.svg" alt="Bento PDF Logo" class="h-10 w-10 mr-3" />
|
||||||
src="images/favicon.svg"
|
|
||||||
alt="BentoPDF Logo"
|
|
||||||
class="h-10 w-10 mr-3"
|
|
||||||
/>
|
|
||||||
<span class="text-xl font-bold text-white">BentoPDF</span>
|
<span class="text-xl font-bold text-white">BentoPDF</span>
|
||||||
</div>
|
</div>
|
||||||
<p class="text-gray-400 text-sm">
|
<p class="text-gray-400 text-sm">
|
||||||
© 2025 BentoPDF. All rights reserved.
|
© 2025 BentoPDF. All rights reserved.
|
||||||
</p>
|
</p>
|
||||||
|
<p class="text-gray-500 text-xs mt-2">
|
||||||
|
Version <span id="app-version"></span>
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<h3 class="font-bold text-white mb-4">Company</h3>
|
<h3 class="font-bold text-white mb-4">Company</h3>
|
||||||
<ul class="space-y-2 text-gray-400">
|
<ul class="space-y-2 text-gray-400">
|
||||||
<li>
|
<li>
|
||||||
<a href="about.html" class="hover:text-indigo-400">About Us</a>
|
<a href="./about.html" class="hover:text-indigo-400">About Us</a>
|
||||||
</li>
|
</li>
|
||||||
<li><a href="faq.html" class="hover:text-indigo-400">FAQ</a></li>
|
|
||||||
<li>
|
<li>
|
||||||
<a href="contact.html" class="hover:text-indigo-400"
|
<a href="./faq.html" class="hover:text-indigo-400">FAQ</a>
|
||||||
>Contact Us</a
|
</li>
|
||||||
>
|
<li>
|
||||||
|
<a href="./contact.html" class="hover:text-indigo-400">Contact Us</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<h3 class="font-bold text-white mb-4">Legal</h3>
|
<h3 class="font-bold text-white mb-4">Legal</h3>
|
||||||
<ul class="space-y-2 text-gray-400">
|
<ul class="space-y-2 text-gray-400">
|
||||||
<li>
|
<li>
|
||||||
<a href="terms.html" class="hover:text-indigo-400"
|
<a href="./licensing.html" class="hover:text-indigo-400">Licensing</a>
|
||||||
>Terms and Conditions</a
|
|
||||||
>
|
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="privacy.html" class="hover:text-indigo-400"
|
<a href="./terms.html" class="hover:text-indigo-400">Terms and Conditions</a>
|
||||||
>Privacy Policy</a
|
</li>
|
||||||
>
|
<li>
|
||||||
|
<a href="./privacy.html" class="hover:text-indigo-400">Privacy Policy</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<div>
|
<div>
|
||||||
<h3 class="font-bold text-white mb-4">Follow Us</h3>
|
<h3 class="font-bold text-white mb-4">Follow Us</h3>
|
||||||
<div class="flex justify-center md:justify-start space-x-4">
|
<div class="flex justify-center md:justify-start space-x-4">
|
||||||
<a
|
<a href="https://github.com/alam00000/bentopdf" target="_blank" rel="noopener noreferrer"
|
||||||
href="https://www.instagram.com/thebentopdf/"
|
class="text-gray-400 hover:text-indigo-400" title="GitHub">
|
||||||
class="text-gray-400 hover:text-indigo-400"
|
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
>
|
<path fill-rule="evenodd"
|
||||||
|
d="M12 2C6.477 2 2 6.484 2 12.017c0 4.425 2.865 8.18 6.839 9.504.5.092.682-.217.682-.483 0-.237-.008-.868-.013-1.703-2.782.605-3.369-1.343-3.369-1.343-.454-1.158-1.11-1.466-1.11-1.466-.908-.62.069-.608.069-.608 1.003.07 1.531 1.032 1.531 1.032.892 1.53 2.341 1.088 2.91.832.092-.647.35-1.088.636-1.338-2.22-.253-4.555-1.113-4.555-4.951 0-1.093.39-1.988 1.029-2.688-.103-.253-.446-1.272.098-2.65 0 0 .84-.27 2.75 1.026A9.564 9.564 0 0112 6.844c.85.004 1.705.115 2.504.337 1.909-1.296 2.747-1.027 2.747-1.027.546 1.379.202 2.398.1 2.651.64.7 1.028 1.595 1.028 2.688 0 3.848-2.339 4.695-4.566 4.943.359.309.678.92.678 1.855 0 1.338-.012 2.419-.012 2.747 0 .268.18.58.688.482A10.019 10.019 0 0022 12.017C22 6.484 17.522 2 12 2z"
|
||||||
|
clip-rule="evenodd" />
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
<a href="https://discord.gg/q42xWQmJ" target="_blank" rel="noopener noreferrer"
|
||||||
|
class="text-gray-400 hover:text-indigo-400" title="Discord">
|
||||||
|
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
|
<path
|
||||||
|
d="M20.317 4.37a19.791 19.791 0 0 0-4.885-1.515a.074.074 0 0 0-.079.037c-.21.375-.444.864-.608 1.25a18.27 18.27 0 0 0-5.487 0a12.64 12.64 0 0 0-.617-1.25a.077.077 0 0 0-.079-.037A19.736 19.736 0 0 0 3.677 4.37a.07.07 0 0 0-.032.027C.533 9.046-.32 13.58.099 18.057a.082.082 0 0 0 .031.057a19.9 19.9 0 0 0 5.993 3.03a.078.078 0 0 0 .084-.028a14.09 14.09 0 0 0 1.226-1.994a.076.076 0 0 0-.041-.106a13.107 13.107 0 0 1-1.872-.892a.077.077 0 0 1-.008-.128a10.2 10.2 0 0 0 .372-.292a.074.074 0 0 1 .077-.01c3.928 1.793 8.18 1.793 12.062 0a.074.074 0 0 1 .078.01c.12.098.246.198.373.292a.077.077 0 0 1-.006.127a12.299 12.299 0 0 1-1.873.892a.077.077 0 0 0-.041.107c.36.698.772 1.362 1.225 1.993a.076.076 0 0 0 .084.028a19.839 19.839 0 0 0 6.002-3.03a.077.077 0 0 0 .032-.054c.5-5.177-.838-9.674-3.549-13.66a.061.061 0 0 0-.031-.03zM8.02 15.33c-1.183 0-2.157-1.085-2.157-2.419c0-1.333.956-2.419 2.157-2.419c1.21 0 2.176 1.096 2.157 2.42c0 1.333-.956 2.418-2.157 2.418zm7.975 0c-1.183 0-2.157-1.085-2.157-2.419c0-1.333.955-2.419 2.157-2.419c1.21 0 2.176 1.096 2.157 2.42c0 1.333-.946 2.418-2.157 2.418z" />
|
||||||
|
</svg>
|
||||||
|
</a>
|
||||||
|
<a href="https://www.instagram.com/thebentopdf/" class="text-gray-400 hover:text-indigo-400"
|
||||||
|
title="Instagram">
|
||||||
<i data-lucide="instagram"></i>
|
<i data-lucide="instagram"></i>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a href="https://www.linkedin.com/company/bentopdf/" class="text-gray-400 hover:text-indigo-400"
|
||||||
href="https://www.linkedin.com/company/bentopdf/"
|
title="LinkedIn">
|
||||||
class="text-gray-400 hover:text-indigo-400"
|
|
||||||
>
|
|
||||||
<i data-lucide="linkedin"></i>
|
<i data-lucide="linkedin"></i>
|
||||||
</a>
|
</a>
|
||||||
<a
|
<a href="https://x.com/BentoPDF" class="text-gray-400 hover:text-indigo-400" title="X (Twitter)">
|
||||||
href="https://x.com/BentoPDF"
|
<svg class="w-6 h-6" fill="currentColor" viewBox="0 0 24 24" aria-hidden="true">
|
||||||
class="text-gray-400 hover:text-indigo-400"
|
|
||||||
>
|
|
||||||
<svg
|
|
||||||
class="w-6 h-6"
|
|
||||||
fill="currentColor"
|
|
||||||
viewBox="0 0 24 24"
|
|
||||||
aria-hidden="true"
|
|
||||||
>
|
|
||||||
<path
|
<path
|
||||||
d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z"
|
d="M18.244 2.25h3.308l-7.227 8.26 8.502 11.24H16.17l-5.214-6.817L4.99 21.75H1.68l7.73-8.835L1.254 2.25H8.08l4.713 6.231zm-1.161 17.52h1.833L7.084 4.126H5.117z" />
|
||||||
/>
|
|
||||||
</svg>
|
</svg>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -315,7 +272,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</footer>
|
</footer>
|
||||||
<script type="module" src="src/js/utils/lucide-init.ts"></script>
|
<script type="module" src="src/js/utils/lucide-init.ts"></script>
|
||||||
|
<script type="module" src="src/version.ts"></script>
|
||||||
<script type="module" src="src/js/mobileMenu.ts"></script>
|
<script type="module" src="src/js/mobileMenu.ts"></script>
|
||||||
</body>
|
</body>
|
||||||
|
|
||||||
</html>
|
</html>
|
||||||
Binary file not shown.
|
After Width: | Height: | Size: 114 KiB |
@@ -0,0 +1,177 @@
|
|||||||
|
|
||||||
|
Apache License
|
||||||
|
Version 2.0, January 2004
|
||||||
|
http://www.apache.org/licenses/
|
||||||
|
|
||||||
|
TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
|
||||||
|
|
||||||
|
1. Definitions.
|
||||||
|
|
||||||
|
"License" shall mean the terms and conditions for use, reproduction,
|
||||||
|
and distribution as defined by Sections 1 through 9 of this document.
|
||||||
|
|
||||||
|
"Licensor" shall mean the copyright owner or entity authorized by
|
||||||
|
the copyright owner that is granting the License.
|
||||||
|
|
||||||
|
"Legal Entity" shall mean the union of the acting entity and all
|
||||||
|
other entities that control, are controlled by, or are under common
|
||||||
|
control with that entity. For the purposes of this definition,
|
||||||
|
"control" means (i) the power, direct or indirect, to cause the
|
||||||
|
direction or management of such entity, whether by contract or
|
||||||
|
otherwise, or (ii) ownership of fifty percent (50%) or more of the
|
||||||
|
outstanding shares, or (iii) beneficial ownership of such entity.
|
||||||
|
|
||||||
|
"You" (or "Your") shall mean an individual or Legal Entity
|
||||||
|
exercising permissions granted by this License.
|
||||||
|
|
||||||
|
"Source" form shall mean the preferred form for making modifications,
|
||||||
|
including but not limited to software source code, documentation
|
||||||
|
source, and configuration files.
|
||||||
|
|
||||||
|
"Object" form shall mean any form resulting from mechanical
|
||||||
|
transformation or translation of a Source form, including but
|
||||||
|
not limited to compiled object code, generated documentation,
|
||||||
|
and conversions to other media types.
|
||||||
|
|
||||||
|
"Work" shall mean the work of authorship, whether in Source or
|
||||||
|
Object form, made available under the License, as indicated by a
|
||||||
|
copyright notice that is included in or attached to the work
|
||||||
|
(an example is provided in the Appendix below).
|
||||||
|
|
||||||
|
"Derivative Works" shall mean any work, whether in Source or Object
|
||||||
|
form, that is based on (or derived from) the Work and for which the
|
||||||
|
editorial revisions, annotations, elaborations, or other modifications
|
||||||
|
represent, as a whole, an original work of authorship. For the purposes
|
||||||
|
of this License, Derivative Works shall not include works that remain
|
||||||
|
separable from, or merely link (or bind by name) to the interfaces of,
|
||||||
|
the Work and Derivative Works thereof.
|
||||||
|
|
||||||
|
"Contribution" shall mean any work of authorship, including
|
||||||
|
the original version of the Work and any modifications or additions
|
||||||
|
to that Work or Derivative Works thereof, that is intentionally
|
||||||
|
submitted to Licensor for inclusion in the Work by the copyright owner
|
||||||
|
or by an individual or Legal Entity authorized to submit on behalf of
|
||||||
|
the copyright owner. For the purposes of this definition, "submitted"
|
||||||
|
means any form of electronic, verbal, or written communication sent
|
||||||
|
to the Licensor or its representatives, including but not limited to
|
||||||
|
communication on electronic mailing lists, source code control systems,
|
||||||
|
and issue tracking systems that are managed by, or on behalf of, the
|
||||||
|
Licensor for the purpose of discussing and improving the Work, but
|
||||||
|
excluding communication that is conspicuously marked or otherwise
|
||||||
|
designated in writing by the copyright owner as "Not a Contribution."
|
||||||
|
|
||||||
|
"Contributor" shall mean Licensor and any individual or Legal Entity
|
||||||
|
on behalf of whom a Contribution has been received by Licensor and
|
||||||
|
subsequently incorporated within the Work.
|
||||||
|
|
||||||
|
2. Grant of Copyright License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
copyright license to reproduce, prepare Derivative Works of,
|
||||||
|
publicly display, publicly perform, sublicense, and distribute the
|
||||||
|
Work and such Derivative Works in Source or Object form.
|
||||||
|
|
||||||
|
3. Grant of Patent License. Subject to the terms and conditions of
|
||||||
|
this License, each Contributor hereby grants to You a perpetual,
|
||||||
|
worldwide, non-exclusive, no-charge, royalty-free, irrevocable
|
||||||
|
(except as stated in this section) patent license to make, have made,
|
||||||
|
use, offer to sell, sell, import, and otherwise transfer the Work,
|
||||||
|
where such license applies only to those patent claims licensable
|
||||||
|
by such Contributor that are necessarily infringed by their
|
||||||
|
Contribution(s) alone or by combination of their Contribution(s)
|
||||||
|
with the Work to which such Contribution(s) was submitted. If You
|
||||||
|
institute patent litigation against any entity (including a
|
||||||
|
cross-claim or counterclaim in a lawsuit) alleging that the Work
|
||||||
|
or a Contribution incorporated within the Work constitutes direct
|
||||||
|
or contributory patent infringement, then any patent licenses
|
||||||
|
granted to You under this License for that Work shall terminate
|
||||||
|
as of the date such litigation is filed.
|
||||||
|
|
||||||
|
4. Redistribution. You may reproduce and distribute copies of the
|
||||||
|
Work or Derivative Works thereof in any medium, with or without
|
||||||
|
modifications, and in Source or Object form, provided that You
|
||||||
|
meet the following conditions:
|
||||||
|
|
||||||
|
(a) You must give any other recipients of the Work or
|
||||||
|
Derivative Works a copy of this License; and
|
||||||
|
|
||||||
|
(b) You must cause any modified files to carry prominent notices
|
||||||
|
stating that You changed the files; and
|
||||||
|
|
||||||
|
(c) You must retain, in the Source form of any Derivative Works
|
||||||
|
that You distribute, all copyright, patent, trademark, and
|
||||||
|
attribution notices from the Source form of the Work,
|
||||||
|
excluding those notices that do not pertain to any part of
|
||||||
|
the Derivative Works; and
|
||||||
|
|
||||||
|
(d) If the Work includes a "NOTICE" text file as part of its
|
||||||
|
distribution, then any Derivative Works that You distribute must
|
||||||
|
include a readable copy of the attribution notices contained
|
||||||
|
within such NOTICE file, excluding those notices that do not
|
||||||
|
pertain to any part of the Derivative Works, in at least one
|
||||||
|
of the following places: within a NOTICE text file distributed
|
||||||
|
as part of the Derivative Works; within the Source form or
|
||||||
|
documentation, if provided along with the Derivative Works; or,
|
||||||
|
within a display generated by the Derivative Works, if and
|
||||||
|
wherever such third-party notices normally appear. The contents
|
||||||
|
of the NOTICE file are for informational purposes only and
|
||||||
|
do not modify the License. You may add Your own attribution
|
||||||
|
notices within Derivative Works that You distribute, alongside
|
||||||
|
or as an addendum to the NOTICE text from the Work, provided
|
||||||
|
that such additional attribution notices cannot be construed
|
||||||
|
as modifying the License.
|
||||||
|
|
||||||
|
You may add Your own copyright statement to Your modifications and
|
||||||
|
may provide additional or different license terms and conditions
|
||||||
|
for use, reproduction, or distribution of Your modifications, or
|
||||||
|
for any such Derivative Works as a whole, provided Your use,
|
||||||
|
reproduction, and distribution of the Work otherwise complies with
|
||||||
|
the conditions stated in this License.
|
||||||
|
|
||||||
|
5. Submission of Contributions. Unless You explicitly state otherwise,
|
||||||
|
any Contribution intentionally submitted for inclusion in the Work
|
||||||
|
by You to the Licensor shall be under the terms and conditions of
|
||||||
|
this License, without any additional terms or conditions.
|
||||||
|
Notwithstanding the above, nothing herein shall supersede or modify
|
||||||
|
the terms of any separate license agreement you may have executed
|
||||||
|
with Licensor regarding such Contributions.
|
||||||
|
|
||||||
|
6. Trademarks. This License does not grant permission to use the trade
|
||||||
|
names, trademarks, service marks, or product names of the Licensor,
|
||||||
|
except as required for reasonable and customary use in describing the
|
||||||
|
origin of the Work and reproducing the content of the NOTICE file.
|
||||||
|
|
||||||
|
7. Disclaimer of Warranty. Unless required by applicable law or
|
||||||
|
agreed to in writing, Licensor provides the Work (and each
|
||||||
|
Contributor provides its Contributions) on an "AS IS" BASIS,
|
||||||
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
|
||||||
|
implied, including, without limitation, any warranties or conditions
|
||||||
|
of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
|
||||||
|
PARTICULAR PURPOSE. You are solely responsible for determining the
|
||||||
|
appropriateness of using or redistributing the Work and assume any
|
||||||
|
risks associated with Your exercise of permissions under this License.
|
||||||
|
|
||||||
|
8. Limitation of Liability. In no event and under no legal theory,
|
||||||
|
whether in tort (including negligence), contract, or otherwise,
|
||||||
|
unless required by applicable law (such as deliberate and grossly
|
||||||
|
negligent acts) or agreed to in writing, shall any Contributor be
|
||||||
|
liable to You for damages, including any direct, indirect, special,
|
||||||
|
incidental, or consequential damages of any character arising as a
|
||||||
|
result of this License or out of the use or inability to use the
|
||||||
|
Work (including but not limited to damages for loss of goodwill,
|
||||||
|
work stoppage, computer failure or malfunction, or any and all
|
||||||
|
other commercial damages or losses), even if such Contributor
|
||||||
|
has been advised of the possibility of such damages.
|
||||||
|
|
||||||
|
9. Accepting Warranty or Additional Liability. While redistributing
|
||||||
|
the Work or Derivative Works thereof, You may choose to offer,
|
||||||
|
and charge a fee for, acceptance of support, warranty, indemnity,
|
||||||
|
or other liability obligations and/or rights consistent with this
|
||||||
|
License. However, in accepting such obligations, You may act only
|
||||||
|
on Your own behalf and on Your sole responsibility, not on behalf
|
||||||
|
of any other Contributor, and only if You agree to indemnify,
|
||||||
|
defend, and hold each Contributor harmless for any liability
|
||||||
|
incurred by, or claims asserted against, such Contributor by reason
|
||||||
|
of your accepting any such warranty or additional liability.
|
||||||
|
|
||||||
|
END OF TERMS AND CONDITIONS
|
||||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"pdf.mjs","mappings":"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 truncated
|
||||||
@@ -0,0 +1,239 @@
|
|||||||
|
/**
|
||||||
|
* @licstart The following is the entire license notice for the
|
||||||
|
* JavaScript code in this page
|
||||||
|
*
|
||||||
|
* Copyright 2023 Mozilla Foundation
|
||||||
|
*
|
||||||
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
|
* you may not use this file except in compliance with the License.
|
||||||
|
* You may obtain a copy of the License at
|
||||||
|
*
|
||||||
|
* http://www.apache.org/licenses/LICENSE-2.0
|
||||||
|
*
|
||||||
|
* Unless required by applicable law or agreed to in writing, software
|
||||||
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
||||||
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||||
|
* See the License for the specific language governing permissions and
|
||||||
|
* limitations under the License.
|
||||||
|
*
|
||||||
|
* @licend The above is the entire license notice for the
|
||||||
|
* JavaScript code in this page
|
||||||
|
*/
|
||||||
|
|
||||||
|
/******/ // The require scope
|
||||||
|
/******/ var __webpack_require__ = {};
|
||||||
|
/******/
|
||||||
|
/************************************************************************/
|
||||||
|
/******/ /* webpack/runtime/define property getters */
|
||||||
|
/******/ (() => {
|
||||||
|
/******/ // define getter functions for harmony exports
|
||||||
|
/******/ __webpack_require__.d = (exports, definition) => {
|
||||||
|
/******/ for(var key in definition) {
|
||||||
|
/******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
|
||||||
|
/******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
|
||||||
|
/******/ }
|
||||||
|
/******/ }
|
||||||
|
/******/ };
|
||||||
|
/******/ })();
|
||||||
|
/******/
|
||||||
|
/******/ /* webpack/runtime/hasOwnProperty shorthand */
|
||||||
|
/******/ (() => {
|
||||||
|
/******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
|
||||||
|
/******/ })();
|
||||||
|
/******/
|
||||||
|
/************************************************************************/
|
||||||
|
var __webpack_exports__ = globalThis.pdfjsSandbox = {};
|
||||||
|
|
||||||
|
// EXPORTS
|
||||||
|
__webpack_require__.d(__webpack_exports__, {
|
||||||
|
QuickJSSandbox: () => (/* binding */ QuickJSSandbox)
|
||||||
|
});
|
||||||
|
|
||||||
|
;// CONCATENATED MODULE: ./external/quickjs/quickjs-eval.js
|
||||||
|
var Module=(()=>{var _scriptDir=typeof document!=='undefined'&&document.currentScript?document.currentScript.src:undefined;return function(moduleArg={}){var d=moduleArg,k,n;d.ready=new Promise((a,b)=>{k=a;n=b;});var p=Object.assign({},d),q="";"undefined"!=typeof document&&document.currentScript&&(q=document.currentScript.src);_scriptDir&&(q=_scriptDir);q.startsWith("blob:")?q="":q=q.substr(0,q.replace(/[?#].*/,"").lastIndexOf("/")+1);var aa=d.print||console.log.bind(console),u=d.printErr||console.error.bind(console);Object.assign(d,p);p=null;var v;d.wasmBinary&&(v=d.wasmBinary);"object"!=typeof WebAssembly&&w("no native wasm support detected");var x,y=!1,z,A,B,C;function D(){var a=x.buffer;d.HEAP8=z=new Int8Array(a);d.HEAP16=new Int16Array(a);d.HEAPU8=A=new Uint8Array(a);d.HEAPU16=new Uint16Array(a);d.HEAP32=B=new Int32Array(a);d.HEAPU32=C=new Uint32Array(a);d.HEAPF32=new Float32Array(a);d.HEAPF64=new Float64Array(a);}var E=[],F=[],G=[];function ba(){var a=d.preRun.shift();E.unshift(a);}var H=0,I=null,J=null;function w(a){d.onAbort?.(a);a="Aborted("+a+")";u(a);y=!0;a=new WebAssembly.RuntimeError(a+". Build with -sASSERTIONS for more info.");n(a);throw a;}var K=a=>a.startsWith("data:application/octet-stream;base64,"),L;L="data:application/octet-stream;base64,AGFzbQEAAAABzgZtYAJ/fwBgA39/fwF/YAR/fn9/AX5gAn9/AX9gBX9+f39/AX5gAX8Bf2ADf39/AGAEf39/fwF/YAJ/fgF+YAF/AGABfAF8YAV/f39/fwF/YAJ/fgBgAn9+AX9gAn9/AX5gA39/fgF/YAN/fn8BfmAGf35/f39/AX5gA39+fwBgA39+fwF/YAZ/f39/f38Bf2AEf39/fwBgBn9+fn9/fwF+YAR/f35/AX9gA39+fgF+YAN/f38BfmADf35+AX9gBH9/f38BfmAFf35+fn4AYAJ8fAF8YAF/AX5gBH9/f34Bf2AFf35+f38BfmAFf39/f38AYAd/fn9+fn5/AX9gBX9/f35+AX9gB39/f39/f38Bf2AAAGAFf35/fn8Bf2AEf35+fwBgBH9+fn8BfmAFf35+fn8Bf2AFf39/f38BfmAEf39+fgF/YAF+AX9gBH9+f34BfmAEf35/fwBgBH9+fn8Bf2AJf39/f39/f39/AX9gCH9/f39/f39/AX9gA39+fgBgBH9+f38Bf2AGf35/fn5/AX9gBX9+fn9/AGABfgF+YAd/fn9/f39/AX5gAX8BfGADf39+AGAEf35/fgF/YAV/f35/fwF/YAR/fn5+AX9gBn9/f39/fwF+YAN+f38Bf2AHf39/f39/fwBgAnx/AXxgA39/fgF+YAJ+fwF/YAN8fH8BfGAEf39+fwBgBH9+fn4BfmAAAX9gBn98f39/fwF/YAABfGAFf35/fn8BfmAGf39+fn5+AX9gAn5/AGACf3wAYAV/f39/fgF+YAR/f35/AX5gBH9+f34AYAd/fn5+f39/AX5gBH5+fn4Bf2AKf39/f39/f39/fwF/YAd/f39/f39+AX5gBX9+f39/AGAHfH9/f39/fwBgBX98f39/AX5gAXwBf2AFf39+f38AYAZ/fn5+fn8Bf2AGf35/f39/AX9gBH98f38Bf2AGf39/f39/AGAEf39/fgF+YAV/fn9/fwF/YAV/fn5+fgF/YAJ/fwF8YAV/fn5/fwF/YAV/f35+fgF+YAV/f35+fwF/YAJ8fwF/YAJ8fAF/YAh/fn5+fn9+fgF+YAN/fnwBfmAAAX5gB39/f35+fn8Bf2ACfn4BfGADfn5+AX9gA39/fAACSQwBYQFhABUBYQFiACUBYQFjAAcBYQFkAAYBYQFlAEgBYQFmAAABYQFn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 truncated
|
||||||
|
;// CONCATENATED MODULE: ./src/pdf.sandbox.external.js
|
||||||
|
class SandboxSupportBase {
|
||||||
|
constructor(win) {
|
||||||
|
this.win = win;
|
||||||
|
this.timeoutIds = new Map();
|
||||||
|
this.commFun = null;
|
||||||
|
}
|
||||||
|
destroy() {
|
||||||
|
this.commFun = null;
|
||||||
|
for (const id of this.timeoutIds.values()) {
|
||||||
|
this.win.clearTimeout(id);
|
||||||
|
}
|
||||||
|
this.timeoutIds = null;
|
||||||
|
}
|
||||||
|
exportValueToSandbox(val) {
|
||||||
|
throw new Error("Not implemented");
|
||||||
|
}
|
||||||
|
importValueFromSandbox(val) {
|
||||||
|
throw new Error("Not implemented");
|
||||||
|
}
|
||||||
|
createErrorForSandbox(errorMessage) {
|
||||||
|
throw new Error("Not implemented");
|
||||||
|
}
|
||||||
|
callSandboxFunction(name, args) {
|
||||||
|
try {
|
||||||
|
args = this.exportValueToSandbox(args);
|
||||||
|
this.commFun(name, args);
|
||||||
|
} catch (e) {
|
||||||
|
this.win.console.error(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
createSandboxExternals() {
|
||||||
|
const externals = {
|
||||||
|
setTimeout: (callbackId, nMilliseconds) => {
|
||||||
|
if (typeof callbackId !== "number" || typeof nMilliseconds !== "number") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
if (callbackId === 0) {
|
||||||
|
this.win.clearTimeout(this.timeoutIds.get(callbackId));
|
||||||
|
}
|
||||||
|
const id = this.win.setTimeout(() => {
|
||||||
|
this.timeoutIds.delete(callbackId);
|
||||||
|
this.callSandboxFunction("timeoutCb", {
|
||||||
|
callbackId,
|
||||||
|
interval: false
|
||||||
|
});
|
||||||
|
}, nMilliseconds);
|
||||||
|
this.timeoutIds.set(callbackId, id);
|
||||||
|
},
|
||||||
|
clearTimeout: callbackId => {
|
||||||
|
this.win.clearTimeout(this.timeoutIds.get(callbackId));
|
||||||
|
this.timeoutIds.delete(callbackId);
|
||||||
|
},
|
||||||
|
setInterval: (callbackId, nMilliseconds) => {
|
||||||
|
if (typeof callbackId !== "number" || typeof nMilliseconds !== "number") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const id = this.win.setInterval(() => {
|
||||||
|
this.callSandboxFunction("timeoutCb", {
|
||||||
|
callbackId,
|
||||||
|
interval: true
|
||||||
|
});
|
||||||
|
}, nMilliseconds);
|
||||||
|
this.timeoutIds.set(callbackId, id);
|
||||||
|
},
|
||||||
|
clearInterval: callbackId => {
|
||||||
|
this.win.clearInterval(this.timeoutIds.get(callbackId));
|
||||||
|
this.timeoutIds.delete(callbackId);
|
||||||
|
},
|
||||||
|
alert: cMsg => {
|
||||||
|
if (typeof cMsg !== "string") {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
this.win.alert(cMsg);
|
||||||
|
},
|
||||||
|
confirm: cMsg => {
|
||||||
|
if (typeof cMsg !== "string") {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
return this.win.confirm(cMsg);
|
||||||
|
},
|
||||||
|
prompt: (cQuestion, cDefault) => {
|
||||||
|
if (typeof cQuestion !== "string" || typeof cDefault !== "string") {
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
return this.win.prompt(cQuestion, cDefault);
|
||||||
|
},
|
||||||
|
parseURL: cUrl => {
|
||||||
|
const url = new this.win.URL(cUrl);
|
||||||
|
const props = ["hash", "host", "hostname", "href", "origin", "password", "pathname", "port", "protocol", "search", "searchParams", "username"];
|
||||||
|
return Object.fromEntries(props.map(name => [name, url[name].toString()]));
|
||||||
|
},
|
||||||
|
send: data => {
|
||||||
|
if (!data) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
const event = new this.win.CustomEvent("updatefromsandbox", {
|
||||||
|
detail: this.importValueFromSandbox(data)
|
||||||
|
});
|
||||||
|
this.win.dispatchEvent(event);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
Object.setPrototypeOf(externals, null);
|
||||||
|
return (name, args) => {
|
||||||
|
try {
|
||||||
|
const result = externals[name](...args);
|
||||||
|
return this.exportValueToSandbox(result);
|
||||||
|
} catch (error) {
|
||||||
|
throw this.createErrorForSandbox(error?.toString() ?? "");
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
;// CONCATENATED MODULE: ./src/pdf.sandbox.js
|
||||||
|
|
||||||
|
|
||||||
|
const pdfjsVersion = "4.3.136";
|
||||||
|
const pdfjsBuild = "0cec64437";
|
||||||
|
class SandboxSupport extends SandboxSupportBase {
|
||||||
|
exportValueToSandbox(val) {
|
||||||
|
return JSON.stringify(val);
|
||||||
|
}
|
||||||
|
importValueFromSandbox(val) {
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
createErrorForSandbox(errorMessage) {
|
||||||
|
return new Error(errorMessage);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
class Sandbox {
|
||||||
|
constructor(win, module) {
|
||||||
|
this.support = new SandboxSupport(win, this);
|
||||||
|
module.externalCall = this.support.createSandboxExternals();
|
||||||
|
this._module = module;
|
||||||
|
this._alertOnError = 0;
|
||||||
|
}
|
||||||
|
create(data) {
|
||||||
|
const code = ["var __webpack_exports__ = globalThis.pdfjsSandbox = {};\n\n;// CONCATENATED MODULE: ./src/scripting_api/constants.js\nconst Border = Object.freeze({\n s: \"solid\",\n d: \"dashed\",\n b: \"beveled\",\n i: \"inset\",\n u: \"underline\"\n});\nconst Cursor = Object.freeze({\n visible: 0,\n hidden: 1,\n delay: 2\n});\nconst Display = Object.freeze({\n visible: 0,\n hidden: 1,\n noPrint: 2,\n noView: 3\n});\nconst Font = Object.freeze({\n Times: \"Times-Roman\",\n TimesB: \"Times-Bold\",\n TimesI: \"Times-Italic\",\n TimesBI: \"Times-BoldItalic\",\n Helv: \"Helvetica\",\n HelvB: \"Helvetica-Bold\",\n HelvI: \"Helvetica-Oblique\",\n HelvBI: \"Helvetica-BoldOblique\",\n Cour: \"Courier\",\n CourB: \"Courier-Bold\",\n CourI: \"Courier-Oblique\",\n CourBI: \"Courier-BoldOblique\",\n Symbol: \"Symbol\",\n ZapfD: \"ZapfDingbats\",\n KaGo: \"HeiseiKakuGo-W5-UniJIS-UCS2-H\",\n KaMi: \"HeiseiMin-W3-UniJIS-UCS2-H\"\n});\nconst Highlight = Object.freeze({\n n: \"none\",\n i: \"invert\",\n p: \"push\",\n o: \"outline\"\n});\nconst Position = Object.freeze({\n textOnly: 0,\n iconOnly: 1,\n iconTextV: 2,\n textIconV: 3,\n iconTextH: 4,\n textIconH: 5,\n overlay: 6\n});\nconst ScaleHow = Object.freeze({\n proportional: 0,\n anamorphic: 1\n});\nconst ScaleWhen = Object.freeze({\n always: 0,\n never: 1,\n tooBig: 2,\n tooSmall: 3\n});\nconst Style = Object.freeze({\n ch: \"check\",\n cr: \"cross\",\n di: \"diamond\",\n ci: \"circle\",\n st: \"star\",\n sq: \"square\"\n});\nconst Trans = Object.freeze({\n blindsH: \"BlindsHorizontal\",\n blindsV: \"BlindsVertical\",\n boxI: \"BoxIn\",\n boxO: \"BoxOut\",\n dissolve: \"Dissolve\",\n glitterD: \"GlitterDown\",\n glitterR: \"GlitterRight\",\n glitterRD: \"GlitterRightDown\",\n random: \"Random\",\n replace: \"Replace\",\n splitHI: \"SplitHorizontalIn\",\n splitHO: \"SplitHorizontalOut\",\n splitVI: \"SplitVerticalIn\",\n splitVO: \"SplitVerticalOut\",\n wipeD: \"WipeDown\",\n wipeL: \"WipeLeft\",\n wipeR: \"WipeRight\",\n wipeU: \"WipeUp\"\n});\nconst ZoomType = Object.freeze({\n none: \"NoVary\",\n fitP: \"FitPage\",\n fitW: \"FitWidth\",\n fitH: \"FitHeight\",\n fitV: \"FitVisibleWidth\",\n pref: \"Preferred\",\n refW: \"ReflowWidth\"\n});\nconst GlobalConstants = Object.freeze({\n IDS_GREATER_THAN: \"Invalid value: must be greater than or equal to % s.\",\n IDS_GT_AND_LT: \"Invalid value: must be greater than or equal to % s \" + \"and less than or equal to % s.\",\n IDS_LESS_THAN: \"Invalid value: must be less than or equal to % s.\",\n IDS_INVALID_MONTH: \"** Invalid **\",\n IDS_INVALID_DATE: \"Invalid date / time: please ensure that the date / time exists. Field\",\n IDS_INVALID_DATE2: \" should match format \",\n IDS_INVALID_VALUE: \"The value entered does not match the format of the field\",\n IDS_AM: \"am\",\n IDS_PM: \"pm\",\n IDS_MONTH_INFO: \"January[1] February[2] March[3] April[4] May[5] \" + \"June[6] July[7] August[8] September[9] October[10] \" + \"November[11] December[12] Sept[9] Jan[1] Feb[2] Mar[3] \" + \"Apr[4] Jun[6] Jul[7] Aug[8] Sep[9] Oct[10] Nov[11] Dec[12]\",\n IDS_STARTUP_CONSOLE_MSG: \"** ^ _ ^ **\",\n RE_NUMBER_ENTRY_DOT_SEP: [\"[+-]?\\\\d*\\\\.?\\\\d*\"],\n RE_NUMBER_COMMIT_DOT_SEP: [\"[+-]?\\\\d+(\\\\.\\\\d+)?\", \"[+-]?\\\\.\\\\d+\", \"[+-]?\\\\d+\\\\.\"],\n RE_NUMBER_ENTRY_COMMA_SEP: [\"[+-]?\\\\d*,?\\\\d*\"],\n RE_NUMBER_COMMIT_COMMA_SEP: [\"[+-]?\\\\d+([.,]\\\\d+)?\", \"[+-]?[.,]\\\\d+\", \"[+-]?\\\\d+[.,]\"],\n RE_ZIP_ENTRY: [\"\\\\d{0,5}\"],\n RE_ZIP_COMMIT: [\"\\\\d{5}\"],\n RE_ZIP4_ENTRY: [\"\\\\d{0,5}(\\\\.|[- ])?\\\\d{0,4}\"],\n RE_ZIP4_COMMIT: [\"\\\\d{5}(\\\\.|[- ])?\\\\d{4}\"],\n RE_PHONE_ENTRY: [\"\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}\", \"\\\\(\\\\d{0,3}\", \"\\\\(\\\\d{0,3}\\\\)(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}\", \"\\\\(\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}\", \"\\\\d{0,3}\\\\)(\\\\.|[- ])?\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,4}\", \"011(\\\\.|[- \\\\d])*\"],\n RE_PHONE_COMMIT: [\"\\\\d{3}(\\\\.|[- ])?\\\\d{4}\", \"\\\\d{3}(\\\\.|[- ])?\\\\d{3}(\\\\.|[- ])?\\\\d{4}\", \"\\\\(\\\\d{3}\\\\)(\\\\.|[- ])?\\\\d{3}(\\\\.|[- ])?\\\\d{4}\", \"011(\\\\.|[- \\\\d])*\"],\n RE_SSN_ENTRY: [\"\\\\d{0,3}(\\\\.|[- ])?\\\\d{0,2}(\\\\.|[- ])?\\\\d{0,4}\"],\n RE_SSN_COMMIT: [\"\\\\d{3}(\\\\.|[- ])?\\\\d{2}(\\\\.|[- ])?\\\\d{4}\"]\n});\n\n;// CONCATENATED MODULE: ./src/scripting_api/common.js\nconst FieldType = {\n none: 0,\n number: 1,\n percent: 2,\n date: 3,\n time: 4\n};\nfunction createActionsMap(actions) {\n const actionsMap = new Map();\n if (actions) {\n for (const [eventType, actionsForEvent] of Object.entries(actions)) {\n actionsMap.set(eventType, actionsForEvent);\n }\n }\n return actionsMap;\n}\nfunction getFieldType(actions) {\n let format = actions.get(\"Format\");\n if (!format) {\n return FieldType.none;\n }\n format = format[0];\n format = format.Line truncated
|
||||||
|
code.push("delete dump;");
|
||||||
|
let success = false;
|
||||||
|
let buf = 0;
|
||||||
|
try {
|
||||||
|
const sandboxData = JSON.stringify(data);
|
||||||
|
code.push(`pdfjsScripting.initSandbox({ data: ${sandboxData} })`);
|
||||||
|
buf = this._module.stringToNewUTF8(code.join("\n"));
|
||||||
|
success = !!this._module.ccall("init", "number", ["number", "number"], [buf, this._alertOnError]);
|
||||||
|
} catch (error) {
|
||||||
|
console.error(error);
|
||||||
|
} finally {
|
||||||
|
if (buf) {
|
||||||
|
this._module.ccall("free", "number", ["number"], [buf]);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if (success) {
|
||||||
|
this.support.commFun = this._module.cwrap("commFun", null, ["string", "string"]);
|
||||||
|
} else {
|
||||||
|
this.nukeSandbox();
|
||||||
|
throw new Error("Cannot start sandbox");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
dispatchEvent(event) {
|
||||||
|
this.support?.callSandboxFunction("dispatchEvent", event);
|
||||||
|
}
|
||||||
|
dumpMemoryUse() {
|
||||||
|
this._module?.ccall("dumpMemoryUse", null, []);
|
||||||
|
}
|
||||||
|
nukeSandbox() {
|
||||||
|
if (this._module !== null) {
|
||||||
|
this.support.destroy();
|
||||||
|
this.support = null;
|
||||||
|
this._module.ccall("nukeSandbox", null, []);
|
||||||
|
this._module = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
evalForTesting(code, key) {
|
||||||
|
throw new Error("Not implemented: evalForTesting");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
function QuickJSSandbox() {
|
||||||
|
return quickjs_eval().then(module => new Sandbox(window, module));
|
||||||
|
}
|
||||||
|
|
||||||
|
var __webpack_exports__QuickJSSandbox = __webpack_exports__.QuickJSSandbox;
|
||||||
|
export { __webpack_exports__QuickJSSandbox as QuickJSSandbox };
|
||||||
|
|
||||||
|
//# sourceMappingURL=pdf.sandbox.mjs.map
|
||||||
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"pdf.sandbox.mjs","mappings":"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 truncated
|
||||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1 @@
|
|||||||
|
{"version":3,"file":"pdf.worker.mjs","mappings":"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 truncated
|
||||||
@@ -0,0 +1,226 @@
|
|||||||
|
[
|
||||||
|
{
|
||||||
|
"id": "iPDnx-jvqNFookcstk8i7",
|
||||||
|
"pageNumber": 1,
|
||||||
|
"konvaString": "{\"attrs\":{\"name\":\"PdfjsAnnotationExtension_shape_group\",\"id\":\"iPDnx-jvqNFookcstk8i7\"},\"className\":\"Group\",\"children\":[{\"attrs\":{\"x\":90.48336181640626,\"y\":73.49062500000001,\"width\":208.22937011718753,\"height\":25.200000000000003,\"opacity\":0.5,\"fill\":\"#ffff00\"},\"className\":\"Rect\"}]}",
|
||||||
|
"konvaClientRect": {
|
||||||
|
"x": 90.48336181640626,
|
||||||
|
"y": 73.49062500000001,
|
||||||
|
"width": 208.2293701171875,
|
||||||
|
"height": 25.200000000000003
|
||||||
|
},
|
||||||
|
"title": "老麦",
|
||||||
|
"type": 1,
|
||||||
|
"pdfjsType": 9,
|
||||||
|
"pdfjsEditorType": 9,
|
||||||
|
"subtype": "Highlight",
|
||||||
|
"color": "#ffff00",
|
||||||
|
"date": "D:20250622143820+08'00'",
|
||||||
|
"contentsObj": {
|
||||||
|
"text": "race-based Just-in-Time T"
|
||||||
|
},
|
||||||
|
"comments": [],
|
||||||
|
"resizable": false,
|
||||||
|
"draggable": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "eRT_dqO2zuyu42LvRzqN5",
|
||||||
|
"pageNumber": 1,
|
||||||
|
"konvaString": "{\"attrs\":{\"name\":\"PdfjsAnnotationExtension_shape_group\",\"id\":\"eRT_dqO2zuyu42LvRzqN5\"},\"className\":\"Group\",\"children\":[{\"attrs\":{\"x\":111.81756591796876,\"y\":365.04375000000005,\"width\":181.42694091796878,\"stroke\":\"#ff0000\",\"strokeWidth\":1,\"hitStrokeWidth\":10,\"height\":1},\"className\":\"Rect\"},{\"attrs\":{\"x\":53.971875000000004,\"y\":375.02812500000005,\"width\":239.26977539062503,\"stroke\":\"#ff0000\",\"strokeWidth\":1,\"hitStrokeWidth\":10,\"height\":1},\"className\":\"Rect\"},{\"attrs\":{\"x\":53.971875000000004,\"y\":385.00312500000007,\"width\":239.27263183593752,\"stroke\":\"#ff0000\",\"strokeWidth\":1,\"hitStrokeWidth\":10,\"height\":1},\"className\":\"Rect\"},{\"attrs\":{\"x\":53.971875000000004,\"y\":394.98750000000007,\"width\":239.2713134765625,\"stroke\":\"#ff0000\",\"strokeWidth\":1,\"hitStrokeWidth\":10,\"height\":1},\"className\":\"Rect\"},{\"attrs\":{\"x\":53.971875000000004,\"y\":404.96250000000003,\"width\":239.27519531250002,\"stroke\":\"#ff0000\",\"strokeWidth\":1,\"hitStrokeWidth\":10,\"height\":1},\"className\":\"Rect\"},{\"attrs\":{\"x\":53.971875000000004,\"y\":414.86250000000007,\"width\":239.26922607421878,\"stroke\":\"#ff0000\",\"strokeWidth\":1,\"hitStrokeWidth\":10,\"height\":1},\"className\":\"Rect\"},{\"attrs\":{\"x\":53.971875000000004,\"y\":424.84687500000007,\"width\":160.1025146484375,\"stroke\":\"#ff0000\",\"strokeWidth\":1,\"hitStrokeWidth\":10,\"height\":1},\"className\":\"Rect\"}]}",
|
||||||
|
"konvaClientRect": {
|
||||||
|
"x": 53.471875000000004,
|
||||||
|
"y": 364.54375000000005,
|
||||||
|
"width": 240.2751953125,
|
||||||
|
"height": 61.80312500000002
|
||||||
|
},
|
||||||
|
"title": "不具名用户",
|
||||||
|
"type": 2,
|
||||||
|
"pdfjsType": 12,
|
||||||
|
"pdfjsEditorType": 9,
|
||||||
|
"subtype": "StrikeOut",
|
||||||
|
"color": "#ff0000",
|
||||||
|
"date": "D:20250622143823+08'00'",
|
||||||
|
"contentsObj": {
|
||||||
|
"text": "lly typed ones. Since no concrete type informationis available, traditional compilers need to emit generic code that canhandle all possible type combinations at runtime. We present an al-ternative compilation technique for dynamically-typed languagesthat identifies frequently executed loop traces at run-time and thengenerates machine code on the fly that is specialized for the ac-tual dynamic types occurring on each path "
|
||||||
|
},
|
||||||
|
"comments": [],
|
||||||
|
"resizable": false,
|
||||||
|
"draggable": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "7bZ9kZilDjdrnsdsPHamI",
|
||||||
|
"pageNumber": 1,
|
||||||
|
"konvaString": "{\"attrs\":{\"name\":\"PdfjsAnnotationExtension_shape_group\",\"id\":\"7bZ9kZilDjdrnsdsPHamI\"},\"className\":\"Group\",\"children\":[{\"attrs\":{\"x\":372.32878417968755,\"y\":455.04062500000003,\"width\":183.96401367187502,\"stroke\":\"#1677ff\",\"strokeWidth\":1,\"hitStrokeWidth\":10,\"height\":1},\"className\":\"Rect\"},{\"attrs\":{\"x\":317.015625,\"y\":465.0250000000001,\"width\":239.275341796875,\"stroke\":\"#1677ff\",\"strokeWidth\":1,\"hitStrokeWidth\":10,\"height\":1},\"className\":\"Rect\"},{\"attrs\":{\"x\":317.015625,\"y\":475.00000000000006,\"width\":239.27475585937503,\"stroke\":\"#1677ff\",\"strokeWidth\":1,\"hitStrokeWidth\":10,\"height\":1},\"className\":\"Rect\"},{\"attrs\":{\"x\":317.015625,\"y\":484.9750000000001,\"width\":239.27373046875002,\"stroke\":\"#1677ff\",\"strokeWidth\":1,\"hitStrokeWidth\":10,\"height\":1},\"className\":\"Rect\"},{\"attrs\":{\"x\":317.015625,\"y\":494.87500000000006,\"width\":161.2676513671875,\"stroke\":\"#1677ff\",\"strokeWidth\":1,\"hitStrokeWidth\":10,\"height\":1},\"className\":\"Rect\"}]}",
|
||||||
|
"konvaClientRect": {
|
||||||
|
"x": 316.515625,
|
||||||
|
"y": 454.54062500000003,
|
||||||
|
"width": 240.27717285156257,
|
||||||
|
"height": 41.83437500000002
|
||||||
|
},
|
||||||
|
"title": "不具名用户",
|
||||||
|
"type": 3,
|
||||||
|
"pdfjsType": 10,
|
||||||
|
"pdfjsEditorType": 9,
|
||||||
|
"subtype": "Underline",
|
||||||
|
"color": "#1677ff",
|
||||||
|
"date": "D:20250622143825+08'00'",
|
||||||
|
"contentsObj": {
|
||||||
|
"text": "er generalized machine code that can deal with allpotential type combinations. While compile-time static type infer-ence might be able to gather type information to generate opti-mized machine code, traditional static analysis is very expensiveand hence not well suited for the highly inter"
|
||||||
|
},
|
||||||
|
"comments": [],
|
||||||
|
"resizable": false,
|
||||||
|
"draggable": false
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "QpRXx_3UrRhLp8COmuZu3",
|
||||||
|
"pageNumber": 1,
|
||||||
|
"konvaString": "{\"attrs\":{\"name\":\"PdfjsAnnotationExtension_shape_group\",\"id\":\"QpRXx_3UrRhLp8COmuZu3\"},\"className\":\"Group\",\"children\":[{\"attrs\":{\"x\":114.00000000000001,\"y\":143.40000000000003,\"width\":220.20000000000005,\"height\":42,\"strokeScaleEnabled\":false,\"stroke\":\"#ff0000\"},\"className\":\"Rect\"}]}",
|
||||||
|
"konvaClientRect": {
|
||||||
|
"x": 113.00000000000001,
|
||||||
|
"y": 142.40000000000003,
|
||||||
|
"width": 222.20000000000005,
|
||||||
|
"height": 44
|
||||||
|
},
|
||||||
|
"title": "不具名用户",
|
||||||
|
"type": 5,
|
||||||
|
"pdfjsType": 5,
|
||||||
|
"pdfjsEditorType": 15,
|
||||||
|
"subtype": "Square",
|
||||||
|
"color": "#ff0000",
|
||||||
|
"date": "D:20250622143828+08'00'",
|
||||||
|
"contentsObj": {
|
||||||
|
"text": ""
|
||||||
|
},
|
||||||
|
"comments": [],
|
||||||
|
"resizable": true,
|
||||||
|
"draggable": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "haDJTxXE3SzQZnYyNHeBs",
|
||||||
|
"pageNumber": 1,
|
||||||
|
"konvaString": "{\"attrs\":{\"draggable\":true,\"name\":\"PdfjsAnnotationExtension_shape_group\",\"id\":\"haDJTxXE3SzQZnYyNHeBs\"},\"className\":\"Group\",\"children\":[{\"attrs\":{\"data\":\"M 391.20000000000005 237.60000000000002 Q 392.6087987926405 223.8979824127301 403.6 232.20000000000002 Q 405.00879879264056 218.49798241273007 416.00000000000006 226.8 Q 417.40879879264054 213.0979824127301 428.4000000000001 221.40000000000003 Q 429.8087987926406 207.6979824127301 440.80000000000007 216.00000000000003 Q 442.20879879264055 202.29798241273008 453.20000000000005 210.60000000000002 Q 454.6087987926406 196.8979824127301 465.6000000000001 205.20000000000002 Q 467.00879879264056 191.49798241273007 478.0000000000001 199.8 Q 479.4087987926406 186.0979824127301 490.4000000000001 194.40000000000003 Q 491.8087987926406 180.69798241273008 502.80000000000007 189 Q 504.20879879264055 175.29798241273008 515.2 183.60000000000002 Q 516.6087987926406 169.8979824127301 527.6000000000001 178.20000000000002 Q 529.0087987926407 164.49798241273007 540.0000000000001 172.8 Q 553.4931387400671 175.38219033793058 544.2000000000002 185.5 Q 557.6931387400672 188.0821903379306 548.4000000000001 198.20000000000002 Q 561.8931387400671 200.7821903379306 552.6000000000001 210.90000000000003 Q 566.093138740067 213.4821903379306 556.8000000000001 223.60000000000002 Q 570.2931387400671 226.1821903379306 561.0000000000001 236.3 Q 574.4931387400671 238.8821903379306 565.2 249.00000000000003 Q 578.6931387400671 251.5821903379306 569.4000000000001 261.70000000000005 Q 582.8931387400671 264.2821903379307 573.6000000000001 274.40000000000003 Q 587.093138740067 276.9821903379306 577.8000000000001 287.1 Q 591.2931387400671 289.68219033793065 582.0000000000001 299.80000000000007 Q 595.4931387400671 302.38219033793064 586.2 312.5 Q 599.6931387400671 315.0821903379306 590.4000000000001 325.20000000000005 Q 587.634252148756 338.8289678194403 577.1000000000001 329.75000000000006 Q 574.3342521487559 343.3789678194404 563.8000000000001 334.30000000000007 Q 561.034252148756 347.92896781944035 550.5000000000001 338.85 Q 547.734252148756 352.4789678194403 537.2 343.40000000000003 Q 534.434252148756 357.02896781944037 523.9000000000001 347.95000000000005 Q 521.134252148756 361.5789678194403 510.6000000000001 352.50000000000006 Q 507.8342521487559 366.1289678194404 497.30000000000007 357.05000000000007 Q 494.53425214875597 370.67896781944035 484.0000000000001 361.6000000000001 Q 481.23425214875596 375.2289678194404 470.70000000000005 366.1500000000001 Q 467.93425214875595 379.77896781944037 457.4000000000001 370.70000000000005 Q 454.634252148756 384.3289678194403 444.1000000000001 375.25000000000006 Q 441.3342521487559 388.8789678194404 430.80000000000007 379.80000000000007 Q 417.6356788005848 374.7341243266127 428.05714285714294 365.2285714285715 Q 414.89282165772767 360.1626957551841 425.3142857142858 350.6571428571429 Q 412.14996451487053 345.5912671837555 422.57142857142867 336.08571428571435 Q 409.40710737201334 331.01983861232696 419.8285714285715 321.5142857142858 Q 406.6642502291562 316.4484100408984 417.08571428571435 306.9428571428572 Q 403.9213930862991 301.8769814694698 414.3428571428572 292.3714285714286 Q 401.17853594344194 287.30555289804124 411.6000000000001 277.80000000000007 Q 397.4990071071501 276.5303546023418 404.80000000000007 264.40000000000003 Q 390.6990071071501 263.1303546023418 398.00000000000006 251.00000000000003 Q 383.89900710715006 249.73035460234178 391.20000000000005 237.60000000000002 Q 391.20000000000005 225.60000000000002 391.20000000000005 237.60000000000002 Q 391.20000000000005 225.60000000000002 391.20000000000005 237.60000000000002 \",\"stroke\":\"#83d33c\",\"fillEnabled\":false,\"lineJoin\":\"round\",\"lineCap\":\"round\",\"hitStrokeWidth\":20},\"className\":\"Path\"}]}",
|
||||||
|
"konvaClientRect": {
|
||||||
|
"x": 382.89900710715006,
|
||||||
|
"y": 163.49798241273007,
|
||||||
|
"width": 217.79413163291701,
|
||||||
|
"height": 226.38098540671032
|
||||||
|
},
|
||||||
|
"title": "不具名用户",
|
||||||
|
"type": 13,
|
||||||
|
"pdfjsType": 8,
|
||||||
|
"pdfjsEditorType": 15,
|
||||||
|
"subtype": "PolyLine",
|
||||||
|
"color": "#83d33c",
|
||||||
|
"date": "D:20250622143837+08'00'",
|
||||||
|
"contentsObj": {
|
||||||
|
"text": ""
|
||||||
|
},
|
||||||
|
"comments": [],
|
||||||
|
"resizable": true,
|
||||||
|
"draggable": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "DLCK62zxdu1ge6Iuo7vtk",
|
||||||
|
"pageNumber": 1,
|
||||||
|
"konvaString": "{\"attrs\":{\"name\":\"PdfjsAnnotationExtension_shape_group\",\"id\":\"DLCK62zxdu1ge6Iuo7vtk\"},\"className\":\"Group\",\"children\":[{\"attrs\":{\"x\":89.00000000000001,\"y\":280.6,\"base64\":\"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEoAAAAoCAYAAABZ7GwgAAAKrWlDQ1BJQ0MgUHJvZmlsZQAASImVlwdUU8kax+fe9JDQQq+hhiJdIICU0EPvTVRCEiCUEAJBRFREFlewoiKCZUVXQBRclSJrQUSxsAg2LOgGWUTUdbFgQ+Vd4BDcfee9d953ztz53f/95ptv5szkfAGArMISCNJhWQAy+DnCMB93akxsHBU3BjBAERCBFbBhsbMFjJCQAIDYXP93e38XQNP9LbPpWP/+/b+aHIebzQYACkE4kZPNzkD4FNLesAXCHABQdYiutzxHMM09CCsIkQQRFk9z8iy/m+bEGUbjZ3wiwjwQ1gAAT2KxhMkAkIwQnZrLTkbikHwRtuRzeHyE8xB2ycjI5CDchrAR4iNAeDo+PfG7OMl/i5koicliJUt4di0zhvfkZQvSWSv+z+3435aRLpqbg4Y0UorQNwzppZE9+yMt01/C/MSg4DnmcWb8ZzhF5Bs5x+xsj7g5zk4PZ84xh+XpL4mTHhQwx0k8b4kPL4cZMcfcbK/wORZmhknmTRJ6MOaYJZzPQZQWKdFTuExJ/PyUiOg5zuVFBUlySwv3n/fxkOhCUZhkLVy+j/v8vN6SfcjI/m7tPKZkbE5KhK9kH1jz+XP5jPmY2TGS3DhcT695n0iJvyDHXTKXID1E4s9N95Ho2bnhkrE5yOGcHxsi2cNUll/IHINQYA3sgQOwBGHABoAcbl7O9CI8MgUrhLzklBwqA7lpXCqTzzZfQLW2tLYFYPrezh6Lt/dm7iOkhJ/XChIBcEQadHteC0PuWYs5MmXcvEY7D4AMcv47p9giYe6shp5+YJBfAxmgAFSBFtADRsAMydAOOAE34AX8QDCIALFgKWCDFJABhGA5KABrQQkoA1vBTlAF9oODoA4cAydAKzgDLoDL4DroA3fAQyAGI+AFGAfvwSQEQTiIDFEgVUgbMoBMIWuIDrlAXlAAFAbFQglQMsSHRFABtA4qg8qhKugAVA/9Ap2GLkBXoX7oPjQEjUFvoM8wCibBCrAmbAhbwHSYAfvDEfASOBnOgvPhYngzXAnXwEfhFvgCfB2+A4vhF/AECqCkUEooHZQZio7yQAWj4lBJKCFqNaoUVYGqQTWi2lHdqFsoMeol6hMai6agqWgztBPaFx2JZqOz0KvRG9FV6Dp0C7oLfQs9hB5Hf8OQMRoYU4wjhomJwSRjlmNKMBWYw5hmzCXMHcwI5j0Wi1XC0rD2WF9sLDYVuxK7EbsX24TtwPZjh7ETOBxOFWeKc8YF41i4HFwJbjfuKO487iZuBPcRL4XXxlvjvfFxeD6+CF+BP4I/h7+JH8VPEmQJBgRHQjCBQ1hB2EI4RGgn3CCMECaJckQa0ZkYQUwlriVWEhuJl4iDxLdSUlK6Ug5SoVI8qUKpSqnjUlekhqQ+keRJJiQPUjxJRNpMqiV1kO6T3pLJZEOyGzmOnEPeTK4nXyQ/Jn+UpkibSzOlOdJrpKulW6RvSr+SIcgYyDBklsrky1TInJS5IfNSliBrKOshy5JdLVste1p2QHZCjiJnJRcslyG3Ue6I3FW5Z/I4eUN5L3mOfLH8QfmL8sMUFEWP4kFhU9ZRDlEuUUYUsAo0BaZCqkKZwjGFXoVxRXnFhYpRinmK1YpnFcVKKCVDJaZSutIWpRNKd5U+K2sqM5S5yhuUG5VvKn9QUVdxU+GqlKo0qdxR+axKVfVSTVPdptqq+kgNrWaiFqq2XG2f2iW1l+oK6k7qbPVS9RPqDzRgDRONMI2VGgc1ejQmNLU0fTQFmrs1L2q+1FLSctNK1dqhdU5rTJui7aLN096hfV77OVWRyqCmUyupXdRxHQ0dXx2RzgGdXp1JXZpupG6RbpPuIz2iHl0vSW+HXqfeuL62fqB+gX6D/gMDggHdIMVgl0G3wQdDmmG04XrDVsNnNBUak5ZPa6ANGpGNXI2yjGqMbhtjjenGacZ7jftMYBNbkxSTapMbprCpnSnPdK9p/wLMAocF/AU1CwbMSGYMs1yzBrMhcyXzAPMi81bzVxb6FnEW2yy6Lb5Z2lqmWx6yfGglb+VnVWTVbvXG2sSabV1tfduGbONts8amzeb1QtOF3IX7Ft6zpdgG2q637bT9amdvJ7RrtBuz17dPsN9jP0BXoIfQN9KvOGAc3B3WOJxx+ORo55jjeMLxLyczpzSnI07PFtEWcRcdWjTsrOvMcj7gLHahuiS4/OQidtVxZbnWuD5x03PjuB12G2UYM1IZRxmv3C3dhe7N7h88HD1WeXR4ojx9PEs9e73kvSK9qrwee+t6J3s3eI/72Pqs9Onwxfj6+27zHWBqMtnMeua4n73fKr8uf5J/uH+V/5MAkwBhQHsgHOgXuD1wMMggiB/UGgyCmcHbgx+F0EKyQn4NxYaGhFaHPg2zCisI6w6nhC8LPxL+PsI9YkvEw0ijSFFkZ5RMVHxUfdSHaM/o8mhxjEXMqpjrsWqxvNi2OFxcVNzhuInFXot3Lh6Jt40vib+7hLYkb8nVpWpL05eeXSazjLXsZAImITrhSMIXVjCrhjWRyEzckzjO9mDvYr/guHF2cMa4ztxy7miSc1J50rNk5+TtyWMprikVKS95Hrwq3utU39T9qR/SgtNq06bSo9ObMvAZCRmn+fL8NH5XplZmXma/wFRQIhBnOWbtzBoX+gsPZ0PZS7LbchSQAqlHZCT6QTSU65JbnftxedTyk3lyefy8nhUmKzasGM33zv95JXole2VngU7B2oKhVYxVB1ZDqxNXd67RW1O8ZqTQp7BuLXFt2trfiiyLyoverYte116sWVxYPPyDzw8NJdIlwpKB9U7r9/+I/pH3Y+8Gmw27N3wr5ZReK7Msqyj7spG98domq02Vm6Y2J23u3WK3Zd9W7Fb+1rvbXLfVlcuV55cPbw/c3rKDuqN0x7udy3ZerVhYsX8XcZdol7gyoLJtt/7urbu/VKVU3al2r27ao7Fnw54Pezl7b+5z29e4X3N/2f7PP/F+unfA50BLjWFNxUHswdyDTw9FHer+mf5z/WG1w2WHv9bya8V1YXVd9fb19Uc0jmxpgBtEDWNH44/2HfM81tZo1nigSamp7Dg4Ljr+/JeEX+6e8D/ReZJ+svGUwak9zZTm0haoZUXLeGtKq7gttq3/tN/pznan9uZfzX+tPaNzpvqs4tkt54jnis9Nnc8/P9Eh6Hh5IfnCcOeyzocXYy7e7grt6r3kf+nKZe/LF7sZ3eevOF85c9Xx6ulr9Gut1+2ut/TY9jT/Zvtbc69db8sN+xttfQ597f2L+s/ddL154Zbnrcu3mbev3wm603838u69gfgB8T3OvWf30++/fpD7YPJh4SBmsPSR7KOKxxqPa343/r1JbCc+O+Q51PMk/MnDYfbwiz+y//gyUvyU/LRiVHu0/pn1szNj3mN9zxc/H3kheDH5suRPuT/3vDJ6deovt796xmPGR14LX0+92fhW9W3tu4XvOidCJh6/z3g/+aH0o+rHuk/0T92foz+PTi7/gvtS+dX4a/s3/2+DUxlTUwKWkDVTCqCQBiclAfCmFgByLACUPgCIi2fr6hmDZv8LzBD4Tzxbe8+YHQANbgCEdADgg7zWd8yWtdKFiIboEW4AtrGRtLkaeKZenylLhhH/rQBsqh1c8rwQ/MNma/nv8v5nDyRR/9b/CxtcCL6caq6ZAAAAOGVYSWZNTQAqAAAACAABh2kABAAAAAEAAAAaAAAAAAACoAIABAAAAAEAAABKoAMABAAAAAEAAAAoAAAAAP73g18AAA61SURBVGgF7VpZcyPlFb2y9n2zbNmWdzP2bNjMMIRhJyFAQcFDCKk8J8/JP8gLfyHvyVsqVSnyEEJCKGAgwLDPZs94PDMe76tkybJk7ZJzzteW15alIVOpSjFfVVvtVve3nO/ec8+9LYPsaVtbWyH8+xscr+Pox+HC8UNqKSx2Esc7OH5vMBii1cUbqicA6Q2c/wGHp3rtB/65gfX/CmC9TRwUUNsg/aX6P7940BQCW/j7JsEybLvbHVx4YEn61kHLGmjCH3LSA5D0QeJVYvNbWtRlnIzwyoNWE4ErBIpMf3+iGzy6UtmScqmiRjQaDdJkotH+bxrWIpUSxi9XpKnJIEaMbcDnfWgpAkXCui+tUt6SpTtxufTetFjsRhl8vF26T4Xu12SPnCNXUcgWZfK7FRn7eE6CnW45+0qf+EKO7ZB15ON1vzTVveMebiDmiaVNGf1wRqwus/jCLuk80SzGo3Z12wq3YIlNsEA9C2C/W8pIa+8pgcqli7J0OyFXP5iSyPFmOfZYm7j9Vt0+9y4LUa3uPfcM1I4B6s0Zi6VVFXIlEZNBSvjk/01NOjfDIzA9KcFNVyYTsjK9Id0A1dfhFKNx1105Xj5dktj8BoAoCAHRbbi+uZ6T5bvrUsxXJB3Py8z1mGRTeSEQeo1XTVaj+Fqc4g07cZ/eXdq1ewKKu57PlCSzwQkfnnEFi96IZSUPgEyWJtlMFpSFGc27C+ewnJDFbhK72yLLU+vyxdu3ZP7mmrKA8z8bFH+7a2fSHGZ9ZVO+/fukLMJaOAe9xvuKxbJsRLNSxmd8MS1fol+b07zT16HnMA9X0CGnf9wpw6FuxWmH7tm+0DhQnEi+LJOXl+W7d++qyRzslJNNRjNSzJYkBVK99sGMzN2IwaL239lkNErXyWY58VRErr0/LeOfzkupWJHcZkmMFqOmgvc8UgI5pxJ5WF0SFqoFij1f75Line truncated
|
||||||
|
"konvaClientRect": {
|
||||||
|
"x": 0,
|
||||||
|
"y": 0,
|
||||||
|
"width": 0,
|
||||||
|
"height": 0
|
||||||
|
},
|
||||||
|
"title": "laomai",
|
||||||
|
"type": 9,
|
||||||
|
"pdfjsType": 13,
|
||||||
|
"pdfjsEditorType": 13,
|
||||||
|
"subtype": "Caret",
|
||||||
|
"date": "D:20250622143847+08'00'",
|
||||||
|
"contentsObj": {
|
||||||
|
"text": "",
|
||||||
|
"image": "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEoAAAAoCAYAAABZ7GwgAAAKrWlDQ1BJQ0MgUHJvZmlsZQAASImVlwdUU8kax+fe9JDQQq+hhiJdIICU0EPvTVRCEiCUEAJBRFREFlewoiKCZUVXQBRclSJrQUSxsAg2LOgGWUTUdbFgQ+Vd4BDcfee9d953ztz53f/95ptv5szkfAGArMISCNJhWQAy+DnCMB93akxsHBU3BjBAERCBFbBhsbMFjJCQAIDYXP93e38XQNP9LbPpWP/+/b+aHIebzQYACkE4kZPNzkD4FNLesAXCHABQdYiutzxHMM09CCsIkQQRFk9z8iy/m+bEGUbjZ3wiwjwQ1gAAT2KxhMkAkIwQnZrLTkbikHwRtuRzeHyE8xB2ycjI5CDchrAR4iNAeDo+PfG7OMl/i5koicliJUt4di0zhvfkZQvSWSv+z+3435aRLpqbg4Y0UorQNwzppZE9+yMt01/C/MSg4DnmcWb8ZzhF5Bs5x+xsj7g5zk4PZ84xh+XpL4mTHhQwx0k8b4kPL4cZMcfcbK/wORZmhknmTRJ6MOaYJZzPQZQWKdFTuExJ/PyUiOg5zuVFBUlySwv3n/fxkOhCUZhkLVy+j/v8vN6SfcjI/m7tPKZkbE5KhK9kH1jz+XP5jPmY2TGS3DhcT695n0iJvyDHXTKXID1E4s9N95Ho2bnhkrE5yOGcHxsi2cNUll/IHINQYA3sgQOwBGHABoAcbl7O9CI8MgUrhLzklBwqA7lpXCqTzzZfQLW2tLYFYPrezh6Lt/dm7iOkhJ/XChIBcEQadHteC0PuWYs5MmXcvEY7D4AMcv47p9giYe6shp5+YJBfAxmgAFSBFtADRsAMydAOOAE34AX8QDCIALFgKWCDFJABhGA5KABrQQkoA1vBTlAF9oODoA4cAydAKzgDLoDL4DroA3fAQyAGI+AFGAfvwSQEQTiIDFEgVUgbMoBMIWuIDrlAXlAAFAbFQglQMsSHRFABtA4qg8qhKugAVA/9Ap2GLkBXoX7oPjQEjUFvoM8wCibBCrAmbAhbwHSYAfvDEfASOBnOgvPhYngzXAnXwEfhFvgCfB2+A4vhF/AECqCkUEooHZQZio7yQAWj4lBJKCFqNaoUVYGqQTWi2lHdqFsoMeol6hMai6agqWgztBPaFx2JZqOz0KvRG9FV6Dp0C7oLfQs9hB5Hf8OQMRoYU4wjhomJwSRjlmNKMBWYw5hmzCXMHcwI5j0Wi1XC0rD2WF9sLDYVuxK7EbsX24TtwPZjh7ETOBxOFWeKc8YF41i4HFwJbjfuKO487iZuBPcRL4XXxlvjvfFxeD6+CF+BP4I/h7+JH8VPEmQJBgRHQjCBQ1hB2EI4RGgn3CCMECaJckQa0ZkYQUwlriVWEhuJl4iDxLdSUlK6Ug5SoVI8qUKpSqnjUlekhqQ+keRJJiQPUjxJRNpMqiV1kO6T3pLJZEOyGzmOnEPeTK4nXyQ/Jn+UpkibSzOlOdJrpKulW6RvSr+SIcgYyDBklsrky1TInJS5IfNSliBrKOshy5JdLVste1p2QHZCjiJnJRcslyG3Ue6I3FW5Z/I4eUN5L3mOfLH8QfmL8sMUFEWP4kFhU9ZRDlEuUUYUsAo0BaZCqkKZwjGFXoVxRXnFhYpRinmK1YpnFcVKKCVDJaZSutIWpRNKd5U+K2sqM5S5yhuUG5VvKn9QUVdxU+GqlKo0qdxR+axKVfVSTVPdptqq+kgNrWaiFqq2XG2f2iW1l+oK6k7qbPVS9RPqDzRgDRONMI2VGgc1ejQmNLU0fTQFmrs1L2q+1FLSctNK1dqhdU5rTJui7aLN096hfV77OVWRyqCmUyupXdRxHQ0dXx2RzgGdXp1JXZpupG6RbpPuIz2iHl0vSW+HXqfeuL62fqB+gX6D/gMDggHdIMVgl0G3wQdDmmG04XrDVsNnNBUak5ZPa6ANGpGNXI2yjGqMbhtjjenGacZ7jftMYBNbkxSTapMbprCpnSnPdK9p/wLMAocF/AU1CwbMSGYMs1yzBrMhcyXzAPMi81bzVxb6FnEW2yy6Lb5Z2lqmWx6yfGglb+VnVWTVbvXG2sSabV1tfduGbONts8amzeb1QtOF3IX7Ft6zpdgG2q637bT9amdvJ7RrtBuz17dPsN9jP0BXoIfQN9KvOGAc3B3WOJxx+ORo55jjeMLxLyczpzSnI07PFtEWcRcdWjTsrOvMcj7gLHahuiS4/OQidtVxZbnWuD5x03PjuB12G2UYM1IZRxmv3C3dhe7N7h88HD1WeXR4ojx9PEs9e73kvSK9qrwee+t6J3s3eI/72Pqs9Onwxfj6+27zHWBqMtnMeua4n73fKr8uf5J/uH+V/5MAkwBhQHsgHOgXuD1wMMggiB/UGgyCmcHbgx+F0EKyQn4NxYaGhFaHPg2zCisI6w6nhC8LPxL+PsI9YkvEw0ijSFFkZ5RMVHxUfdSHaM/o8mhxjEXMqpjrsWqxvNi2OFxcVNzhuInFXot3Lh6Jt40vib+7hLYkb8nVpWpL05eeXSazjLXsZAImITrhSMIXVjCrhjWRyEzckzjO9mDvYr/guHF2cMa4ztxy7miSc1J50rNk5+TtyWMprikVKS95Hrwq3utU39T9qR/SgtNq06bSo9ObMvAZCRmn+fL8NH5XplZmXma/wFRQIhBnOWbtzBoX+gsPZ0PZS7LbchSQAqlHZCT6QTSU65JbnftxedTyk3lyefy8nhUmKzasGM33zv95JXole2VngU7B2oKhVYxVB1ZDqxNXd67RW1O8ZqTQp7BuLXFt2trfiiyLyoverYte116sWVxYPPyDzw8NJdIlwpKB9U7r9/+I/pH3Y+8Gmw27N3wr5ZReK7Msqyj7spG98domq02Vm6Y2J23u3WK3Zd9W7Fb+1rvbXLfVlcuV55cPbw/c3rKDuqN0x7udy3ZerVhYsX8XcZdol7gyoLJtt/7urbu/VKVU3al2r27ao7Fnw54Pezl7b+5z29e4X3N/2f7PP/F+unfA50BLjWFNxUHswdyDTw9FHer+mf5z/WG1w2WHv9bya8V1YXVd9fb19Uc0jmxpgBtEDWNH44/2HfM81tZo1nigSamp7Dg4Ljr+/JeEX+6e8D/ReZJ+svGUwak9zZTm0haoZUXLeGtKq7gttq3/tN/pznan9uZfzX+tPaNzpvqs4tkt54jnis9Nnc8/P9Eh6Hh5IfnCcOeyzocXYy7e7grt6r3kf+nKZe/LF7sZ3eevOF85c9Xx6ulr9Gut1+2ut/TY9jT/Zvtbc69db8sN+xttfQ597f2L+s/ddL154Zbnrcu3mbev3wm603838u69gfgB8T3OvWf30++/fpD7YPJh4SBmsPSR7KOKxxqPa343/r1JbCc+O+Q51PMk/MnDYfbwiz+y//gyUvyU/LRiVHu0/pn1szNj3mN9zxc/H3kheDH5suRPuT/3vDJ6deovt796xmPGR14LX0+92fhW9W3tu4XvOidCJh6/z3g/+aH0o+rHuk/0T92foz+PTi7/gvtS+dX4a/s3/2+DUxlTUwKWkDVTCqCQBiclAfCmFgByLACUPgCIi2fr6hmDZv8LzBD4Tzxbe8+YHQANbgCEdADgg7zWd8yWtdKFiIboEW4AtrGRtLkaeKZenylLhhH/rQBsqh1c8rwQ/MNma/nv8v5nDyRR/9b/CxtcCL6caq6ZAAAAOGVYSWZNTQAqAAAACAABh2kABAAAAAEAAAAaAAAAAAACoAIABAAAAAEAAABKoAMABAAAAAEAAAAoAAAAAP73g18AAA61SURBVGgF7VpZcyPlFb2y9n2zbNmWdzP2bNjMMIRhJyFAQcFDCKk8J8/JP8gLfyHvyVsqVSnyEEJCKGAgwLDPZs94PDMe76tkybJk7ZJzzteW15alIVOpSjFfVVvtVve3nO/ec8+9LYPsaVtbWyH8+xscr+Pox+HC8UNqKSx2Esc7OH5vMBii1cUbqicA6Q2c/wGHp3rtB/65gfX/CmC9TRwUUNsg/aX6P7940BQCW/j7JsEybLvbHVx4YEn61kHLGmjCH3LSA5D0QeJVYvNbWtRlnIzwyoNWE4ErBIpMf3+iGzy6UtmScqmiRjQaDdJkotH+bxrWIpUSxi9XpKnJIEaMbcDnfWgpAkXCui+tUt6SpTtxufTetFjsRhl8vF26T4Xu12SPnCNXUcgWZfK7FRn7eE6CnW45+0qf+EKO7ZB15ON1vzTVveMebiDmiaVNGf1wRqwus/jCLuk80SzGo3Z12wq3YIlNsEA9C2C/W8pIa+8pgcqli7J0OyFXP5iSyPFmOfZYm7j9Vt0+9y4LUa3uPfcM1I4B6s0Zi6VVFXIlEZNBSvjk/01NOjfDIzA9KcFNVyYTsjK9Id0A1dfhFKNx1105Xj5dktj8BoAoCAHRbbi+uZ6T5bvrUsxXJB3Py8z1mGRTeSEQeo1XTVaj+Fqc4g07cZ/eXdq1ewKKu57PlCSzwQkfnnEFi96IZSUPgEyWJtlMFpSFGc27C+ewnJDFbhK72yLLU+vyxdu3ZP7mmrKA8z8bFH+7a2fSHGZ9ZVO+/fukLMJaOAe9xvuKxbJsRLNSxmd8MS1fol+b07zT16HnMA9X0CGnf9wpw6FuxWmH7tm+0DhQnEi+LJOXl+W7d++qyRzslJNNRjNSzJYkBVK99sGMzN2IwaL239lkNErXyWY58VRErr0/LeOfzkupWJHcZkmMFqOmgvc8UgI5pxJ5WF0SFqoFij1f757iqwJAqmAixUJR1pc3xWDc/frgGS0tny1LNlmsbanbDzUMFPeRbpRYzMjtb5YUaAcHJlBcCKMOP1emE8plDq6cESkLNyrDOq5+MK3Oe4ZbZfj5bnH5bPvIl4sJtrnkqTcG5dSzkdoLwuBZcNSdb5fl+sezEujQyDxA6zyCI602k4S6PXD3I/wOC20YKLoL/bnzVFCLine truncated
|
||||||
|
},
|
||||||
|
"comments": [],
|
||||||
|
"resizable": true,
|
||||||
|
"draggable": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "1_-tBdUhEvYCgdrAkCMD1",
|
||||||
|
"pageNumber": 1,
|
||||||
|
"konvaString": "{\"attrs\":{\"name\":\"PdfjsAnnotationExtension_shape_group\",\"id\":\"1_-tBdUhEvYCgdrAkCMD1\"},\"className\":\"Group\",\"children\":[{\"attrs\":{\"x\":157.80000000000004,\"y\":537.3619489559165,\"width\":120,\"height\":71.27610208816705,\"base64\":\"data:image/png;base64,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 truncated
|
||||||
|
"konvaClientRect": {
|
||||||
|
"x": 157.80000000000004,
|
||||||
|
"y": 537.3619489559165,
|
||||||
|
"width": 120.00000000000003,
|
||||||
|
"height": 71.27610208816702
|
||||||
|
},
|
||||||
|
"title": "不具名用户",
|
||||||
|
"type": 10,
|
||||||
|
"pdfjsType": 13,
|
||||||
|
"pdfjsEditorType": 13,
|
||||||
|
"subtype": "Stamp",
|
||||||
|
"date": "D:20250622143856+08'00'",
|
||||||
|
"contentsObj": {
|
||||||
|
"text": "",
|
||||||
|
"image": "data:image/png;base64,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 truncated
|
||||||
|
},
|
||||||
|
"comments": [],
|
||||||
|
"resizable": true,
|
||||||
|
"draggable": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "2DVI8wT4istGVODnpnT1q",
|
||||||
|
"pageNumber": 1,
|
||||||
|
"konvaString": "{\"attrs\":{\"name\":\"PdfjsAnnotationExtension_shape_group\",\"id\":\"2DVI8wT4istGVODnpnT1q\"},\"className\":\"Group\",\"children\":[{\"attrs\":{\"x\":511.2000000000001,\"y\":57.60000000000001,\"width\":16,\"height\":16,\"fillLinearGradientEndPointY\":16,\"fillLinearGradientColorStops\":[0,\"rgb(255, 222, 33)\",1,\"#fff\"],\"stroke\":\"#000\",\"cornerRadius\":[0,3,0,0],\"strokeWidth\":1,\"shadowColor\":\"rgba(0,0,0,0.2)\",\"shadowBlur\":2,\"shadowOffsetX\":1,\"shadowOffsetY\":1,\"shadowOpacity\":0.3},\"className\":\"Rect\"},{\"attrs\":{\"points\":[514.2,63.20000000000001,521.2,63.20000000000001],\"stroke\":\"#555\",\"strokeWidth\":0.6,\"lineCap\":\"round\"},\"className\":\"Line\"},{\"attrs\":{\"points\":[514.2,64.80000000000001,524.2,64.80000000000001],\"stroke\":\"#555\",\"strokeWidth\":0.6,\"lineCap\":\"round\"},\"className\":\"Line\"},{\"attrs\":{\"points\":[514.2,66.4,524.2,66.4],\"stroke\":\"#555\",\"strokeWidth\":0.6,\"lineCap\":\"round\"},\"className\":\"Line\"},{\"attrs\":{\"points\":[514.2,68.00000000000001,524.2,68.00000000000001],\"stroke\":\"#555\",\"strokeWidth\":0.6,\"lineCap\":\"round\"},\"className\":\"Line\"}]}",
|
||||||
|
"konvaClientRect": {
|
||||||
|
"x": 508.7000000000001,
|
||||||
|
"y": 55.10000000000001,
|
||||||
|
"width": 21.999999999999943,
|
||||||
|
"height": 22
|
||||||
|
},
|
||||||
|
"title": "不具名用户",
|
||||||
|
"type": 11,
|
||||||
|
"pdfjsType": 1,
|
||||||
|
"pdfjsEditorType": 15,
|
||||||
|
"subtype": "Text",
|
||||||
|
"color": "rgb(255, 222, 33)",
|
||||||
|
"date": "D:20250622143901+08'00'",
|
||||||
|
"contentsObj": {
|
||||||
|
"text": ""
|
||||||
|
},
|
||||||
|
"comments": [],
|
||||||
|
"resizable": false,
|
||||||
|
"draggable": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"id": "Z9PaV2G4yohUue9Jh6vZy",
|
||||||
|
"pageNumber": 1,
|
||||||
|
"konvaString": "{\"attrs\":{\"name\":\"PdfjsAnnotationExtension_shape_group\",\"id\":\"Z9PaV2G4yohUue9Jh6vZy\"},\"className\":\"Group\",\"children\":[{\"attrs\":{\"points\":[375.00000000000006,44.400000000000006,497.4000000000001,117.00000000000001],\"stroke\":\"#ff0000\",\"fill\":\"#ff0000\",\"hitStrokeWidth\":20,\"lineCap\":\"round\",\"lineJoin\":\"round\",\"strokeScaleEnabled\":false},\"className\":\"Arrow\"}]}",
|
||||||
|
"konvaClientRect": {
|
||||||
|
"x": 374.00000000000006,
|
||||||
|
"y": 38.400000000000006,
|
||||||
|
"width": 124.40000000000003,
|
||||||
|
"height": 84.60000000000001
|
||||||
|
},
|
||||||
|
"title": "不具名用户",
|
||||||
|
"type": 12,
|
||||||
|
"pdfjsType": 4,
|
||||||
|
"pdfjsEditorType": 15,
|
||||||
|
"subtype": "Arrow",
|
||||||
|
"color": "#ff0000",
|
||||||
|
"date": "D:20250622143915+08'00'",
|
||||||
|
"contentsObj": {
|
||||||
|
"text": "这里需要改进"
|
||||||
|
},
|
||||||
|
"comments": [
|
||||||
|
{
|
||||||
|
"id": "QjyUH39ZaIc7YpeQU6ll5",
|
||||||
|
"title": "不具名用户",
|
||||||
|
"date": "D:20250622143915+08'00'",
|
||||||
|
"content": "将状态设置为 “拒绝”",
|
||||||
|
"status": "Rejected"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"resizable": true,
|
||||||
|
"draggable": true
|
||||||
|
}
|
||||||
|
]
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,3 @@
|
|||||||
|
àRCopyright 1990-2009 Adobe Systems Incorporated.
|
||||||
|
All rights reserved.
|
||||||
|
See ./LICENSEáCNS2-H
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,3 @@
|
|||||||
|
àRCopyright 1990-2009 Adobe Systems Incorporated.
|
||||||
|
All rights reserved.
|
||||||
|
See ./LICENSEá ETen-B5-H` ^
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -0,0 +1,4 @@
|
|||||||
|
àRCopyright 1990-2009 Adobe Systems Incorporated.
|
||||||
|
All rights reserved.
|
||||||
|
See ./LICENSE!!�º]aX!!]`�21�> �p�z�$]‚�"R‚d�-Uƒ7�*„␍4„%�+ „Z „{�/…%…<�9K…b�1]†.�"‡‰`]‡,�"]ˆ
|
||||||
|
�"]ˆh�"]‰F�"]Š$�"]‹�"]‹`�"]Œ>�"]��"]�z�"]ŽX�"]�6�"]��"]�r�"]‘P�"]’.�"]“�"]“j�"]”H�"]•&�"]–�"]–b�"]—@�"]˜�"]˜|�"]™Z�"]š8�"]›�"]›t�"]œR�"]�0�"]ž�"]žl�"]ŸJ�"] (�"]¡�"]¡d�"]¢B�"]£ �"X£~�']¤W�"]¥5�"]¦�"]¦q�"]§O�"]¨-�"]©�"]©i�"]ªG�"]«%�"]¬�"]¬a�"]?�"]®�"]®{�"]¯Y�"]°7�"]±�"]±s�"]²Q�"]³/�"]´␍�"]´k�"]µI�"]¶'�"]·�"]·c�"]¸A�"]¹�"]¹}�"]º[�"]»9
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Loaded 100 of 836 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user