Java pdf中的书签不会指向正确的页面,也不会指向与此相关的任何页面。为什么会这样?

Java pdf中的书签不会指向正确的页面,也不会指向与此相关的任何页面。为什么会这样?,java,image,pdf,itextpdf,Java,Image,Pdf,Itextpdf,我正在使用Netbeans和iText pdf api。所以我有下面的方法来创建一个可以插入到pdf中的哈希表。在这种情况下,它们是要放置在文档末尾的pdf中的图像文件 private HashMap<String, Object> newTmp = new HashMap<>(); //to generate bookmarks from images, another object is made private ArrayList<HashMap<Str

我正在使用Netbeans和iText pdf api。所以我有下面的方法来创建一个可以插入到pdf中的哈希表。在这种情况下,它们是要放置在文档末尾的pdf中的图像文件

private HashMap<String, Object> newTmp = new HashMap<>(); //to generate bookmarks from images, another object is made
private ArrayList<HashMap<String, Object>> bookmarks = new ArrayList<>(); //an array list is instantiated for bookmarks to be saved

private void bookmarkGen(String imageList[]) {
int n = 0; //counter used to progress each bookmark.
    for (int i = 0; i < imageList.length; i++) {
        if (imageList[i] != null) {
            bookmarks.add(newTmp);
            newTmp.put("Title", imageList[i].substring(imageList[i].lastIndexOf("/"), imageList[i].lastIndexOf(".")));
            newTmp.put("Action", "GoTo");
            newTmp.put("Page", String.format("%d Fit", n++));
            System.out.print(n + "\n");
            System.out.print("Bookmark Added\n");
        }
    }
}

每当我这样做时,其中一个书签只会转到一个页面,而其余的书签没有指定页面。我做错了什么?

您创建了一次
newTmp
,并多次将其添加到列表中,每次都覆盖其条目。因此,最终会有一个列表,其中包含对
newTmp
的许多引用,这些引用的值是在循环的最后一次迭代中设置的

要解决此问题,请移动

private HashMap<String, Object> newTmp = new HashMap<>(); 
private HashMap newTmp=new HashMap();
进入循环

private HashMap<String, Object> newTmp = new HashMap<>();