Hogyan dolgozzunk AcroForm mezőkkel TypeScript-ben
Ez az útmutató bemutatja, hogyan adjunk hozzá és lapítsunk le AcroForm mezőket a Aspose.PDF FOSS használatával a TypeScript számára. A Document.Form minden mezőtípushoz—szöveg, jelölőnégyzet, rádiócsoport, kombinált lista, lista doboz és nyomógomb—egyetlen Add* metódust biztosít, amelyek típusos mezőkezelőt adnak vissza. Node.js 22 vagy újabb verzió szükséges.
Lépésről-lépésre útmutató
1. lépés: A csomag telepítése
git clone https://github.com/aspose-pdf-foss/Aspose.PDF-FOSS-for-TypeScript.git
cd Aspose.PDF-FOSS-for-TypeScript
npm install
npm run buildEllenőrizze a telepítést a Document osztály importálásával egy új TypeScript fájlban — ez a sor hiba nélkül lefordul a csomag telepítése után:
import { Document } from '@asposefoss/pdf';2. lépés: A szükséges osztályok importálása
Importálja a(z) Document fájlt a megnyitáshoz, és érje el a(z) doc.Form pontot, amely az alább használt minden mezőmetódus kiindulópontja:
import { Document } from '@asposefoss/pdf';Lépés 3: Szövegmező és jelölőnégyzet hozzáadása
Form.AddTextField(init) és a(z) Form.AddCheckbox(init) egyaránt page számot, egy rect-t, egy egyedi name-t és stílusbeállításokat vesznek fel:
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],
});Lépés 4: Rádiócsoport, kombinált lista és listamező hozzáadása
Form.AddRadioGroup(init) egyetlen name-t kap, amely minden opcióban közös a(z) options tömbjében, mindegyiknek saját rect és export értéke van. A(z) Form.AddComboBox(init) és a(z) Form.AddListBox(init) egy options tömböt kap { export, display } párokból; a listamezők továbbiakban multiSelect-t támogatnak:
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' },
],
});Lépés 5: Nyomógomb hozzáadása
Form.AddPushButton(init) egy caption-t és egy action-t kap, amely leírja, mit csinál a gomb kattintáskor — például az űrlap adatait egy URL-hez küldi:
form.AddPushButton({
page: pageNum, rect: [200, 320, 320, 388], name: 'Submit',
caption: 'Submit',
action: { type: 'submit', url: 'https://example.com/submit', format: 'fdf' },
});Lépés 6: Űrlapmezők laposítása
Minden mezőkezelő, amelyet egy Add* hívás ad vissza, rendelkezik egy Flatten() metódussal, amely a jelenlegi értékét beágyazza az oldal tartalmi adatfolyamába, és eltávolítja a interaktív AcroForm-ból:
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');Általános problémák és megoldások
Egy mező nem jelenik meg a szándékolt oldalon. page a mezőben init az objektum az oldal saját oldalszáma, nem egy tömbindex — ellenőrizze ezzel szemben page.Number a célnél Page.
A rádiógomb opciók nem kölcsönösen kizáróak. Minden opció a Form.AddRadioGroup()’s options tömbnek meg kell osztania a csoport egyetlen name — a mezőnevek keverése önálló jelölőnégyzeteket hoz létre a rádiócsoport helyett.
A laposított mező értéke nem jelenik meg a mentett fájlban. Mentse a dokumentumot (doc.WriteTo() / doc.Save()) a hívás után Flatten() — a változás csak a memóriában létezik, amíg a fájl újra kiírásra nem kerül.
A kombinált listamező az exportértéket jeleníti meg a megjelenített szöveg helyett. A megjelenés rajzolja display; a mező tárolt értéke (/V) van export — erősítse meg, hogy mindkettő be van állítva minden lehetőséghez, ne csak egyhez.
Gyakran Ismételt Kérdések
Olvashatom egy mező aktuális értékét, miután az űrlap ki lett töltve?
Igen — olvasd a mezőkezelő Value tulajdonságát, vagy iteráld a doc.Form.Fields elemet, hogy megvizsgáld a dokumentum minden mezőjét.
Mi a különbség a Flatten() között egy mezőn és egy annotáción?
Mind beégeti az interaktív tartalmat a statikus oldal tartalmába, és eltávolítja azt a megfelelő gyűjteményből — egy mezőben lévő Flatten() eltávolítja azt a /AcroForm, míg egy annotációban lévő Flatten() (részletezve a Annotációk útmutató) eltávolítja azt az oldalról /Annots.
Lehet egy listamezőben több elemet kiválasztani?
Igen — állítsd be a multiSelect: true értéket a Form.AddListBox() init objektumán, és adj át egy tömböt a valuenek.
A nyomógombnak szüksége van egy műveletre ahhoz, hogy használható legyen?
Egy action (például { type: 'submit', url, format }) teszi lehetővé, hogy a gomb kattintáskor valamit végezzen; nélküle a gomb megjelenik, de nincs hozzá rendelve viselkedés.