Anotacije i obrasci

Anotacije i obrasci

Anotacije i obrasci

Aspose.PDF FOSS for .NET vam pruža potpuni pristup čitanju/pisanju PDF anotacija
i interaktivnim AcroForm poljima. Primarna tačka ulaza za anotacije je
Page.Annotations (AnnotationCollection), dok se polja forme pristupa
putem Document.Form. Obe podsistemi rade u potpunosti u memoriji i ne
zahtevaju licencni ključ.


Dodavanje anotacija

AnnotationCollection izlaže tipizirane pomoćne metode za svaku standardnu vrstu anotacije. Svaka metoda prihvata Rectangle koji definiše položaj anotacije na stranici, plus parametre specifične za tip.

using var doc = Document.Open(pdfBytes);
var page = doc.Pages[1];

// Text (sticky-note) annotation
page.Annotations.AddTextAnnotation(
    new Rectangle(72, 720, 200, 740),
    contents: "Review this paragraph",
    title: "Editor",
    open: true);

// Highlight annotation
page.Annotations.AddHighlightAnnotation(
    new Rectangle(72, 680, 300, 700),
    quadPoints: null,
    color: new double[] { 1, 1, 0 });

// Free-text annotation (rendered directly on the page)
page.Annotations.AddFreeTextAnnotation(
    new Rectangle(72, 640, 350, 660),
    contents: "Inline note",
    fontName: "Helvetica",
    fontSize: 10,
    color: new double[] { 0, 0, 0 });

using var ms = new MemoryStream();
doc.Save(ms);

Link anotacije i akcije

Linkovi kombinuju klikabilni pravougaonik sa PdfAction. Biblioteka podržava
URI, GoTo, JavaScript, Named i Launch akcije.

using var doc = Document.Open(pdfBytes);
var page = doc.Pages[1];

// URI link
var uriAction = PdfAction.CreateUri("https://aspose.com");
page.Annotations.AddLinkAnnotation(
    new Rectangle(50, 700, 200, 720), uriAction);

// GoTo link (jump to page 3)
page.Annotations.AddLinkAnnotation(
    new Rectangle(50, 660, 200, 680),
    destinationPage: 3,
    destRect: new Rectangle(0, 0, 612, 792));

// JavaScript link
var jsAction = PdfAction.CreateJavaScript("app.alert('Hello');");
page.Annotations.AddLinkAnnotation(
    new Rectangle(50, 620, 200, 640), jsAction);

doc.Save("links.pdf");

Da biste pročitali vezu nazad nakon otvaranja sačuvanog PDF‑a, kastujte anotaciju u LinkAnnotation i pregledajte njeno Uri svojstvo ili rešite rečnik akcije putem PdfAction.Create.


Označavanje i anotacije oblika

Markup anotacije (isticanje, podvlačenje, precrtavanje) označavaju postojeći tekst. Shape anotacije (kvadrat, krug, linija, mastilo) crtaju geometriju na stranici.

var page = doc.Pages[1];

// Underline
page.Annotations.AddUnderlineAnnotation(
    new Rectangle(72, 600, 300, 620),
    quadPoints: null,
    color: new double[] { 1, 0, 0 });

// Square
page.Annotations.AddSquareAnnotation(
    new Rectangle(72, 540, 200, 580),
    borderColor: new double[] { 0, 0, 1 },
    fillColor: null,
    lineWidth: 1.5);

// Line
page.Annotations.AddLineAnnotation(
    new Rectangle(72, 500, 300, 520),
    x1: 72, y1: 510, x2: 300, y2: 510,
    color: new double[] { 0, 0.5, 0 },
    lineWidth: 2);

// Ink (freehand)
page.Annotations.AddInkAnnotation(
    new Rectangle(72, 440, 200, 480),
    inkPaths: new[] { new double[] { 80, 450, 120, 470, 160, 450 } },
    color: new double[] { 0.5, 0, 0.5 },
    lineWidth: 1);

Анотације печата

Stamp anotacije prekrivaju sliku ili unapred definisanu ikonu na stranici.

var stamp = new StampAnnotation(doc);
// Configure stamp properties, then add to page
page.Annotations.Add(stamp);

Izravnavanje anotacija

Pozovite Flatten() na bilo koju anotaciju da biste zapalili njen vizuelni izgled u strim sadržaja stranice i uklonili ga iz interaktivne liste anotacija.

foreach (var annot in doc.Pages[1].Annotations)
{
    annot.Flatten();
}

Obrazac posetioca sa AnnotationSelector

AnnotationSelector implementira obrazac posetioca tako da možete filtrirati anotacije po tipu bez ručnog kastovanja.

var selector = new AnnotationSelector();
doc.Pages[1].Accept(selector);

// selector.Selected now contains all annotations on page 1
foreach (var annot in selector.Selected)
{
    // Process each annotation by type
}

Prosledite instancu tipizirane anotacije konstruktoru da biste filtrirali samo po tom tipu:

var linkFilter = new AnnotationSelector(new LinkAnnotation(page, Rectangle.Empty));
page.Accept(linkFilter);
// linkFilter.Selected contains only LinkAnnotation instances

Interaktivna polja obrasca

Pristupite AcroForm poljima putem Document.Form. Klasa Form izlaže operacije čitanja/pisanja na nivou polja i podržava izvoz u JSON.

using var doc = Document.Open(pdfBytes);

// Enumerate all fields
foreach (var field in doc.Form.Fields)
{
    Console.WriteLine($"{field.FullName}: {field.Value}");
}

Podklase polja uključuju TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField, ChoiceField i SignatureField.


Izvoz podataka obrasca u JSON

WidgetAnnotation pruža ExportToJson preopterećenja za serijalizaciju podataka polja u tok ili putanju datoteke. Opcioni ExportFieldsToJsonOptions parametar kontroliše formatiranje izlaza.

using var doc = Document.Open(pdfBytes);
var widget = (WidgetAnnotation)doc.Pages[1].Annotations[1];

using var jsonStream = new MemoryStream();
widget.ExportToJson(jsonStream);

Saveti i najbolje prakse

  • Uvek navedite eksplicitne Rectangle koordinate u PDF jedinicama korisničkog prostora (1/72 inča).
  • Koristite AddLinkAnnotation sa PdfAction za maksimalnu fleksibilnost — URI, GoTo, JavaScript i Named akcije su sve podržane.
  • Pozovite Flatten() pre distribucije PDF‑a ako želite da se anotacije prikazuju u ne‑interaktivnim preglednicima.
  • Pristupajte poljima obrasca putem Document.Form.Fields umesto da iterirate anotacije stranice — kolekcija obrazaca upravlja grupisanjem polja preko stranica.
  • Sačuvajte i ponovo otvorite dokument da biste proverili vernost anotacija pri kružnom prenosu, posebno za prilagođene akcije.

Česti problemi

ProblemUzrokRešenje
Anotacija nije vidljiva nakon čuvanjaPravougaonik ima nultu površinu ili je izvan granica straniceProverite da koordinate padaju unutar stranice MediaBox
LinkAnnotation.Uri vraća nullLink koristi GoTo ili JavaScript akciju, a ne URI akcijuRazrešite rečnik akcija putem PdfAction.Create i proverite ActionType
Vrednost polja obrasca je prazan stringPolje postoji, ali nema /V unosProverite da field.Value nije null pre obrade
Flatten() bacaAnotacija nema /P (strana) referencuOsigurajte da je anotacija dodata putem Page.Annotations

FAQ

Kako da dodam hipervezu na PDF stranicu?

Koristite page.Annotations.AddLinkAnnotation(rect, PdfAction.CreateUri(url)) da biste kreirali klikabilni URI link na navedenom pravougaoniku.

Mogu li da čitam vrednosti polja obrasca iz postojećeg PDF‑a?

Да. Отворите документ помоћу Document.Open, затим итерирајте Document.Form.Fields и прочитајте својство Value за сваки Field.

Koje tipove anotacija podržava biblioteka?

Biblioteka podržava tekst, slobodni tekst, link, isticanje, podvlačenje, precrtavanje, kvadrat, krug, liniju, mastilo, pečat, kursor, prilog‑datoteke, zvuk, poligon, poliliniju, vidžet, vodeni žig i 3D anotacije. Sve vrste su dostupne putem AnnotationCollection pomoćnih metoda ili direktne konstrukcije.

Kako da filtriram anotacije po tipu?

Koristite AnnotationSelector sa tipizovanom anotacijom šablona. Pozovite page.Accept(selector) i pregledajte selector.Selected za podudarajuće anotacije.

Mogu li da izravnam samo određene anotacije?

Da. Pozovite Flatten() na pojedinačne Annotation instance umesto da iterirate celu kolekciju.


Sažetak API referencije

Class / MethodDescription
AnnotationCollectionTipizovana kolekcija na svakom Page; pruža Add* pomoćne funkcije za sve vrste anotacija
AnnotationCollection.AddTextAnnotationDodaj anotaciju lepljive beleške
AnnotationCollection.AddLinkAnnotationDodaj link sa URI‑jem, odredištem stranice ili prilagođenom radnjom
AnnotationCollection.AddHighlightAnnotationDodaj anotaciju isticanja teksta
AnnotationCollection.AddInkAnnotationDodaj anotaciju slobodnog crteža
AnnotationCollection.AddSquareAnnotationDodaj anotaciju pravougaonog oblika
AnnotationCollection.AddCircleAnnotationDodaj anotaciju elipsastog oblika
AnnotationCollection.AddLineAnnotationDodaj anotaciju linije
Annotation.FlattenUgradi izgled anotacije u sadržaj stranice
Annotation.AcceptProsledi na tipizovanu preopterećenost AnnotationSelector.Visit
AnnotationSelectorPosetilac koji prikuplja anotacije po tipu
LinkAnnotationPodklasa anotacije koja nosi URI ili radnju
TextAnnotationAnotacija lepljive beleške
InkAnnotationAnotacija slobodnog crteža sa putanjama poteza
StampAnnotationAnotacija preklapanja slike ili ikone
WidgetAnnotation.ExportToJsonSerijalizuj podatke polja obrasca u JSON
FormAcroForm fasada; nabraja i manipuliše poljima
FieldOsnovna klasa za polja obrasca (TextBoxField, CheckboxField, itd.)
CheckboxFieldPolje obrasca za potvrdu (checkbox)
TextBoxFieldPolje za unos teksta jedne ili više linija
ComboBoxFieldPolje za izbor iz padajuće liste
RadioButtonFieldPolje grupe radio‑dugmeta
AnnotationTypeEnumeracija vrsta anotacija
PdfAction.CreateUriFabrika za radnje URI linkova
PdfAction.CreateJavaScriptFabrika za JavaScript radnje

Види такође

 Српски