Files
bentopdf/src/pages/sanitize-pdf.html
T

611 lines
22 KiB
HTML

<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<!-- Primary Meta Tags -->
<meta
name="title"
content="Sanitize PDF Online Free - Sanitize PDF Tool | BentoPDF"
/>
<meta
name="description"
content="Remove metadata, annotations, scripts, and more. Free, no uploads, no signup. Runs entirely in your browser."
/>
<meta name="keywords" content="sanitize pdf, online pdf" />
<meta name="author" content="BentoPDF" />
<meta
name="robots"
content="index, follow, max-image-preview:large, max-snippet:-1, max-video-preview:-1"
/>
<!-- Canonical URL -->
<link rel="canonical" href="https://www.bentopdf.com/sanitize-pdf" />
<!-- Open Graph / Facebook / LinkedIn -->
<meta property="og:type" content="website" />
<meta property="og:url" content="https://www.bentopdf.com/sanitize-pdf" />
<meta
property="og:title"
content="Sanitize PDF Online Free - Sanitize PDF Tool | BentoPDF"
/>
<meta
property="og:description"
content="Remove metadata, annotations, scripts, and more. Free, no uploads, no signup. Runs entirely in your browser."
/>
<meta
property="og:image"
content="https://www.bentopdf.com/images/og-sanitize-pdf.png"
/>
<meta property="og:image:width" content="1200" />
<meta property="og:image:height" content="630" />
<meta property="og:site_name" content="BentoPDF" />
<!-- Twitter Card -->
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:url" content="https://www.bentopdf.com/sanitize-pdf" />
<meta name="twitter:title" content="Sanitize PDF Free" />
<meta
name="twitter:description"
content="Remove metadata, annotations, scripts, and more. Free, no uploads, no signup. Runs entirely in your browser."
/>
<meta
name="twitter:image"
content="https://www.bentopdf.com/images/twitter-sanitize-pdf.png"
/>
<meta name="twitter:site" content="@BentoPDF" />
<!-- 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="Sanitize PDF" />
<title>Sanitize PDF - Remove Sensitive Content - BentoPDF</title>
<link href="/src/css/styles.css" rel="stylesheet" />
<!-- 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">
{{> navbar }}
<div
id="uploader"
class="min-h-screen flex flex-col items-center justify-start py-12 p-4 bg-gray-900"
>
<div
id="tool-uploader"
class="bg-gray-800 rounded-xl shadow-xl px-4 py-8 md: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-300 hover:text-indigo-400 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:sanitizePdf.name"
>
Sanitize PDF
</h1>
<p class="text-gray-400 mb-6" data-i18n="tools:sanitizePdf.subtitle">
Remove metadata, annotations, scripts, and more.
</p>
<div
id="drop-zone"
class="relative flex flex-col items-center justify-center w-full h-48 md:h-64 border-2 border-dashed border-gray-600 rounded-xl cursor-pointer bg-gray-900 hover:bg-gray-700 transition-colors duration-300"
>
<div class="flex flex-col items-center justify-center pt-5 pb-6">
<i class="ph ph-upload-simple text-4xl mb-3 text-gray-400"></i>
<p class="mb-2 text-sm text-gray-400">
<span class="font-semibold" data-i18n="upload.clickToSelect"
>Click to select PDF</span
>
<span data-i18n="upload.orDragAndDrop">or drag and drop</span>
</p>
<p class="text-xs text-gray-500" data-i18n="upload.filesNeverLeave">
Your files never leave your device.
</p>
</div>
<input
id="file-input"
type="file"
class="absolute top-0 left-0 w-full h-full opacity-0 cursor-pointer"
accept="application/pdf"
/>
</div>
<div id="file-display-area" class="mt-4 space-y-2"></div>
<div id="tool-options" class="hidden mt-6 space-y-4">
<div class="p-4 bg-gray-900 rounded-lg border border-gray-700">
<h3 class="text-sm font-semibold text-white mb-3">
Sanitization Options:
</h3>
<div class="space-y-2">
<label class="flex items-center gap-2 cursor-pointer">
<input
type="checkbox"
id="flatten-forms"
checked
class="w-4 h-4 text-indigo-600 bg-gray-700 border-gray-600 rounded focus:ring-indigo-500"
/>
<span class="text-sm text-gray-300">Flatten Forms</span>
</label>
<label class="flex items-center gap-2 cursor-pointer">
<input
type="checkbox"
id="remove-metadata"
checked
class="w-4 h-4 text-indigo-600 bg-gray-700 border-gray-600 rounded focus:ring-indigo-500"
/>
<span class="text-sm text-gray-300">Remove Metadata</span>
</label>
<label class="flex items-center gap-2 cursor-pointer">
<input
type="checkbox"
id="remove-annotations"
checked
class="w-4 h-4 text-indigo-600 bg-gray-700 border-gray-600 rounded focus:ring-indigo-500"
/>
<span class="text-sm text-gray-300">Remove Annotations</span>
</label>
<label class="flex items-center gap-2 cursor-pointer">
<input
type="checkbox"
id="remove-javascript"
checked
class="w-4 h-4 text-indigo-600 bg-gray-700 border-gray-600 rounded focus:ring-indigo-500"
/>
<span class="text-sm text-gray-300">Remove JavaScript</span>
</label>
<label class="flex items-center gap-2 cursor-pointer">
<input
type="checkbox"
id="remove-embedded-files"
checked
class="w-4 h-4 text-indigo-600 bg-gray-700 border-gray-600 rounded focus:ring-indigo-500"
/>
<span class="text-sm text-gray-300">Remove Embedded Files</span>
</label>
<label class="flex items-center gap-2 cursor-pointer">
<input
type="checkbox"
id="remove-layers"
checked
class="w-4 h-4 text-indigo-600 bg-gray-700 border-gray-600 rounded focus:ring-indigo-500"
/>
<span class="text-sm text-gray-300">Remove Layers (OCG)</span>
</label>
<label class="flex items-center gap-2 cursor-pointer">
<input
type="checkbox"
id="remove-links"
checked
class="w-4 h-4 text-indigo-600 bg-gray-700 border-gray-600 rounded focus:ring-indigo-500"
/>
<span class="text-sm text-gray-300">Remove Links</span>
</label>
<label class="flex items-center gap-2 cursor-pointer">
<input
type="checkbox"
id="remove-structure-tree"
checked
class="w-4 h-4 text-indigo-600 bg-gray-700 border-gray-600 rounded focus:ring-indigo-500"
/>
<span class="text-sm text-gray-300">Remove Structure Tree</span>
</label>
<label class="flex items-center gap-2 cursor-pointer">
<input
type="checkbox"
id="remove-markinfo"
checked
class="w-4 h-4 text-indigo-600 bg-gray-700 border-gray-600 rounded focus:ring-indigo-500"
/>
<span class="text-sm text-gray-300">Remove MarkInfo</span>
</label>
<label class="flex items-center gap-2 cursor-pointer">
<input
type="checkbox"
id="remove-fonts"
class="w-4 h-4 text-indigo-600 bg-gray-700 border-gray-600 rounded focus:ring-indigo-500"
/>
<span class="text-sm text-gray-300">Remove Embedded Fonts</span>
</label>
</div>
</div>
<div
class="p-4 bg-yellow-900/20 border border-yellow-500/30 rounded-lg"
>
<div class="flex items-start gap-2">
<i
data-lucide="alert-triangle"
class="w-5 h-5 text-yellow-400 mt-0.5 flex-shrink-0"
></i>
<p class="text-xs text-gray-300">
Sanitization removes sensitive content permanently. Some options
may affect PDF rendering.
</p>
</div>
</div>
<button id="process-btn" class="btn-gradient w-full">
Sanitize PDF
</button>
</div>
</div>
</div>
<!-- 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"
data-i18n="loader.processing"
data-i18n="loader.processing"
>
Processing...
</p>
</div>
</div>
<!-- Alert Modal -->
<div
id="alert-modal"
class="fixed inset-0 bg-gray-900 bg-opacity-90 flex items-center justify-center z-50 hidden"
>
<div
class="bg-gray-800 rounded-lg shadow-xl p-6 max-w-sm w-full border border-gray-700"
>
<h3
id="alert-title"
class="text-xl font-bold text-white mb-2"
data-i18n="alert.title"
data-i18n="alert.title"
>
Alert
</h3>
<p id="alert-message" class="text-gray-300 mb-6"></p>
<button
id="alert-ok"
class="w-full bg-indigo-600 hover:bg-indigo-700 text-white font-semibold py-2 px-4 rounded-lg transition-colors duration-200"
>
OK
</button>
</div>
</div>
<!-- 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"
data-i18n="howItWorks.title"
>
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" data-i18n="howItWorks.step1">
Click or drag and drop your file to begin
</p>
</div>
</div>
<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" data-i18n="howItWorks.step2">
Click the process button to start
</p>
</div>
</div>
<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" data-i18n="howItWorks.step3">
Save your processed file instantly
</p>
</div>
</div>
</div>
</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"
data-i18n="relatedTools.title"
>
Related PDF Tools
</h2>
<div class="grid grid-cols-2 md:grid-cols-3 lg:grid-cols-6 gap-4">
<a
href="merge-pdf.html"
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
href="compress-pdf.html"
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
href="split-pdf.html"
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
href="edit-pdf.html"
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
href="rotate-pdf.html"
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>
</div>
</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"
data-i18n="faq.sectionTitle"
>
Frequently Asked Questions
</h2>
<div class="faq-list">
<details class="faq-d">
<summary class="faq-d-q">
What does Sanitize PDF actually remove?
<i data-lucide="plus" class="faq-d-icon"></i>
</summary>
<p class="faq-d-a">
Ten things, each with its own checkbox: form fields are flattened,
and metadata, annotations, JavaScript, embedded files, layers,
links, the structure tree, MarkInfo, and optionally embedded fonts
are stripped. Everything except font removal is checked by default.
</p>
</details>
<details class="faq-d">
<summary class="faq-d-q">
Will the sanitized PDF look different?
<i data-lucide="plus" class="faq-d-icon"></i>
</summary>
<p class="faq-d-a">
The page content itself is untouched, but some interactive parts
become static. Form fields turn into plain text, hyperlinks stop
being clickable, and comments, highlights, and sticky notes
disappear, so check the result before sending it.
</p>
</details>
<details class="faq-d">
<summary class="faq-d-q">
Should I check Remove Embedded Fonts?
<i data-lucide="plus" class="faq-d-icon"></i>
</summary>
<p class="faq-d-a">
Usually not. It deletes the font programs the PDF relies on, and if
the reader can't substitute a matching font the text can render
incorrectly or not at all. Leave it unchecked unless you have a
specific reason and have tested the result.
</p>
</details>
<details class="faq-d">
<summary class="faq-d-q">
Does it remove the author name, creation date, and editing software?
<i data-lucide="plus" class="faq-d-icon"></i>
</summary>
<p class="faq-d-a">
Remove Metadata clears the Info dictionary, the XMP metadata stream,
the document ID, and application-specific PieceInfo, so the author,
title, dates, and producing software are gone. If that's all you
need,
<a
href="/remove-metadata"
class="text-indigo-300 hover:text-indigo-400"
>Remove Metadata</a
>
does only this step.
</p>
</details>
<details class="faq-d">
<summary class="faq-d-q">
Does it stop scripts that run when the PDF is opened?
<i data-lucide="plus" class="faq-d-icon"></i>
</summary>
<p class="faq-d-a">
Remove JavaScript deletes the document's script tree, its open
action, and the automatic actions attached to the document, pages,
annotations, and form fields. That covers the usual places a PDF can
hide code that runs on open, print, or field changes.
</p>
</details>
<details class="faq-d">
<summary class="faq-d-q">
Does sanitizing redact sensitive text on the pages?
<i data-lucide="plus" class="faq-d-icon"></i>
</summary>
<p class="faq-d-a">
No. It strips hidden and interactive data around the content, not
the visible words or images, so anything you can read on the page is
still there. If you need the page content reduced to a flat picture
with no selectable text underneath, use
<a
href="/rasterize-pdf"
class="text-indigo-300 hover:text-indigo-400"
>Rasterize PDF</a
>.
</p>
</details>
<details class="faq-d">
<summary class="faq-d-q">
Can I sanitize a password-protected PDF?
<i data-lucide="plus" class="faq-d-icon"></i>
</summary>
<p class="faq-d-a">
You'll be asked for the password after upload. The sanitized copy is
written without encryption, so if the document should stay
protected, run it through
<a href="/protect-pdf" class="text-indigo-300 hover:text-indigo-400"
>Protect PDF</a
>
afterward.
</p>
</details>
<details class="faq-d">
<summary class="faq-d-q">
Is it safe to sanitize a PDF I don't trust here?
<i data-lucide="plus" class="faq-d-icon"></i>
</summary>
<p class="faq-d-a">
The file is parsed as data in your browser and never uploaded, and
the tool doesn't execute any script inside it. Keep the original in
case a stripped element turns out to be needed, since sanitizing
can't be undone from the output.
</p>
</details>
</div>
</section>
{{> footer }}
<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/js/logic/sanitize-pdf-page.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">
{
"@context": "https://schema.org",
"@type": "SoftwareApplication",
"name": "Sanitize PDF - BentoPDF",
"applicationCategory": "PDF Tool",
"operatingSystem": "Any - Web Browser",
"offers": {
"@type": "Offer",
"price": "0",
"priceCurrency": "USD"
}
}
</script>
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "HowTo",
"name": "How to sanitize pdf online",
"description": "Learn how to sanitize pdf 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"
}
]
}
</script>
<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": "Sanitize PDF",
"item": "https://www.bentopdf.com/sanitize-pdf"
}
]
}
</script>
</body>
</html>