com.horizzon.inventerium.ExportPdf.java Source code

Java tutorial

Introduction

Here is the source code for com.horizzon.inventerium.ExportPdf.java

Source

package com.horizzon.inventerium;

import java.io.FileOutputStream;
import java.sql.Date;
import java.util.ArrayList;
import java.util.HashMap;

import android.os.Environment;

import com.itextpdf.text.Anchor;
import com.itextpdf.text.BadElementException;
import com.itextpdf.text.Chapter;
import com.itextpdf.text.Document;
import com.itextpdf.text.DocumentException;
import com.itextpdf.text.Element;
import com.itextpdf.text.List;
import com.itextpdf.text.ListItem;
import com.itextpdf.text.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.Section;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPTable;
import com.itextpdf.text.pdf.PdfWriter;

public class ExportPdf {
    private static String FILE = Environment.getExternalStorageDirectory().getPath() + "/FirstPdf.pdf";

    static final String KEY_ITEM = "tran";
    //not available
    //   static final String T_ID = "t_id";
    static final String SKU = "sku";
    static final String USER_ID = "user_id";
    static final String T_DATE = "tdate";
    static final String T_QTY = "qty";
    static final String T_UNIT_PRICE = "unitprice";
    static final String T_PAYMENT_STATUS = "payment_status";
    static final String URL = "http://www.thecampusguy.com/Inventa/transaction.xml";

    /*private static Font catFont = new Font(Font.FontFamily.TIMES_ROMAN, 18,
     Font.BOLD);
      private static Font redFont = new Font(Font.FontFamily.TIMES_ROMAN, 12,
     Font.NORMAL, BaseColor.RED);
      private static Font subFont = new Font(Font.FontFamily.TIMES_ROMAN, 16,
     Font.BOLD);
      private static Font smallBold = new Font(Font.FontFamily.TIMES_ROMAN, 12,
     Font.BOLD);
    */ static ArrayList<HashMap<String, String>> transaction_list_export;
    static ArrayList<String> shopkeeper_name_export, shopkeeper_id_export;

    //constructor
    public ExportPdf(String filepath, ArrayList<HashMap<String, String>> transaction_list,
            ArrayList<String> shopkeeper_name, ArrayList<String> shopkeeper_id) {
        // TODO Auto-generated constructor stub
        //FILE=filepath;
        transaction_list_export = transaction_list;
        shopkeeper_name_export = shopkeeper_name;
        shopkeeper_id_export = shopkeeper_id;
    }

    public static void main(String[] args) {
        try {
            Document document = new Document();
            PdfWriter.getInstance(document, new FileOutputStream(FILE));
            document.open();
            addMetaData(document);
            addTitlePage(document);
            addContent(document);
            document.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    // iText allows to add metadata to the PDF which can be viewed in your Adobe
    // Reader
    // under File -> Properties
    private static void addMetaData(Document document) {
        document.addTitle("Transaction Details");
        document.addSubject("Detailed transaction");
        //  document.addKeywords("Java, PDF, iText");
        //  document.addAuthor("Lars Vogel");
        //  document.addCreator("Lars Vogel");
    }

    private static void addTitlePage(Document document) throws DocumentException {
        Paragraph preface = new Paragraph();
        // We add one empty line
        addEmptyLine(preface, 1);
        // Lets write a big header
        preface.add(new Paragraph("Transaction Details"));

        addEmptyLine(preface, 1);
        // Will create: Report generated by: _name, _date
        preface.add(new Paragraph("Report generated by: " + System.getProperty("user.name") + ", " + new Date(0)));
        addEmptyLine(preface, 3);
        //       preface.add(new Paragraph("This document describes something which is very important ",
        //           smallBold));

        addEmptyLine(preface, 8);

        //       preface.add(new Paragraph("This document is a preliminary version and not subject to your license agreement or any other agreement with vogella.com ;-).",
        //           redFont));

        document.add(preface);
        // Start a new page
        document.newPage();
    }

    private static void addContent(Document document) throws DocumentException {
        Anchor anchor = new Anchor("First Chapter");
        anchor.setName("First Chapter");

        // Second parameter is the number of the chapter
        Chapter catPart = new Chapter(new Paragraph(anchor), 1);

        Paragraph subPara = new Paragraph("Subcategory 1");
        Section subCatPart = catPart.addSection(subPara);
        subCatPart.add(new Paragraph("Hello"));

        subPara = new Paragraph("Subcategory 2");
        subCatPart = catPart.addSection(subPara);
        subCatPart.add(new Paragraph("Paragraph 1"));
        subCatPart.add(new Paragraph("Paragraph 2"));
        subCatPart.add(new Paragraph("Paragraph 3"));

        // add a list
        createList(subCatPart);
        Paragraph paragraph = new Paragraph();
        addEmptyLine(paragraph, 5);
        subCatPart.add(paragraph);

        // add a table
        createTable(subCatPart);

        // now add all this to the document
        document.add(catPart);

        // Next section
        //    anchor = new Anchor("Second Chapter", catFont);
        //    anchor.setName("Second Chapter");

        // Second parameter is the number of the chapter
        //    catPart = new Chapter(new Paragraph(anchor), 1);

        //    subPara = new Paragraph("Subcategory", subFont);
        //    subCatPart = catPart.addSection(subPara);
        //    subCatPart.add(new Paragraph("This is a very important message"));

        // now add all this to the document
        //   document.add(catPart);

    }

    private static void createTable(Section subCatPart) throws BadElementException {
        PdfPTable table = new PdfPTable(3);

        // t.setBorderColor(BaseColor.GRAY);
        // t.setPadding(4);
        // t.setSpacing(4);
        // t.setBorderWidth(1);

        PdfPCell c1 = new PdfPCell(new Phrase("Buy Date"));
        c1.setHorizontalAlignment(Element.ALIGN_CENTER);
        table.addCell(c1);

        c1 = new PdfPCell(new Phrase("Shopkeeper Name"));
        c1.setHorizontalAlignment(Element.ALIGN_CENTER);
        table.addCell(c1);

        c1 = new PdfPCell(new Phrase("Quantity"));
        c1.setHorizontalAlignment(Element.ALIGN_CENTER);
        table.addCell(c1);

        c1 = new PdfPCell(new Phrase("Amount"));
        c1.setHorizontalAlignment(Element.ALIGN_CENTER);
        table.addCell(c1);

        c1 = new PdfPCell(new Phrase("Profit"));
        c1.setHorizontalAlignment(Element.ALIGN_CENTER);
        table.addCell(c1);

        c1 = new PdfPCell(new Phrase("Payment Status"));
        c1.setHorizontalAlignment(Element.ALIGN_CENTER);
        table.addCell(c1);
        table.setHeaderRows(1);

        for (int i = 0; i < transaction_list_export.size(); i++) {

            HashMap<String, String> transactionlist = new HashMap<String, String>();
            transactionlist = transaction_list_export.get(i);

            table.addCell("" + transactionlist.get(T_DATE));

            int pos = find_Shopkeeper_id(transactionlist.get(USER_ID), shopkeeper_id_export);
            table.addCell("" + shopkeeper_name_export.get(pos));
            table.addCell(transactionlist.get(T_QTY));

            int am = Integer.parseInt(transactionlist.get(T_UNIT_PRICE))
                    * Integer.parseInt(transactionlist.get(T_QTY));
            table.addCell("" + am);

            table.addCell("" + Integer.parseInt(transactionlist.get(T_UNIT_PRICE)) / 2);

            table.addCell(transactionlist.get(T_PAYMENT_STATUS));

        }
        subCatPart.add(table);

    }

    private static void createList(Section subCatPart) {
        List list = new List(true, false, 10);
        list.add(new ListItem("First point"));
        list.add(new ListItem("Second point"));
        list.add(new ListItem("Third point"));
        subCatPart.add(list);
    }

    private static void addEmptyLine(Paragraph paragraph, int number) {
        for (int i = 0; i < number; i++) {
            paragraph.add(new Paragraph(" "));
        }
    }

    static int find_Shopkeeper_id(String id, ArrayList<String> shop) {
        int i;
        for (i = 0; i < shop.size(); i++)
            if ((shop.get(i)).compareTo(id) == 0)
                break;
        if (i == shop.size())
            return i - 1;

        return i;
    }
}