//--------------------------------------------------------------------------------------- // Copyright (c) 2001-2012 by PDFTron Systems Inc. All Rights Reserved. // Consult legal.txt regarding legal and license information. //--------------------------------------------------------------------------------------- import pdftron.PDF.*; import pdftron.SDF.SDFDoc; //----------------------------------------------------------------------------------- // The sample illustrates how multiple pages can be combined/imposed // using PDFNet. Page imposition can be used to arrange/order pages // prior to printing or to assemble a 'master' page from several 'source' // pages. Using PDFNet API it is possible to write applications that can // re-order the pages such that they will display in the correct order // when the hard copy pages are compiled and folded correctly. //----------------------------------------------------------------------------------- public class ImpositionTest { public static void main(String[] args) { PDFNet.initialize(); String resource_path = args.length>3 ? args[3] : "../../../resources"; // Relative path to the folder containing test files. String input_path = "../../TestFiles/newsletter.pdf"; String output_path = "../../TestFiles/Output/newsletter_booklet.pdf"; try { System.out.println("-------------------------------------------------"); System.out.println("Opening the input pdf..."); String filein = args.length>1 ? args[1] : input_path; String fileout = args.length>2 ? args[2] : output_path; PDFDoc in_doc=new PDFDoc(filein); in_doc.initSecurityHandler(); // Create a list of pages to import from one PDF document to another. Page[] copy_pages=new Page[in_doc.getPageCount()]; int j=0; for (PageIterator itr=in_doc.getPageIterator(); itr.hasNext(); j++) { copy_pages[j]=(Page)(itr.next()); } PDFDoc new_doc=new PDFDoc(); Page[] imported_pages = new_doc.importPages(copy_pages); // Paper dimension for A3 format in points. Because one inch has // 72 points, 11.69 inch 72 = 841.69 points Rect media_box=new Rect(0, 0, 1190.88, 841.69); double mid_point = media_box.getWidth()/2; ElementBuilder builder=new ElementBuilder(); ElementWriter writer=new ElementWriter(); for (int i=0; i