Annotations
एनोटेशन
यह पृष्ठ PDF एनोटेशन बनाने, पढ़ने, खोजने और फ़्लैटेन करने को कवर करता है। Page प्रत्येक एनोटेशन उपप्रकार के लिए एक Add*() मेथड उजागर करता है, जो एक लाइव Annotation हैंडल लौटाता है; Annotation बेस क्लास और उसके उपप्रकार (TextAnnotation, StampAnnotation, MarkupAnnotation, और अन्य) एनोटेशन की प्रॉपर्टीज़ को पढ़ने और संपादित करने के लिए उजागर करते हैं।
मार्कअप, नोट, और लिंक एनोटेशन बनाना
चार टेक्स्ट-मार्कअप मेथड्स — Page.AddHighlight(), Page.AddUnderline(), Page.AddSquiggly(), और Page.AddStrikeOut() — एक quads एरे (/QuadPoints) लेते हैं और एक MarkupAnnotation लौटाते हैं। Page.AddLink() एक क्लिक करने योग्य क्षेत्र बनाता है जिसमें URI या आंतरिक क्रिया होती है, और Page.AddTextNote() एक स्टिकी-नोट आइकन जोड़ता है जो contents टेक्स्ट के साथ पॉपअप खोलता है, एक TextAnnotation लौटाते हुए।
page.AddHighlight({ quads, color: [1, 1, 0], contents: 'Yellow highlight' });
page.AddUnderline({ quads, color: [0, 0, 1] });
page.AddStrikeOut({ quads, color: [1, 0, 0] });
page.AddLink({
rect: [100, 700, 220, 716],
action: { type: 'uri', uri: 'https://example.com' },
border: 0,
});
page.AddTextNote({
rect: [x, y, x + 20, y + 20], icon: 'Note', author: 'Reviewer',
contents: 'This is a sticky-note annotation.',
});Page आकार और फ्रीहैंड मेथड्स भी उजागर करता है — AddSquare(), AddCircle(), AddLine(), AddPolygon(), AddPolyline(), AddInk(), AddFreeText(), AddCaret(), और AddStamp() — प्रत्येक उस उपप्रकार के लिए संबंधित एनोटेशन हैंडल लौटाता है, और उसका /AP स्वरूप स्वचालित रूप से जनरेट करता है।
एनोटेशन पढ़ना और सूचीबद्ध करना
page.Annotations पृष्ठ पर प्रत्येक Annotation का एक एरे है। प्रत्येक एनोटेशन, उपप्रकार की परवाह किए बिना, Subtype, Rect, Color, Contents, Name, Layer, ModDate, Flags, Print, Hidden, और Opacity को उजागर करता है; उपप्रकार अपने स्वयं के फ़ील्ड जोड़ते हैं, जैसे कि StampAnnotation.StampName या MarkupAnnotation.QuadPoints।
const freeText = page.Annotations.find((a) => a.Subtype === 'FreeText');
if (freeText) {
freeText.Contents = 'Updated note text';
}एनोटेशन टेक्स्ट की खोज
Page.SearchAnnotationText() and Page.SearchAnnotations() जानबूझकर अलग-अलग हैं। SearchAnnotationText() पाठ में मिलान ढूँढता है एक annotation carries ड्रॉ करने के बजाय — एक नोट का /Contents, इसका लेखक (/T), या इसका विषय (/Subj) — और लौटाता है AnnotationTextMatch[] ({ annot, key, value, text }). SearchAnnotations() पाठ में मिलान ढूँढता है एक annotation draws, जैसे कि एक FreeText’s दृश्यमान शब्द, और लौटाता है AnnotationMatch[] ({ annot, text, quads }).
// A sticky note's /Contents text — found by SearchAnnotationText, not SearchAnnotations.
const textHits = page.SearchAnnotationText('body secret');
console.log(textHits[0].key, textHits[0].value); // 'Contents' 'body secret'
// A FreeText's rendered words — found by SearchAnnotations, not SearchAnnotationText.
const drawnHits = page.SearchAnnotations('bravo');एनोटेशन को सपाट करना
Annotation.Flatten() एनोटेशन के /AP स्वरूप को सीधे पेज की कंटेंट स्ट्रीम में उसके /Rect पर बेक करता है, फिर इसे /Annots से हटा देता है। परिणाम स्थायी, स्थिर सामग्री है — अब यह अलग एनोटेशन नहीं रहता जिसे दर्शक क्लिक, संपादित या छिपा सके।
const note = page.AddTextNote({
rect: [72, 660, 92, 680], icon: 'Comment', contents: 'Reviewed and approved.',
});
note.Flatten();टिप्स और सर्वोत्तम प्रथाएँ
Flatten()को सीधेAdd*()कॉल द्वारा लौटाए गए ऑब्जेक्ट पर कॉल करें — बाद मेंpage.Annotationsको पुनः पढ़कर प्राप्त किया गया एनोटेशन एक अलग ऑब्जेक्ट रेफ़रेंस होता है।SearchAnnotationText()औरSearchAnnotations()अलग-अलग पाठ को कवर करते हैं: यदि आपको किसी वाक्यांश को खोजना है चाहे वह नोट में टाइप किया गया हो या पृष्ठ पर खींचा गया हो, तो दोनों चलाएँ।- चार मार्कअप विधियाँ (
AddHighlight,AddUnderline,AddSquiggly,AddStrikeOut) उनका/APस्वरूप स्वचालित रूप से उत्पन्न करती हैं — मैनुअल कंटेंट-स्ट्रीम ड्राइंग की आवश्यकता नहीं है। - एन्क्रिप्शन एक राउंड ट्रिप में टिकता है:
Document.Save()से पहले जो एनोटेशनencryptविकल्प के साथ जोड़े गए हैं, दस्तावेज़ को पुनः खोलने और डिक्रिप्ट करने के बाद भी वैध रहते हैं।
सामान्य समस्याएँ
| समस्या | कारण | समाधान |
|---|---|---|
page.Annotations.find() लौटाता है undefined एक एनोटेशन के लिए जिसे आपने अभी जोड़ा है | ऐनोटेशन जोड़ी जाने से पहले कैप्चर किए गए पुराने एरे की खोज | page.Annotations को Add*() कॉल के बाद फिर से पढ़ें, या कॉल द्वारा सीधे लौटाए गए हैंडल का उपयोग करें |
SearchAnnotationText() पृष्ठ पर दृश्यमान टेक्स्ट के लिए कुछ नहीं पाता है | पाठ एनोटेशन द्वारा बनाया जाता है (उदा. एक FreeText का बॉडी), न कि /Contents में रखा जाता है | SearchAnnotations() का उपयोग करें — यह बनाए गए पाठ से मेल खाता है |
एनोटेशन अभी भी Flatten() के बाद संपादन योग्य दिखता है | Flatten() को कॉपी पर बुलाया गया था, न कि उस हैंडल Add*() पर जो लौटाया गया था | बनाने वाली विधि द्वारा सीधे लौटाए गए ऑब्जेक्ट पर Flatten() को कॉल करें |
FAQ
SearchAnnotationText और SearchAnnotations में क्या अंतर है?
SearchAnnotationText() एनोटेशन का पाठ से मिलान होता है carries — /Contents, /T (author), या /Subj — जैसे कि एक स्टिकी नोट का बॉडी। SearchAnnotations() पाठ को एक एनोटेशन से मिलाता है draws पृष्ठ पर, जैसे कि एक FreeTextकी दिखाई देने वाली शब्द। दोनों असंगत हैं: एक में मिलान दूसरे में नहीं दिखेगा।
मैं एक एनोटेशन को स्थायी और गैर-इंटरैक्टिव कैसे बनाऊँ?
उस Add*() मेथड द्वारा लौटाए गए Annotation हैंडल पर Flatten() को कॉल करें जिसने इसे बनाया। यह उसकी उपस्थिति को पेज की कंटेंट स्ट्रीम में बेक कर देता है और इसे /Annots से हटा देता है।
कौन से एनोटेशन उपप्रकार समर्थित हैं?
Page टेक्स्ट मार्कअप (AddHighlight, AddUnderline, AddSquiggly, AddStrikeOut) के निर्माण विधियों को उजागर करता है, नोट्स और कॉलआउट्स (AddTextNote, AddFreeText, AddCaret), लिंक (AddLink), शैप्स (AddSquare, AddCircle, AddLine, AddPolygon, AddPolyline), फ्रीहैंड इंक (AddInk), स्टैम्प्स (AddStamp), और फ़ाइल अटैचमेंट्स (AddFileAttachment)।
मैं पेज पर पहले से मौजूद सभी एनोटेशन कैसे सूचीबद्ध करूँ?
page.Annotations पढ़ें, जो Annotation हैंडल्स की एक एरे है। प्रत्येक Subtype, Rect, Color, Contents, और अन्य साझा गुणों को उजागर करता है, जिससे आप मानक एरे मेथड्स के साथ उन्हें फ़िल्टर या निरीक्षण कर सकते हैं।
API Reference सारांश
| क्लास/मेथड | विवरण |
|---|---|
Annotation | किसी भी एनोटेशन पर बेस हैंडल; Subtype, Rect, Color, Contents, Name, Flags, Print, Hidden, Opacity को उजागर करता है |
Annotation.Flatten() | एनोटेशन की उपस्थिति को स्थैतिक पृष्ठ सामग्री में बेक करें |
TextAnnotation | एक /Text sticky-note हैंडल; जोड़ता है Icon, Open, Author |
StampAnnotation | एक /Stamp rubber-stamp हैंडल; जोड़ता है StampName |
MarkupAnnotation | एक text-markup हैंडल (Highlight/Underline/StrikeOut/Squiggly); जोड़ता है MarkupType, QuadPoints |
Page.AddHighlight() / Page.AddUnderline() / Page.AddStrikeOut() / Page.AddSquiggly() | एक text-markup एनोटेशन /QuadPoints के ऊपर बनाएं |
Page.AddTextNote() | एक स्टिकी-नोट एनोटेशन बनाएं |
Page.AddLink() | एक क्लिक करने योग्य लिंक बनाएं जिसमें URI या आंतरिक क्रिया हो |
Page.Annotations | पृष्ठ पर प्रत्येक Annotation, एक एरे के रूप में |
Page.SearchAnnotationText() | एक एनोटेशन द्वारा रखे गए टेक्स्ट को खोजें (/Contents, /T, /Subj) |
Page.SearchAnnotations() | पृष्ठ पर एक एनोटेशन द्वारा खींचा गया पाठ खोजें |