Skip to main content
Open SourceTechnisch

Wie wir mit Next.js einen kostenlosen Open-Source-PDF-Editor entwickelt haben

Ein technischer Tiefblick in die Entwicklung von EditoraPDF – unsere Reise von der Idee zum produktionsreifen Open-Source-PDF-Editor

Von EditoraPDF Team

Als wir uns daranmachten, EditoraPDF zu entwickeln, hatten wir ein klares Ziel: einen vollständig kostenlosen, quelloffenen PDF-Editor zu schaffen, der die Privatsphäre der Nutzer respektiert und vollständig im Browser funktioniert. Keine Server, keine Uploads, kein Tracking – nur reine clientseitige Verarbeitung.

Dies ist die Geschichte, wie wir ihn entwickelt haben, welchen technischen Herausforderungen wir gegenüberstanden und welche Entscheidungen wir auf dem Weg getroffen haben. Egal, ob Sie als Entwickler etwas Ähnliches bauen möchten oder einfach neugierig auf Open-Source-Entwicklung sind – dieser Beitrag gibt Ihnen einen vollständigen Einblick.

Die Vision: Datenschutzorientierte PDF-Bearbeitung

Die meisten PDF-Editoren von heute verlangen, dass Sie Ihre Dokumente auf ihre Server hochladen. Bei sensiblen Dokumenten wie Verträgen, medizinischen Unterlagen oder Kontoauszügen ist das ein Albtraum für den Datenschutz.

Wir wollten etwas anderes entwickeln:

  • 100 % clientseitige Verarbeitung – Dateien verlassen niemals Ihren Browser
  • Keine Installation erforderlich – funktioniert direkt im Webbrowser
  • Keine Anmeldung, kein Tracking – vollständig anonyme Nutzung
  • Open Source – transparenter Code, den jeder prüfen kann
  • Für immer kostenlos – keine Paywalls oder Abonnements

Mit diesen Prinzipien im Hinterkopf begannen wir, Technologien zu evaluieren, die diese Vision Wirklichkeit werden lassen könnten.

Die Wahl des Tech-Stacks

Frontend-Framework: Next.js 14

Wir haben uns aus mehreren Gründen für Next.js 14 mit dem neuen App Router entschieden:

  • Hervorragende SEO-Funktionen – serverseitiges Rendering und Metadatenverwaltung von Haus aus
  • Unterstützung für statischen Export – überall bereitstellbar (Vercel, Netlify, GitHub Pages)
  • TypeScript-Integration – Typsicherheit und bessere Developer Experience
  • Performance-Optimierung – automatisches Code-Splitting, Bildoptimierung
  • Developer Experience – Hot Reload, großartige Dokumentation, riesiges Ökosystem

PDF-Rendering: PDF.js

PDF.js von Mozilla ist der Goldstandard für das Rendern von PDFs im Browser. Es ist die Grundlage für den in Firefox integrierten PDF-Viewer.

Wichtigste Vorteile:

  • Millionenfach in Browsern erprobt
  • Hervorragende Rendering-Qualität
  • Möglichkeiten zur Textextraktion
  • Canvas-basiertes Rendering für mehr Performance
  • Aktive Pflege durch Mozilla

PDF-Bearbeitung: pdf-lib

Zum Erstellen und Bearbeiten von PDFs verwenden wir pdf-lib – eine reine JavaScript-Bibliothek, die vollständig im Browser läuft.

Wichtigste Funktionen:

  • PDFs von Grund auf erstellen
  • Bestehende PDFs bearbeiten (Seiten hinzufügen, drehen, löschen)
  • Text, Bilder und Formen einbetten
  • Seiten zwischen Dokumenten kopieren
  • Keinerlei Abhängigkeit von Node.js

State-Management: Zustand

Statt Redux haben wir uns für Zustand entschieden – eine minimalistische, schnelle Bibliothek für das State-Management.

  • Einfache API – kein Boilerplate-Code
  • TypeScript-First-Design
  • Geringe Bundle-Größe (~1KB)
  • Keine Context-Provider erforderlich

Styling: Tailwind CSS

Tailwind CSS bietet uns Utility-First-Styling mit hervorragender Developer Experience und kleinen Produktions-Bundles durch automatisches Purging.

Architektur- und Designentscheidungen

1. Ausschließlich clientseitige Verarbeitung

Alles geschieht im Browser:

User uploads PDF
  ↓
PDF.js parses and renders to canvas
  ↓
User makes edits (text, images, shapes)
  ↓
pdf-lib creates new PDF with changes
  ↓
Download to user's device

Zu keinem Zeitpunkt verlässt die Datei das Gerät des Nutzers. Das ist echter Datenschutz durch Design.

2. Normalisiertes Koordinatensystem

Eine große Herausforderung: PDFs haben unterschiedliche Seitengrößen, und Nutzer können hinein- und herauszoomen. Wie verfolgen wir die Positionen der Overlays?

Lösung: Alle Koordinaten auf den Bereich [0, 1] normalisieren.

// Instead of absolute pixels:
{ x: 150, y: 200 }

// We store normalized coordinates:
{ x: 0.25, y: 0.33 }

// Then scale to current viewport:
actualX = normalizedX * pageWidth * zoom
actualY = normalizedY * pageHeight * zoom

Das macht Overlays zoom-unabhängig und über verschiedene Seitengrößen hinweg portabel.

3. Komponentenarchitektur

Wir haben die App in fokussierte Komponenten gegliedert:

  • PdfViewer – Rendering des Haupt-Canvas
  • Thumbnails – Seitenleiste zur Seitennavigation
  • Toolbar – Steuerung für Zoom, Drehung, Löschen
  • EditToolbar – Werkzeugauswahl (Text, Bild, Form)
  • AdvancedOverlayLayer – Rendering von Text, Bildern, Formen
  • ExportButton – Logik für den PDF-Export

4. State-Management-Muster

Unser Zustand-Store verwaltet:

{
  originalFile: File,
  pages: [
    {
      id: string,
      originalIndex: number,
      rotation: 0 | 90 | 180 | 270,
      deleted: boolean,
      textOverlays: [],
      imageOverlays: [],
      shapeOverlays: []
    }
  ],
  selectedPageId: string,
  zoom: number,
  editMode: 'select' | 'text' | 'image' | 'shape'
}

Technische Herausforderungen, denen wir gegenüberstanden

Herausforderung 1: Genauigkeit der Textextraktion

PDF.js kann Text extrahieren, aber die Positionierung ist nicht immer pixelgenau, da PDFs Text auf unterschiedliche Weise kodieren (manchmal als einzelne Zeichen, manchmal als Wörter).

Lösung: Wir extrahieren Textelemente mit ihren Transformationsmatrizen und wandeln sie in normalisierte Koordinaten mit großzügigen Bounding Boxes um.

Herausforderung 2: Performance bei großen PDFs

Das Rendern von PDFs mit über 100 Seiten kann den Browser einfrieren lassen.

Lösung:

  • Seiten verzögert laden (nur sichtbare Seiten rendern)
  • requestAnimationFrame für flüssiges Rendering nutzen
  • Limit von 25MB / 50 Seiten empfehlen
  • Offscreen-Canvas für Vorschaubilder

Herausforderung 3: Exportqualität

Das Einbetten von Text und Bildern in pdf-lib erfordert eine sorgfältige Koordinatentransformation vom Browser-Raum in den PDF-Raum.

Lösung: Eine umfassende Transformations-Pipeline aufbauen, die Folgendes bewältigt:

  • Seitendrehungen
  • Unterschiede im Koordinatensystem (Y-Achse in PDF umgekehrt)
  • Schrifteinbettung und -größe
  • Konvertierung von Bildformaten

Herausforderung 4: Browser-Kompatibilität

Verschiedene Browser haben leicht unterschiedliche Canvas-Implementierungen und Eigenheiten beim PDF-Rendering.

Lösung: Umfangreiche Tests in Chrome, Firefox, Safari und Edge. Feature Detection statt Browser Detection verwenden.

Warum wir es zu Open Source gemacht haben

Von Anfang an war uns klar, dass dies quelloffen sein musste:

1. Transparenz = Vertrauen

Beim Umgang mit sensiblen Dokumenten müssen Nutzer verifizieren können, dass die Dateien wirklich lokal bleiben. Open Source ermöglicht es jedem, den Code zu prüfen.

2. Beiträge aus der Community

Open Source ermöglicht es Entwicklern weltweit, Funktionen beizutragen, Fehler zu beheben und das Tool zu verbessern.

3. Lernressource

Wir haben so viel von Open-Source-Projekten gelernt. Jetzt können wir etwas zurückgeben und anderen helfen, Next.js, PDF-Verarbeitung und Webentwicklung zu lernen.

4. Langlebigkeit

Selbst wenn wir die Pflege einstellen, kann die Community es forken und die Entwicklung fortsetzen. Das Tool lebt weiter.

Die Ergebnisse

Nach Monaten der Entwicklung haben wir EditoraPDF veröffentlicht – mit:

100%
Clientseitige Verarbeitung
0 KB
Auf Server hochgeladene Daten
MIT
Open-Source-Lizenz
$0
Für immer kostenlos

Der Quellcode ist verfügbar unter github.com/affsquadDevs/editorapdf unter der MIT-Lizenz.

Die wichtigsten Erkenntnisse für Entwickler

  • Clientseitige Verarbeitung ist mächtig – Moderne Browser können komplexe Aufgaben bewältigen, die früher Server erforderten
  • Wähle die richtigen Bibliotheken – PDF.js und pdf-lib haben uns Monate an Entwicklungszeit erspart
  • Koordinatennormalisierung ist entscheidend – Macht Overlays portabel und zoom-unabhängig
  • Performance ist wichtig – Lazy Loading und Optimierung sind für große Dateien entscheidend
  • Open Source kommt allen zugute – Transparenz, Community und Lernen gewinnen alle

Mach mit

EditoraPDF ist ein Open-Source-Projekt, und wir freuen uns über Beiträge von Entwicklern aller Erfahrungsstufen.

Häufig gestellte Fragen

Mit welchem Technologie-Stack wurde EditoraPDF entwickelt?

EditoraPDF wurde mit Next.js 14, TypeScript, React 18, PDF.js für das Rendering, pdf-lib für die Bearbeitung, Zustand für das State-Management und Tailwind CSS für das Styling entwickelt. Es ist vollständig quelloffen unter der MIT-Lizenz.

Warum habt ihr euch für Next.js für einen PDF-Editor entschieden?

Next.js bietet hervorragende Performance, SEO-Funktionen, Unterstützung für statischen Export und eine großartige Developer Experience. Der App Router macht es einfach, schnelle, SEO-freundliche Anwendungen zu erstellen, die überall bereitgestellt werden können.

Ist EditoraPDF wirklich quelloffen?

Ja, EditoraPDF ist zu 100 % quelloffen unter der MIT-Lizenz. Der vollständige Quellcode ist auf GitHub verfügbar unter github.com/affsquadDevs/editorapdf

Wie funktioniert die clientseitige PDF-Verarbeitung?

PDF.js rendert PDFs im Browser auf ein HTML-Canvas, während pdf-lib die PDF-Struktur bearbeitet. Die gesamte Verarbeitung erfolgt lokal im Browser des Nutzers mit JavaScript und gewährleistet so vollständigen Datenschutz und Sicherheit ohne jegliche Server-Uploads.

Kann ich den Code von EditoraPDF in meinem eigenen Projekt verwenden?

Auf jeden Fall! EditoraPDF ist unter MIT lizenziert, das heißt, du kannst den Code frei verwenden, bearbeiten und weiterverbreiten – sogar in kommerziellen Projekten. Füge einfach den ursprünglichen Lizenzhinweis bei.

Wie kann ich zum Projekt beitragen?

Sieh dir unseren Leitfaden für Beiträge auf GitHub an. Du kannst Code beitragen, Fehler melden, Funktionen vorschlagen, die Dokumentation verbessern oder beim Testen helfen.

Abschließende Gedanken

Die Entwicklung von EditoraPDF war eine herausfordernde, aber lohnende Reise. Wir haben unglaublich viel über PDF-Verarbeitung, Browser-Funktionen und Open-Source-Entwicklung gelernt.

Das Beste daran? Jeder kann nun diesen Code nehmen, daraus lernen, ihn bearbeiten oder etwas noch Besseres entwickeln. Das ist die Kraft von Open Source.

Wenn du an einem ähnlichen Projekt arbeitest oder einfach neugierig auf den Code bist, sieh dir das GitHub-Repository an. Wir würden uns freuen, dein Feedback zu hören, Fragen zu beantworten oder deine Pull Requests zu prüfen.

© 2026 EditoraPDF. Alle Rechte vorbehalten.

Open Source