2013-03-06 60 views

回答

1

嗨,你可以通过下面的代码

import java.io.File; 
    import java.io.FileOutputStream; 
    import java.io.IOException; 
    import java.net.URL; 
    import java.util.Date; 

    import com.itextpdf.text.Anchor; 
    import com.itextpdf.text.BadElementException; 
    import com.itextpdf.text.BaseColor; 
    import com.itextpdf.text.Chapter; 
    import com.itextpdf.text.Document; 
    import com.itextpdf.text.DocumentException; 
    import com.itextpdf.text.Element; 
    import com.itextpdf.text.Font; 
    import com.itextpdf.text.Image; 
    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.PdfImportedPage; 
    import com.itextpdf.text.pdf.PdfPCell; 
    import com.itextpdf.text.pdf.PdfPTable; 
    import com.itextpdf.text.pdf.PdfReader; 
    import com.itextpdf.text.pdf.PdfWriter; 

    import android.app.Activity; 
    import android.os.Bundle; 
    import android.os.Environment; 
    import android.widget.TextView; 

    public class Main extends Activity { 

private static String FILE = Environment.getExternalStorageDirectory()+File.separator+"firstPdf.pdf"; 
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); 
TextView txt1; 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    txt1=(TextView) findViewById(R.id.textView1); 

    try { 
     Document document = new Document(); 
     PdfWriter.getInstance(document, new FileOutputStream(FILE)); 
     document.open(); 
     addMetaData(document); 
     addTitlePage(document); 
     addContent(document); 
     //createImage(); 
     document.close(); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
} 

private static void addMetaData(Document document) { 
    document.addTitle("My first PDF"); 
    document.addSubject("Using iText"); 
    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("Title of the document", catFont)); 

    addEmptyLine(preface, 1); 
    // Will create: Report generated by: _name, _date 
    preface.add(new Paragraph(
      "Report generated by: " + System.getProperty("user.name") + ", " + new Date(), //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ 
      smallBold)); 
    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.de ;-).", 
      redFont)); 

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

private static void addContent(Document document) throws DocumentException { 
    Anchor anchor = new Anchor("ESTIMATING APP", catFont); 
    anchor.setName("ESTIMATING APP"); 

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

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

    subPara = new Paragraph("Subcategory 2", subFont); 
    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("Job Name:")); 
    c1.setHorizontalAlignment(Element.ALIGN_CENTER); 
    table.addCell(c1); 

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

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

    table.addCell("Date:"); 
    table.addCell("1.1"); 
    table.addCell(""); 
    table.addCell("Labor Rate:"); 
    table.addCell("2.2"); 
    table.addCell(""); 
    table.addCell("Labor Cost:"); 
    table.addCell("3.2"); 
    table.addCell("3.3"); 

    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(" ")); 
    } 
} 

生成PDF报告,您可以创建XLS报告,检查了这link

+0

谢谢!我想知道是否有任何API可以生成Jasper Report等报告。我已经彻底清除了Jasper Report for android [link](http://community.jaspersoft.com/project/jaspermobile-android)。但我没有得到它的工作和实施。请指导我如何去做。谢谢。 – 4Droid 2013-03-06 08:20:24

相关问题