private void writeOutlineItem(List <PDFDestination> destinations, int index) { PDFDestination dest = destinations.get(index); List <PDFDestination> children = dest.getChildren(); for (int i = 0; i < children.size(); i++) { writeOutlineItem(children, i); } beginObject(dest.getId()); println(" << /Title (" + PDFStream.pdfEscapeText(dest.getTitle()) + ")"); println(" /Parent " + dest.getParentId() + " 0 R"); println(" /Dest [" + dest.getPageId() + " 0 R /XYZ 0 " + dest.getPos() + " 0]"); if (index > 0) { println(" /Prev " + destinations.get(index - 1).getId() + " 0 R"); } if (index < (destinations.size() - 1)) { println(" /Next " + destinations.get(index + 1).getId() + " 0 R"); } if (!children.isEmpty()) { println(" /First " + children.get(0).getId() + " 0 R"); println(" /Last " + children.get(children.size() - 1).getId() + " 0 R"); println(" /Count " + (children.size() * -1)); } println(" >>"); endObject(); }