iTextSharp + Как обработать событие щелчка поля кнопки формы в vb.net - PullRequest
1 голос
/ 27 апреля 2011

У меня есть редактируемый файл PDF с полями кнопок. Я обрабатываю этот редактируемый PDF-файл в своем приложении vb.net, используя iTextsharp. Как узнать, как отлавливать и обрабатывать событие Click поля кнопки внутри pdf. ** Образец документа можно найти здесь Хотя я использую iTextSharp dll, я не смог найти какой-либо полезный ресурс для обработки событий кнопки. Пожалуйста, объясните, как обработать такой pdf программно, используя vb.net.

1 Ответ

1 голос
/ 27 апреля 2011

Вам необходимо прикрепить 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);

Это уничтожит все существующие действия.Это может быть хорошо для вас, это может быть очень плохо.

...