Example usage for com.lowagie.text.pdf PdfDestination FIT

List of usage examples for com.lowagie.text.pdf PdfDestination FIT

Introduction

In this page you can find the example usage for com.lowagie.text.pdf PdfDestination FIT.

Prototype

int FIT

To view the source code for com.lowagie.text.pdf PdfDestination FIT.

Click Source Link

Document

This is a possible destination type

Usage

From source file:questions.importpages.ConcatenateWithTOC2.java

public static void main(String[] args) {
    try {//  w  w w. ja va2 s  .  co 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();
        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:webBoltOns.server.reportWriter.JRivetWriter.java

License:Open Source License

/**
 * <h2><code>buildReport</code></h2>
 * //from w  ww. j  av  a2s  . c  o m
 * <p>
 *  Create the PDF report        
 * </p>
 * 
 * @param   ServletRequest request  - the HTTP request
 * @param   ServletResponse response - the HTTP respones
 * 
 */
private void buildReport(ServletRequest request, ServletResponse response, DataSet reportTable) {
    try {

        rowCount = 999;
        totalRows = 0;
        document = new Document(PageSize.LEGAL.rotate());
        document.setMargins(8.0f, 8.0f, 8.0f, 18.0f);

        outputStream = new ByteArrayOutputStream();
        writer = PdfWriter.getInstance(document, outputStream);
        writer.setViewerPreferences(PdfWriter.PageModeUseOutlines);
        buildReportTitles(reportTable);

        document.open();

        contentByte = writer.getDirectContent();
        root = new PdfOutline(contentByte.getRootOutline(), new PdfDestination(PdfDestination.FIT), "Report");

        topA.setOutline(root);

        ResultSet resultSet;
        Statement statement = dataAccess.execConnectReadOnly();

        sql = new StringBuffer(reportTable.getStringField(ReportColumn.SQL_QUERY));

        sql = DataSet.removeFormat(sql, "\n");
        sql = DataSet.removeFormat(sql, "\t");

        Enumeration parameters = request.getParameterNames();
        while (parameters.hasMoreElements()) {
            String p = (String) parameters.nextElement();
            String v = request.getParameter(p);
            if (!p.equals("ReportScript") && !p.equals("") && !v.equals(""))
                sql = mergeTagValues(sql, p, v);
        }

        resultSet = statement.executeQuery(sql.toString().trim());
        String[] record = new String[reportColumns.length];

        while (resultSet.next()) {
            for (int c = 0; c < reportColumns.length; c++) {
                ReportColumn column = (ReportColumn) reportColumns[c];
                String value = (String) DataAccess.getFieldValue(resultSet, column.getFeildName(),
                        column.getDataType());
                record[c] = formatField(value, column.getDataType(), column.getDecimals());
            }

            topA.recursiveLevelBreaks(record);
            buildDetilLine(record);
            accumulateReportTotals(record);
            totalRows++;
        }

        if (totalRows == 0) {
            buildEmptyPage(request, response);

        } else {
            topA.fireGrandTotalBreak();
            resultSet.close();
            dataAccess.execClose(statement);
            document.add(reportBody);
            document.close();
            buildPDFReportPage(request, response, outputStream.toByteArray());
        }

    } catch (DocumentException e) {
        gs.log("** DocumentException: " + e);
        buildErrorPage(request, response, e.toString());
    } catch (IOException e) {
        gs.log("** IOException: " + e);
        buildErrorPage(request, response, e.toString());
    } catch (Exception e) {
        gs.log("** Exception: " + e);
        buildErrorPage(request, response, e.toString());
    }

}