Agregar imagen desde memoria interna con itext y AndroidStudio 3.1

  • Respuestas:0
scorm32
  • Posts del Foro: 1

5 may. 2018 21:28:35 vía Web

hola, estoy desarrollando una aplicacion la cual crea un archivo pdf, ya pude crear el archivo pero ahora necesito agregar una imagen que esta guardado en la memoria interna, pero no logro dar con el codigo para hacer esto, estaba usando el siguiente codigo pero no me funciona.

package com.example.user.formatopdf;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.drawable.BitmapDrawable;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.os.Environment;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.Toast;

import com.itextpdf.text.BaseColor;
import com.itextpdf.text.Chunk;
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.Paragraph;
import com.itextpdf.text.Phrase;
import com.itextpdf.text.html.WebColors;
import com.itextpdf.text.pdf.ColumnText;
import com.itextpdf.text.pdf.PdfPCell;
import com.itextpdf.text.pdf.PdfPageEventHelper;
import com.itextpdf.text.pdf.PdfWriter;

import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;

public class MainActivity extends Activity {

public static final String IMAGE = "Memoria interna/prueba.jpg";

public class FooterPiePaginaiText extends  PdfPageEventHelper {

    @Override
    public void onEndPage(PdfWriter writer, Document document) {
        ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_CENTER, new Phrase("www.rsi-mx.com"), 300,10,0);
        ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_CENTER, new Phrase("TEL. (452)5.19.28.63"), 300,30,0);
        ColumnText.showTextAligned(writer.getDirectContent(), Element.ALIGN_CENTER, new Phrase("Hilanderos - 46-A - La Magdalena - Uruapan Michoacan - oficina@rsi-mx.com"), 300,45,0);

    }
}

private Button b;
private PdfPCell cell;
private String textAnswer;
private Image bgImage;
ListView list;
private String path;
private File dir;
private File file;

//use to set background color
BaseColor myColor = WebColors.getRGBColor("#4baeff");
BaseColor myColor1 = WebColors.getRGBColor("#757575");

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    b = (Button) findViewById(R.id.button1);
    list = (ListView) findViewById(R.id.list);

    //creating new file path
    path = Environment.getExternalStorageDirectory().getAbsolutePath() + "/Trinity/PDF Files";
    dir = new File(path);
    if (!dir.exists()) {
        dir.mkdirs();
    }
    b.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            try {
                createPDF();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (DocumentException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    });
}

@Override
protected void onResume() {
    super.onResume();

//getting files from directory and display in listview
try {

        ArrayList<String> FilesInFolder = GetFiles("/sdcard/Trinity/PDF Files");
        if (FilesInFolder.size() != 0)
            list.setAdapter(new ArrayAdapter<String>(this,
                    android.R.layout.simple_list_item_1, FilesInFolder));

        list.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            public void onItemClick(AdapterView<?> parent, View v, int position, long id) {
                // Clicking on items
            }
        });
    } catch (NullPointerException e) {
        e.printStackTrace();
    }
}


public ArrayList<String> GetFiles(String DirectoryPath) {
    ArrayList<String> MyFiles = new ArrayList<String>();
    File f = new File(DirectoryPath);

    f.mkdirs();
    File[] files = f.listFiles();
    if (files.length == 0)
        return null;
    else {
        for (int i = 0; i < files.length; i++)
            MyFiles.add(files[i].getName());
    }

    return MyFiles;
}


public void createPDF() throws IOException, DocumentException {

    //create document file
    Document doc = new Document();



    try {

        Log.e("PDFCreator", "PDF Path: " + path);
        SimpleDateFormat sdf = new SimpleDateFormat("ddMMyyyy");
        file = new File(dir, "Trinity PDF" + sdf.format(Calendar.getInstance().getTime()) + ".pdf");
        FileOutputStream fOut = new FileOutputStream(file);
        PdfWriter writer = PdfWriter.getInstance(doc, fOut);







        //open the document
        doc.open();


        Bitmap bitmap2 = BitmapFactory.decodeFile(IMAGE);
        ByteArrayOutputStream stream2 = new ByteArrayOutputStream();
        bitmap2.compress(Bitmap.CompressFormat.PNG, 100, stream2);
        byte[] bitmapdata2 = stream2.toByteArray();


        Drawable myImage3 = MainActivity.this.getResources().getDrawable(R.drawable.trinity);
        Bitmap bitmap3 = ((BitmapDrawable) myImage3).getBitmap();
        ByteArrayOutputStream stream3 = new ByteArrayOutputStream();
        bitmap3.compress(Bitmap.CompressFormat.PNG, 100, stream3);
        byte[] bitmapdata3 = stream3.toByteArray();

        bgImage = Image.getInstance(bitmapdata2);
        bgImage.setAbsolutePosition(4f, 500f);
        bgImage.scaleAbsoluteWidth(500f);
        bgImage.scaleAbsoluteHeight(300f);
        doc.add(bgImage);

        Font fuente = new Font();
        fuente.setStyle(1);
        fuente.setStyle(Font.BOLD);
        fuente.setSize(30);
        fuente.setColor(myColor);
        Font fuente2 = new Font();
        fuente2.setStyle(1);
        fuente2.setStyle(Font.BOLD);
        fuente2.setSize(17);
        fuente2.setColor(myColor);

        FooterPiePaginaiText footer = new FooterPiePaginaiText();
        writer.setPageEvent(footer);

        doc.add(new Chunk("RSI",fuente));
        doc.add(new Chunk(" Refrigeracion y sistemas industriales",fuente2));

        Paragraph espacio = new Paragraph(" espacio ");

        doc.add(espacio);

        Paragraph espacio2 = new Paragraph(" espacio ");
        doc.add(espacio2);

        Paragraph espacio3 = new Paragraph(" espacio ");
        doc.add(espacio3);

        Paragraph espacio4 = new Paragraph(" espacio ");
        doc.add(espacio4);


        Paragraph espacio5 = new Paragraph(" espacio ");
        doc.add(espacio5);



        Toast.makeText(getApplicationContext(), "PDF generado con exito", Toast.LENGTH_LONG).show();
  {
            doc.close();
        }
    } catch (Exception e) {
        e.printStackTrace();
    }
}

}

de antemano gracias por la ayuda

Contesta el/la primero/a