Zum Inhalt springen
PDFhq

So funktioniert pdfhq

Jedes Werkzeug läuft in Ihrem Browser. Diese Seite nennt die Engines, die das tun, ihre Lizenzen und den Weg, auf dem Sie selbst nachprüfen, dass nichts irgendwohin gesendet wird.

Was läuft wo?

Alles läuft in Ihrem Browser. Die Engines sind nach WebAssembly übersetzt und in die Seite geladen. Eine Datei zu öffnen übergibt sie also an Code, der bereits auf Ihrem Rechner läuft, und das Ergebnis wird zurückgeschrieben, ohne dass dazwischen eine Netzwerkanfrage steht.

Die schwere Arbeit erledigen Web Worker statt des Hauptthreads der Seite, deshalb bleibt die Oberfläche bedienbar, während ein Dokument mit zweihundert Seiten neu geschrieben wird. Es gibt in diesem Produkt keinen Verarbeitungsserver: Wir betreiben keinen, also stellt sich die Frage gar nicht, was ein Server aufbewahrt.

Welche Engine tut was?

Sechs Stück, jede für die Aufgabe, die sie am besten kann. Alle sind quelloffen unter einer freizügigen Lizenz, und alle werden von dieser Domain ausgeliefert statt in dem Moment, in dem Sie sie brauchen, irgendwo anders geholt.

Die in die Seite geladenen Engines, ihre Lizenzen und die genauen Builds, die wir ausliefern.
EngineWofür sie zuständig istLizenzBuild
qpdfStruktur, Verschlüsselung, Linearisierung und ReparaturApache-2.0qpdf 12.2.0
PDFiumSeiten rendern, Textläufe, Bilder und Formularfelder lesenBSD-3-Clause@embedpdf/pdfium 2.15.0
pdf-libDokumente zusammensetzen, zeichnen und Formulare ausfüllenMIT@cantoo/pdf-lib 2.8.2
TesseractTexterkennungApache-2.0tesseract-wasm 0.11.0
mozjpegReproduzierbare Bildkodierung für die KomprimierungBSD-3-Clause@jsquash/jpeg 1.6.0
node-signpdfZertifikatssignaturenMIT@signpdf 3.3.0

Warum bauen Sie qpdf selbst?

Weil der fertige WebAssembly-Build eine beschädigte Datei nicht reparieren kann. qpdf stellt eine zerstörte Querverweistabelle wieder her, indem es den Fehler abfängt, den sein Parser auslöst; in jenem Build sind C++-Ausnahmen wegkompiliert, der Wiederherstellungscode kann also nie laufen. Wir haben das an elf Arten von Beschädigung gemessen, darunter die am leichtesten reparierbare überhaupt, und er ist an jeder einzelnen gescheitert.

Deshalb übersetzen wir qpdf 12.2.0 selbst, aus unverändertem Originalquellcode mit aktivierten WebAssembly-Ausnahmen, in einem per Digest festgelegten Container und aus einem per Prüfsumme festgelegten Quellarchiv. Der Build ist reproduzierbar, die Lizenz- und Hinweisdateien von qpdf liegen neben der Binärdatei, und Ihr Browser prüft diese Binärdatei gegen ihren erwarteten Hash, bevor er sie ausführt. Die Reparatur baut jetzt die Tabellen wieder auf, die sie aufbauen soll, und eine Datei, die wirklich nicht mehr zu retten ist, sagt das, statt still zu scheitern.

Wie prüfe ich, dass nichts hochgeladen wird?

In Ihrem eigenen Browser, in etwa dreißig Sekunden, ohne etwas, das nicht schon darin steckt. Nehmen Sie eine Datei, bei der Sie kein Risiko sehen, und beobachten Sie, was die Seite tut.

  1. Öffnen Sie die Entwicklerwerkzeuge Ihres Browsers und wechseln Sie zum Bereich Netzwerk. In Chrome, Edge und Firefox ist das F12; in Safari schalten Sie zuerst das Entwicklermenü frei.
  2. Leeren Sie die Liste und filtern Sie sie auf Fetch und XHR, damit Sie Datenanfragen sehen und nicht Bilder und Stylesheets.
  3. Ziehen Sie ein PDF auf ein beliebiges Werkzeug dieser Website und führen Sie es bis zum fertigen Ergebnis durch, den Download eingeschlossen.
  4. Lesen Sie die Liste. Anfragen nach Engine-Dateien von dieser Domain tauchen beim ersten Einsatz eines Werkzeugs auf, und zu keinem Zeitpunkt taucht eine Anfrage auf, die Ihr Dokument trägt.

Gibt es eine schärfere Probe?

Ja, und sie geht schneller. Benutzen Sie ein Werkzeug einmal, damit die Engines zwischengespeichert sind, trennen Sie dann die Netzwerkverbindung vollständig und benutzen Sie es erneut. Die Arbeit läuft offline durch, was nur möglich ist, weil Ihre Datei nie irgendwohin musste.

Was wird zwischengespeichert, und wie lange?

Die Oberfläche und die Engine-Dateien. Jede Datei liegt unter einer Adresse, die ihre Version enthält, ein neuer Build ist also eine neue Adresse und eine zwischengespeicherte kann nie veralten. Sie werden ein Jahr lang gehalten und von jedem Werkzeug geteilt, das dieselbe Engine verwendet.

Dokumente werden nie zwischengespeichert. Nichts, was Sie öffnen, und nichts, was Sie erzeugen, wird von dieser Website abgelegt; den Zwischenspeicher zu leeren kostet Sie also einen Download und keine Arbeit.

Was kann diese Sammlung nicht?

Genug, um es aufzuschreiben. Alles Folgende ist eine echte Grenze und keine Lücke, die wir nächsten Monat schließen wollen, und wo ein Werkzeug an eine davon stößt, sagt es das auch am Werkzeug selbst.

Was, wenn hier etwas falsch ist?

Sagen Sie es uns, dann korrigieren wir es. Die Versionen, Lizenzen und Grenzen auf dieser Seite sind gegen die Builds geprüft, die wir tatsächlich ausliefern, und das Datum unter der Überschrift rückt nach, wenn die Worte sich ändern. Eine Korrektur geht über das Kontaktformular.