Hogyan dolgozzunk AcroForm mezőkkel TypeScript-ben

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 build

Ellenő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.

Lásd még:

 Magyar