使用多个活动数据创建pdf。 itextpdf android

时间:2016-09-07 09:12:06

标签: java android itext

我是android新手。现在正在研究名为学校报告的小项目。 我喜欢在两个不同的活动中获得用户的输入,当用户点击createpdf按钮时,它应该在我的设备中创建PDF文件,并且来自两个活动的所有用户输入。正如您在屏幕截图中看到的那样,这两个活动是报告和报告1。 问题是我不知道如何获取其他活动数据,例如:来自report1的数据。当我在报告活动中输入数据并点击保存时,创建包含所有数据的pdf文件。但是我希望数据应该临时存储在活动(report,report1)的设备中,当用户点击createpdf按钮(MainActivity)时,它应该创建包含活动数据的pdf。

我正在使用itextpdf库。 如果任何人可以重新排列java逻辑部分,那将是很有帮助的。 提前谢谢

MainActivity.java



    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }


    public void buttonone(View view) {
        Intent intent = new Intent(this, report.class);
        startActivity(intent);
    }
    public void buttontwo(View view) {
        Intent intent = new Intent(this, report1.class);
        startActivity(intent);
    }

report.java



    EditText et1,et2,et3,et4;
    Button Save;
    String edit1,edit2,edit3,edit4;
    PdfPTable table = new PdfPTable(2);
    PdfPCell cell1, cell2,cell3,cell4, cell5,cell6,cell7, cell8,cell9,cell10;
    File cacheDir;
    final Context context = this;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_report);

        if (android.os.Environment.getExternalStorageState().equals(android.os.Environment.MEDIA_MOUNTED))
            cacheDir=new File(android.os.Environment.getExternalStorageDirectory(),"Code Analyser");



        else
            cacheDir=context.getCacheDir();
        if(!cacheDir.exists())
            cacheDir.mkdirs();

        et1=(EditText)findViewById(R.id.editText1);
        et2=(EditText)findViewById(R.id.editText2);
        et3=(EditText)findViewById(R.id.editText3);
        et4=(EditText)findViewById(R.id.editText4);


        Save=(Button)findViewById(R.id.button1);
        Save.setOnClickListener(reportClickListener);
    }
    OnClickListener reportClickListener= new OnClickListener()
    {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub

            edit1=et1.getText().toString();
            edit2=et2.getText().toString();
            edit3=et3.getText().toString();
            edit4=et4.getText().toString();

            String FILE = Environment.getExternalStorageDirectory().toString() + "/Code Analyser/" + "report.pdf";

            // Create New Blank Document
            Document document = new Document(PageSize.A4);

            // Create Pdf Writer for Writting into New Created Document
            try {
                PdfWriter.getInstance(document, new FileOutputStream(FILE));
                // Open Document for Writting into document
                document.open();
                // User Define Method
                addTitlePage(document);
            } catch (FileNotFoundException e) {

                e.printStackTrace();
            } catch (DocumentException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            // Close Document after writting all content
            document.close();

            Toast.makeText(report.this, "PDF File is Created."+FILE, Toast.LENGTH_LONG).show();
        }
    };
    // Set PDF document Properties
    public void addTitlePage(Document document) throws DocumentException
    {
        // Font Style for Document
        Font catFont = new Font(Font.FontFamily.TIMES_ROMAN, 18, Font.BOLD);
        Font titleFont = new Font(Font.FontFamily.TIMES_ROMAN, 22, Font.BOLD| Font.UNDERLINE, BaseColor.GRAY);
        Font smallBold = new Font(Font.FontFamily.TIMES_ROMAN, 12, Font.BOLD);
        Font normal = new Font(Font.FontFamily.TIMES_ROMAN, 12, Font.NORMAL);

        // Start New Paragraph
        Paragraph prHead = new Paragraph();
        // Set Font in this Paragraph
        prHead.setFont(titleFont);
        // Add item into Paragraph
        prHead.add("Code Analyzer\n");
        //prHead.add("\n");
        prHead.setAlignment(Element.ALIGN_CENTER);

        Paragraph cat = new Paragraph();
        cat.setFont(catFont);
        cat.add("\n");
        cat.add("Report\n");
        cat.add("\n");
        cat.setAlignment(Element.ALIGN_CENTER);

        // Add all above details into Document
        document.add(prHead);
        document.add(cat);
        document.add(table);

            /* Header values*/
        table = new PdfPTable(2);
        cell1 = new PdfPCell(new Phrase("Category"));
        cell2 = new PdfPCell(new Phrase("Values"));
        cell1.setVerticalAlignment(Element.ALIGN_LEFT);
        cell2.setVerticalAlignment(Element.ALIGN_LEFT);

        cell1.setBorder(Rectangle.NO_BORDER);
        cell1.setPadding(5);

        cell2.setBorder(Rectangle.NO_BORDER);
        cell2.setPadding(5);

        cell1.setBackgroundColor(BaseColor.GRAY);
        cell2.setBackgroundColor(BaseColor.GRAY);

            /*Table values*/
        cell3 = new PdfPCell(new Phrase("Name"));
        cell3.setHorizontalAlignment(Element.ALIGN_LEFT);
        cell3.setBorder(Rectangle.NO_BORDER);
        cell3.setPadding(5);

        cell4 = new PdfPCell(new Phrase(edit1));
        cell4.setHorizontalAlignment(Element.ALIGN_LEFT);
        cell4.setBorder(Rectangle.NO_BORDER);
        cell4.setPadding(5);

        cell5 = new PdfPCell(new Phrase("Mobile Number"));
        cell5.setHorizontalAlignment(Element.ALIGN_LEFT);
        cell5.setBorder(Rectangle.NO_BORDER);
        cell5.setPadding(5);

        cell6 = new PdfPCell(new Phrase(edit2));
        cell6.setHorizontalAlignment(Element.ALIGN_LEFT);
        cell6.setBorder(Rectangle.NO_BORDER);
        cell6.setPadding(5);

        cell7 = new PdfPCell(new Phrase("Mail Id"));
        cell7.setHorizontalAlignment(Element.ALIGN_LEFT);
        cell7.setBorder(Rectangle.NO_BORDER);
        cell7.setPadding(5);

        cell8 = new PdfPCell(new Phrase(edit3));
        cell8.setHorizontalAlignment(Element.ALIGN_LEFT);
        cell8.setBorder(Rectangle.NO_BORDER);
        cell8.setPadding(5);

        cell9 = new PdfPCell(new Phrase("City"));
        cell9.setHorizontalAlignment(Element.ALIGN_LEFT);
        cell9.setBorder(Rectangle.NO_BORDER);
        cell9.setPadding(5);

        cell10 = new PdfPCell(new Phrase(edit4));
        cell10.setHorizontalAlignment(Element.ALIGN_LEFT);
        cell10.setBorder(Rectangle.NO_BORDER);
        cell10.setPadding(5);

        table.addCell(cell1);
        table.addCell(cell2);
        table.addCell(cell3);
        table.addCell(cell4);
        table.addCell(cell5);
        table.addCell(cell6);
        table.addCell(cell7);
        table.addCell(cell8);
        table.addCell(cell9);
        table.addCell(cell10);

        // add table into document
        document.add(table);

        // Create new Page in PDF
        document.newPage();
        //Toast.makeText(this, "PDF File is Created.", Toast.LENGTH_LONG).show();
    }

report1.java



       @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_report1);
    }

activity_main

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Personal Details"
    android:id="@+id/button"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:onClick="buttonone"/>

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Student Details"
    android:id="@+id/button2"
    android:layout_below="@+id/button"
    android:layout_alignRight="@+id/button"
    android:layout_alignEnd="@+id/button"
    android:onClick="buttontwo"/>

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Create PDF"
    android:id="@+id/button3"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true"
    android:onClick="createpdf"/>

activity_report

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<EditText
    android:id="@+id/editText1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:hint="Name"
    android:ems="10" >

    <requestFocus />
</EditText>

<EditText
    android:id="@+id/editText2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/editText1"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="10dp"
    android:hint="Mobile number"
    android:ems="10" />

<EditText
    android:id="@+id/editText3"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/editText2"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="10dp"
    android:hint="Mail id"
    android:ems="10" />

<EditText
    android:id="@+id/editText4"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/editText3"
    android:layout_below="@+id/editText3"
    android:layout_marginTop="10dp"
    android:hint="City"
    android:ems="10" />


<Button
    android:id="@+id/button1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Save"
    android:layout_centerVertical="true"
    android:layout_alignLeft="@+id/button9"
    android:layout_alignStart="@+id/button9" />

<Button
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="button send"
    android:onClick="sendMessage"
    android:layout_marginBottom="136dp"
    android:id="@+id/button9"
    android:layout_alignParentBottom="true"
    android:layout_centerHorizontal="true" />

activity_report1

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >

<EditText
    android:id="@+id/editText1"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:hint="Student Name"
    android:ems="10" >

    <requestFocus />
</EditText>

<EditText
    android:id="@+id/editText2"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/editText1"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="10dp"
    android:hint="Mobile number"
    android:ems="10" />

<EditText
    android:id="@+id/editText3"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_below="@+id/editText2"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="10dp"
    android:hint="Mail id"
    android:ems="10" />

<EditText
    android:id="@+id/editText4"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:layout_alignLeft="@+id/editText3"
    android:layout_below="@+id/editText3"
    android:layout_marginTop="10dp"
    android:hint="School name"
    android:ems="10" />


<Button
    android:id="@+id/buttonsave2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="Save"
    android:layout_centerVertical="true"
    android:layout_centerHorizontal="true" />

Screenshot

1 个答案:

答案 0 :(得分:0)

您可以通过几种不同的方式实现这一目标:

1)使用“全球”数据概念Store application global data

2)使用包How do I create an android Intent that carries data?

将附加内容传递到Activity中

3)写入文件并从文件中读取

4)单独创建每个PDF文件。然后使用iTextPDF将它们组合起来。