www.pudn.com > insertTOC.zip > insertTOC.java


/* $Id: insert_toc.java,v 1.10 2007/10/30 16:16:34 katja Exp $ 
 
 
 * Insert table of contents: 
 
 
 * Create some pages, assign labels to them and insert a table of contents at 
 
 
 * the beginning of the document 
 
 
 * 
 
 
 * Pages are created in a different chronological order than the order in 
 
 
 * which they appear in the document. Using page groups create several pages 
 
 
 * and provide them with page labels. After creating the last page, go back 
 
 
 * to the start of the document and insert the pages for the table of contents. 
 
 
 * 
 
 
 * Required software: PDFlib Lite/PDFlib/PDFlib+PDI/PPS 7 
 
 
 * Required data: none 
 
 
 */ 
 
 
package com.pdflib.cookbook.pdflib.pagination; 
 
 
 
 
 
import com.pdflib.pdflib; 
 
 
import com.pdflib.PDFlibException; 
 
 
 
 
 
public class insert_toc 
 
 
{ 
 
 
    public static void main (String argv[]) 
 
 
    { 
 
 
    /* This is where the data files are. Adjust as necessary. */ 
 
 
    String searchpath = "../input"; 
 
 
    String outfile = "insert_toc.pdf"; 
 
 
    String title = "Insert Table of Contents"; 
 
 
 
 
 
    pdflib p = null; 
 
 
    int pageno, font, docsize = 0; 
 
 
 
 
 
    /* Using the "groups" option, define several page groups for the 
 
 
     * title (title), the table of contents (toc), the individual chapters 
 
 
     * (body), and the index (index). List them in the order they will appear 
 
 
     * in the document. Using the "labels" option, assign a page label to each 
 
 
     * page group. 
 
 
     */ 
 
 
    String optlist = 
 
 
        "groups={title toc content index} " + 
 
 
        "labels={{group=title prefix=title} " + 
 
 
                "{group=toc prefix={toc } start=1 style=r} " + 
 
 
                "{group=content start=1 style=D} " + 
 
 
                "{group=index prefix={index } start=1 style=r}}"; 
 
 
 
 
 
    try { 
 
 
        p = new pdflib(); 
 
 
 
 
 
        p.set_parameter("SearchPath", searchpath); 
 
 
 
 
 
        /* This means we must check return values of load_font() etc. */ 
 
 
        p.set_parameter("errorpolicy", "return"); 
 
 
 
 
 
        if (p.begin_document(outfile, optlist) == -1) 
 
 
            throw new Exception("Error: " + p.get_errmsg()); 
 
 
 
 
 
        p.set_info("Creator", "PDFlib Cookbook"); 
 
 
        p.set_info("Title", title + " $Revision: 1.10 $"); 
 
 
 
 
 
        /* For PDFlib Lite: change "unicode" to "winansi" */ 
 
 
        font = p.load_font("Helvetica-Bold", "unicode", ""); 
 
 
        if (font == -1) 
 
 
            throw new Exception("Error: " + p.get_errmsg()); 
 
 
 
 
 
        /* Create a page in the page group "title" */ 
 
 
        p.begin_page_ext(595, 842, "group title"); 
 
 
        docsize++; 
 
 
        p.fit_textline("Title", 50, 700, "font=" + font + " fontsize=36"); 
 
 
        p.end_page_ext(""); 
 
 
 
 
 
        /* Loop over all pages in the page group "content" */ 
 
 
        for (pageno = 1; pageno <= 5; pageno++) 
 
 
        { 
 
 
            p.begin_page_ext(595, 842, "group content"); 
 
 
            docsize++; 
 
 
            p.fit_textline("Chapter " + pageno, 50, 700, "font=" + font + 
 
 
                " fontsize=36"); 
 
 
            p.end_page_ext(""); 
 
 
        } 
 
 
 
 
 
        /* Insert two pages in the page group "index" */ 
 
 
        p.begin_page_ext(595, 842, "group index"); 
 
 
        docsize++; 
 
 
        p.fit_textline("Index I", 50, 700, "font=" + font + " fontsize=36"); 
 
 
        p.end_page_ext(""); 
 
 
 
 
 
        p.begin_page_ext(595, 842, "group index"); 
 
 
        docsize++; 
 
 
        p.fit_textline("Index II", 50, 700, "font=" + font + " fontsize=36"); 
 
 
        p.end_page_ext(""); 
 
 
 
 
 
        /* Insert two pages in the page group "toc" for a table of contents */ 
 
 
        p.begin_page_ext(595, 842, "group toc"); 
 
 
        docsize++; 
 
 
        p.fit_textline("Table of Contents I", 50, 700, "font=" + font + 
 
 
            " fontsize=36"); 
 
 
        p.end_page_ext(""); 
 
 
 
 
 
        p.begin_page_ext(595, 842, "group toc"); 
 
 
        docsize++; 
 
 
        p.fit_textline("Table of Contents II", 50, 700, "font=" + font + 
 
 
            " fontsize=36"); 
 
 
        p.fit_textline("for a Document of " + docsize + " Pages.", 50, 600, 
 
 
            "font=" + font + " fontsize=24"); 
 
 
        p.end_page_ext(""); 
 
 
 
 
 
        p.end_document(""); 
 
 
 
 
 
        } catch (PDFlibException e){ 
 
 
            System.err.print("PDFlib exception occurred:\n"); 
 
 
            System.err.print("[" + e.get_errnum() + "] " + e.get_apiname() + 
 
 
                ": " + e.get_errmsg() + "\n"); 
 
 
        } catch (Exception e) { 
 
 
            System.err.println(e.getMessage()); 
 
 
        } finally { 
 
 
            if (p != null) { 
 
 
                p.delete(); 
 
 
            } 
 
 
        } 
 
 
    } 
 
 
}