0

私は iText 7 を使用して PDF を作成してきましたが、非常にうまく機能しますが、フォームの検証で問題が発生しました。次のコードは、単純なテキスト入力ボックスを含む pdf ファイルを生成します。

import java.io.FileNotFoundException;

import com.itextpdf.forms.PdfAcroForm;
import com.itextpdf.forms.fields.PdfFormField;
import com.itextpdf.kernel.color.DeviceGray;
import com.itextpdf.kernel.geom.PageSize;
import com.itextpdf.kernel.geom.Rectangle;
import com.itextpdf.kernel.pdf.PdfDocument;
import com.itextpdf.kernel.pdf.PdfName;
import com.itextpdf.kernel.pdf.PdfWriter;
import com.itextpdf.kernel.pdf.action.PdfAction;
import com.itextpdf.layout.Document;

public final class PdfValidationTest {

    /**
     * @param args
     * @throws FileNotFoundException 
     */
    public static void main(String[] args) throws FileNotFoundException {
        PdfDocument pdfDoc = new PdfDocument(new PdfWriter("ValidationTest.pdf"));
        Document doc = new Document(pdfDoc, PageSize.A4);

        PdfAcroForm form = PdfAcroForm.getAcroForm(pdfDoc, true);
        PdfFormField name = PdfFormField.createText(pdfDoc, new Rectangle(130, 780, 126, 26)).
                    setFieldName("name").
                    setBorderColor(new DeviceGray(0.2f)).
                    setAdditionalAction(PdfName.V, PdfAction.createJavaScript("app.alert(getField('name').value);"));
        form.addField(name);
        // close the document
        doc.close();// TODO Auto-generated method stub

    }

}

ここで、生成された pdf を開いてテキスト ボックスに値を入力し、Enter キーを押すと、空白のメッセージ ボックスが開きます。それを閉じて、テキスト ボックスに別の値を入力すると、メッセージ ボックスが開き、最初にボックスに入力した値が表示されます。代わりに、テキスト ボックスに入力された値がポップアップ メッセージ ボックスに表示される値になることを期待します。何か不足していますか?

4

1 に答える 1

0

答えがわかった!これは検証イベントであるためevent.value、フィールド値ではなく、現在の値を取得する必要があります。

したがって、質問からの更新されたコード行:

setAdditionalAction(PdfName.V, PdfAction.createJavaScript("app.alert(event.value);"));
于 2016-09-30T03:12:56.783 に答える