Annotations

Annotaties

Deze pagina behandelt het maken, lezen, zoeken en flattenen van PDF-annotaties. Page biedt één Add*() methode per annotatiesubtype, die elk een live Annotation handle teruggeven; de Annotation basisklasse en zijn subtypes (TextAnnotation, StampAnnotation, MarkupAnnotation en andere) geven de eigenschappen van de annotatie weer voor lezen en bewerken.


Markup-, notitie- en linkannotaties aanmaken

De vier tekst-markupmethoden — Page.AddHighlight(), Page.AddUnderline(), Page.AddSquiggly() en Page.AddStrikeOut() — nemen een quads array (/QuadPoints) en retourneren een MarkupAnnotation. Page.AddLink() maakt een klikbaar gebied met een URI of interne actie, en Page.AddTextNote() voegt een plaknotitie-icoon toe dat een pop-up opent met contents tekst, en retourneert een 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 biedt ook vorm- en vrije-hand-methoden — AddSquare(), AddCircle(), AddLine(), AddPolygon(), AddPolyline(), AddInk(), AddFreeText(), AddCaret() en AddStamp() — die elk de overeenkomstige annotatie-handle voor dat subtype retourneren en automatisch de /AP weergave genereren.


Annotaties lezen en opsommen

page.Annotaties is een array van alle Annotation op de pagina. Elke annotatie, ongeacht subtype, geeft Subtype, Rect, Color, Contents, Name, Layer, ModDate, Flags, Print, Hidden en Opacity weer; subtypes voegen hun eigen velden toe, zoals StampAnnotation.StampName of MarkupAnnotation.QuadPoints.

const freeText = page.Annotations.find((a) => a.Subtype === 'FreeText');
if (freeText) {
  freeText.Contents = 'Updated note text';
}

Zoeken van annotatietekst

Page.SearchAnnotationText() and Page.SearchAnnotations() zijn opzettelijk gescheiden. SearchAnnotationText() vindt overeenkomsten in de tekst en aantekening carries in plaats van trekt — een notitie’s /Contents, zijn auteur (/T), of zijn onderwerp (/Subj) — en retourneert AnnotationTextMatch[] ({ annot, key, value, text }). SearchAnnotations() vindt overeenkomsten in de tekst en aantekening draws, zoals een FreeText’s zichtbare woorden, en retourneert 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');

Flattenen van annotaties

Annotation.Flatten() bakt de /AP weergave van een annotatie direct in de content-stream van de pagina op zijn /Rect, en verwijdert deze vervolgens uit /Annots. Het resultaat is permanente, statische inhoud — geen afzonderlijke annotatie meer die een gebruiker kan klikken, bewerken of verbergen.

const note = page.AddTextNote({
  rect: [72, 660, 92, 680], icon: 'Comment', contents: 'Reviewed and approved.',
});
note.Flatten();

Tips en best practices

  • Roep Flatten() aan op het object dat direct wordt geretourneerd door de Add*()-aanroep — een annotatie die later wordt verkregen door page.Annotaties opnieuw te lezen, is een andere objectreferentie.
  • SearchAnnotationText() en SearchAnnotations() bestrijken verschillende tekst: voer beide uit als je een zin wilt vinden ongeacht of deze in een notitie is getypt of op de pagina is getekend.
  • De vier opmaakmethoden (AddHighlight, AddUnderline, AddSquiggly, AddStrikeOut) genereren hun /AP weergave automatisch — handmatig tekenen in de content-stream is niet nodig.
  • Encryptie overleeft een ronde reis: annotaties die vóór Document.Save() zijn toegevoegd met een encrypt optie blijven geldig nadat het document opnieuw is geopend en ontcijferd.

Veelvoorkomende problemen

ProbleemOorzaakOplossing
page.Annotations.find() retourneert undefined voor een annotatie die je zojuist hebt toegevoegdZoeken naar een verouderde array die is vastgelegd voordat de annotatie werd toegevoegdLees page.Annotations opnieuw na de Add*()-aanroep, of gebruik de door de aanroep rechtstreeks geretourneerde handle
SearchAnnotationText() vindt niets voor tekst die zichtbaar is op de paginaDe tekst wordt weergegeven door de annotatie (bijv. een FreeText’s body), niet meegenomen in /ContentsGebruik SearchAnnotations() in plaats daarvan — het komt overeen met de getekende tekst
Annotatie blijft bewerkbaar verschijnen na Flatten()Flatten() werd aangeroepen op een kopie in plaats van de handle Add*() die werd geretourneerdRoep Flatten() aan op het object dat rechtstreeks door de aanmaakmethode wordt geretourneerd

FAQ

Wat is het verschil tussen SearchAnnotationText en SearchAnnotations?

SearchAnnotationText() Komt overeen met de tekst van een annotatie carries — /Contents, /T (author), of /Subj — zoals een sticky note’s body. SearchAnnotations() matcht tekst met een annotatie draws op de pagina, zoals een FreeText’s zichtbare woorden. De twee zijn disjunct: een overeenkomst in de één zal niet in de andere verschijnen.

Hoe maak ik een annotatie permanent en niet-interactief?

Roep Flatten() aan op de Annotation handle die wordt geretourneerd door de Add*() methode die deze heeft gemaakt. Dit verwerkt zijn weergave in de inhoudsstroom van de pagina en verwijdert het uit /Annots.

Welke annotatie-subtypes worden ondersteund?

Page biedt creatiemethoden voor tekstmarkup (AddHighlight, AddUnderline, AddSquiggly, AddStrikeOut), notities en bijschriften (AddTextNote, AddFreeText, AddCaret), koppelingen (AddLink), vormen (AddSquare, AddCircle, AddLine, AddPolygon, AddPolyline), vrijehand-inkt (AddInk), stempels (AddStamp), en bestandsbijlagen (AddFileAttachment).

Hoe lijst ik alle annotaties die al op een pagina staan?

Lees page.Annotaties, een array van Annotation handles. Elk biedt Subtype, Rect, Color, Contents en de andere gedeelde eigenschappen, zodat je ze kunt filteren of inspecteren met standaard array-methoden.


API Reference Samenvatting

Klasse/MethodeBeschrijving
AnnotationBasis afhandeling over elke annotatie; maakt Subtype, Rect, Color, Contents, Name, Flags, Print, Hidden, Opacity beschikbaar
Annotation.Flatten()Verwerk de weergave van de annotatie in statische paginainhoud
TextAnnotationEen /Text plakbriefje-handvat; voegt Icon, Open, Author toe
StampAnnotationEen /Stamp rubberstempel-handvat; voegt StampName toe
MarkupAnnotationEen tekstopmaak-handvat (Highlight/Underline/StrikeOut/Squiggly); voegt MarkupType, QuadPoints toe
Page.AddHighlight() / Page.AddUnderline() / Page.AddStrikeOut() / Page.AddSquiggly()Maak een tekstopmaak-annotatie over /QuadPoints
Page.AddTextNote()Maak een sticky-note-annotatie
Page.AddLink()Maak een klikbare link met een URI of interne actie
Page.AnnotationsElke Annotation op de pagina, als een array
Page.SearchAnnotationText()Zoek de tekst die een annotatie draagt (/Contents, /T, /Subj)
Page.SearchAnnotations()Zoek de tekst die een annotatie op de pagina tekent

Zie ook

 Nederlands