Example usage for com.lowagie.text.pdf PdfWriter PageModeUseOutlines

List of usage examples for com.lowagie.text.pdf PdfWriter PageModeUseOutlines

Introduction

In this page you can find the example usage for com.lowagie.text.pdf PdfWriter PageModeUseOutlines.

Prototype

int PageModeUseOutlines

To view the source code for com.lowagie.text.pdf PdfWriter PageModeUseOutlines.

Click Source Link

Document

A viewer preference

Usage

From source file:jPDFmelange.MelangeJFrame.java

License:Open Source License

/**
 * This method reads the properties file "melange.rc" located in "user.dir".    
 *///w w  w . j a v  a2s .c  o m
private void getProperties() {
    String propertyStr = null;
    int propertyInt = -1;
    try {
        Properties melangeProperties = new Properties();
        // Java > java 1.4 we can use a FileReader
        //Reader propInFile = new FileReader(propertiesFileName);
        // for Java == java 1.4 we need a InputStream
        FileInputStream propInFile = new FileInputStream(propertiesFileName);
        melangeProperties.load(propInFile);
        melangeProperties.list(System.out);

        // Get property ShowMoveButtons
        propertyStr = melangeProperties.getProperty("ShowButtonsPanel", String.valueOf(showButtonsPanel));
        // OK, for Java <= 1.4 there is no Boolean.parseBoolean(String)
        //showButtonsPanel = Boolean.parseBoolean(propertyStr);
        showButtonsPanel = propertyStr.equalsIgnoreCase("true");

        // Get the property IconHeight, check limits.
        propertyStr = melangeProperties.getProperty("IconHeight", String.valueOf(iconHeight));
        propertyInt = Integer.parseInt(propertyStr);
        if (propertyInt < 500 || propertyInt > 0)
            iconHeight = propertyInt;

        // Get the property ImageScalingAlgorithm, check limits.
        propertyStr = melangeProperties.getProperty("ImageScalingAlgorithm",
                String.valueOf(imageScalingAlgorithm));
        propertyInt = Integer.parseInt(propertyStr);
        if (propertyInt == BufferedImage.SCALE_FAST || propertyInt == BufferedImage.SCALE_SMOOTH
                || propertyInt == BufferedImage.SCALE_REPLICATE
                || propertyInt == BufferedImage.SCALE_AREA_AVERAGING)
            imageScalingAlgorithm = propertyInt;

        // Get the property local.
        String languageStr = melangeProperties.getProperty("LocaleLanguage", locale.getLanguage());
        String countryStr = melangeProperties.getProperty("LocaleCountry", locale.getCountry());
        String variantStr = melangeProperties.getProperty("LocaleVariant", locale.getVariant());
        locale = new Locale(languageStr, countryStr, variantStr);

        // Get the property enablePDFPreferences
        propertyStr = melangeProperties.getProperty("enablePDFPreferences",
                String.valueOf(enablePDFPreferences));
        enablePDFPreferences = propertyStr.equalsIgnoreCase("true");

        // Get the property prefPageMode, check limits.
        propertyStr = melangeProperties.getProperty("prefPageMode", prefPageMode);
        if (MelangeJFrame.PageMode.containsKey(propertyStr)) {
            propertyInt = MelangeJFrame.PageMode.get(propertyStr);
            if (propertyInt == PdfWriter.PageModeFullScreen || propertyInt == PdfWriter.PageModeUseAttachments
                    || propertyInt == PdfWriter.PageModeUseNone || propertyInt == PdfWriter.PageModeUseOC
                    || propertyInt == PdfWriter.PageModeUseOutlines
                    || propertyInt == PdfWriter.PageModeUseThumbs)
                prefPageMode = propertyStr;
        }

        // Get the property prefPageLayout, check limits.
        propertyStr = melangeProperties.getProperty("prefPageLayout", prefPageLayout);
        if (MelangeJFrame.PageLayout.containsKey(propertyStr)) {
            propertyInt = MelangeJFrame.PageLayout.get(propertyStr);
            if (propertyInt == PdfWriter.PageLayoutOneColumn || propertyInt == PdfWriter.PageLayoutSinglePage
                    || propertyInt == PdfWriter.PageLayoutTwoColumnLeft
                    || propertyInt == PdfWriter.PageLayoutTwoColumnRight
                    || propertyInt == PdfWriter.PageLayoutTwoPageLeft
                    || propertyInt == PdfWriter.PageLayoutTwoPageRight)
                prefPageLayout = propertyStr;
        }

        // Get the property prefHideToolbar
        propertyStr = melangeProperties.getProperty("prefHideToolbar", String.valueOf(prefHideToolbar));
        prefHideToolbar = propertyStr.equalsIgnoreCase("true");

        // Get the property prefHideMenubar
        propertyStr = melangeProperties.getProperty("prefHideMenubar", String.valueOf(prefHideMenubar));
        prefHideMenubar = propertyStr.equalsIgnoreCase("true");

        // Get the property prefHideWindowUI
        propertyStr = melangeProperties.getProperty("prefHideWindowUI", String.valueOf(prefHideWindowUI));
        prefHideWindowUI = propertyStr.equalsIgnoreCase("true");

        // Get the property prefFitWindow
        propertyStr = melangeProperties.getProperty("prefFitWindow", String.valueOf(prefFitWindow));
        prefFitWindow = propertyStr.equalsIgnoreCase("true");

        // Get the property prefCenterWindow
        propertyStr = melangeProperties.getProperty("prefCenterWindow", String.valueOf(prefCenterWindow));
        prefCenterWindow = propertyStr.equalsIgnoreCase("true");

        // Get the property prefDisplayDocTitle
        propertyStr = melangeProperties.getProperty("prefDisplayDocTitle", String.valueOf(prefDisplayDocTitle));
        prefDisplayDocTitle = propertyStr.equalsIgnoreCase("true");

    } catch (NumberFormatException e) {
        System.err.println("Incorrect formatting in " + propertiesFileName);
    } catch (FileNotFoundException e) {
        System.err.println("Can't find " + propertiesFileName);
    } catch (IOException e) {
        System.err.println("I/O failed.");
    }

}

From source file:org.eclipse.birt.report.engine.emitter.pdf.PDFPageDevice.java

License:Open Source License

public void createTOC(Set<String> bookmarks) {
    // we needn't create the TOC if there is no page in the PDF file.
    // the doc is opened only if the user invokes newPage.
    if (!doc.isOpen()) {
        return;//  w w  w.  j a  v a 2s. com
    }
    if (bookmarks.isEmpty()) {
        writer.setViewerPreferences(PdfWriter.PageModeUseNone);
        return;
    }
    ULocale ulocale = null;
    Locale locale = context.getLocale();
    if (locale == null) {
        ulocale = ULocale.getDefault();
    } else {
        ulocale = ULocale.forLocale(locale);
    }
    // Before closing the document, we need to create TOC.
    ITOCTree tocTree = report.getTOCTree("pdf", //$NON-NLS-1$
            ulocale);
    if (tocTree == null) {
        writer.setViewerPreferences(PdfWriter.PageModeUseNone);
    } else {
        TOCNode rootNode = tocTree.getRoot();
        if (rootNode == null || rootNode.getChildren().isEmpty()) {
            writer.setViewerPreferences(PdfWriter.PageModeUseNone);
        } else {
            writer.setViewerPreferences(PdfWriter.PageModeUseOutlines);
            TOCHandler tocHandler = new TOCHandler(rootNode, writer.getDirectContent().getRootOutline(),
                    bookmarks);
            tocHandler.createTOC();
        }
    }
}

From source file:org.pdfsam.console.business.parser.validators.SetViewerCmdValidator.java

License:Open Source License

/**
 * // w w w . j a  v a  2s  . c o m
 * @param mode
 * @return The mode to iText
 */
private int getMode(String mode) {
    int retVal = PdfWriter.PageModeUseNone;
    if (SetViewerParsedCommand.M_ATTACHMENTS.equals(mode)) {
        retVal = PdfWriter.PageModeUseAttachments;
    } else if (SetViewerParsedCommand.M_FULLSCREEN.equals(mode)) {
        retVal = PdfWriter.PageModeFullScreen;
    } else if (SetViewerParsedCommand.M_OCONTENT.equals(mode)) {
        retVal = PdfWriter.PageModeUseOC;
    } else if (SetViewerParsedCommand.M_OUTLINES.equals(mode)) {
        retVal = PdfWriter.PageModeUseOutlines;
    } else if (SetViewerParsedCommand.M_THUMBS.equals(mode)) {
        retVal = PdfWriter.PageModeUseThumbs;
    }
    return retVal;
}

From source file:org.pentaho.reporting.engine.classic.core.modules.output.pageable.pdf.internal.PdfDocumentWriter.java

License:Open Source License

/**
 * Extracts the Page Layout and page mode settings for this PDF (ViewerPreferences). All preferences are defined as
 * properties which have to be set before the target is opened.
 *
 * @return the ViewerPreferences.// ww w.  j av  a 2s  .co  m
 */
private int getViewerPreferences() {
    final String pageLayout = config.getConfigProperty(
            "org.pentaho.reporting.engine.classic.core.modules.output.pageable.pdf.PageLayout");
    final String pageMode = config.getConfigProperty(
            "org.pentaho.reporting.engine.classic.core.modules.output.pageable.pdf.PageMode");
    final String fullScreenMode = config.getConfigProperty(
            "org.pentaho.reporting.engine.classic.core.modules.output.pageable.pdf.FullScreenMode");
    final boolean hideToolBar = "true".equals(config.getConfigProperty(
            "org.pentaho.reporting.engine.classic.core.modules.output.pageable.pdf.HideToolBar"));
    final boolean hideMenuBar = "true".equals(config.getConfigProperty(
            "org.pentaho.reporting.engine.classic.core.modules.output.pageable.pdf.HideMenuBar"));
    final boolean hideWindowUI = "true".equals(config.getConfigProperty(
            "org.pentaho.reporting.engine.classic.core.modules.output.pageable.pdf.HideWindowUI"));
    final boolean fitWindow = "true".equals(config.getConfigProperty(
            "org.pentaho.reporting.engine.classic.core.modules.output.pageable.pdf.FitWindow"));
    final boolean centerWindow = "true".equals(config.getConfigProperty(
            "org.pentaho.reporting.engine.classic.core.modules.output.pageable.pdf.CenterWindow"));
    final boolean displayDocTitle = "true".equals(config.getConfigProperty(
            "org.pentaho.reporting.engine.classic.core.modules.output.pageable.pdf.DisplayDocTitle"));
    final boolean printScalingNone = "true".equals(config.getConfigProperty(
            "org.pentaho.reporting.engine.classic.core.modules.output.pageable.pdf.PrintScalingNone"));
    final String direction = config.getConfigProperty(
            "org.pentaho.reporting.engine.classic.core.modules.output.pageable.pdf.Direction");

    int viewerPreferences = 0;
    if ("PageLayoutOneColumn".equals(pageLayout)) {
        viewerPreferences = PdfWriter.PageLayoutOneColumn;
    } else if ("PageLayoutSinglePage".equals(pageLayout)) {
        viewerPreferences = PdfWriter.PageLayoutSinglePage;
    } else if ("PageLayoutTwoColumnLeft".equals(pageLayout)) {
        viewerPreferences = PdfWriter.PageLayoutTwoColumnLeft;
    } else if ("PageLayoutTwoColumnRight".equals(pageLayout)) {
        viewerPreferences = PdfWriter.PageLayoutTwoColumnRight;
    } else if ("PageLayoutTwoPageLeft".equals(pageLayout)) {
        viewerPreferences = PdfWriter.PageLayoutTwoPageLeft;
    } else if ("PageLayoutTwoPageRight".equals(pageLayout)) {
        viewerPreferences = PdfWriter.PageLayoutTwoPageRight;
    }

    if ("PageModeUseNone".equals(pageMode)) {
        viewerPreferences |= PdfWriter.PageModeUseNone;
    } else if ("PageModeUseOutlines".equals(pageMode)) {
        viewerPreferences |= PdfWriter.PageModeUseOutlines;
    } else if ("PageModeUseThumbs".equals(pageMode)) {
        viewerPreferences |= PdfWriter.PageModeUseThumbs;
    } else if ("PageModeFullScreen".equals(pageMode)) {
        viewerPreferences |= PdfWriter.PageModeFullScreen;
        if ("NonFullScreenPageModeUseNone".equals(fullScreenMode)) {
            viewerPreferences = PdfWriter.NonFullScreenPageModeUseNone;
        } else if ("NonFullScreenPageModeUseOC".equals(fullScreenMode)) {
            viewerPreferences |= PdfWriter.NonFullScreenPageModeUseOC;
        } else if ("NonFullScreenPageModeUseOutlines".equals(fullScreenMode)) {
            viewerPreferences |= PdfWriter.NonFullScreenPageModeUseOutlines;
        } else if ("NonFullScreenPageModeUseThumbs".equals(fullScreenMode)) {
            viewerPreferences |= PdfWriter.NonFullScreenPageModeUseThumbs;
        }
    } else if ("PageModeUseOC".equals(pageMode)) {
        viewerPreferences |= PdfWriter.PageModeUseOC;
    } else if ("PageModeUseAttachments".equals(pageMode)) {
        viewerPreferences |= PdfWriter.PageModeUseAttachments;
    }

    if (hideToolBar) {
        viewerPreferences |= PdfWriter.HideToolbar;
    }

    if (hideMenuBar) {
        viewerPreferences |= PdfWriter.HideMenubar;
    }

    if (hideWindowUI) {
        viewerPreferences |= PdfWriter.HideWindowUI;
    }

    if (fitWindow) {
        viewerPreferences |= PdfWriter.FitWindow;
    }
    if (centerWindow) {
        viewerPreferences |= PdfWriter.CenterWindow;
    }
    if (displayDocTitle) {
        viewerPreferences |= PdfWriter.DisplayDocTitle;
    }
    if (printScalingNone) {
        viewerPreferences |= PdfWriter.PrintScalingNone;
    }

    if ("DirectionL2R".equals(direction)) {
        viewerPreferences |= PdfWriter.DirectionL2R;
    } else if ("DirectionR2L".equals(direction)) {
        viewerPreferences |= PdfWriter.DirectionR2L;
    }

    if (logger.isDebugEnabled()) {
        logger.debug("viewerPreferences = 0b" + Integer.toBinaryString(viewerPreferences));
    }
    return viewerPreferences;
}

From source file:org.schreibubi.JCombinations.ui.GridChartPanel.java

License:Open Source License

/**
 * Create PDF//from  w  w  w .j ava 2 s  .c  om
 * 
 * @param name
 *            Filename
 * @param selection
 *            Selected Nodes
 * @param dm
 *            DataModel
 * @param pl
 *            ProgressListener
 */
@SuppressWarnings("unchecked")
public static void generatePDF(File name, DataModel dm, ArrayList<TreePath> selection, ProgressListener pl) {
    com.lowagie.text.Document document = new Document(PageSize.A4.rotate(), 50, 50, 50, 50);
    try {
        ArrayList<ExtendedJFreeChart> charts = dm.getCharts(selection);
        if (charts.size() > 0) {
            PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(name));
            writer.setViewerPreferences(PdfWriter.PageModeUseOutlines);
            document.addAuthor("Jrg Werner");
            document.addSubject("Created by JCombinations");
            document.addKeywords("JCombinations");
            document.addCreator("JCombinations using iText");

            // we define a header and a footer
            HeaderFooter header = new HeaderFooter(new Phrase("JCombinations by Jrg Werner"), false);
            HeaderFooter footer = new HeaderFooter(new Phrase("Page "), new Phrase("."));
            footer.setAlignment(Element.ALIGN_CENTER);
            document.setHeader(header);
            document.setFooter(footer);

            document.open();
            DefaultFontMapper mapper = new DefaultFontMapper();
            FontFactory.registerDirectories();
            mapper.insertDirectory("c:\\WINNT\\fonts");

            PdfContentByte cb = writer.getDirectContent();

            pl.progressStarted(new ProgressEvent(GridChartPanel.class, 0, charts.size()));
            for (int i = 0; i < charts.size(); i++) {
                ExtendedJFreeChart chart = charts.get(i);
                PdfTemplate tp = cb.createTemplate(document.right(EXTRA_MARGIN) - document.left(EXTRA_MARGIN),
                        document.top(EXTRA_MARGIN) - document.bottom(EXTRA_MARGIN));
                Graphics2D g2d = tp.createGraphics(document.right(EXTRA_MARGIN) - document.left(EXTRA_MARGIN),
                        document.top(EXTRA_MARGIN) - document.bottom(EXTRA_MARGIN), mapper);
                Rectangle2D r2d = new Rectangle2D.Double(0, 0,
                        document.right(EXTRA_MARGIN) - document.left(EXTRA_MARGIN),
                        document.top(EXTRA_MARGIN) - document.bottom(EXTRA_MARGIN));
                chart.draw(g2d, r2d);
                g2d.dispose();
                cb.addTemplate(tp, document.left(EXTRA_MARGIN), document.bottom(EXTRA_MARGIN));
                PdfDestination destination = new PdfDestination(PdfDestination.FIT);
                TreePath treePath = chart.getTreePath();
                PdfOutline po = cb.getRootOutline();
                for (int j = 0; j < treePath.getPathCount(); j++) {
                    ArrayList<PdfOutline> lpo = po.getKids();
                    PdfOutline cpo = null;
                    for (PdfOutline outline : lpo)
                        if (outline.getTitle().compareTo(treePath.getPathComponent(j).toString()) == 0)
                            cpo = outline;
                    if (cpo == null)
                        cpo = new PdfOutline(po, destination, treePath.getPathComponent(j).toString());
                    po = cpo;
                }
                document.newPage();
                pl.progressIncremented(new ProgressEvent(GridChartPanel.class, i));
            }
            document.close();
            pl.progressEnded(new ProgressEvent(GridChartPanel.class));

        }
    } catch (DocumentException de) {
        System.err.println(de.getMessage());
    } catch (IOException ioe) {
        System.err.println(ioe.getMessage());
    }
}

From source file:org.xhtmlrenderer.pdf.ITextOutputDevice.java

License:Open Source License

private void writeOutline(RenderingContext c, Box root) {
    if (_bookmarks.size() > 0) {
        _writer.setViewerPreferences(PdfWriter.PageModeUseOutlines);
        writeBookmarks(c, root, _writer.getRootOutline(), _bookmarks);
    }//from   www.ja  v  a2 s .  c o  m
}

From source file:questions.importpages.ConcatenateMakeTOC.java

public static void main(String[] args) {
    Document document = new Document();
    try {/*from www  . j av a 2  s .  c o m*/
        PdfCopy copy = new PdfCopy(document, new FileOutputStream(RESULT));
        copy.setViewerPreferences(PdfWriter.PageModeUseOutlines);
        document.open();
        List<HashMap<String, Object>> bookmarks = new ArrayList<HashMap<String, Object>>();
        List<HashMap<String, Object>> kids;
        PdfReader reader;
        int page = 1;
        for (int i = 0; i < 3; i++) {
            createPdf(i);
            HashMap<String, Object> titlepage = new HashMap<String, Object>();
            titlepage.put("Title", String.format("Document %d", i + 1));
            titlepage.put("Action", "GoTo");
            titlepage.put("Page", String.format("%d Fit", page));
            kids = new ArrayList<HashMap<String, Object>>();
            reader = new PdfReader(RESULTS[i]);
            for (int j = 1; j <= reader.getNumberOfPages(); j++) {
                copy.addPage(copy.getImportedPage(reader, j));
                HashMap<String, Object> kid = new HashMap<String, Object>();
                kid.put("Title", String.format("Page %d in document %d", j, i + 1));
                kid.put("Action", "GoTo");
                kid.put("Page", String.format("%d FitH 806", page));
                kids.add(kid);
                page++;
            }
            titlepage.put("Kids", kids);
            bookmarks.add(titlepage);
        }
        copy.setOutlines(bookmarks);
    } catch (IOException e) {
        e.printStackTrace();
    } catch (DocumentException e) {
        e.printStackTrace();
    }
    document.close();
}

From source file:questions.importpages.ConcatenateWithTOC.java

public static void main(String[] args) {
    try {/*  ww w .  j a  v a 2  s.  c o m*/
        // suppose we have some TEST PDF files
        for (int i = 0; i < TEST.length; i++) {
            createTestPdf(i);
        }
        // and we want to concatenate them
        Document document = new Document();
        PdfCopy copy = new PdfCopy(document, new FileOutputStream(RESULT));
        copy.setViewerPreferences(PdfWriter.PageModeUseOutlines);
        document.open();
        // but we want to create an outline tree
        PdfOutline root = copy.getRootOutline();
        // we also want an extra page with the file name
        Document coverpage;
        ByteArrayOutputStream baos;
        PdfReader reader;
        // we want to add page numbers too
        int pagenumber = 0;
        BaseFont bf = BaseFont.createFont();
        for (int i = 0; i < TEST.length; i++) {
            // we create the coverpage in memory
            coverpage = new Document();
            baos = new ByteArrayOutputStream();
            PdfWriter.getInstance(coverpage, baos);
            coverpage.open();
            coverpage.add(new Paragraph("file: " + TEST[i]));
            coverpage.close();
            // we import that page
            reader = new PdfReader(baos.toByteArray());
            pagenumber++;
            copy.addPage(getStampedPage(reader, copy, 1, pagenumber, bf));
            // we create the bookmark to that page
            PdfDestination dest = new PdfDestination(PdfDestination.FIT);
            new PdfOutline(root, PdfAction.gotoLocalPage(pagenumber, dest, copy), TEST[i]);
            // we import the document itself
            reader = new PdfReader(TEST[i]);
            for (int j = 1; j <= reader.getNumberOfPages(); j++) {
                pagenumber++;
                copy.addPage(getStampedPage(reader, copy, j, pagenumber, bf));
            }
        }
        document.close();
    } catch (IOException ioe) {
        ioe.printStackTrace();
    } catch (DocumentException de) {
        de.printStackTrace();
    }
}

From source file:questions.importpages.ConcatenateWithTOC2.java

public static void main(String[] args) {
    try {//  www .jav  a  2  s  .c om
        // suppose we have some TEST PDF files
        for (int i = 0; i < TEST.length; i++) {
            createTestPdf(i);
        }
        // and we want to concatenate them
        Document document = new Document();
        ByteArrayOutputStream os = new ByteArrayOutputStream();
        PdfCopy copy = new PdfCopy(document, os);
        copy.setViewerPreferences(PdfWriter.PageModeUseOutlines);
        document.open();
        // but we want to create an outline tree
        PdfOutline root = copy.getRootOutline();
        // we also want an extra page with the file name
        Document coverpage;
        ByteArrayOutputStream baos;
        PdfReader reader;
        // we want keep track of the page numbers
        int pagenumber = 0;
        for (int i = 0; i < TEST.length; i++) {
            // we create the coverpage in memory
            coverpage = new Document();
            baos = new ByteArrayOutputStream();
            PdfWriter.getInstance(coverpage, baos);
            coverpage.open();
            coverpage.add(new Paragraph("file: " + TEST[i]));
            coverpage.close();
            // we import that page
            reader = new PdfReader(baos.toByteArray());
            pagenumber++;
            copy.addPage(copy.getImportedPage(reader, 1));
            // we create the bookmark to that page
            PdfDestination dest = new PdfDestination(PdfDestination.FIT);
            new PdfOutline(root, PdfAction.gotoLocalPage(pagenumber, dest, copy), TEST[i]);
            // we import the document itself
            reader = new PdfReader(TEST[i]);
            for (int j = 1; j <= reader.getNumberOfPages(); j++) {
                pagenumber++;
                copy.addPage(copy.getImportedPage(reader, j));
            }
        }
        document.close();

        // we want to add page X of Y
        reader = new PdfReader(os.toByteArray());
        int n = reader.getNumberOfPages();
        PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(RESULT));
        BaseFont bf = BaseFont.createFont();
        for (int i = 1; i <= n; i++) {
            PdfContentByte canvas = stamper.getOverContent(i);
            canvas.beginText();
            canvas.setFontAndSize(bf, 12);
            canvas.showTextAligned(Element.ALIGN_LEFT, "page " + i + " of " + n, 36, 26, 0);
            canvas.endText();
        }
        stamper.close();
    } catch (IOException ioe) {
        ioe.printStackTrace();
    } catch (DocumentException de) {
        de.printStackTrace();
    }
}

From source file:questions.objects.ChaptersAndMemory.java

/**
 * Generates a PDF file with autonumbered chapters and an open bookmark tab
 * /*from ww  w.  j a  v a  2s.c om*/
 * @param args
 *            no arguments needed here
 */
public static void main(String[] args) {
    // step 1: creation of a document-object
    Document document = new Document();
    try {
        // step 2:
        // we create a writer
        PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(RESULT));
        writer.setViewerPreferences(PdfWriter.PageModeUseOutlines);
        // step 3: we open the document
        document.open();
        // step 4: we add a paragraph to the document
        Phrase text = new Phrase("Quick brown fox jumps over the lazy dog. ");
        ChapterAutoNumber chapter1 = new ChapterAutoNumber("This is a sample sentence:");
        chapter1.setBookmarkTitle("The fox");
        chapter1.setBookmarkOpen(false);
        chapter1.setComplete(false);
        Section section1 = chapter1.addSection("Quick");
        section1.add(text);
        section1.add(text);
        section1.add(text);
        document.add(chapter1);
        Section section2 = chapter1.addSection("Fox");
        section2.add(text);
        section2.setComplete(false);
        document.add(chapter1);
        section2.add(text);
        section2.add(text);
        section2.setComplete(true);
        chapter1.setComplete(true);
        document.add(chapter1);
        ChapterAutoNumber chapter2 = new ChapterAutoNumber("Jumps");
        chapter2.setComplete(false);
        Section section = chapter2.addSection("Over");
        section.setComplete(false);
        section.add(text);
        section.add(text);
        section.add(text);
        Section subsection1 = section.addSection("Lazy");
        subsection1.setIndentationLeft(30);
        subsection1.add(text);
        subsection1.setComplete(false);
        document.add(chapter2);
        subsection1.add(text);
        subsection1.add(text);
        subsection1.add(text);
        subsection1.add(text);
        subsection1.setComplete(true);
        Section subsection2 = section.addSection("Dog");
        subsection2.setIndentationRight(30);
        subsection2.add(text);
        subsection2.add(text);
        subsection2.add(text);
        subsection2.add(text);
        subsection2.add(text);
        Section subsection3 = section.addSection("Did you see it?");
        subsection3.setIndentation(50);
        subsection3.add(text);
        subsection3.add(text);
        subsection3.add(text);
        subsection3.add(text);
        subsection3.add(text);
        section.setComplete(true);
        document.add(chapter2);
    } catch (DocumentException de) {
        System.err.println(de.getMessage());
    } catch (IOException ioe) {
        System.err.println(ioe.getMessage());
    }

    // step 5: we close the document
    document.close();
}