Annotaatiot ja lomakkeet

Annotaatiot ja lomakkeet

Annotaatiot ja lomakkeet

Aspose.PDF FOSS for .NET antaa sinulle täyden luku-/kirjoitusoikeuden PDF-merkintöihin ja interaktiivisiin AcroForm-kenttiin. Merkintöjen ensisijainen sisäänkäyntipiste on Page.Annotations (AnnotationCollection), kun taas lomakekenttiä käytetään Document.Form kautta. Molemmat alijärjestelmät toimivat täysin muistissa eikä niihin tarvita lisenssiavainta.


Lisää merkintöjä

AnnotationCollection tarjoaa tyypitetyt apumetodit jokaiselle standardille merkintätyypille. Jokainen metodi hyväksyy Rectangle, joka määrittelee merkinnän sijainnin sivulla, sekä tyyppikohtaiset parametrit.

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);

Linkkimerkinnät ja toiminnot

Linkit yhdistävät klikattavan suorakulmion PdfAction:n kanssa. Kirjasto tukee URI-, GoTo-, JavaScript-, Named- ja Launch-toimintoja.

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");

Jotta voit lukea linkin takaisin PDF:n avaamisen jälkeen, muunna merkintä LinkAnnotation-tyyppiseksi ja tarkastele sen Uri-ominaisuutta tai ratkaise toiminto‑sanakirja PdfAction.Create:n avulla.


Merkintä- ja muotoannotaatiot

Merkintäannotaatio (korostus, alleviivaus, yliviivaus) merkitsee olemassa olevaa tekstiä. Muotoannotaatio (neliö, ympyrä, viiva, muste) piirtää geometriaa sivulle.

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);

Leimamerkinnät

Leimamerkinnät asettavat kuvan tai ennalta määritellyn ikonin sivulle.

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

Annotaatiot litistetään

Kutsu Flatten() mille tahansa merkinnälle polttaaksesi sen visuaalisen ulkoasun sivun sisältövirtaan ja poistaaksesi sen interaktiivisesta merkintälistasta.

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

Vierailijamalli AnnotationSelectorin kanssa

AnnotationSelector toteuttaa vierailijamallin, jotta voit suodattaa merkinnät tyypin mukaan ilman manuaalista tyyppimuunnosta.

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
}

Anna tyypitetty annotaatiotapaus konstruktorille suodattaaksesi vain kyseistä tyyppiä:

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

Interaktiiviset lomakekentät

Pääse AcroForm-kenttiin Document.Form kautta. Form-luokka tarjoaa kenttätason luku‑/kirjoitustoiminnot ja tukee JSON‑vientiä.

using var doc = Document.Open(pdfBytes);

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

Kentän alaluokat sisältävät TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField, ChoiceField ja SignatureField.


Lomaketietojen vienti JSON-muotoon

WidgetAnnotation tarjoaa ExportToJson ylikuormia kenttätietojen sarjoittamiseen virtaan tai tiedostopolkuun. Valinnainen ExportFieldsToJsonOptions parametri ohjaa tulosteen muotoilua.

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

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

Vinkkejä ja parhaita käytäntöjä

  • Määritä aina eksplisiittiset Rectangle-koordinaatit PDF:n käyttäjäavaruusyksiköissä (1/72 tuumaa).
  • Käytä AddLinkAnnotation yhdessä PdfAction-elementin kanssa maksimaalisen joustavuuden saavuttamiseksi — URI-, GoTo-, JavaScript- ja nimettyjä toimintoja tuetaan kaikki.
  • Kutsu Flatten() ennen PDF:n jakamista, jos haluat merkintöjen näkyvän ei‑interaktiivisissa katseluohjelmissa.
  • Käytä lomakekenttiä Document.Form.Fields:n kautta sen sijaan, että iteroit sivun merkintöjä — lomakekokoelma hoitaa monisivuisen kenttäryhmittelyn.
  • Tallenna ja avaa asiakirja uudelleen tarkistaaksesi merkintöjen läpikulun tarkkuuden, erityisesti mukautetuille toiminnoille.

Yleisiä ongelmia

OngelmaSyyKorjaus
Merkintä ei näy tallennuksen jälkeenSuorakulmio on nollapinta-ala tai se on sivun rajojen ulkopuolellaVarmista, että koordinaatit ovat sivun sisällä MediaBox
LinkAnnotation.Uri palauttaa nullLinkki käyttää GoTo- tai JavaScript-toimintoa, ei URI-toimintoaRatkaise toiminto-dictionary PdfAction.Create avulla ja tarkista ActionType
Lomakekentän arvo on tyhjä merkkijonoKenttä on olemassa, mutta sillä ei ole /V-merkintääTarkista, että field.Value ei ole null ennen käsittelyä
Flatten() heittääMerkinnällä ei ole /P (sivu) -viitettäVarmista, että merkintä on lisätty Page.Annotations:n kautta

UKK

Kuinka lisään hyperlinkin PDF-sivulle?

Käytä page.Annotations.AddLinkAnnotation(rect, PdfAction.CreateUri(url)) luodaksesi napsautettavan URI‑linkin määritetyssä suorakulmiossa.

Voinko lukea lomakekenttien arvot olemassa olevasta PDF:stä?

Kyllä. Avaa asiakirja Document.Open:lla, sitten iteroi Document.Form.Fields ja lue Value-ominaisuus jokaisessa Field:ssa.

Mitä merkintätyyppejä kirjasto tukee?

Kirjasto tukee tekstiä, vapaata tekstiä, linkkiä, korostusta, alleviivausta, yliviivausta, neliötä, ympyrää, viivaa, ink, leimaa, kohdistinta, tiedostoliitettä, ääntä, monikulmiota, moniviivaa, widget, vesileimaa ja 3D-merkintöjä. Kaikki tyypit ovat saatavilla AnnotationCollection apumetodeilla tai suoran konstruktion avulla.

Kuinka suodatan merkinnät tyypin mukaan?

Käytä AnnotationSelector tyyppisen mallipohjamerkinnän kanssa. Kutsu page.Accept(selector) ja tarkastele selector.Selected vastaavien merkintöjen varalta.

Voinko litistaa vain tietyt annotaatiot?

Kyllä. Kutsu Flatten() yksittäisissä Annotation-instansseissa sen sijaan, että iteroisit koko kokoelman.


API-viitteiden yhteenveto

Class / MethodDescription
AnnotationCollectionTyypitetty kokoelma jokaiselle Page; tarjoaa Add* apureita kaikille merkintätyypeille
AnnotationCollection.AddTextAnnotationLisää muistilappumerkintä
AnnotationCollection.AddLinkAnnotationLisää linkki, jossa on URI, sivukohde tai mukautettu toiminto
AnnotationCollection.AddHighlightAnnotationLisää tekstin korostusmerkintä
AnnotationCollection.AddInkAnnotationLisää vapaakäsinpiirto-merkintä
AnnotationCollection.AddSquareAnnotationLisää suorakulmion muotoinen merkintä
AnnotationCollection.AddCircleAnnotationLisää ellipsin muotoinen merkintä
AnnotationCollection.AddLineAnnotationLisää viivamerkintä
Annotation.FlattenPolta merkinnän ulkoasu sivun sisältöön
Annotation.AcceptVälitä tyypitettyyn AnnotationSelector.Visit ylikuormitukseen
AnnotationSelectorKävijä, joka kerää merkinnät tyypin mukaan
LinkAnnotationMerkintäaliluokka, joka kantaa URI:a tai toimintoa
TextAnnotationMuistilappumerkintä
InkAnnotationVapaakäsinpiirto-merkintä, jossa on piirtojälkiä
StampAnnotationKuva- tai ikonisijoitusmerkintä
WidgetAnnotation.ExportToJsonSarjoita lomakekentän tiedot JSON-muotoon
FormAcroForm -rajapinta; luettelee ja käsittelee kenttiä
FieldPerusluokka lomakekentille (TextBoxField, CheckboxField, jne.)
CheckboxFieldValintaruutu-lomakekenttä
TextBoxFieldYksi- tai monirivinen tekstisyötekenttä
ComboBoxFieldAlasvetovalintakenttä
RadioButtonFieldRadiopainikkeiden ryhmäkenttä
AnnotationTypeLuettelo merkintätyypeistä
PdfAction.CreateUriTehdas URI-linkkitoiminnoille
PdfAction.CreateJavaScriptTehdas JavaScript-toiminnoille

Katso myös

 Suomi