Security
Security
यह पृष्ठ पासवर्ड, एन्क्रिप्शन, और डिजिटल हस्ताक्षरों को कवर करता है। Document.OpenFile() / Document.Open() एक पासवर्ड स्वीकार करते हैं ताकि संरक्षित दस्तावेज़ खोला जा सके, Document.Save() एक encrypt विकल्प स्वीकार करता है उसे संरक्षित करने के लिए, और Document.Sign() / Document.Certify() / Document.VerifySignatures() डिजिटल हस्ताक्षर जोड़ते और जाँचते हैं।
पासवर्ड-सुरक्षित दस्तावेज़ खोलना और डिक्रिप्ट करना
{ password: '...' } को Document.OpenFile() या Document.Open() को पास करें ताकि उपयोगकर्ता पासवर्ड से संरक्षित दस्तावेज़ खोला जा सके। यदि पासवर्ड अनुपलब्ध या गलत है, तो कॉल InvalidPasswordError को थ्रो करता है।
import { Document, InvalidPasswordError } from '@asposefoss/pdf';
try {
const doc = Document.OpenFile('secret.pdf', { password: 'hunter2' });
doc.WriteTo('decrypted.pdf'); // output is plaintext
} catch (e) {
if (e instanceof InvalidPasswordError) console.error('wrong password');
else throw e;
}सेव पर एन्क्रिप्शन
Document.Save() (और Document.WriteTo()) एक encrypt विकल्प स्वीकार करते हैं। पासवर्ड-आधारित एन्क्रिप्शन सामान्य मामला है; लाइब्रेरी सार्वजनिक-की एन्क्रिप्शन को भी समर्थन देती है एक या अधिक प्राप्तकर्ता प्रमाणपत्रों के लिए, जिसे फिर प्राप्तकर्ता की निजी कुंजी से खोला जाता है।
// Encrypt to one or more recipient certificates (PEM string or DER bytes):
const bytes = doc.Save({
encrypt: {
recipients: [{ certificate: recipientCertPem }],
algorithm: 'aes256', // 'aes256' (default) | 'aes128' | 'rc4'
permissions: { copying: false }, // shared across all recipients
},
});
// Open with the recipient's private key + certificate, or a PKCS#12 bundle:
const opened = Document.Open(bytes, {
recipient: { privateKey, certificate: recipientCertPem },
});
console.log(opened.Permissions); // recovered permission flags (not enforced)
हस्ताक्षर करना और प्रमाणित करना
Document.Certify() एक प्रमाणन (लेखक) हस्ताक्षर जोड़ता है जिसमें DocMDP ट्रांसफ़ॉर्म होता है जो यह घोषित करता है कि बाद में कौन-से परिवर्तन अनुमत हैं; Document.Sign() एक और सामान्य अनुमोदन हस्ताक्षर जोड़ता है जिसे क्रमिक रूप से ऊपर जोड़ा जा सकता है। दोनों एक { certificate, privateKey } साइनर और एक विकल्प ऑब्जेक्ट लेते हैं (reason, location, name, fieldName, और — Certify() के लिए — permissions)।
const certifying = Document.OpenFile('report.pdf');
await certifying.Certify(
{ certificate: author.certificate, privateKey: author.privateKey },
{ permissions: 'form-fill', reason: 'Certifying the report', fieldName: 'Certification' },
);
const certifiedBytes = certifying.Save();
const approving = Document.Open(certifiedBytes);
await approving.Sign(
{ certificate: approver.certificate, privateKey: approver.privateKey },
{ reason: 'Approved for publication', fieldName: 'Approval' },
);
approving.WriteTo('signed.pdf');हस्ताक्षरों की पुष्टि
Document.VerifySignatures() दस्तावेज़ में प्रत्येक हस्ताक्षर की जाँच करता है: यह प्रत्येक /ByteRange डाइजेस्ट को पुनः गणना करता है, डिटैच्ड CMS को सत्यापित करता है, और प्रत्येक हस्ताक्षर के बाद क्या बदला है, इसकी रिपोर्ट देता है। यह एक SignatureReport[] लौटाता है, प्रत्येक हस्ताक्षर के लिए एक प्रविष्टि।
const reports = await Document.OpenFile('signed.pdf').VerifySignatures();
for (const r of reports) {
console.log(r.name, 'integrity:', r.integrity, 'signature:', r.signature);
}सलाह और सर्वोत्तम प्रथाएँ
- अविश्वसनीय इनपुट खोलते समय व्यापक कैच-ऑल से पहले विशेष रूप से
InvalidPasswordErrorको पकड़ें, ताकि आप खराब पासवर्ड और क्षतिग्रस्त फ़ाइल के प्रति अलग-अलग प्रतिक्रिया दे सकें। - किसी भी
Sign()कॉल से पहलेCertify()को कॉल करें — एक प्रमाणन हस्ताक्षर DocMDP अनुमतियों को स्थापित करता है, जिनके ऊपर बाद के अनुमोदन हस्ताक्षर परतबद्ध होते हैं। Document.Open()सार्वजनिक-कुंजी डीक्रिप्शन के बाद पुनः प्राप्तPermissionsलौटाता है, लेकिन लाइब्रेरी स्वयं इन्हें लागू नहीं करती — इन्हें केवल सूचना के रूप में मानें।VerifySignatures()asyncहै —awaitइसे (या लौटाए गएPromiseको संभालें) रिपोर्ट ऐरे पढ़ने से पहले।
सामान्य समस्याएँ
| समस्या | कारण | समाधान |
|---|---|---|
Document.OpenFile() / Document.Open() फ़ेंकता है InvalidPasswordError | दस्तावेज़ पासवर्ड-रक्षित है और कोई पासवर्ड, या गलत पासवर्ड, प्रदान नहीं किया गया। | { password: '...' } को Document.OpenFile() / Document.Open() को पास करें |
| पब्लिक-की डिक्रिप्शन विफल हो जाता है | गलत प्राइवेट की या प्रमाणपत्र पास किया गया, या दोनों में से कोई भी एन्क्रिप्शन समय उपयोग की गई किसी भी recipients प्रविष्टि से मेल नहीं खाता | पुष्टि करें कि recipient विकल्प का privateKey / certificate (या PKCS#12 बंडल) मूल प्राप्तकर्ताओं में से एक से मेल खाता है |
| एक स्वीकृति हस्ताक्षर प्रमाणपत्र को अमान्य कर देता है | Sign() को उन अनुमतियों के साथ बुलाया गया था जो प्रमाणित करने वाला DocMDP रूपांतरण अनुमति नहीं देता | Certify() पर एक permissions मान सेट करें (जैसे 'form-fill') इतना व्यापक हो कि बाद में हस्ताक्षरकर्ता जो परिवर्तन करेंगे, उन्हें समाहित किया जा सके |
VerifySignatures() ने एक टूटी हुई इंटेग्रिटी चेक की रिपोर्ट की | हस्ताक्षरित बाइट्स को साइन करने के बाद बदल दिया गया, जो इन्क्रीमेंटल अपडेट के दायरे में नहीं है, जिसे सिग्नेचर कवरेज करता है | किसी भी आगे के संपादन के बाद दस्तावेज़ को फिर से साइन करें |
FAQ
साइन और सर्टिफाई में क्या अंतर है?
Certify() पहला, प्रमाणन हस्ताक्षर जोड़ता है और (एक DocMDP रूपांतरण के माध्यम से) यह घोषित करता है कि बाद में कौन-से परिवर्तन अनुमति प्राप्त हैं। Sign() एक सामान्य अनुमोदन हस्ताक्षर जोड़ता है, जो पहले के ऊपर क्रमिक रूप से जोड़ा जाता है।
मैं पासवर्ड-सुरक्षित PDF को कैसे खोलूँ?
{ password: '...' } को Document.OpenFile() या Document.Open() को पास करें, और यदि पासवर्ड गलत हो सकता है तो InvalidPasswordError को पकड़ें।
क्या यह लाइब्रेरी PDF अनुमति फ़्लैग्स को लागू करती है?
नहीं। Document.Open() आपके निरीक्षण के लिए एन्क्रिप्टेड दस्तावेज़ से Permissions फ़्लैग्स को पुनः प्राप्त करता है, लेकिन यह स्वयं यह प्रतिबंध नहीं लगाता कि आपका कोड खुले दस्तावेज़ के साथ क्या कर सकता है।
मैं यह कैसे जाँचूँ कि एक हस्ताक्षरित PDF की हस्ताक्षर अभी भी वैध हैं?
कॉल करें Document.VerifySignatures() (async मेथड) और प्रत्येक लौटाए गए SignatureReport के integrity और signature फ़ील्ड की जाँच करें।
API Reference सारांश
| क्लास/मेथड | विवरण |
|---|---|
Document.OpenFile() / Document.Open() | एक दस्तावेज़ खोलें, वैकल्पिक रूप से पासवर्ड या सार्वजनिक-कुंजी-सुरक्षित |
InvalidPasswordError | जब पासवर्ड अनुपलब्ध या गलत हो तो फेंका जाता है |
Document.Save() / Document.WriteTo() | एक दस्तावेज़ सहेजें, वैकल्पिक रूप से encrypt विकल्प के साथ |
Permissions | एक एन्क्रिप्टेड दस्तावेज़ से पुनः प्राप्त अनुमति फ़्लैग्स |
Document.Certify() | एक DocMDP ट्रांसफ़ॉर्म के साथ प्रमाणन (लेखक) हस्ताक्षर जोड़ें |
Document.Sign() | एक अनुमोदन हस्ताक्षर जोड़ें |
Document.VerifySignatures() | दस्तावेज़ में प्रत्येक हस्ताक्षर को सत्यापित करें |
SignatureReport | एक हस्ताक्षर का सत्यापन परिणाम: name, integrity, signature |