Troubleshooting
यह पृष्ठ Aspose.PDF FOSS में TypeScript के साइनिंग, एनोटेशन, रेडैक्शन, ड्राइंग, कन्वर्ज़न, और टेक्स्ट API के दौरान आम तौर पर मिलने वाले मुद्दों के समाधान एकत्र करता है।
असिंक्रोनस मेथड्स (Sign, Certify, VerifySignatures) कुछ भी नहीं कर रहे प्रतीत होते हैं
Document.Sign(), Document.Certify(), और Document.VerifySignatures() सभी एक Promise लौटाते हैं। await के बिना किसी को कॉल करने से निष्पादन तुरंत जारी रहता है — एक बाद का doc.WriteTo() या doc.Save() सिग्नेचर वास्तव में लिखे जाने से पहले चल सकता है, और सत्यापन परिणाम पर एक बाद का console.log() अनसॉल्व्ड Promise को SignatureReport[] एरे के बजाय लॉग करता है:
// Wrong — WriteTo can race ahead of Sign:
approving.Sign(identity, opts);
approving.WriteTo('signed.pdf');
// Correct:
await approving.Sign(identity, opts);
approving.WriteTo('signed.pdf');देखें Security पूर्ण प्रमाणित-फिर-हस्ताक्षर प्रवाह के लिए गाइड।
SearchAnnotationText() और SearchAnnotations() समान टेक्स्ट के लिए अलग परिणाम लौटाते हैं
ये दो खोज विधियाँ एक ही पृष्ठ पर दोनों दिशाओं में अलग-अलग हैं। SearchAnnotationText() शाब्दिक एनोटेशन मेटाडाटा से मेल खाता है (/Contents, /T, /Subj); SearchAnnotations() से मेल खाता है rendered मार्कअप एनोटेशन की अपनी उपस्थिति द्वारा खींचा गया टेक्स्ट (उदाहरण के लिए एक FreeText body). केवल … में संग्रहीत मान /Contents एक द्वारा पाया जाता है और दूसरे द्वारा चूक जाता है:
const metadataHits = page.SearchAnnotationText('confidential'); // matches /Contents, /T, /Subj
const renderedHits = page.SearchAnnotations('confidential'); // matches rendered markup text
न तो कोई भी विधि सामान्य पृष्ठ पाठ को खोजती है — उपयोग करें Page.GetText() or Page.Search() इसके लिए। देखें टिप्पणियाँ गाइड पूर्ण एनोटेशन API के लिए।
एक रेडैक्शन मार्क अकेले सामग्री को हटाता नहीं
Page.AddRedact() केवल एक RedactAnnotation क्षेत्र के ऊपर — नीचे की सामग्री अपरिवर्तित रहती है और अभी भी कॉपी-सेलेक्टेबल है जब तक Page.ApplyRedactions() चलाता है और सामग्री स्ट्रीम को विनाशकारी रूप से पुनर्लेखित करता है। जोड़े गए चिह्न after ApplyRedactions() पहले ही चल चुका है, अनावेदित अनिश्चितकाल तक बना रहेगा:
page.AddRedact({ rect: [216, 548, 460, 566], fill: [0, 0, 0], overlayText: '[REDACTED]' });
page.ApplyRedactions(); // only now is the content actually destroyed
देखें Redaction mark-vs-apply विवरण और text-search रिडैक्शन के लिए गाइड।
PageGraphics ड्राइंग कॉल्स कभी पेज पर नहीं दिखते
Page.Graphics() एक PageGraphics लौटाता है जो प्रत्येक moveTo()/rect()/circle()/stroke()/fill() कॉल को तब तक बफ़र करता है जब तक apply() उन्हें पेज पर कमिट नहीं कर देता। एक क्रम जो अपने apply() कॉल को नहीं रखता, कुछ भी नहीं ड्रॉ करता:
const g = page.Graphics();
g.setStrokeColor([0.2, 0.2, 0.2]).setLineWidth(1).rect(80, 300, 200, 100).stroke();
g.apply(); // required — nothing above is visible without this call
देखें Images पूर्ण ड्राइंग और optional-content-layer API के लिए गाइड।
Document.ToHtml() और हैंड-टैगिंग दोनों एक स्ट्रक्चर ट्री पर निर्भर करते हैं
सेमांटिक-मोड Document.ToHtml() स्ट्रक्चर ट्री को चलाकर सामग्री को पुनः प्रवाहित करता है; अनटैग्ड दस्तावेज़ पर यह चुपचाप एक ह्यूरिस्टिक बॉडी पर वापस आता है और एक्सपोर्ट अपनी हेडिंग स्ट्रक्चर खो देता है। वही ट्री वह है जिसमें हैंड-ऑथर्ड टैगिंग (StructTreeRoot.Append() / StructElement.MarkContent()) लिखती है और जो Document.GetStructTree() लौटाता है — Document.CreateStructTree() या Document.AutoTag() को किसी भी एक से पहले कॉल करें:
const root = doc.GetStructTree();
if (!root) throw new Error('document is not tagged yet');देखें Conversion and Structure एक्सपोर्ट और टैगिंग APIs के लिए क्रमशः गाइड्स।
AddTextBlock() अपने बाउंडिंग रेक्टैंगल पर चुपचाप टेक्स्ट को क्लिप करता है।
Page.AddTextBlock(text, rect, options) टेक्स्ट को rect के भीतर लपेटता है और जो भी फिट नहीं होता (या यदि सब कुछ फिट हो तो null) वापस करता है — यह रेक्टैंगल को नहीं बढ़ाता या कंटेंट ओवरफ़्लो होने पर त्रुटि नहीं फेंकता। एक अनदेखा किया गया रिटर्न वैल्यू मतलब ओवरफ़्लो टेक्स्ट को बस नहीं बनाया जाता:
const rest = page.AddTextBlock(longText, [72, 600, 200, 150], { fontSize: 11 });
if (rest) page.AddTextBlock(rest, [300, 600, 200, 150]); // route the overflow somewhere
देखें Text पूर्ण text-placement और extraction API के लिए गाइड।