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 instancesInteraktif 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
RectanglePDF kullanıcı alanı birimlerinde koordinatlar (1/72 inç). - Kullanım
AddLinkAnnotationA ilePdfActionMaksimum 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.Fieldsiterasyon 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
| Issue | Cause | Fix |
|---|---|---|
| kaydetme sonrası görünmez notlar | Rectangle 0 alanı veya sayfa sınırları dışında | Koordinatların sayfanın içine düştüğünü kontrol edin. MediaBox |
LinkAnnotation.Uri geri dönüş 0 | Link bir GoTo veya JavaScript eylemi kullanır, URI eykem değil | Aksiyon Sözlüğü’nü Çözünürlüğe Göre PdfAction.Create ve kontrol ActionType |
| Form alanı değeri boş çubuk | alan var ama yok /V giriş | Check field.Value İşleme öncesi sıfır değildir. |
Flatten() atışlar | Annotasyon yok /P (Payfa) Referans için | Notun 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öntem | Description |
|---|---|
AnnotationCollection | Her birinde tipik koleksiyon Page;• sağlar Add* Tüm Anotasyon Türleri için Yardımcılar |
AnnotationCollection.AddTextAnnotation | Bir sticky-note notu ekleyin |
AnnotationCollection.AddLinkAnnotation | URI, sayfa hedefi veya özelleştirilmiş eylem ile bir bağlantı ekleyin |
AnnotationCollection.AddHighlightAnnotation | Tekstil yükseklik notu ekleyin |
AnnotationCollection.AddInkAnnotation | Bir özgürlük anotasyonu ekleyin |
AnnotationCollection.AddSquareAnnotation | Bir düzgün anota ekleme |
AnnotationCollection.AddCircleAnnotation | Ellipse şeklinde bir not ekleyin |
AnnotationCollection.AddLineAnnotation | Bir çizgi anota ekleme |
Annotation.Flatten | Burn Anotasyon Sayfa İçeriğine Gösterimi |
Annotation.Accept | Tifreye gönderiliyor AnnotationSelector.Visit Yüzdürme |
AnnotationSelector | Tipi göre notları toplayan ziyaretçi |
LinkAnnotation | URI veya eylem taşıyan not alt sınıfı |
TextAnnotation | Sticky-Note Anlatımı |
InkAnnotation | -Sıcaklıklar ile anotajlı çizimler |
StampAnnotation | Fotoğraf veya ikonu overlay anotajı |
WidgetAnnotation.ExportToJson | Form alanı verilerini JSON’a serialize edin |
Form | AcroForm fasad; alanları listeler ve manipüle eder |
Field | Basit sınıf form alanları için (TextBoxField, CheckboxField, vb ) |
CheckboxField | Check-box form alanı |
TextBoxField | Tek / Çok Çizgi Yazı Giriş Alanı |
ComboBoxField | Drop-down seçenek alanı |
RadioButtonField | Radio-Button Grup alanı |
AnnotationType | Anotasyon türlerinin listesi |
PdfAction.CreateUri | URI bağlantı eylemleri için fabrika |
PdfAction.CreateJavaScript | JavaScript eylemleri için fabrika |