Annotlar ve Formlar

Annotlar ve Formlar

Aspose.PDF FOSS for .NET gives you full read/write access to PDF annotations ve etkileşimli AcroForm alanları. notlar için ana giriş noktası Page.Annotations ( 1 ) AnnotationCollection) form alanları erişimi yapılırken, yoluyla Document.Form.Her iki alt sistem de tamamen hafıza içinde çalışır ve hiçbir şey gerektirmez. Lisans anahtarı.


Notları eklemek

AnnotationCollection Her standart için tipik yardımcı yöntemleri gösterir Her yöntem bir şekilde kabul edilir.A Rectangle Anotasyonun Tanımlanması sayfa üzerinde konum artı tip-sözlü parametreler.

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 Anotasyonlar ve Eylemler

Bir tıklayabilir düz açı ile bir bağlantı PdfAction.Kütüphane destekliyor URI, GoTo, JavaScript, Named ve Launch eylemleri.

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

Bir kaydedilmiş PDF’yi açtıktan sonra bir bağlantı okumak için, notu aşağıdaki sayfaya atın: LinkAnnotation ve onun kontrolü Uri mülkiyet veya eylem çözmek Sözlük yoluyla PdfAction.Create.


Etiket ve Şekil Anotasyonları

Etiketleme anotasyonları (yüksek ışık, alt çizgi, strikeout) mevcut metni işaretler. şekil anotasiyonları(kırmızı, yuvarlak, çizgiler, mürekkep) sayfada geometri çizim.

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

Annotasyonlar Stamp

Bir sayfada bir görüntü veya önceden tanımlanmış simgeyi aşan notlar.

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

Yumuşak Anotasyonlar

Call Flatten() Herhangi bir notta, görünümünü sayfaya yakmak için içerik akışı ve interaktif not listesinden kaldırın.

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

AnnotationSelector ile ziyaretçi örneği

AnnotationSelector ziyaretçi şablonu uygulayın, böylece filtre edebilirsiniz Tipi ile anotasyonlar manuel casting olmadan.

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
}

Bu tür için filtre etmek için bir tipli notlama örneği yapımcının yalnızca:

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

Interaktif form alanları

AcroForm alanları aracılığıyla erişim Document.Form.• The Form Sınıflar Fuarı alan düzeyinde okuma/yazma operasyonları ve JSON ihracat desteği.

using var doc = Document.Open(pdfBytes);

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

Alt sınıflar dahil TextBoxField, CheckboxField, RadioButtonField, ComboBoxField, ListBoxField, ChoiceField,ve SignatureField.


JSON’a Form Verileri İhracat

WidgetAnnotation sağlar ExportToJson alan verilerini serialize etmek için aşırı yükleme bir akış veya dosya yolu. seçmeli bir ExportFieldsToJsonOptions Parametreler Üretimi kontrol etmek için formatta.

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

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

İpuçları ve En İyi Uygulamalar

  • Her zaman açıkça belirtin Rectangle PDF kullanıcı alanı birimlerinde koordinatlar (1/72 inç).
  • Kullanım AddLinkAnnotation A ile PdfAction Maksimum esneklik için – URI, GoTo, JavaScript ve Adlandırılmış eylemler tüm desteklenir.
  • Call Flatten() PDF’yi dağıtmadan önce, notların etkileşimli olmayan izleyicilerde görünmesini istiyorsanız.
  • Access form alanları üzerinden Document.Form.Fields iterasyon sayfası notları yerine - form toplama çapraz sayfa alan gruplama ile ilgilenir.
  • Notlar için kaydetme ve tekrar açma, özellikle özelleştirilmiş eylemler için notlar yuvarlak-trip sadakat doğrulamak için.

ortak sorunlar

IssueCauseFix
kaydetme sonrası görünmez notlarRectangle 0 alanı veya sayfa sınırları dışındaKoordinatların sayfanın içine düştüğünü kontrol edin. MediaBox
LinkAnnotation.Uri geri dönüş 0Link bir GoTo veya JavaScript eylemi kullanır, URI eykem değilAksiyon Sözlüğü’nü Çözünürlüğe Göre PdfAction.Create ve kontrol ActionType
Form alanı değeri boş çubukalan var ama yok /V girişCheck field.Value İşleme öncesi sıfır değildir.
Flatten() atışlarAnnotasyon yok /P (Payfa) Referans içinNotun eklendiği için, Page.Annotations

FAQ

Bir PDF sayfasına nasıl bir hiperlink eklemek gerekir?

Kullanım page.Annotations.AddLinkAnnotation(rect, PdfAction.CreateUri(url)) için Belirlenen düz açıdan bir tıklayabilir URI bağlantısı oluşturun.

Mevcut bir PDF’den form alan değerlerini okuyabilir miyim?

Evet. belgeyi açın Document.Open,Sonra iterate Document.Form.Fields ve okuyun Value Her birinde mülk Field.

Kütüphane hangi not türlerini destekliyor?

Kütüphane metin, ücretsiz metni, bağlantı, vurgulama, underline, strikeout destekler., çeyrek, döngü, çizgi, mürekkep, şemsiye, karet, dosya bağlılığı, ses, poligon, Polilin, widget, su işareti ve 3D notları. tüm türler aracılığıyla mevcuttur AnnotationCollection Yardımcı yöntemler veya doğrudan inşaat.

Tipi olarak notları nasıl filtrelirim?

Kullanım AnnotationSelector Şablonu bir şekilde yazdırın. çağrı page.Accept(selector) ve denetimi selector.Selected Anotları eşleştirmek için.

Sadece özel notlar verebilir miyim?

Evet Çağrı Flatten() bireysel olarak Annotation İtterasyon yerine örnekler Tüm koleksiyonu.


API Referans Özetleri

Sınıf / YöntemDescription
AnnotationCollectionHer birinde tipik koleksiyon Page;• sağlar Add* Tüm Anotasyon Türleri için Yardımcılar
AnnotationCollection.AddTextAnnotationBir sticky-note notu ekleyin
AnnotationCollection.AddLinkAnnotationURI, sayfa hedefi veya özelleştirilmiş eylem ile bir bağlantı ekleyin
AnnotationCollection.AddHighlightAnnotationTekstil yükseklik notu ekleyin
AnnotationCollection.AddInkAnnotationBir özgürlük anotasyonu ekleyin
AnnotationCollection.AddSquareAnnotationBir düzgün anota ekleme
AnnotationCollection.AddCircleAnnotationEllipse şeklinde bir not ekleyin
AnnotationCollection.AddLineAnnotationBir çizgi anota ekleme
Annotation.FlattenBurn Anotasyon Sayfa İçeriğine Gösterimi
Annotation.AcceptTifreye gönderiliyor AnnotationSelector.Visit Yüzdürme
AnnotationSelectorTipi göre notları toplayan ziyaretçi
LinkAnnotationURI veya eylem taşıyan not alt sınıfı
TextAnnotationSticky-Note Anlatımı
InkAnnotation-Sıcaklıklar ile anotajlı çizimler
StampAnnotationFotoğraf veya ikonu overlay anotajı
WidgetAnnotation.ExportToJsonForm alanı verilerini JSON’a serialize edin
FormAcroForm fasad; alanları listeler ve manipüle eder
FieldBasit sınıf form alanları için (TextBoxField, CheckboxField, vb )
CheckboxFieldCheck-box form alanı
TextBoxFieldTek / Çok Çizgi Yazı Giriş Alanı
ComboBoxFieldDrop-down seçenek alanı
RadioButtonFieldRadio-Button Grup alanı
AnnotationTypeAnotasyon türlerinin listesi
PdfAction.CreateUriURI bağlantı eylemleri için fabrika
PdfAction.CreateJavaScriptJavaScript eylemleri için fabrika

See Also

 Türkçe