Annotations

Annotationen

Diese Seite behandelt das Erstellen, Lesen, Suchen und Flachlegen von PDF-Annotationen. Page stellt für jeden Annotationstyp eine Add*() Methode bereit, die jeweils einen Live-Annotation-Handle zurückgibt; die Annotation Basisklasse und ihre Unterklassen (TextAnnotation, StampAnnotation, MarkupAnnotation und andere) stellen die Eigenschaften der Annotation zum Lesen und Bearbeiten bereit.


Erstellung von Markup-, Notiz- und Link-Annotationen

Die vier Text-Markup-Methoden — Page.AddHighlight(), Page.AddUnderline(), Page.AddSquiggly() und Page.AddStrikeOut() — akzeptieren ein quads-Array (/QuadPoints) und geben ein MarkupAnnotation zurück. Page.AddLink() erstellt einen anklickbaren Bereich mit einer URI oder einer internen Aktion, und Page.AddTextNote() fügt ein Haftnotiz-Icon hinzu, das ein Popup mit contents Text öffnet und ein TextAnnotation zurückgibt.

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 stellt außerdem Formen- und Freihand-Methoden bereit — AddSquare(), AddCircle(), AddLine(), AddPolygon(), AddPolyline(), AddInk(), AddFreeText(), AddCaret() und AddStamp() — die jeweils den entsprechenden Annotation-Handle für diesen Subtyp zurückgeben und automatisch das /AP Erscheinungsbild erzeugen.


Lesen und Auflisten von Annotationen

page.Annotationen ist ein Array aller Annotation auf der Seite. Jede Annotation, unabhängig vom Subtyp, stellt Subtype, Rect, Color, Contents, Name, Layer, ModDate, Flags, Print, Hidden und Opacity bereit; Subtypen fügen eigene Felder hinzu, wie z.B. StampAnnotation.StampName oder MarkupAnnotation.QuadPoints.

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

Durchsuchen von Anmerkungstext

Page.SearchAnnotationText() and Page.SearchAnnotations() sind bewusst getrennt. SearchAnnotationText() findet Treffer im Text einer Annotation carries statt zu zeichnen — einer Notiz’s /Contents, sein Autor (/T), oder ihr Betreff (/Subj) — und gibt zurück AnnotationTextMatch[] ({ annot, key, value, text }). SearchAnnotations() findet Treffer im Text einer Annotation draws, wie ein FreeText’s sichtbare Wörter und gibt zurück 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');

Flachlegen von Anmerkungen

Annotation.Flatten() verankert das /AP einer Anmerkung direkt im Inhaltsstrom der Seite an ihrer /Rect und entfernt sie anschließend aus /Annots. Das Ergebnis ist permanenter, statischer Inhalt — keine separate Anmerkung mehr, die ein Betrachter anklicken, bearbeiten oder ausblenden kann.

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

Tipps und bewährte Verfahren

  • Rufen Sie Flatten() auf dem Objekt auf, das direkt vom Aufruf von Add*() zurückgegeben wird — eine Anmerkung, die durch erneutes Lesen von page.Annotationen anschließend erhalten wird, ist eine andere Objektreferenz.
  • SearchAnnotationText() und SearchAnnotations() decken unterschiedlichen Text ab: führen Sie beide aus, wenn Sie einen Ausdruck finden müssen, egal ob er in eine Notiz eingegeben oder auf die Seite gezeichnet wurde.
  • Die vier Markup-Methoden (AddHighlight, AddUnderline, AddSquiggly, AddStrikeOut) erzeugen ihr /AP Erscheinungsbild automatisch — manuelles Zeichnen im Inhaltsstrom ist nicht erforderlich.
  • Verschlüsselung übersteht einen Rundweg: Anmerkungen, die vor Document.Save() mit einer encrypt-Option hinzugefügt wurden, bleiben nach dem erneuten Öffnen und Entschlüsseln des Dokuments gültig.

Häufige Probleme

ProblemUrsacheBehebung
page.Annotations.find() gibt undefined für eine Annotation, die Sie gerade hinzugefügt haben zurückSuche in einem veralteten Array, das vor dem Hinzufügen der Annotation erfasst wurdeLese page.Annotations nach dem Aufruf von Add*() erneut ein, oder verwende den vom Aufruf direkt zurückgegebenen Handle
SearchAnnotationText() findet nichts für sichtbaren Text auf der SeiteDer Text wird von der Annotation gezeichnet (z.B. der Körper eines FreeText), nicht in /Contents transportiert.Verwende stattdessen SearchAnnotations() — es entspricht dem gezeichneten Text.
Die Annotation erscheint nach Flatten() weiterhin editierbar.Flatten() wurde auf einer Kopie aufgerufen statt auf dem von Add*() zurückgegebenen Handle.Rufe Flatten() auf dem Objekt auf, das direkt von der Erzeugungsmethode zurückgegeben wird.

FAQ

Was ist der Unterschied zwischen SearchAnnotationText und SearchAnnotations?

SearchAnnotationText() stimmt mit dem Text einer Annotation überein carries — /Contents, /T (Autor), oder /Subj — beispielsweise dem Körper einer Haftnotiz. SearchAnnotations() matcht Text einer Annotation draws auf der Seite, wie ein FreeText’s sichtbare Wörter. Die beiden sind disjunkt: ein Treffer im einen erscheint nicht im anderen.

Wie mache ich eine Anmerkung dauerhaft und nicht interaktiv?

Rufen Sie Flatten() mit dem von der Add*()-Methode zurückgegebenen Annotation-Handle auf. Dadurch wird das Aussehen in den Inhaltsstrom der Seite eingebettet und es wird aus /Annots entfernt.

Welche Anmerkungsuntertypen werden unterstützt?

Page stellt Erzeugungsmethoden für Textauszeichnung (AddHighlight, AddUnderline, AddSquiggly, AddStrikeOut), Notizen und Callouts (AddTextNote, AddFreeText, AddCaret), Links (AddLink), Formen (AddSquare, AddCircle, AddLine, AddPolygon, AddPolyline), Freihand-Tinte (AddInk), Stempel (AddStamp) und Dateianhänge (AddFileAttachment) bereit.

Wie kann ich jede bereits auf einer Seite vorhandene Anmerkung auflisten?

Lese page.Annotationen, ein Array von Annotation-Handles. Jeder stellt Subtype, Rect, Color, Contents und die anderen gemeinsamen Eigenschaften bereit, sodass du sie mit Standard-Array-Methoden filtern oder inspizieren kannst.


API Reference Zusammenfassung

Klasse/MethodeBeschreibung
AnnotationBasis-Handle über jede Annotation; stellt Subtype, Rect, Color, Contents, Name, Flags, Print, Hidden, Opacity bereit
Annotation.Flatten()Betten Sie das Erscheinungsbild der Annotation in statischen Seiteninhalt ein
TextAnnotationEin /Text Klebezettel-Handle; fügt Icon, Open, Author hinzu
StampAnnotationEin /Stamp Gummistempel-Handle; fügt StampName hinzu
MarkupAnnotationEin Text-Markup-Handle (Highlight/Underline/StrikeOut/Squiggly); fügt MarkupType, QuadPoints hinzu
Page.AddHighlight() / Page.AddUnderline() / Page.AddStrikeOut() / Page.AddSquiggly()Erstelle eine Text-Markup-Anmerkung über /QuadPoints
Page.AddTextNote()Erstelle eine Haftnotiz-Annotation
Page.AddLink()Erstelle einen anklickbaren Link mit einer URI oder internen Aktion
Page.AnnotationsJedes Annotation auf der Seite, als Array
Page.SearchAnnotationText()Finde den Text, den eine Annotation enthält (/Contents, /T, /Subj)
Page.SearchAnnotations()Text finden, den eine Anmerkung auf der Seite zeichnet

Siehe auch

 Deutsch