我有一个pdf文件,现在想获取该文件内pdf动作,现在遇到一个问题,就是当该动作为重置表单或者播放声音时,用代码获取不到该动作。以下为代码
public static void main(String[] args) throws IOException {
String path = “C:\Users\cuigu\Desktop\pdfFormate\456\a\1.pdf”;
Document doc = new Document(path);
Page page = doc.getPages().get_Item(1);
AnnotationCollection annos = page.getAnnotations();
for (int i = 1; i <= annos.size(); i++) {
Annotation an = annos.get_Item(i);
LinkAnnotation linkan = (LinkAnnotation) an;
IAppointment ia = linkan.getDestination();
if (an instanceof LinkAnnotation) {
System.out.println(linkan);
PdfActionCollection pdfActions = linkan.getPdfActions();
System.out.println(pdfActions.get_Item(1));
}
if (null != ia) {
String name = ia.getClass().getName();
System.out.println(name);
System.out.println("aa");
}else{
List<PdfAction> actionList = getLinkAction(linkan);
PdfAction ac = actionList.get(0);
String name = ac.getClass().getName();
System.out.println(name);
System.out.println("bb");
}
}
}
public static List getLinkAction(LinkAnnotation linkannotation) {
List list = new ArrayList();
// 动作(或者多个动作)
PdfAction action = null;
try {
action = linkannotation.getAction();
} catch (Exception e) {
e.printStackTrace();
}
if (null != action) {
list.add(action);
ActionCollection actions = action.getNext();
// 书签action是否多个
while (null != actions && actions.size() > 0) {
for (PdfAction ac2 : actions) {
if (null != ac2) {
list.add(ac2);
actions = ac2.getNext();
} else {
actions = null;
}
}
}
}else {
System.out.println("error");
}
return list;
}<a class="attachment" href="/uploads/default/35333">1.pdf</a> (56.3 KB)
1.pdf (1.0 MB)