2015-10-02 43 views
0

我正在尝试将javascript验证添加到现有的Acroform字段通过iText in java。到目前为止,我已经编写了下面的代码,但没有将操作分配给表单字段。有什么我失踪?向iText的pdf中现有的acroform字段添加javascript验证

PdfReader reader = new PdfReader(uri); 
    PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest)); 
    PdfWriter writer = stamper.getWriter(); 

    AcroFields acroFields = reader.getAcroFields(); 
    AcroFields.Item dateField = acroFields.getFieldItem("SignDateField"); 
    PdfAction pdfAction = PdfAction.javaScript("app.alert('hello');", writer); 

    PdfDictionary widgetRefDict = (PdfDictionary) PdfReader.getPdfObject(dateField.getWidgetRef(0)); 
    PdfDictionary actionDict = widgetRefDict.getAsDict(PdfName.AA); 
    if (actionDict == null) { 
     actionDict = new PdfDictionary(); 
    } 
    actionDict.put(PdfName.V, pdfAction); 

    stamper.close(); 
    reader.close(); 

回答

2

当有,在注释词典没有AA项,您要创建一个新的字典。但是你并没有将这个新字典添加到注释字典中。

// ... 
if (actionDict == null) { 
    actionDict = new PdfDictionary(); 
    // add the newly created action dict 
    widgetRefDict.put(PdfName.AA, actionDict); 
} 
// ... 
+0

这就是我所错过的,它现在的作品。当action添加到actionDict后,这需要添加。谢谢! – dchar