Dokumentation
PDFs erstellen
PDFs in Vue
PDFs in Nuxt
PDFs in React
PDFs in Angular
Verschlüsselung
Schützen Sie ein PDF mit einem Passwort, und jasy verschlüsselt es mit AES-256 (V5/R6, der neueste Handler der PDF-Spezifikation). Es läuft auf WebCrypto der Plattform, also ohne native Abhängigkeiten und ohne Java - derselbe Code verschlüsselt in Node und direkt im Browser.
Ein Passwort setzen
Übergeben Sie die Option encrypt an renderToBytes (oder renderPdf). Ein userPassword ist alles, was
Sie brauchen - jeder Viewer fragt danach, bevor er das Dokument öffnet.
import { Document, Page, Text, renderToBytes } from "@jasy/pdf";
const doc = Document([Page([Text("Confidential")])]);
const bytes = await renderToBytes(doc, {
encrypt: { userPassword: "secret" },
});
Owner-Passwort und Permissions
Ergänzen Sie ein ownerPassword für volle Rechte und permissions, um Aktionen zu erlauben oder zu
verbieten. Lassen Sie das Owner-Passwort weg, gilt das User-Passwort, und jede Permission ist
standardmäßig erlaubt.
const bytes = await renderToBytes(doc, {
encrypt: {
userPassword: "secret", // to open the document
ownerPassword: "owner", // full rights
permissions: {
printing: false, // disallow printing
copying: false, // disallow text/content extraction
modifying: true,
annotating: true,
},
},
});
Ein verschlüsseltes PDF öffnen
Die andere Hälfte: jasy liest auch verschlüsselte PDFs, und erst das macht es möglich, ein geschütztes Formular auszufüllen. Übergeben Sie das Passwort, und alles Weitere bleibt wie gewohnt:
import { PdfDocument, fillForm } from "@jasy/pdf/edit";
const doc = await PdfDocument.open(bytes, { password: "secret" });
const { bytes: filled } = await fillForm(bytes, { name: "Ada" }, { password: "secret" });
Lesen ist breit, Schreiben ist schmal. jasy öffnet AES-256 (R6, R5), AES-128 (R4) und RC4 (R2/R3), denn solche Dateien gibt es, und vielleicht müssen Sie eine öffnen. Geschrieben wird nur AES-256 R6: Jemandem einen Schutz in die Hand zu geben, der bekanntermaßen gebrochen ist, ist keine Funktion, also verweigert der alte Handler das Verschlüsseln.
Gut zu wissen beim Vergleichen: PDFKit und react-pdf verwenden beide standardmäßig 40-Bit-RC4, wenn Sie ein Passwort verlangen, und keines von beiden kann überhaupt R6 erzeugen. Ghostscript 10 lehnt alles über R3 ab.
Die Fehler sind benannt, nie allgemein: kein Passwort, falsches Passwort oder eine Revision, die jasy nicht umsetzt - drei verschiedene Dinge, auf die ein Aufrufer unterschiedlich reagieren kann.
Gut zu wissen
- AES-256, R6. Der aktuelle Handler nach ISO 32000-2 - nicht die älteren Revisionen, die manche Bibliotheken noch ausliefern.
- Reines JS, isomorph. Darunter liegt WebCrypto: keine native Kryptografie, keine zusätzlichen Abhängigkeiten, identisch in Node und im Browser.
- Auch in Vue, React und Nuxt. In
@jasy/vueübergeben Sie es als drittes Argument -renderToPdf(Doc, props, { encrypt: { userPassword: "secret" } }). In@jasy/reactist es das zweite -renderToPdf(<Doc />, { encrypt: { userPassword: "secret" } }). In@jasy/nuxtnehmen SierenderOptions. - Nicht für PDF/A. PDF/A (und damit Rechnungen nach ZUGFeRD / Factur-X) verbietet Verschlüsselung, der Versuch wird also mit einem klaren Fehler abgelehnt.