为什么 PdfName.V 验证以前的值?
Why does PdfName.V validate the previous value?
我一直在使用 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 并在文本框中输入一个值并按回车键时,会弹出一个空白消息框。如果我关闭它,然后在文本框中输入不同的值,则会弹出一个消息框,其中包含我第一次输入该框的值。相反,我希望输入到文本框中的值将是弹出消息框中显示的值。我错过了什么吗?
我找到答案了!由于这是一个验证事件,因此必须使用 event.value
而不是字段值来检索当前值。
因此问题中更新的代码行:
setAdditionalAction(PdfName.V, PdfAction.createJavaScript("app.alert(event.value);"));
我一直在使用 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 并在文本框中输入一个值并按回车键时,会弹出一个空白消息框。如果我关闭它,然后在文本框中输入不同的值,则会弹出一个消息框,其中包含我第一次输入该框的值。相反,我希望输入到文本框中的值将是弹出消息框中显示的值。我错过了什么吗?
我找到答案了!由于这是一个验证事件,因此必须使用 event.value
而不是字段值来检索当前值。
因此问题中更新的代码行:
setAdditionalAction(PdfName.V, PdfAction.createJavaScript("app.alert(event.value);"));