2025-10-27 22:01:36 +05:30
|
|
|
<!doctype html>
|
|
|
|
|
<html lang="en">
|
2026-01-07 16:55:12 +05:30
|
|
|
<head>
|
|
|
|
|
<meta charset="UTF-8" />
|
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
2025-10-27 22:01:36 +05:30
|
|
|
|
2026-01-07 16:55:12 +05:30
|
|
|
<!-- Primary Meta Tags -->
|
|
|
|
|
<title>Bookmark Online Free - Bookmark Tool | BentoPDF</title>
|
|
|
|
|
<meta
|
|
|
|
|
name="title"
|
|
|
|
|
content="Bookmark Online Free - Bookmark Tool | BentoPDF"
|
|
|
|
|
/>
|
|
|
|
|
<meta
|
|
|
|
|
name="description"
|
|
|
|
|
content="★ Bookmark online free - Bookmark PDFs easily ★ No signup ★ Unlimited files ★ Privacy-first ★ Works in browser ★ Fast & secure"
|
|
|
|
|
/>
|
|
|
|
|
<meta name="keywords" content="bookmark, bookmark, online pdf" />
|
|
|
|
|
<meta name="author" content="BentoPDF" />
|
|
|
|
|
<meta
|
|
|
|
|
name="robots"
|
|
|
|
|
content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1"
|
|
|
|
|
/>
|
2025-10-27 22:01:36 +05:30
|
|
|
|
2026-01-07 16:55:12 +05:30
|
|
|
<!-- Canonical URL -->
|
|
|
|
|
<link rel="canonical" href="https://www.bentopdf.com/bookmark.html" />
|
2025-10-27 22:01:36 +05:30
|
|
|
|
2026-01-07 16:55:12 +05:30
|
|
|
<!-- Open Graph / Facebook / LinkedIn -->
|
|
|
|
|
<meta property="og:type" content="website" />
|
|
|
|
|
<meta property="og:url" content="https://www.bentopdf.com/bookmark" />
|
|
|
|
|
<meta
|
|
|
|
|
property="og:title"
|
|
|
|
|
content="Bookmark Online Free - Bookmark Tool | BentoPDF"
|
|
|
|
|
/>
|
|
|
|
|
<meta
|
|
|
|
|
property="og:description"
|
|
|
|
|
content="★ Bookmark online free - Bookmark PDFs easily ★ No signup ★ Unlimited files ★ Privacy-first ★ Works in browser ★ Fast & secure"
|
|
|
|
|
/>
|
|
|
|
|
<meta
|
|
|
|
|
property="og:image"
|
|
|
|
|
content="https://www.bentopdf.com/images/og-bookmark.png"
|
|
|
|
|
/>
|
|
|
|
|
<meta property="og:image:width" content="1200" />
|
|
|
|
|
<meta property="og:image:height" content="630" />
|
|
|
|
|
<meta property="og:site_name" content="BentoPDF" />
|
2025-10-27 22:35:49 +05:30
|
|
|
|
2026-01-07 16:55:12 +05:30
|
|
|
<!-- Twitter Card -->
|
|
|
|
|
<meta name="twitter:card" content="summary_large_image" />
|
|
|
|
|
<meta name="twitter:url" content="https://www.bentopdf.com/bookmark" />
|
|
|
|
|
<meta name="twitter:title" content="Bookmark Free" />
|
|
|
|
|
<meta
|
|
|
|
|
name="twitter:description"
|
|
|
|
|
content="★ Bookmark online free - Bookmark PDFs easily ★ No signup ★ Unlimited files ★ Privacy-first ★ Works in browser ★ Fast & "
|
|
|
|
|
/>
|
|
|
|
|
<meta
|
|
|
|
|
name="twitter:image"
|
|
|
|
|
content="https://www.bentopdf.com/images/twitter-bookmark.png"
|
|
|
|
|
/>
|
|
|
|
|
<meta name="twitter:site" content="@BentoPDF" />
|
2025-10-27 22:01:36 +05:30
|
|
|
|
2026-01-07 16:55:12 +05:30
|
|
|
<!-- Mobile Web App -->
|
|
|
|
|
<meta name="mobile-web-app-capable" content="yes" />
|
|
|
|
|
<meta name="apple-mobile-web-app-capable" content="yes" />
|
|
|
|
|
<meta name="apple-mobile-web-app-title" content="Bookmark" />
|
2025-11-13 11:26:40 +05:30
|
|
|
|
2026-01-07 16:55:12 +05:30
|
|
|
<title>Advanced PDF Bookmark Tool - BentoPDF</title>
|
2025-11-13 11:26:40 +05:30
|
|
|
|
2026-01-07 16:55:12 +05:30
|
|
|
<link href="/src/css/styles.css" rel="stylesheet" />
|
|
|
|
|
<link href="../../src/css/bookmark.css" rel="stylesheet" />
|
2025-11-13 11:26:40 +05:30
|
|
|
|
2026-01-07 16:55:12 +05:30
|
|
|
<!-- Web App Manifest -->
|
|
|
|
|
<link rel="manifest" href="/site.webmanifest" />
|
|
|
|
|
|
|
|
|
|
<!-- Favicons -->
|
|
|
|
|
<link rel="icon" type="image/svg+xml" href="/images/favicon.svg" />
|
|
|
|
|
<link
|
|
|
|
|
rel="icon"
|
|
|
|
|
type="image/png"
|
|
|
|
|
sizes="192x192"
|
|
|
|
|
href="/images/favicon-192x192.png"
|
|
|
|
|
/>
|
|
|
|
|
<link
|
|
|
|
|
rel="icon"
|
|
|
|
|
type="image/png"
|
|
|
|
|
sizes="512x512"
|
|
|
|
|
href="/images/favicon-512x512.png"
|
|
|
|
|
/>
|
|
|
|
|
<link
|
|
|
|
|
rel="apple-touch-icon"
|
|
|
|
|
sizes="180x180"
|
|
|
|
|
href="/images/apple-touch-icon.png"
|
|
|
|
|
/>
|
|
|
|
|
<link rel="icon" href="/favicon.ico" sizes="32x32" />
|
|
|
|
|
</head>
|
|
|
|
|
|
|
|
|
|
<body class="antialiased bg-gray-900">
|
2026-01-12 22:11:01 +05:30
|
|
|
{{> navbar }}
|
2026-01-07 16:55:12 +05:30
|
|
|
<div
|
|
|
|
|
id="uploader"
|
|
|
|
|
class="min-h-screen flex items-center justify-center p-4 bg-gray-900"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
id="tool-uploader"
|
|
|
|
|
class="bg-gray-800 rounded-xl shadow-xl p-8 max-w-2xl w-full text-gray-200 border border-gray-700"
|
|
|
|
|
>
|
|
|
|
|
<button
|
|
|
|
|
id="back-to-tools"
|
|
|
|
|
class="flex items-center gap-2 text-indigo-400 hover:text-indigo-300 mb-6 font-semibold"
|
|
|
|
|
>
|
|
|
|
|
<i data-lucide="arrow-left" class="cursor-pointer"></i>
|
|
|
|
|
<span class="cursor-pointer" data-i18n="tools.backToTools">
|
|
|
|
|
Back to Tools
|
|
|
|
|
</span>
|
|
|
|
|
</button>
|
|
|
|
|
<h1
|
|
|
|
|
class="text-2xl font-bold text-white mb-2"
|
|
|
|
|
data-i18n="tools:editBookmarks.name"
|
|
|
|
|
>
|
|
|
|
|
Bookmark Free Online - Fast & Secure
|
|
|
|
|
</h1>
|
|
|
|
|
<p class="text-gray-400 mb-6" data-i18n="tools:editBookmarks.subtitle">
|
|
|
|
|
Add, edit, import, delete and extract PDF bookmarks.
|
|
|
|
|
</p>
|
2025-10-27 22:01:36 +05:30
|
|
|
|
2026-01-07 16:55:12 +05:30
|
|
|
<!-- Drop Zone for Main PDF Upload -->
|
|
|
|
|
<div
|
|
|
|
|
id="drop-zone"
|
|
|
|
|
class="relative flex flex-col items-center justify-center w-full h-48 border-2 border-dashed border-gray-600 rounded-xl cursor-pointer bg-gray-700 hover:bg-gray-600 transition-colors duration-300"
|
|
|
|
|
>
|
|
|
|
|
<div class="flex flex-col items-center justify-center pt-5 pb-6">
|
|
|
|
|
<i
|
|
|
|
|
data-lucide="upload-cloud"
|
|
|
|
|
class="w-10 h-10 mb-3 text-gray-400"
|
|
|
|
|
></i>
|
|
|
|
|
<p class="mb-2 text-sm text-gray-300">
|
|
|
|
|
<span class="font-semibold" data-i18n="upload.clickToSelect"
|
|
|
|
|
>Click to select a file</span
|
|
|
|
|
>
|
|
|
|
|
<span data-i18n="upload.orDragAndDrop">or drag and drop</span>
|
|
|
|
|
</p>
|
|
|
|
|
<p class="text-xs text-gray-500">A single PDF file</p>
|
|
|
|
|
<p class="text-xs text-gray-500">
|
|
|
|
|
Your files never leave your device.
|
|
|
|
|
</p>
|
|
|
|
|
</div>
|
|
|
|
|
<input
|
|
|
|
|
type="file"
|
|
|
|
|
id="file-input"
|
|
|
|
|
accept=".pdf"
|
|
|
|
|
class="absolute top-0 left-0 w-full h-full opacity-0 cursor-pointer"
|
|
|
|
|
/>
|
|
|
|
|
</div>
|
2025-10-27 22:01:36 +05:30
|
|
|
|
2026-01-07 16:55:12 +05:30
|
|
|
<!-- File Display Area -->
|
|
|
|
|
<div id="file-display-area" class="mt-4 hidden"></div>
|
2025-10-27 22:01:36 +05:30
|
|
|
|
2026-01-07 16:55:12 +05:30
|
|
|
<!-- Auto Extract Checkbox -->
|
|
|
|
|
<div class="mt-4">
|
|
|
|
|
<label class="flex items-center gap-2 text-sm text-gray-300">
|
|
|
|
|
<input
|
|
|
|
|
type="checkbox"
|
|
|
|
|
id="auto-extract-checkbox"
|
|
|
|
|
class="w-4 h-4 accent-blue-500"
|
|
|
|
|
/>
|
|
|
|
|
<span>Auto-extract existing bookmarks</span>
|
|
|
|
|
</label>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- Import Bookmarks Section -->
|
|
|
|
|
<div class="mt-8 pt-6 border-t border-gray-700">
|
|
|
|
|
<h3 class="text-sm font-semibold text-gray-300 mb-4">
|
|
|
|
|
Or Import Bookmarks
|
|
|
|
|
</h3>
|
|
|
|
|
|
|
|
|
|
<!-- CSV Upload -->
|
|
|
|
|
<label class="block mb-4">
|
|
|
|
|
<span class="text-xs text-gray-500"
|
|
|
|
|
>CSV format: title,page,level</span
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="relative flex flex-col items-center justify-center w-full h-32 mt-2 border-2 border-dashed border-gray-600 rounded-xl cursor-pointer bg-gray-800 hover:bg-gray-700 transition-colors duration-300"
|
|
|
|
|
>
|
|
|
|
|
<div class="flex flex-col items-center justify-center pt-4 pb-4">
|
|
|
|
|
<i data-lucide="sheet" class="w-8 h-8 mb-2 text-gray-400"></i>
|
|
|
|
|
<p class="text-xs text-gray-400">
|
|
|
|
|
<span class="font-semibold">Click to upload CSV</span> or drag
|
|
|
|
|
here
|
|
|
|
|
</p>
|
2025-10-27 22:01:36 +05:30
|
|
|
</div>
|
2026-01-07 16:55:12 +05:30
|
|
|
<input
|
|
|
|
|
type="file"
|
|
|
|
|
id="csv-input"
|
|
|
|
|
accept=".csv"
|
|
|
|
|
class="absolute top-0 left-0 w-full h-full opacity-0 cursor-pointer"
|
|
|
|
|
/>
|
2025-11-13 11:26:40 +05:30
|
|
|
</div>
|
2026-01-07 16:55:12 +05:30
|
|
|
</label>
|
2025-10-27 22:01:36 +05:30
|
|
|
|
2026-01-07 16:55:12 +05:30
|
|
|
<!-- JSON Upload -->
|
|
|
|
|
<label class="block">
|
|
|
|
|
<span class="text-xs text-gray-500">JSON format</span>
|
|
|
|
|
<div
|
|
|
|
|
class="relative flex flex-col items-center justify-center w-full h-32 mt-2 border-2 border-dashed border-gray-600 rounded-xl cursor-pointer bg-gray-800 hover:bg-gray-700 transition-colors duration-300"
|
|
|
|
|
>
|
|
|
|
|
<div class="flex flex-col items-center justify-center pt-4 pb-4">
|
|
|
|
|
<i data-lucide="braces" class="w-8 h-8 mb-2 text-gray-400"></i>
|
|
|
|
|
<p class="text-xs text-gray-400">
|
|
|
|
|
<span class="font-semibold">Click to upload JSON</span> or
|
|
|
|
|
drag here
|
|
|
|
|
</p>
|
2025-10-27 22:01:36 +05:30
|
|
|
</div>
|
2026-01-07 16:55:12 +05:30
|
|
|
<input
|
|
|
|
|
type="file"
|
|
|
|
|
id="json-input"
|
|
|
|
|
accept=".json"
|
|
|
|
|
class="absolute top-0 left-0 w-full h-full opacity-0 cursor-pointer"
|
|
|
|
|
/>
|
2025-11-13 11:26:40 +05:30
|
|
|
</div>
|
2026-01-07 16:55:12 +05:30
|
|
|
</label>
|
2025-11-13 11:26:40 +05:30
|
|
|
</div>
|
2026-01-07 16:55:12 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
2025-10-27 22:01:36 +05:30
|
|
|
|
2026-01-07 16:55:12 +05:30
|
|
|
<div id="app" class="hidden bg-gray-900 min-h-screen">
|
|
|
|
|
<header
|
|
|
|
|
class="bg-gray-800 border-b border-gray-700 shadow-sm sticky top-0 z-50"
|
|
|
|
|
>
|
|
|
|
|
<div class="max-w-7xl mx-auto px-4 py-3">
|
|
|
|
|
<div class="flex items-center justify-between flex-wrap gap-2">
|
|
|
|
|
<h1 class="text-xl font-bold text-white" id="filename-display">
|
|
|
|
|
PDF Bookmark Editor
|
|
|
|
|
</h1>
|
|
|
|
|
<div class="flex gap-2 flex-wrap">
|
|
|
|
|
<button
|
|
|
|
|
id="undo-btn"
|
|
|
|
|
class="px-3 py-2 text-sm bg-gray-700 hover:bg-gray-600 text-white rounded disabled:opacity-50 disabled:cursor-not-allowed flex items-center gap-1"
|
|
|
|
|
disabled
|
|
|
|
|
>
|
|
|
|
|
<i data-lucide="undo-2" class="w-4 h-4"></i> Undo
|
|
|
|
|
</button>
|
|
|
|
|
<button
|
|
|
|
|
id="redo-btn"
|
|
|
|
|
class="px-3 py-2 text-sm bg-gray-700 hover:bg-gray-600 text-white rounded disabled:opacity-50 disabled:cursor-not-allowed flex items-center gap-1"
|
|
|
|
|
disabled
|
|
|
|
|
>
|
|
|
|
|
<i data-lucide="redo-2" class="w-4 h-4"></i> Redo
|
|
|
|
|
</button>
|
|
|
|
|
<button
|
|
|
|
|
id="delete-all-btn"
|
|
|
|
|
class="px-3 py-2 text-sm bg-red-600 hover:bg-red-700 text-white rounded flex items-center gap-1"
|
|
|
|
|
>
|
|
|
|
|
<i data-lucide="trash-2" class="w-4 h-4"></i> Delete All
|
|
|
|
|
</button>
|
|
|
|
|
<button
|
|
|
|
|
id="reset-btn"
|
|
|
|
|
class="px-3 py-2 text-sm bg-orange-600 hover:bg-orange-700 text-white rounded flex items-center gap-1"
|
|
|
|
|
>
|
|
|
|
|
<i data-lucide="rotate-ccw" class="w-4 h-4"></i> Reset
|
|
|
|
|
</button>
|
2025-10-27 22:01:36 +05:30
|
|
|
|
2026-01-07 16:55:12 +05:30
|
|
|
<button
|
|
|
|
|
id="back-btn"
|
|
|
|
|
class="px-3 py-2 text-sm bg-gray-700 hover:bg-gray-600 text-white rounded flex items-center gap-1"
|
|
|
|
|
>
|
|
|
|
|
<i data-lucide="arrow-left" class="w-4 h-4"></i> Back to Tools
|
2025-11-13 11:26:40 +05:30
|
|
|
</button>
|
|
|
|
|
</div>
|
2026-01-07 16:55:12 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</header>
|
2025-11-13 11:26:40 +05:30
|
|
|
|
2026-01-07 16:55:12 +05:30
|
|
|
<div class="lg:hidden bg-gray-800 border-b border-gray-700">
|
|
|
|
|
<div class="flex">
|
|
|
|
|
<button
|
|
|
|
|
id="show-viewer-btn"
|
|
|
|
|
class="flex-1 py-3 text-sm font-medium bg-indigo-600 text-white"
|
|
|
|
|
>
|
|
|
|
|
PDF Viewer
|
|
|
|
|
</button>
|
|
|
|
|
<button
|
|
|
|
|
id="show-bookmarks-btn"
|
|
|
|
|
class="flex-1 py-3 text-sm font-medium text-gray-300 hover:text-white"
|
|
|
|
|
>
|
|
|
|
|
Bookmarks
|
|
|
|
|
</button>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2025-11-13 11:26:40 +05:30
|
|
|
|
2026-01-07 16:55:12 +05:30
|
|
|
<div class="max-w-7xl mx-auto p-4">
|
|
|
|
|
<div class="flex flex-col lg:flex-row gap-4">
|
|
|
|
|
<div id="viewer-section" class="w-full lg:w-[50%] flex-shrink-0">
|
|
|
|
|
<div class="bg-white rounded-lg shadow-lg p-4">
|
|
|
|
|
<div
|
|
|
|
|
class="flex flex-wrap items-center justify-between gap-2 mb-4"
|
|
|
|
|
>
|
|
|
|
|
<div class="flex items-center gap-2">
|
|
|
|
|
<button
|
|
|
|
|
id="prev-page"
|
|
|
|
|
class="px-3 py-2 bg-gray-100 hover:bg-gray-200 rounded text-sm"
|
|
|
|
|
>
|
|
|
|
|
<i
|
|
|
|
|
data-lucide="chevron-left"
|
|
|
|
|
class="w-5 h-5 text-blue-600"
|
|
|
|
|
></i>
|
|
|
|
|
</button>
|
|
|
|
|
<span
|
|
|
|
|
id="page-indicator"
|
|
|
|
|
class="text-sm font-medium text-gray-700 whitespace-nowrap"
|
|
|
|
|
>Page 1 / 1</span
|
|
|
|
|
>
|
|
|
|
|
<button
|
|
|
|
|
id="next-page"
|
|
|
|
|
class="px-3 py-2 bg-gray-100 hover:bg-gray-200 rounded text-sm"
|
|
|
|
|
>
|
|
|
|
|
<i
|
|
|
|
|
data-lucide="chevron-right"
|
|
|
|
|
class="w-5 h-5 text-blue-600"
|
|
|
|
|
></i>
|
|
|
|
|
</button>
|
2025-11-13 11:26:40 +05:30
|
|
|
</div>
|
2026-01-07 16:55:12 +05:30
|
|
|
<div class="flex items-center gap-2">
|
|
|
|
|
<span class="text-sm text-gray-600">Go to:</span>
|
|
|
|
|
<input
|
|
|
|
|
type="number"
|
|
|
|
|
id="goto-page"
|
|
|
|
|
min="1"
|
|
|
|
|
class="w-16 px-2 py-1 border border-gray-300 rounded text-sm"
|
|
|
|
|
/>
|
|
|
|
|
<button
|
|
|
|
|
id="goto-btn"
|
|
|
|
|
class="px-3 py-1 bg-blue-500 hover:bg-blue-600 text-white rounded text-sm"
|
|
|
|
|
>
|
|
|
|
|
Go
|
|
|
|
|
</button>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="flex items-center gap-2">
|
|
|
|
|
<button
|
|
|
|
|
id="zoom-out-btn"
|
|
|
|
|
class="px-3 py-2 bg-gray-100 hover:bg-gray-200 rounded text-sm"
|
|
|
|
|
title="Zoom Out"
|
|
|
|
|
>
|
|
|
|
|
<i data-lucide="minus" class="w-5 h-5 text-blue-600"></i>
|
|
|
|
|
</button>
|
|
|
|
|
<span
|
|
|
|
|
id="zoom-indicator"
|
|
|
|
|
class="text-sm font-medium text-gray-700 whitespace-nowrap min-w-[60px] text-center"
|
|
|
|
|
>100%</span
|
|
|
|
|
>
|
|
|
|
|
<button
|
|
|
|
|
id="zoom-in-btn"
|
|
|
|
|
class="px-3 py-2 bg-gray-100 hover:bg-gray-200 rounded text-sm"
|
|
|
|
|
title="Zoom In"
|
|
|
|
|
>
|
|
|
|
|
<i data-lucide="plus" class="w-5 h-5 text-blue-600"></i>
|
|
|
|
|
</button>
|
|
|
|
|
<button
|
|
|
|
|
id="zoom-fit-btn"
|
|
|
|
|
class="px-3 py-1 bg-gray-100 hover:bg-gray-200 rounded text-sm"
|
|
|
|
|
title="Fit to Width"
|
|
|
|
|
>
|
|
|
|
|
Fit
|
|
|
|
|
</button>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2025-10-27 22:01:36 +05:30
|
|
|
|
2026-01-07 16:55:12 +05:30
|
|
|
<div
|
|
|
|
|
id="picking-mode-banner"
|
|
|
|
|
class="hidden mb-4 p-3 bg-blue-100 border-2 border-blue-400 rounded-lg"
|
|
|
|
|
>
|
|
|
|
|
<div class="flex items-center justify-between">
|
|
|
|
|
<div class="flex items-center gap-2">
|
|
|
|
|
<i
|
|
|
|
|
data-lucide="crosshair"
|
|
|
|
|
class="w-5 h-5 text-blue-600"
|
|
|
|
|
></i>
|
|
|
|
|
<span class="text-sm font-medium text-blue-800"
|
|
|
|
|
>Click on the PDF to set bookmark destination</span
|
|
|
|
|
>
|
|
|
|
|
</div>
|
|
|
|
|
<button
|
|
|
|
|
id="cancel-picking-btn"
|
|
|
|
|
class="px-3 py-1 bg-red-500 hover:bg-red-600 text-white rounded text-xs"
|
|
|
|
|
>
|
|
|
|
|
Cancel
|
2025-10-27 22:01:36 +05:30
|
|
|
</button>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
2026-01-07 16:55:12 +05:30
|
|
|
<div
|
|
|
|
|
class="overflow-auto border border-gray-200 rounded"
|
|
|
|
|
id="canvas-container"
|
|
|
|
|
>
|
|
|
|
|
<div class="pdf-canvas-wrapper" id="pdf-canvas-wrapper">
|
|
|
|
|
<canvas
|
|
|
|
|
id="pdf-canvas"
|
|
|
|
|
class="max-w-full h-auto mx-auto"
|
|
|
|
|
></canvas>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
2025-11-13 11:26:40 +05:30
|
|
|
</div>
|
2026-01-07 16:55:12 +05:30
|
|
|
</div>
|
2025-11-13 11:26:40 +05:30
|
|
|
|
2026-01-07 16:55:12 +05:30
|
|
|
<div
|
|
|
|
|
id="bookmarks-section"
|
|
|
|
|
class="hidden lg:block w-full lg:w-[50%] flex-shrink-0"
|
|
|
|
|
>
|
|
|
|
|
<div class="bg-white rounded-lg shadow-lg p-4">
|
|
|
|
|
<h3 class="text-lg font-bold text-gray-800 mb-4">Bookmarks</h3>
|
|
|
|
|
|
|
|
|
|
<div class="mb-4">
|
|
|
|
|
<div class="relative">
|
|
|
|
|
<i
|
|
|
|
|
data-lucide="search"
|
|
|
|
|
class="absolute left-3 top-1/2 transform -translate-y-1/2 w-4 h-4 text-gray-400"
|
|
|
|
|
></i>
|
|
|
|
|
<input
|
|
|
|
|
type="text"
|
|
|
|
|
id="search-bookmarks"
|
|
|
|
|
placeholder="Search bookmarks..."
|
2026-01-13 16:59:25 +05:30
|
|
|
class="w-full pl-10 pr-3 py-2 border border-gray-300 rounded-lg text-sm text-gray-700"
|
2026-01-07 16:55:12 +05:30
|
|
|
/>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="mb-4 p-3 bg-gray-50 rounded-lg">
|
|
|
|
|
<input
|
|
|
|
|
type="text"
|
|
|
|
|
id="bookmark-title"
|
|
|
|
|
placeholder="Bookmark title..."
|
2026-01-13 16:59:25 +05:30
|
|
|
class="w-full px-3 py-2 border border-gray-300 rounded-lg mb-2 text-sm text-gray-700"
|
2026-01-07 16:55:12 +05:30
|
|
|
/>
|
|
|
|
|
<button
|
|
|
|
|
id="add-top-level-btn"
|
|
|
|
|
class="w-full px-3 py-2 btn-gradient hover:shadow-xl text-white rounded text-sm font-medium !flex items-center justify-center gap-2 focus:ring-2 focus:ring-blue-400 transition duration-200"
|
|
|
|
|
>
|
|
|
|
|
<i data-lucide="plus" class="w-4 h-4"></i>
|
|
|
|
|
<span
|
|
|
|
|
>Add to Page <span id="current-page-display">1</span></span
|
|
|
|
|
>
|
2025-11-13 11:26:40 +05:30
|
|
|
</button>
|
2026-01-07 16:55:12 +05:30
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="mb-4">
|
|
|
|
|
<label
|
|
|
|
|
class="flex items-center gap-2 text-sm font-medium text-gray-700 mb-2"
|
|
|
|
|
>
|
|
|
|
|
<input
|
|
|
|
|
type="checkbox"
|
|
|
|
|
id="batch-mode-checkbox"
|
|
|
|
|
class="w-4 h-4"
|
|
|
|
|
/>
|
|
|
|
|
<span
|
|
|
|
|
>Batch Mode (<span id="selected-count">0</span>
|
|
|
|
|
selected)</span
|
|
|
|
|
>
|
|
|
|
|
</label>
|
|
|
|
|
|
|
|
|
|
<div
|
|
|
|
|
id="batch-operations"
|
|
|
|
|
class="hidden p-3 bg-blue-50 rounded-lg border border-blue-200"
|
|
|
|
|
>
|
|
|
|
|
<div class="text-xs font-semibold text-gray-700 mb-2">
|
|
|
|
|
Batch Operations
|
|
|
|
|
</div>
|
|
|
|
|
<div class="flex flex-col gap-2">
|
|
|
|
|
<div class="flex gap-2">
|
|
|
|
|
<button
|
|
|
|
|
id="select-all-btn"
|
|
|
|
|
class="flex-1 px-3 py-2 bg-blue-500 hover:bg-blue-600 text-white rounded text-xs flex items-center justify-center gap-1"
|
|
|
|
|
>
|
|
|
|
|
<i data-lucide="check-square" class="w-3 h-3"></i>
|
|
|
|
|
Select All
|
|
|
|
|
</button>
|
|
|
|
|
<button
|
|
|
|
|
id="deselect-all-btn"
|
|
|
|
|
class="flex-1 px-3 py-2 bg-gray-500 hover:bg-gray-600 text-white rounded text-xs flex items-center justify-center gap-1"
|
|
|
|
|
>
|
|
|
|
|
<i data-lucide="square" class="w-3 h-3"></i> Deselect
|
|
|
|
|
All
|
|
|
|
|
</button>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<select
|
|
|
|
|
id="batch-color-select"
|
|
|
|
|
class="text-xs p-2 border rounded"
|
|
|
|
|
>
|
|
|
|
|
<option value="">Set Color...</option>
|
|
|
|
|
<option value="null">None</option>
|
|
|
|
|
<option value="red">Red</option>
|
|
|
|
|
<option value="blue">Blue</option>
|
|
|
|
|
<option value="green">Green</option>
|
|
|
|
|
<option value="yellow">Yellow</option>
|
|
|
|
|
<option value="purple">Purple</option>
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
<select
|
|
|
|
|
id="batch-style-select"
|
|
|
|
|
class="text-xs p-2 border rounded"
|
|
|
|
|
>
|
|
|
|
|
<option value="">Set Style...</option>
|
|
|
|
|
<option value="null">Normal</option>
|
|
|
|
|
<option value="bold">Bold</option>
|
|
|
|
|
<option value="italic">Italic</option>
|
|
|
|
|
<option value="bold-italic">Bold & Italic</option>
|
|
|
|
|
</select>
|
|
|
|
|
|
|
|
|
|
<button
|
|
|
|
|
id="batch-delete-btn"
|
|
|
|
|
class="px-3 py-2 bg-red-500 hover:bg-red-600 text-white rounded text-xs flex items-center justify-center gap-1"
|
|
|
|
|
>
|
|
|
|
|
<i data-lucide="trash-2" class="w-3 h-3"></i> Delete
|
|
|
|
|
Selected
|
|
|
|
|
</button>
|
|
|
|
|
</div>
|
2025-10-27 22:01:36 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
2026-01-07 16:55:12 +05:30
|
|
|
<div class="flex gap-2 mb-4">
|
|
|
|
|
<button
|
|
|
|
|
id="expand-all-btn"
|
|
|
|
|
class="flex-1 px-3 py-2 bg-gradient-to-b from-gray-100 to-gray-200 hover:shadow-md text-gray-700 rounded text-sm font-medium flex items-center justify-center gap-1 focus:ring-2 focus:ring-gray-300 transition duration-200"
|
|
|
|
|
>
|
|
|
|
|
<i data-lucide="chevrons-down" class="w-4 h-4"></i> Expand All
|
|
|
|
|
</button>
|
|
|
|
|
<button
|
|
|
|
|
id="collapse-all-btn"
|
|
|
|
|
class="flex-1 px-3 py-2 bg-gradient-to-b from-gray-100 to-gray-200 hover:shadow-md text-gray-700 rounded text-sm font-medium flex items-center justify-center gap-1 focus:ring-2 focus:ring-gray-300 transition duration-200"
|
|
|
|
|
>
|
|
|
|
|
<i data-lucide="chevrons-up" class="w-4 h-4"></i> Collapse All
|
2025-10-27 22:01:36 +05:30
|
|
|
</button>
|
2026-01-07 16:55:12 +05:30
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="grid grid-cols-2 gap-2 mb-4">
|
|
|
|
|
<div class="relative">
|
|
|
|
|
<button
|
|
|
|
|
id="import-dropdown-btn"
|
|
|
|
|
class="w-full px-3 py-2 bg-gradient-to-b from-gray-100 to-gray-200 hover:shadow-md text-gray-700 rounded text-sm font-medium flex items-center justify-center gap-1 focus:ring-2 focus:ring-gray-300 transition duration-200"
|
|
|
|
|
>
|
|
|
|
|
<i data-lucide="upload" class="w-4 h-4"></i> Import
|
|
|
|
|
<i data-lucide="chevron-down" class="w-3 h-3"></i>
|
2025-11-13 11:26:40 +05:30
|
|
|
</button>
|
2026-01-07 16:55:12 +05:30
|
|
|
<div
|
|
|
|
|
id="import-dropdown"
|
|
|
|
|
class="hidden absolute top-full left-0 mt-1 w-full bg-white border border-gray-200 rounded-lg shadow-lg z-10"
|
|
|
|
|
>
|
|
|
|
|
<button
|
|
|
|
|
id="import-csv-btn"
|
|
|
|
|
class="w-full px-3 py-2 text-sm text-left flex items-center gap-2 rounded-t-lg bg-gradient-to-b from-gray-50 to-gray-100 hover:shadow-sm hover:from-gray-100 hover:to-gray-200 transition duration-150"
|
|
|
|
|
>
|
|
|
|
|
<i
|
|
|
|
|
data-lucide="file-text"
|
|
|
|
|
class="w-4 h-4 text-gray-600"
|
|
|
|
|
></i>
|
|
|
|
|
Import CSV
|
|
|
|
|
</button>
|
|
|
|
|
<button
|
|
|
|
|
id="import-json-btn"
|
|
|
|
|
class="w-full px-3 py-2 text-sm text-left flex items-center gap-2 rounded-b-lg bg-gradient-to-b from-gray-50 to-gray-100 hover:shadow-sm hover:from-gray-100 hover:to-gray-200 transition duration-150"
|
|
|
|
|
>
|
|
|
|
|
<i data-lucide="braces" class="w-4 h-4 text-gray-600"></i>
|
|
|
|
|
Import JSON
|
|
|
|
|
</button>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="relative">
|
|
|
|
|
<button
|
|
|
|
|
id="export-dropdown-btn"
|
|
|
|
|
class="w-full px-3 py-2 bg-gradient-to-b from-gray-100 to-gray-200 hover:shadow-md text-gray-700 rounded text-sm font-medium flex items-center justify-center gap-1 focus:ring-2 focus:ring-gray-300 transition duration-200"
|
|
|
|
|
>
|
|
|
|
|
<i data-lucide="download" class="w-4 h-4"></i> Export
|
|
|
|
|
<i data-lucide="chevron-down" class="w-3 h-3"></i>
|
2025-11-13 11:26:40 +05:30
|
|
|
</button>
|
2026-01-07 16:55:12 +05:30
|
|
|
<div
|
|
|
|
|
id="export-dropdown"
|
|
|
|
|
class="hidden absolute top-full left-0 mt-1 w-full bg-white border border-gray-200 rounded-lg shadow-lg z-10"
|
|
|
|
|
>
|
|
|
|
|
<button
|
|
|
|
|
id="export-csv-btn"
|
|
|
|
|
class="w-full px-3 py-2 text-sm text-left hover:bg-gray-50 flex items-center gap-2 rounded-t-lg"
|
|
|
|
|
>
|
|
|
|
|
<i data-lucide="file-text" class="w-4 h-4"></i> Export CSV
|
|
|
|
|
</button>
|
|
|
|
|
<button
|
|
|
|
|
id="export-json-btn"
|
|
|
|
|
class="w-full px-3 py-2 text-sm text-left hover:bg-gray-50 flex items-center gap-2 rounded-b-lg"
|
|
|
|
|
>
|
|
|
|
|
<i data-lucide="braces" class="w-4 h-4"></i> Export JSON
|
|
|
|
|
</button>
|
|
|
|
|
</div>
|
2025-11-13 11:26:40 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
2026-01-07 16:55:12 +05:30
|
|
|
<div
|
|
|
|
|
class="mb-4 max-h-96 overflow-y-auto border border-gray-200 rounded-lg p-2"
|
|
|
|
|
>
|
|
|
|
|
<ul id="bookmark-tree-list" class="space-y-2"></ul>
|
|
|
|
|
<div
|
|
|
|
|
id="no-bookmarks"
|
|
|
|
|
class="text-center py-8 text-gray-400 text-sm"
|
|
|
|
|
>
|
|
|
|
|
No bookmarks yet. Add one above!
|
|
|
|
|
</div>
|
2025-10-27 22:01:36 +05:30
|
|
|
</div>
|
2025-11-13 11:26:40 +05:30
|
|
|
|
2026-01-07 16:55:12 +05:30
|
|
|
<div class="space-y-2">
|
|
|
|
|
<button
|
|
|
|
|
id="download-btn"
|
|
|
|
|
class="w-full px-4 py-2 btn-gradient hover:shadow-xl text-white rounded font-medium !flex items-center justify-center gap-2 focus:ring-2 focus:ring-blue-400 transition duration-200"
|
|
|
|
|
>
|
|
|
|
|
Save PDF with Bookmarks
|
|
|
|
|
</button>
|
|
|
|
|
<button
|
|
|
|
|
id="extract-existing-btn"
|
|
|
|
|
class="w-full px-4 py-2 bg-gray-50 text-gray-800 border border-gray-200 rounded-xl font-medium flex items-center justify-center gap-2 shadow-sm hover:shadow-md transition duration-200"
|
|
|
|
|
>
|
|
|
|
|
Extract Existing Bookmarks
|
|
|
|
|
</button>
|
|
|
|
|
</div>
|
2025-11-13 11:26:40 +05:30
|
|
|
</div>
|
2025-10-27 22:01:36 +05:30
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
2026-01-07 16:55:12 +05:30
|
|
|
<input type="file" id="csv-import-hidden" accept=".csv" class="hidden" />
|
|
|
|
|
<input type="file" id="json-import-hidden" accept=".json" class="hidden" />
|
2025-10-27 22:01:36 +05:30
|
|
|
|
2026-01-13 16:59:25 +05:30
|
|
|
<!-- Loader Modal -->
|
|
|
|
|
<div
|
|
|
|
|
id="loader-modal"
|
|
|
|
|
class="hidden fixed inset-0 bg-black bg-opacity-75 flex items-center justify-center z-50"
|
|
|
|
|
>
|
|
|
|
|
<div
|
|
|
|
|
class="bg-gray-800 p-8 rounded-lg flex flex-col items-center gap-4 border border-gray-700 shadow-xl"
|
|
|
|
|
>
|
|
|
|
|
<div class="solid-spinner"></div>
|
|
|
|
|
<p id="loader-text" class="text-white text-lg font-medium">
|
|
|
|
|
Loading PDF...
|
|
|
|
|
</p>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
2026-01-07 16:55:12 +05:30
|
|
|
<div id="modal-container"></div>
|
2026-01-02 21:33:06 +05:30
|
|
|
|
2026-01-07 16:55:12 +05:30
|
|
|
<!-- How It Works Section -->
|
|
|
|
|
<section class="max-w-4xl mx-auto px-4 py-12">
|
|
|
|
|
<h2 class="text-2xl md:text-3xl font-bold text-white mb-8 text-center">
|
|
|
|
|
How It Works
|
|
|
|
|
</h2>
|
|
|
|
|
<div class="space-y-6">
|
|
|
|
|
<div class="flex items-start gap-4">
|
|
|
|
|
<div
|
|
|
|
|
class="flex-shrink-0 w-10 h-10 bg-indigo-600 rounded-full flex items-center justify-center text-white font-bold"
|
|
|
|
|
>
|
|
|
|
|
1
|
|
|
|
|
</div>
|
|
|
|
|
<div class="flex-1">
|
|
|
|
|
<h3 class="text-lg font-semibold text-white mb-1">Upload File</h3>
|
|
|
|
|
<p class="text-gray-400">
|
|
|
|
|
Click or drag and drop your file to begin
|
|
|
|
|
</p>
|
|
|
|
|
</div>
|
2025-12-30 12:36:30 +05:30
|
|
|
</div>
|
2026-01-07 16:55:12 +05:30
|
|
|
<div class="flex items-start gap-4">
|
|
|
|
|
<div
|
|
|
|
|
class="flex-shrink-0 w-10 h-10 bg-indigo-600 rounded-full flex items-center justify-center text-white font-bold"
|
|
|
|
|
>
|
|
|
|
|
2
|
|
|
|
|
</div>
|
|
|
|
|
<div class="flex-1">
|
|
|
|
|
<h3 class="text-lg font-semibold text-white mb-1">Process</h3>
|
|
|
|
|
<p class="text-gray-400">Click the process button to start</p>
|
|
|
|
|
</div>
|
2026-01-02 21:33:06 +05:30
|
|
|
</div>
|
2026-01-07 16:55:12 +05:30
|
|
|
<div class="flex items-start gap-4">
|
|
|
|
|
<div
|
|
|
|
|
class="flex-shrink-0 w-10 h-10 bg-indigo-600 rounded-full flex items-center justify-center text-white font-bold"
|
|
|
|
|
>
|
|
|
|
|
3
|
|
|
|
|
</div>
|
|
|
|
|
<div class="flex-1">
|
|
|
|
|
<h3 class="text-lg font-semibold text-white mb-1">Download</h3>
|
|
|
|
|
<p class="text-gray-400">Save your processed file instantly</p>
|
|
|
|
|
</div>
|
2025-12-30 12:36:30 +05:30
|
|
|
</div>
|
2026-01-02 21:33:06 +05:30
|
|
|
</div>
|
2026-01-07 16:55:12 +05:30
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<!-- Related Tools Section -->
|
|
|
|
|
<section class="max-w-6xl mx-auto px-4 py-12">
|
|
|
|
|
<h2 class="text-2xl md:text-3xl font-bold text-white mb-6 text-center">
|
|
|
|
|
Related PDF Tools
|
|
|
|
|
</h2>
|
|
|
|
|
<div class="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-4">
|
|
|
|
|
<a
|
feat(i18n): add static pre-rendering for multi-language support
- Add `generate-i18n-pages.mjs` script to pre-render localized HTML files at build time
- Add `generate-sitemap.mjs` script to generate language-aware sitemap.xml
- Create `navbar-simple.html` and `footer-simple.html` partials for simple mode
- Update all 80+ tool pages with language routing support
- Expand supported languages to 12: en, de, es, fr, it, pt, tr, vi, id, zh, zh-TW
- Update i18n.ts with new language names and support configuration
- Implement languageRouterPlugin in vite.config.ts for dev server routing
- Update nginx.conf for production static file serving from language directories
- Update TRANSLATION.md with new architecture documentation and language addition guide
- Fix relative paths in 404.html for static deployment compatibility
- Update package.json with new build scripts and dependencies
- Improves SEO through static pre-rendering and proper sitemap generation
2026-01-14 21:04:56 +05:30
|
|
|
href="merge-pdf.html"
|
2026-01-07 16:55:12 +05:30
|
|
|
class="block bg-gray-800 p-4 rounded-lg hover:bg-gray-700 transition-colors border border-gray-700"
|
|
|
|
|
>
|
|
|
|
|
<h3 class="text-white font-semibold mb-1">Merge Pdf</h3>
|
|
|
|
|
<p class="text-gray-400 text-sm">Free online merge pdf tool</p>
|
|
|
|
|
</a>
|
|
|
|
|
<a
|
feat(i18n): add static pre-rendering for multi-language support
- Add `generate-i18n-pages.mjs` script to pre-render localized HTML files at build time
- Add `generate-sitemap.mjs` script to generate language-aware sitemap.xml
- Create `navbar-simple.html` and `footer-simple.html` partials for simple mode
- Update all 80+ tool pages with language routing support
- Expand supported languages to 12: en, de, es, fr, it, pt, tr, vi, id, zh, zh-TW
- Update i18n.ts with new language names and support configuration
- Implement languageRouterPlugin in vite.config.ts for dev server routing
- Update nginx.conf for production static file serving from language directories
- Update TRANSLATION.md with new architecture documentation and language addition guide
- Fix relative paths in 404.html for static deployment compatibility
- Update package.json with new build scripts and dependencies
- Improves SEO through static pre-rendering and proper sitemap generation
2026-01-14 21:04:56 +05:30
|
|
|
href="compress-pdf.html"
|
2026-01-07 16:55:12 +05:30
|
|
|
class="block bg-gray-800 p-4 rounded-lg hover:bg-gray-700 transition-colors border border-gray-700"
|
|
|
|
|
>
|
|
|
|
|
<h3 class="text-white font-semibold mb-1">Compress Pdf</h3>
|
|
|
|
|
<p class="text-gray-400 text-sm">Free online compress pdf tool</p>
|
|
|
|
|
</a>
|
|
|
|
|
<a
|
feat(i18n): add static pre-rendering for multi-language support
- Add `generate-i18n-pages.mjs` script to pre-render localized HTML files at build time
- Add `generate-sitemap.mjs` script to generate language-aware sitemap.xml
- Create `navbar-simple.html` and `footer-simple.html` partials for simple mode
- Update all 80+ tool pages with language routing support
- Expand supported languages to 12: en, de, es, fr, it, pt, tr, vi, id, zh, zh-TW
- Update i18n.ts with new language names and support configuration
- Implement languageRouterPlugin in vite.config.ts for dev server routing
- Update nginx.conf for production static file serving from language directories
- Update TRANSLATION.md with new architecture documentation and language addition guide
- Fix relative paths in 404.html for static deployment compatibility
- Update package.json with new build scripts and dependencies
- Improves SEO through static pre-rendering and proper sitemap generation
2026-01-14 21:04:56 +05:30
|
|
|
href="split-pdf.html"
|
2026-01-07 16:55:12 +05:30
|
|
|
class="block bg-gray-800 p-4 rounded-lg hover:bg-gray-700 transition-colors border border-gray-700"
|
|
|
|
|
>
|
|
|
|
|
<h3 class="text-white font-semibold mb-1">Split Pdf</h3>
|
|
|
|
|
<p class="text-gray-400 text-sm">Free online split pdf tool</p>
|
|
|
|
|
</a>
|
|
|
|
|
<a
|
feat(i18n): add static pre-rendering for multi-language support
- Add `generate-i18n-pages.mjs` script to pre-render localized HTML files at build time
- Add `generate-sitemap.mjs` script to generate language-aware sitemap.xml
- Create `navbar-simple.html` and `footer-simple.html` partials for simple mode
- Update all 80+ tool pages with language routing support
- Expand supported languages to 12: en, de, es, fr, it, pt, tr, vi, id, zh, zh-TW
- Update i18n.ts with new language names and support configuration
- Implement languageRouterPlugin in vite.config.ts for dev server routing
- Update nginx.conf for production static file serving from language directories
- Update TRANSLATION.md with new architecture documentation and language addition guide
- Fix relative paths in 404.html for static deployment compatibility
- Update package.json with new build scripts and dependencies
- Improves SEO through static pre-rendering and proper sitemap generation
2026-01-14 21:04:56 +05:30
|
|
|
href="edit-pdf.html"
|
2026-01-07 16:55:12 +05:30
|
|
|
class="block bg-gray-800 p-4 rounded-lg hover:bg-gray-700 transition-colors border border-gray-700"
|
|
|
|
|
>
|
|
|
|
|
<h3 class="text-white font-semibold mb-1">Edit Pdf</h3>
|
|
|
|
|
<p class="text-gray-400 text-sm">Free online edit pdf tool</p>
|
|
|
|
|
</a>
|
|
|
|
|
<a
|
feat(i18n): add static pre-rendering for multi-language support
- Add `generate-i18n-pages.mjs` script to pre-render localized HTML files at build time
- Add `generate-sitemap.mjs` script to generate language-aware sitemap.xml
- Create `navbar-simple.html` and `footer-simple.html` partials for simple mode
- Update all 80+ tool pages with language routing support
- Expand supported languages to 12: en, de, es, fr, it, pt, tr, vi, id, zh, zh-TW
- Update i18n.ts with new language names and support configuration
- Implement languageRouterPlugin in vite.config.ts for dev server routing
- Update nginx.conf for production static file serving from language directories
- Update TRANSLATION.md with new architecture documentation and language addition guide
- Fix relative paths in 404.html for static deployment compatibility
- Update package.json with new build scripts and dependencies
- Improves SEO through static pre-rendering and proper sitemap generation
2026-01-14 21:04:56 +05:30
|
|
|
href="rotate-pdf.html"
|
2026-01-07 16:55:12 +05:30
|
|
|
class="block bg-gray-800 p-4 rounded-lg hover:bg-gray-700 transition-colors border border-gray-700"
|
|
|
|
|
>
|
|
|
|
|
<h3 class="text-white font-semibold mb-1">Rotate Pdf</h3>
|
|
|
|
|
<p class="text-gray-400 text-sm">Free online rotate pdf tool</p>
|
|
|
|
|
</a>
|
2026-01-02 21:33:06 +05:30
|
|
|
</div>
|
2026-01-07 16:55:12 +05:30
|
|
|
</section>
|
|
|
|
|
|
|
|
|
|
<!-- FAQ Section -->
|
|
|
|
|
<section class="max-w-4xl mx-auto px-4 py-12">
|
|
|
|
|
<h2 class="text-2xl md:text-3xl font-bold text-white mb-6 text-center">
|
|
|
|
|
Frequently Asked Questions
|
|
|
|
|
</h2>
|
|
|
|
|
<div class="space-y-4">
|
|
|
|
|
<details class="bg-gray-800 p-5 rounded-lg border border-gray-700">
|
|
|
|
|
<summary
|
|
|
|
|
class="cursor-pointer font-semibold text-white flex items-center justify-between"
|
|
|
|
|
>
|
|
|
|
|
Is bookmark really free?
|
|
|
|
|
<i data-lucide="chevron-down" class="w-5 h-5"></i>
|
|
|
|
|
</summary>
|
|
|
|
|
<p class="mt-3 text-gray-400">
|
|
|
|
|
Yes! BentoPDF is 100% free with no hidden fees, no signup required,
|
|
|
|
|
and unlimited file processing.
|
2025-11-26 18:33:08 +05:30
|
|
|
</p>
|
2026-01-07 16:55:12 +05:30
|
|
|
</details>
|
|
|
|
|
<details class="bg-gray-800 p-5 rounded-lg border border-gray-700">
|
|
|
|
|
<summary
|
|
|
|
|
class="cursor-pointer font-semibold text-white flex items-center justify-between"
|
|
|
|
|
>
|
|
|
|
|
Are my files private and secure?
|
|
|
|
|
<i data-lucide="chevron-down" class="w-5 h-5"></i>
|
|
|
|
|
</summary>
|
|
|
|
|
<p class="mt-3 text-gray-400">
|
|
|
|
|
Absolutely! All processing happens in your browser. Your files never
|
|
|
|
|
leave your device, ensuring complete privacy.
|
2025-11-26 18:33:08 +05:30
|
|
|
</p>
|
2026-01-07 16:55:12 +05:30
|
|
|
</details>
|
|
|
|
|
<details class="bg-gray-800 p-5 rounded-lg border border-gray-700">
|
|
|
|
|
<summary
|
|
|
|
|
class="cursor-pointer font-semibold text-white flex items-center justify-between"
|
|
|
|
|
>
|
|
|
|
|
Is there a file size limit?
|
|
|
|
|
<i data-lucide="chevron-down" class="w-5 h-5"></i>
|
|
|
|
|
</summary>
|
|
|
|
|
<p class="mt-3 text-gray-400">
|
|
|
|
|
No! Process files of any size, as many times as you want, completely
|
|
|
|
|
free.
|
|
|
|
|
</p>
|
|
|
|
|
</details>
|
|
|
|
|
</div>
|
|
|
|
|
</section>
|
2026-01-12 22:11:01 +05:30
|
|
|
{{> footer }}
|
2026-01-07 16:55:12 +05:30
|
|
|
<script type="module" src="/src/js/utils/lucide-init.ts"></script>
|
|
|
|
|
<script type="module" src="/src/js/utils/full-width.ts"></script>
|
|
|
|
|
<script type="module" src="/src/js/utils/simple-mode-footer.ts"></script>
|
|
|
|
|
<script type="module" src="/src/version.ts"></script>
|
|
|
|
|
<script type="module" src="/src/js/logic/bookmark-pdf.ts"></script>
|
|
|
|
|
<script type="module" src="/src/js/mobileMenu.ts"></script>
|
|
|
|
|
<script type="module" src="/src/js/main.ts"></script>
|
|
|
|
|
|
|
|
|
|
<!-- JSON-LD Structured Data -->
|
|
|
|
|
<script type="application/ld+json">
|
2025-12-30 12:36:30 +05:30
|
|
|
{
|
2026-01-07 16:55:12 +05:30
|
|
|
"@context": "https://schema.org",
|
|
|
|
|
"@type": "SoftwareApplication",
|
|
|
|
|
"name": "Bookmark - BentoPDF",
|
|
|
|
|
"applicationCategory": "PDF Tool",
|
|
|
|
|
"operatingSystem": "Any - Web Browser",
|
|
|
|
|
"offers": {
|
|
|
|
|
"@type": "Offer",
|
|
|
|
|
"price": "0",
|
|
|
|
|
"priceCurrency": "USD"
|
|
|
|
|
},
|
|
|
|
|
"aggregateRating": {
|
|
|
|
|
"@type": "AggregateRating",
|
|
|
|
|
"ratingValue": "4.7",
|
|
|
|
|
"ratingCount": "2638"
|
|
|
|
|
}
|
2025-12-30 12:36:30 +05:30
|
|
|
}
|
2026-01-07 16:55:12 +05:30
|
|
|
</script>
|
|
|
|
|
|
|
|
|
|
<script type="application/ld+json">
|
2025-12-30 12:36:30 +05:30
|
|
|
{
|
2026-01-07 16:55:12 +05:30
|
|
|
"@context": "https://schema.org",
|
|
|
|
|
"@type": "HowTo",
|
|
|
|
|
"name": "How to bookmark online",
|
|
|
|
|
"description": "Learn how to bookmark using BentoPDF",
|
|
|
|
|
"step": [
|
|
|
|
|
{
|
|
|
|
|
"@type": "HowToStep",
|
|
|
|
|
"position": 1,
|
|
|
|
|
"name": "Upload File",
|
|
|
|
|
"text": "Click or drag and drop your file"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"@type": "HowToStep",
|
|
|
|
|
"position": 2,
|
|
|
|
|
"name": "Process",
|
|
|
|
|
"text": "Click the process button"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"@type": "HowToStep",
|
|
|
|
|
"position": 3,
|
|
|
|
|
"name": "Download",
|
|
|
|
|
"text": "Download your processed file"
|
|
|
|
|
}
|
|
|
|
|
]
|
2025-12-30 12:36:30 +05:30
|
|
|
}
|
2026-01-07 16:55:12 +05:30
|
|
|
</script>
|
2025-11-13 11:26:40 +05:30
|
|
|
|
2026-01-07 16:55:12 +05:30
|
|
|
<script type="application/ld+json">
|
|
|
|
|
{
|
|
|
|
|
"@context": "https://schema.org",
|
|
|
|
|
"@type": "BreadcrumbList",
|
|
|
|
|
"itemListElement": [
|
|
|
|
|
{
|
|
|
|
|
"@type": "ListItem",
|
|
|
|
|
"position": 1,
|
|
|
|
|
"name": "Home",
|
|
|
|
|
"item": "https://www.bentopdf.com"
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
"@type": "ListItem",
|
|
|
|
|
"position": 2,
|
|
|
|
|
"name": "Bookmark",
|
|
|
|
|
"item": "https://www.bentopdf.com/bookmark"
|
|
|
|
|
}
|
|
|
|
|
]
|
|
|
|
|
}
|
|
|
|
|
</script>
|
|
|
|
|
</body>
|
|
|
|
|
</html>
|