mirror of
https://github.com/alam00000/bentopdf.git
synced 2026-11-11 09:23:36 +01:00
Compare commits
36
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 |
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. |
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -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.
|
|
||||||
+67
-137
@@ -1,25 +1,19 @@
|
|||||||
<!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" />
|
||||||
<title>About Bentopdf - Fast, Private, and Free PDF Tools</title>
|
<title>About Bentopdf - Fast, Private, and Free PDF Tools</title>
|
||||||
<link href="/src/css/styles.css" rel="stylesheet" />
|
<link href="/src/css/styles.css" rel="stylesheet" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="antialiased bg-gray-900 text-gray-300">
|
<body class="antialiased bg-gray-900 text-gray-300">
|
||||||
<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>
|
||||||
+65
-105
@@ -1,25 +1,19 @@
|
|||||||
<!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" />
|
||||||
<title>Contact Us - BentoPDF</title>
|
<title>Contact Us - BentoPDF</title>
|
||||||
<link href="/src/css/styles.css" rel="stylesheet" />
|
<link href="/src/css/styles.css" rel="stylesheet" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="antialiased bg-gray-900 text-gray-300">
|
<body class="antialiased bg-gray-900 text-gray-300">
|
||||||
<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,25 +1,19 @@
|
|||||||
<!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" />
|
||||||
<title>Frequently Asked Questions - BentoPDF</title>
|
<title>Frequently Asked Questions - BentoPDF</title>
|
||||||
<link href="/src/css/styles.css" rel="stylesheet" />
|
<link href="/src/css/styles.css" rel="stylesheet" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="antialiased bg-gray-900 text-gray-300">
|
<body class="antialiased bg-gray-900 text-gray-300">
|
||||||
<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,20 +230,17 @@
|
|||||||
|
|
||||||
<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">Bento PDF</span>
|
|
||||||
</div>
|
</div>
|
||||||
<p class="text-gray-400 text-sm">
|
<p class="text-gray-400 text-sm">
|
||||||
© 2025 Bento PDF. 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>
|
||||||
|
|
||||||
@@ -330,13 +248,13 @@
|
|||||||
<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>
|
||||||
+7
-1
@@ -25,6 +25,7 @@
|
|||||||
<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>
|
||||||
|
|
||||||
@@ -55,6 +56,7 @@
|
|||||||
<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="./licensing.html" class="mobile-nav-link">Licensing</a>
|
||||||
<a href="index.html#tools-header" class="mobile-nav-link">All Tools</a>
|
<a href="index.html#tools-header" class="mobile-nav-link">All Tools</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -594,7 +596,7 @@
|
|||||||
© 2025 BentoPDF. All rights reserved.
|
© 2025 BentoPDF. All rights reserved.
|
||||||
</p>
|
</p>
|
||||||
<p class="text-gray-500 text-xs mt-2">
|
<p class="text-gray-500 text-xs mt-2">
|
||||||
Version <span id="app-version">1.6.2</span>
|
Version <span id="app-version"></span>
|
||||||
</p>
|
</p>
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
@@ -616,6 +618,9 @@
|
|||||||
<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>
|
||||||
|
<a href="./licensing.html" class="hover:text-indigo-400">Licensing</a>
|
||||||
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="./terms.html" class="hover:text-indigo-400">Terms and Conditions</a>
|
<a href="./terms.html" class="hover:text-indigo-400">Terms and Conditions</a>
|
||||||
</li>
|
</li>
|
||||||
@@ -664,6 +669,7 @@
|
|||||||
</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>
|
||||||
|
|||||||
+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.6.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",
|
||||||
|
|||||||
+65
-107
@@ -1,25 +1,19 @@
|
|||||||
<!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" />
|
||||||
<title>Privacy Policy - BentoPDF</title>
|
<title>Privacy Policy - BentoPDF</title>
|
||||||
<link href="/src/css/styles.css" rel="stylesheet" />
|
<link href="/src/css/styles.css" rel="stylesheet" />
|
||||||
</head>
|
</head>
|
||||||
|
|
||||||
<body class="antialiased bg-gray-900 text-gray-300">
|
<body class="antialiased bg-gray-900 text-gray-300">
|
||||||
<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,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 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,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 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 814 files, more files were not shown because too many files have changed in this diff.
Show more
Reference in new issue
Block a user