Example usage for com.itextpdf.text.pdf PdfWriter reorderPages

List of usage examples for com.itextpdf.text.pdf PdfWriter reorderPages

Introduction

In this page you can find the example usage for com.itextpdf.text.pdf PdfWriter reorderPages.

Prototype

public int reorderPages(final int order[]) throws DocumentException 

Source Link

Document

Use this method to reorder the pages in the document.

Usage

From source file:com.athena.chameleon.engine.core.PDFDocGenerator.java

License:Apache License

/**
 * //  w  ww. ja  va2  s. co  m
 * PDF Title Page 
 *
 * @param doc
 * @param writer
 */
public static void setTitleMainPage(Document doc, PdfWriter writer, PDFCommonEventHelper event, Upload upload)
        throws Exception {

    Font fnTitle = new Font(bfKorean, 20, Font.BOLD);
    Font fnLabel = new Font(bfKorean, 11, Font.BOLD);
    Font fnText = new Font(bfKorean, 11);
    LineSeparator UNDERLINE = new LineSeparator(1, 80, null, com.itextpdf.text.Element.ALIGN_CENTER, -5);
    doc.newPage();
    doc.add(Chunk.NEWLINE);

    event.setTitleFlag(true);

    int toc = writer.getPageNumber();
    Image img = Image.getInstance(PDFDocGenerator.class.getResource("/image/title.gif"));
    img.setAlignment(com.itextpdf.text.Element.ALIGN_CENTER);
    img.scalePercent(80, 80);
    doc.add(img);

    Paragraph titlePh = new Paragraph(MessageUtil.getMessage("pdf.message.main.title"), fnTitle);
    titlePh.setAlignment(com.itextpdf.text.Element.ALIGN_CENTER);
    titlePh.setSpacingBefore(50);
    titlePh.setSpacingAfter(30);
    doc.add(titlePh);

    doc.add(UNDERLINE);

    PdfPTable t1 = new PdfPTable(2);
    t1.setSpacingBefore(20);
    t1.setWidths(new int[] { 110, 290 });
    t1.getDefaultCell().setBorder(0);
    t1.getDefaultCell().setFixedHeight(32);

    t1.addCell(new Phrase(MessageUtil.getMessage("pdf.message.main.label.project_name"), fnLabel));
    t1.addCell(new Phrase(upload.getProjectNm(), fnText));
    t1.addCell(new Phrase(MessageUtil.getMessage("pdf.message.main.label.department"), fnLabel));
    t1.addCell(new Phrase(upload.getDepartment(), fnText));
    t1.addCell(new Phrase(MessageUtil.getMessage("pdf.message.main.label.focus_name"), fnLabel));
    t1.addCell(new Phrase(MessageUtil.getMessage("pdf.message.main.text.focus_name"), fnText));
    t1.addCell(new Phrase(MessageUtil.getMessage("pdf.message.main.label.product"), fnLabel));
    t1.addCell(new Phrase(MessageUtil.getMessage("pdf.message.main.text.product", upload.getBeforeWas(),
            upload.getAfterWas()), fnText));
    doc.add(t1);

    doc.add(UNDERLINE);

    Paragraph executedPh = new Paragraph(MessageUtil.getMessage("pdf.message.main.label.executed"), fnLabel);
    executedPh.setSpacingBefore(30);
    executedPh.setSpacingAfter(15);
    executedPh.setIndentationLeft(50);
    doc.add(executedPh);

    PdfPTable t2 = new PdfPTable(2);
    t2.getDefaultCell().setFixedHeight(28);
    t2.getDefaultCell().setVerticalAlignment(com.itextpdf.text.Element.ALIGN_MIDDLE);

    t2.getDefaultCell().setBackgroundColor(new BaseColor(217, 217, 217));
    t2.addCell(new Phrase(MessageUtil.getMessage("pdf.message.main.label.owner"), fnLabel));
    t2.addCell(new Phrase(MessageUtil.getMessage("pdf.message.main.label.project_role"), fnLabel));
    t2.getDefaultCell().setBackgroundColor(new BaseColor(255, 255, 255));
    t2.addCell(new Phrase(upload.getPerson(), fnText));
    t2.addCell(new Phrase(upload.getOrgRole(), fnText));
    doc.add(t2);

    doc.newPage();
    int total = writer.reorderPages(null);

    int[] order = new int[total];
    for (int i = 0; i < total; i++) {
        order[i] = i + toc;
        if (order[i] > total)
            order[i] -= total;
    }
    // apply the new order
    writer.reorderPages(order);

}

From source file:com.athena.chameleon.engine.core.PDFDocGenerator.java

License:Apache License

/**
 *  ?/*from   ww  w .  j a  v  a2s  .  c  o m*/
 *
 * @param doc 
 * @param writer 
 * @param event
 * @throws Exception
 */
public static void setChapterSectionTOC(Document doc, PdfWriter writer, PDFCommonEventHelper event)
        throws Exception {

    doc.newPage();
    event.setPagingFlag(false);

    Paragraph title = new Paragraph(MessageUtil.getMessage("pdf.message.toc.title"),
            new Font(bfKorean, 13, Font.BOLD));
    title.setSpacingAfter(8);
    doc.add(title);

    int toc = writer.getPageNumber();
    for (Paragraph p : event.titles)
        doc.add(p);

    doc.newPage();
    int total = writer.reorderPages(null);

    int[] order = new int[total];
    for (int i = 0; i < total; i++) {
        order[i] = i + toc;
        if (order[i] > total)
            order[i] -= total;
    }
    // apply the new order
    writer.reorderPages(order);

}

From source file:eu.aniketos.wp1.ststool.report.pdfgenerator.PdfGenerator.java

License:Open Source License

private int createPdf(OutputStream os, int indexSize, IProgressMonitor monitor)
        throws DocumentException, IOException {

    Document document = new Document(PageSize.A4, MARGIN_LEFT, MARGIN_RIGHT, MARGIN_UP, MARGIN_DOWN);

    PdfWriter writer = PdfWriter.getInstance(document, os);

    writer.setStrictImageSequence(true);

    writer.setLinearPageMode();// used to reorder page;
    // writer.setPdfVersion(PdfWriter.PDF_VERSION_1_6);
    ChapterSectionTOC event = new ChapterSectionTOC();
    writer.setPageEvent(event);/*from   w  w  w .  j  av  a 2s  .  c om*/
    event.pagenumber = rcf.startingPageNumber();
    writer.setBoxSize("art",
            new Rectangle(MARGIN_LEFT, 0, PageSize.A4.getWidth() - MARGIN_RIGHT, FOOTER_HEIGHT));

    monitor.beginTask("Generating Report", 100);

    document.open();
    rcf.buildContent(writer, document, new SubProgressMonitor(monitor, 85));

    if (rcf.buildIndex()) {
        document.newPage();
        event.setIndex(true);
        int toc = writer.getPageNumber();
        buildIndex(writer, document);
        document.newPage();

        monitor.worked(10);

        int total = writer.reorderPages(null);
        int tocLenght = total - toc + 1;
        int[] order = new int[total];
        order[0] = 1;
        for (int i = 0; i < tocLenght; i++) {
            order[i + 1] = toc + i;
        }
        for (int i = 2; i < toc; i++) {
            order[i + tocLenght - 1] = i;
        }
        writer.reorderPages(order);
        document.close();
        monitor.worked(5);
        return tocLenght;
    }
    return -1;
}