Annotationer och former

Annotationer och former

Annotationer och former

Aspose.PDF FOSS for .NET gives you full read/write access to PDF annotations och interaktiva AcroForm-fält. primär inkomstpunkt för anmälningar är Page.Annotations (en av AnnotationCollectionNär formfält är tillgängliga genom Document.Form.Båda delsystemet fungerar helt i minnet och kräver inte Licensnyckel är.


Lägg till anmälningar

AnnotationCollection Exponerar typiserade hjälpmetoder för varje standard Annotationstyp. varje metod accepterar en Rectangle Definiera anmälningen position på sidan plus typ-specifika parametrar.

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

Länk till anmälningar och åtgärder

länkar kombinerar en klickbar rektangle med en PdfAction.Biblioteket stöder URI, GoTo, JavaScript, Namngivna och Lansering åtgärder.

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

För att läsa en länk tillbaka efter öppnande av ett sparat PDF, häll anteckningen till LinkAnnotation och inspektera dess Uri ägande eller lösa åtgärden Ordbok via PdfAction.Create.


Markera och forma anmärkningar

Markera annotationer (högljus, underlinje, strikeout) markera befintlig text. Form anotationer(kvadrum, cirkel, linje och ink) dra geometri på sidan.

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 Annotation

Stampannotationer överlämnar en bild eller fördefinierad ikon på en sida.

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

Flatta anmälningar

Call Flatten() på varje anteckning för att bränna sitt visuella utseende i sidan innehåll strömmar och tar bort det från den interaktiva anteckningsförteckningen.

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

Besökare mönster med AnnotationSelector

AnnotationSelector implementera besökarmönster så att du kan filtrera Annotationer per typ utan manuell kastning.

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
}

Ge en typad anteckningsinstans till konstruktören för att filtrera den typen endast:

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

Interaktivt form fält

AcroForm-fält genom att komma åt Document.Form. den Form Klasser exponeringar fältnivå läs/skrivverksamhet och stöder JSON export.

using var doc = Document.Open(pdfBytes);

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

Fältunderlag inkluderar TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField, ChoiceField,och SignatureField.


Exportera formdata till JSON

WidgetAnnotation Försöker ExportToJson överlämningar för serialisering av fältdata till en ström eller filvägen. ett valfritt ExportFieldsToJsonOptions Parameter Kontrollera utgångsformat.

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

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

Tips och bästa praxis

  • Alltid uttryckligt angivande Rectangle koordinater i PDF-användarutrymme (1/72 tum).
  • Användning AddLinkAnnotation med A PdfAction För maximal flexibilitet – URI, GoTo, JavaScript och Namngivna åtgärder stöds alla.
  • Call Flatten() innan du distribuerar en PDF om du vill att anteckningar ska visas i icke-interaktiva tittare.
  • Tillgångsfält genom Document.Form.Fields Istället för iterativa sidanotationer – formulärsamlingen hanterar cross-page fältgruppning.
  • Spara och öppna dokumentet för att verifiera anmälningens trovärdighet, särskilt för anpassade åtgärder.

Vanliga frågor

IssueCauseFixar
Anmälan inte synlig efter sparaRectangle har nollområde eller är utanför sidgränserna.Kontrollera att koordinaterna faller inom sidan MediaBox
LinkAnnotation.Uri returnerar nollLink använder en GoTo eller JavaScript-åtgärd, inte en URI- åtgärderLös ordboken via PdfAction.Create och check ActionType
Form fältvärde är tomt strängFält finns men har inte /V InträdeCheck field.Value inte noll före bearbetning
Flatten() kastarAnmälan har inte /P (sida) Referens tillSe till att anmälningen har läggts till genom Page.Annotations

FAQ

Hur lägger jag till en hyperlänk till ett PDF-sida?

Användning page.Annotations.AddLinkAnnotation(rect, PdfAction.CreateUri(url)) till skapa en klickbar URI-länk på den angivna rektangeln.

Kan jag läsa formfältvärden från en befintlig PDF?

Ja, öppna dokumentet med Document.Open,Och sedan iterate Document.Form.Fields och läs den Value Fastighet på varje Field.

Vilka anmälningstyper stöder biblioteket?

Biblioteket stöder text, gratistext, länk, highlight, underline, strikeout, kvadrat, cirkel, linje, ink, stempel, caret, fil-attackning, ljud, polygon, polylin, widget, vattenmärke och 3D-annotationer. alla typer finns tillgängliga via AnnotationCollection hjälpmedel eller direktbyggnad.

Hur filtrerar jag anteckningar efter typ?

Användning AnnotationSelector med en typad mall anteckning. ringa page.Accept(selector) och inspekterar selector.Selected för matchande anmälningar.

Kan jag bara lägga till specifika anteckningar?

Ja, ringa till Flatten() på enskilda Annotation inställningar snarare än iteration hela samlingen .


API Referens sammanfattning

Klass / MetodBeskrivning
AnnotationCollectionTypiska samlingar på varje Page;• Försöker Add* Hjälpmedel för alla anmälningstyper
AnnotationCollection.AddTextAnnotationLägg till en sticky-note anteckning
AnnotationCollection.AddLinkAnnotationLägg till en länk med URI, sida destination eller anpassad åtgärd
AnnotationCollection.AddHighlightAnnotationLägg till en text-högljus anteckning
AnnotationCollection.AddInkAnnotationLägg till en frilansad anteckning
AnnotationCollection.AddSquareAnnotationLägg till en rektangulär form anmälning
AnnotationCollection.AddCircleAnnotationLägg till en ellipse-formad anmälning
AnnotationCollection.AddLineAnnotationLägg till en linje anmälning
Annotation.FlattenBränna anteckningsutseende i sidinnehåll
Annotation.AcceptSkicka till typed AnnotationSelector.Visit överbelastning
AnnotationSelectorBesökare som samlar in anteckningar per typ
LinkAnnotationAnnotation subklass med en URI eller åtgärd
TextAnnotationSticky-note anmälning
InkAnnotationFrisjakt-skrivning annotation med stroke vägar
StampAnnotationBild eller ikon överlämnande anmälning
WidgetAnnotation.ExportToJsonSerierar form-fältdata till JSON
FormAcroForm facad; listar och manipulerar fält
FieldGrundläggande klass för form fält (TextBoxField, CheckboxField,och så vidare)
CheckboxFieldCheckbox form fält
TextBoxFieldEnkel/multi-linje text input fält
ComboBoxFieldDrop-down valfält
RadioButtonFieldRadio-knappton gruppfält
AnnotationTypeFörteckning över anmälningstyper
PdfAction.CreateUriFabrik för URI länk åtgärder
PdfAction.CreateJavaScriptFabrik för JavaScript-åtgärder

Se även

 Svenska