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.
| Engine | Wofür sie zuständig ist | Lizenz | Build |
|---|---|---|---|
| qpdf | Struktur, Verschlüsselung, Linearisierung und Reparatur | Apache-2.0 | qpdf 12.2.0 |
| PDFium | Seiten rendern, Textläufe, Bilder und Formularfelder lesen | BSD-3-Clause | @embedpdf/pdfium 2.15.0 |
| pdf-lib | Dokumente zusammensetzen, zeichnen und Formulare ausfüllen | MIT | @cantoo/pdf-lib 2.8.2 |
| Tesseract | Texterkennung | Apache-2.0 | tesseract-wasm 0.11.0 |
| mozjpeg | Reproduzierbare Bildkodierung für die Komprimierung | BSD-3-Clause | @jsquash/jpeg 1.6.0 |
| node-signpdf | Zertifikatssignaturen | MIT | @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.
- Ö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.
- Leeren Sie die Liste und filtern Sie sie auf Fetch und XHR, damit Sie Datenanfragen sehen und nicht Bilder und Stylesheets.
- Ziehen Sie ein PDF auf ein beliebiges Werkzeug dieser Website und führen Sie es bis zum fertigen Ergebnis durch, den Download eingeschlossen.
- 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.
Die Komprimierung verkleinert keine Schriften
Keine freizügig lizenzierte Engine reduziert eingebettete Schriften zuverlässig auf die benutzten Zeichen, also behauptet hier auch keine Einstellung, das zu tun. Bei einem Textdokument mit mehreren Schriftschnitten bleibt damit ein Boden: Das Neuschreiben der Datei entfernt doppelte und unbenutzte Objekte, die Schriften selbst bleiben genau so, wie sie sind.
Die Reparatur stellt Struktur wieder her, keinen Inhalt
Eine beschädigte Querverweistabelle wird neu aufgebaut und das Dokument öffnet wieder, was die meisten Dateien abdeckt, die ein Reader verweigert. Eine Datei, deren Objekte oder deren Trailer wirklich fehlen, lässt sich nicht aus dem Nichts rekonstruieren, und die Reparatur meldet das, statt ein plausibel aussehendes Ergebnis zu erzeugen.
HEIC hängt von Ihrem Browser ab
HEIC-Fotos werden von der Bildunterstützung Ihres Browsers dekodiert und nicht von einer Bibliothek, die wir mitliefern, weil jede verfügbare unter einer Copyleft-Lizenz steht, die dieses Projekt nicht verwendet. Auf Apple-Geräten funktioniert das, und von dort kommen diese Dateien; anderswo sagt das Werkzeug klar, dass es die Datei nicht dekodieren kann, und verweist auf den Weg über JPEG.
Die Extraktion liest einige Bildformate, nicht alle
Bilder aus einem PDF zu sichern funktioniert bei JPEG-Fotos und bei den verlustfreien Datenströmen, die Screenshots, Diagramme und Logos tragen. JPEG 2000, CCITT-Fax, LZW, indizierte Paletten und CMYK-Auszüge brauchen Decoder, die keine permissiv lizenzierte Bibliothek liefert, oder eine Farbumrechnung, die das Ergebnis raten müsste. Diese Bilder werden gezählt und übersprungen — und das Werkzeug sagt, dass es sie nicht dekodieren konnte, statt zu behaupten, das Dokument enthalte keine Bilder.
Textbearbeitung ergänzt und überdeckt, sie setzt nicht neu um
Ein PDF hält fest, wo jede Glyphe sitzt, und nicht, zu welchem Satz sie gehört; ein längeres Wort kann den Rest der Zeile deshalb nicht weiterschieben. Der Editor setzt neuen Text und überdeckt alten, was Korrekturen und Eintragungen abdeckt. Einen Absatz neu umbrechen kann er nicht, und nichts, was das verspricht, tut in Wahrheit etwas anderes.
OCR liefert eine durchsuchbare Ebene, keine Abschrift
Wie gut die Erkennung ist, entscheidet der Scan. Eine saubere Seite gedruckter Schrift mit 300 dpi kommt nahezu fehlerfrei zurück; Handschrift, schräg fotografierte Seiten und blasse Scans nicht. Lesen Sie das Ergebnis, bevor Sie sich darauf verlassen, denn die Erkennung kann Ihnen nicht sagen, wann sie falsch lag.
Office-Formate werden nicht umgewandelt
Die Umwandlung von Word, Excel und PowerPoint braucht eine Office-Engine, die sich in vernünftiger Größe nicht in einen Browser bringen lässt, deshalb wird sie hier nicht angeboten. Sie anderswo umzuwandeln und das PDF zurückzubringen ist der ehrliche Weg, und er hält das Versprechen, dass auf dieser Website nichts hochgeladen wird.
Sehr große Dateien begrenzt Ihr Gerät
Die Verarbeitung läuft im Arbeitsspeicher Ihres Browsers, ein Telefon lehnt also ein Dokument ab, das ein Notebook mühelos schafft. Wenn eine Aufgabe nahe an die Grenze kommt, sagt das Werkzeug es vorher, statt auf halbem Weg abzubrechen, und das Dokument vorher zu teilen ist meistens der Ausweg.
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.