惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

T
Tailwind CSS Blog
博客园 - 【当耐特】
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - Franky
小众软件
小众软件
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - 三生石上(FineUI控件)
B
Blog
有赞技术团队
有赞技术团队
J
Java Code Geeks
云风的 BLOG
云风的 BLOG
Recent Announcements
Recent Announcements
Jina AI
Jina AI
Vercel News
Vercel News
博客园 - 叶小钗
Hugging Face - Blog
Hugging Face - Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
F
Fortinet All Blogs
The Cloudflare Blog
V
V2EX
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
博客园_首页
腾讯CDC

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
I Built a PDF Toolbox That Never Uploads Your Files — Her...
hwlsniper · 2026-06-15 · via DEV Community

hwlsniper

Every "free online PDF tool" uploads your files to a server. I built one that doesn't — and here's the technical breakdown.

The Privacy Problem

Try this: Google "compress pdf online free" and use the first 5 results. Each one uploads your PDF to their server, processes it, and gives you a download link. Your file sits on their server — anywhere from 1 hour to 14 days.

The privacy policies tell the story:

  • Smallpdf: "We retain your files for 1 hour"
  • iLovePDF: Files deleted after "a few hours"
  • Adobe: "We may process your files to improve our services"

For contracts, tax forms, or medical records — this is a privacy disaster.

The Architecture: Client-Side PDF Processing

The core insight: you don't need a server to process PDFs. Everything can happen in the browser.

Tech stack:

  • Next.js 16 — React framework, static generation
  • pdf-lib — Pure JavaScript PDF manipulation library
  • WebAssembly — Near-native performance for heavy operations
  • Tailwind CSS — Responsive UI

The Processing Pipeline

User drops file → FileReader → ArrayBuffer
    → pdf-lib processes in memory  
    → new PDF blob → URL.createObjectURL()
    → download starts

No fetch(), no XMLHttpRequest, no FormData. The file never leaves the JavaScript heap.

pdf-lib: The Engine

pdf-lib can create and modify PDFs entirely in memory. It supports merging, splitting, compressing, password protection, page rotation, and font embedding — all without native dependencies.

Verify It Yourself

Open DevTools Network tab. Use any tool on the site. You'll see:

  • Initial page load (HTML/CSS/JS)
  • That's it.

No POST requests. No WebSocket uploads. The tools even work offline — disconnect your internet after page load and everything still functions.

What This Enables

When files never leave the browser:

  • No file size limits — bounded only by device memory
  • No account required — nothing to track, nothing to rate-limit
  • Instant processing — no upload wait time
  • True privacy — zero data retention, zero content analytics

The Trade-offs

  • Very large PDFs (500MB+) can slow down the browser
  • OCR requires Tesseract.js WebAssembly (heavy initial load, 2MB+)
  • Some features (digital signatures, advanced form filling) are complex client-side

Why I Built This

Most PDF tools treat privacy as an afterthought — they add a "we delete your files after X hours" banner and call it a day. But privacy shouldn't be a footnote. It should be the architecture.

Building everything client-side was harder. But asking users to trust a server they can't verify isn't acceptable for sensitive documents.

Try It

The site is free, no signup required: pdftoolbox.tech

Source code: github.com/hwlsniper/pdftoolbox

Would love feedback from the Dev.to community. What other PDF operations would you want to see done entirely client-side?