我有一个可编辑的pdf,里面有按钮字段。我正在处理这个可编辑的pdf在我的vb.net应用程序使用iTextsharp。如何想知道如何捕获和处理pdf中的按钮字段的Click事件。**文件样本可以在这里找到虽然,我正在使用iTextSharp dll,但我找不到任何有用的资源来处理按钮事件。请指导如何使用vb.net以编程方式处理此类pdf。
您需要将PdfAction
附加到字段的"mouse up"附加动作字典。
向现有字段添加操作比从头开始添加操作要困难一些,但仍然是完全可能的。
(抱歉,我根本不知道vb.net,你必须从Java翻译)
// Create your action.
// There are quite a few static functions in PdfAction to choose from.
PdfAction buttonAction = PdfAction.javaScript(writer, scriptStr);
AcroFields.Item buttonItem = myAcroFields.getFieldItem(buttonFldName);
// "AA" stands for "additional actions"
PdfDictionary aaDict = buttomItem.getMerged(0).getAsDict(PdfName.AA);
if (aaDict == null) {
aaDict = new PdfDictionary();
} else { // this button already has an AA dictionary.
// if there's an existing up action, preserve it, but run ours first.
PdfDictionary upAction = aaDict.getAsDict(PdfName.U);
if (upAction != null) {
PdfIndirectReference ref = aaDict.getAsIndirect(PdfName.U);
if (ref != null) {
buttonAction.put(PdfName.NEXT, ref);
} else {
buttonAction.put(PdfName.NEXT, upAction);
}
}
}
aaDict.put(PdfName.U, buttonAction);
int writeFlags = AcroFields.Item.WRITE_WIDGET | AcroFields.Item.WRITE_MERGED;
buttomItem.writeToAll(PdfName.AA, aaDict, writeFlags);
在您的特殊情况下,您可以简单地:
PdfDictionary aaDict = new PdfDictionary();
aaDict.put(PdfName.U, buttonAction);
item.getWidget(0).put(PdfName.AA, aaDict);
这将清除任何现有操作。