#!/usr/bin/env jython import sys sys.path.append('/usr/share/java/itext.jar') import com.lowagie import java.util import pickle document = com.lowagie.text.Document(com.lowagie.text.PageSize.LETTER) writer = com.lowagie.text.pdf.PdfCopy(document, open(sys.argv[1], 'w')) document.open() reader = com.lowagie.text.pdf.PdfReader('../raw_data/FAA/plates/current/d-TPP/Published_pdfs/PACALT.pdf') reader.consolidateNamedDestinations() n = reader.getNumberOfPages() print '%d pages' % (n) bookmarks = java.util.ArrayList() pieces = pickle.load(sys.stdin) depth_prev = 1 parent_nodes = {} page_count = 1 for piece in pieces: depth = piece['depth'] print '\t' * depth, '%s' % (piece['title']) if piece.has_key('title'): node = java.util.HashMap() node['Title'] = piece['title'] node['Action'] = 'GoTo' node['Kids'] = None node['Page'] = '%d' % (page_count) if piece.has_key('open'): open = piece['open'] if open: node['Open'] = 'true' else: node['Open'] = 'false' if depth == 1: bookmarks.add(node) else: parent_node = parent_nodes[depth - 1] if parent_node['Kids'] is None: parent_node['Kids'] = java.util.ArrayList() parent_node['Kids'].add(node) parent_nodes[depth] = node if piece.has_key('filename'): reader = com.lowagie.text.pdf.PdfReader(piece['filename']) reader.consolidateNamedDestinations() n = reader.getNumberOfPages() for i in range(n): page = writer.getImportedPage(reader, i + 1) writer.addPage(page) page_count += n writer.setOutlines(bookmarks) document.close()