TypeScript'te AcroForm Alanlarıyla Nasıl Çalışılır
Bu kılavuz, TypeScript için Aspose.PDF FOSS ile AcroForm alanlarını ekleme ve düzleştirme yöntemlerini gösterir. Document.Form, alan türü başına bir Add* yöntemi sunar — metin, onay kutusu, radyo grubu, birleşik kutu, liste kutusu ve itme düğmesi — her biri tiplenmiş bir alan tutamacı döndürür. Node.js 22 veya daha yeni bir sürüm gerektirir.
Adım Adım Kılavuz
Adım 1: Paketi Kurun
git clone https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-TypeScript.git
cd Aspose.PDF-FOSS-for-TypeScript
npm install
npm run buildKurulumu, yeni bir TypeScript dosyasında Document sınıfını içe aktararak doğrulayın — paket kurulduktan sonra bu satır hatasız bir şekilde çözümlenmelidir:
import { Document } from '@asposefoss/pdf';Adım 2: Gerekli Sınıfları İçe Aktarın
Dosyayı açmak ve aşağıda kullanılan her alan metodunun giriş noktası olan doc.Form‘e ulaşmak için Document içe aktarın:
import { Document } from '@asposefoss/pdf';Adım 3: Metin Alanı ve Onay Kutusu Ekle
Form.AddTextField(init) ve Form.AddCheckbox(init) her ikisi de bir page sayı, bir rect, benzersiz bir name ve stil seçenekleri alır:
const doc = Document.OpenFile('form-template.pdf');
const form = doc.Form;
const pageNum = doc.Pages[0].Number;
form.AddTextField({
page: pageNum, rect: [200, 670, 450, 690], name: 'FullName', value: 'Alice Sample',
borderColor: [0.1, 0.15, 0.4], font: 'Helvetica', fontSize: 12,
});
form.AddCheckbox({
page: pageNum, rect: [200, 630, 218, 648], name: 'Subscribe',
checked: true, borderColor: [0.1, 0.15, 0.4],
});Adım 4: Radyo Grubu, Kombinasyon Kutusu ve Liste Kutusu Ekle
Form.AddRadioGroup(init), options dizisindeki her seçenek tarafından paylaşılan tek bir name alır, her biri kendi rect ve export değerine sahiptir. Form.AddComboBox(init) ve Form.AddListBox(init), { export, display } çiftlerinden oluşan bir options dizisi alır; liste kutuları ayrıca multiSelect destekler:
form.AddRadioGroup({
name: 'Plan', selected: 'Pro',
options: [
{ page: pageNum, rect: [200, 590, 218, 608], export: 'Basic' },
{ page: pageNum, rect: [290, 590, 308, 608], export: 'Pro' },
],
});
form.AddComboBox({
page: pageNum, rect: [200, 550, 350, 570], name: 'Country', value: 'US',
options: [
{ export: 'US', display: 'United States' },
{ export: 'UK', display: 'United Kingdom' },
],
});
form.AddListBox({
page: pageNum, rect: [200, 410, 350, 510], name: 'Interests',
multiSelect: true, value: ['pdf'],
options: [
{ export: 'pdf', display: 'PDF Engineering' },
{ export: 'crypto', display: 'Cryptography' },
],
});Adım 5: Bir Düğme Ekle
Form.AddPushButton(init), tıklandığında düğmenin ne yaptığını açıklayan bir caption ve bir action alır — örneğin, formun verilerini bir URL’ye gönderme:
form.AddPushButton({
page: pageNum, rect: [200, 320, 320, 388], name: 'Submit',
caption: 'Submit',
action: { type: 'submit', url: 'https://example.com/submit', format: 'fdf' },
});Adım 6: Form Alanlarını Düzleştir
Bir Add* çağrısı tarafından döndürülen her alan tutamacı, mevcut değerini sayfanın içerik akışına işleyen ve interaktif AcroForm’den kaldıran bir Flatten() yöntemine sahiptir:
const tb = form.AddTextField({
page: pageNum, rect: [210, 660, 460, 680], name: 'FlattenName', value: 'Alice Sample',
});
tb.Flatten(); // -> number; bakes the value, unwires the field from /AcroForm
doc.WriteTo('flattened.pdf');Yaygın Sorunlar ve Çözümler
Bir alan, hedeflenen sayfada görünmüyor. page alanın içinde init nesne, o sayfanın kendi sayfa numarasıdır, dizi indeksi değildir — bunu karşılaştırın page.Number hedefte Page.
Radyo düğmesi seçenekleri birbirini dışlamaz. Her seçenek Form.AddRadioGroup()‘nin options dizi, grubun tek name — alan adlarını karıştırmak, radyo grubu yerine bağımsız onay kutuları oluşturur.
Düzleştirilmiş bir alanın değeri kaydedilen dosyada görünmez. Belgeyi kaydedin (doc.WriteTo() / doc.Save()) çağırdıktan sonra Flatten() — değişiklik, dosya geri yazılana kadar yalnızca bellekte bulunur.
Bir combo kutusu, görüntüleme metni yerine dışa aktarma değerini gösterir. Görünüm çizer display; alanın depolanan değeri (/V) dır export — her seçenek için ikisinin de ayarlandığını, sadece birinin değil, onaylayın.
Sıkça Sorulan Sorular
Form doldurulduktan sonra bir alanın mevcut değerini okuyabilir miyim?
Evet — alan tutamacının Value özelliğini okuyun veya doc.Form.Fields üzerinde yineleme yaparak belge üzerindeki her alanı inceleyin.
Bir alandaki Flatten() ile bir açıklamadaki Flatten() arasındaki fark nedir?
Hem etkileşimli içeriği statik sayfa içeriğine yerleştirir hem de ilgili koleksiyonundan kaldırır — bir alanın Flatten() kaldırır /AcroForm, bir açıklamanın Flatten() (kapsanan Açıklamalar kılavuz) sayfanın /Annots.
Bir liste kutusu birden çok seçim yapmaya izin verebilir mi?
Evet — Form.AddListBox()‘in init nesnesine multiSelect: true ayarlayın ve value‘e bir dizi geçirin.
Bir itme düğmesinin işe yarar olması için bir eyleme ihtiyacı var mı?
Bir action (örneğin { type: 'submit', url, format }), düğmeye tıklandığında bir şey yapmasını sağlayandır; bir tanesi olmasa, düğme görüntülenir ancak bağlanmış bir davranışı olmaz.