2016-09-30 95 views
0

我一直在使用iText 7來創建pdf,它工作得很好,但我遇到了表單驗證問題。下面的代碼生成一個PDF文件用一個簡單的文本輸入框:爲什麼PdfName.V驗證以前的值?

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,輸入一個值到文本框中並回車,一個空白消息框彈出打開。如果我關閉它,然後在文本框中輸入一個不同的值,則會彈出一個消息框,其中包含我剛輸入框中的值。我希望相反,輸入到文本框中的值將是彈出消息框中顯示的值。我錯過了什麼嗎?

回答

0

我想出了答案!由於這是驗證事件,因此必須使用event.value檢索當前值,而不是字段值。

所以的代碼問題的更新行:

setAdditionalAction(PdfName.V, PdfAction.createJavaScript("app.alert(event.value);"));