2013-04-01 15 views
6

Voglio aggiungere l'immagine ad Android PDF usando iText. Voglio realizzare questo senza prima salvare l'immagine su SDCard. Metto la mia immagine in una cartella res/drawable ma provando che il percorso dell'immagine non funziona e genera FileNotFound Exception. Il mio percorso è simile a questo:Ottenere l'immagine da disegnabile e aggiungere al PDF usando iText

String path = “res/drawable/myImage.png” 
Image image = Image.getInstance(path); 
document.add(image); 

Ora per favore mi suggeriscono una soluzione come mi aggiungerò corretto percorso del file per getInstance (...) metodo. Grazie

risposta

22

Ovviamente non funzionerà in questo modo.

spostare la vostra immagine nella cartella beni di accedervi con getAssets() metodo

// load image 
    try { 
      // get input stream 
      InputStream ims = getAssets().open("myImage.png"); 
      Bitmap bmp = BitmapFactory.decodeStream(ims); 
      ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
      bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); 
      Image image = Image.getInstance(stream.toByteArray()); 
      document.add(image); 
     } 
    catch(IOException ex) 
     { 
      return; 
     } 
+0

@NaeemShah ho solo aggiornare il mio codice –

+0

io posso aggiungere bitmap per documentare aggiungere metodo, non supportano il tipo bitmap :( – sns

+0

@NaeemShah dai un'occhiata all'aggiornamento –

1

Ecco il codice per aggiungere un'immagine in PDF usando iText, se l'immagine è dinamico (cioè), se l'immagine non può essere aggiunto alla cartella delle risorse in fase di compilazione,

public void addImage(Document document,ImageView ivPhoto) throws DocumentException { 
try { 
    BitmapDrawable drawable = (BitmapDrawable) ivPhoto.getDrawable();  
    Bitmap bitmap = drawable.getBitmap(); 

    ByteArrayOutputStream stream = new ByteArrayOutputStream();  
    bitmap.compress(Bitmap.CompressFormat.PNG, 100, stream);        
    byte[] imageInByte = stream.toByteArray(); 
    Image image = Image.getInstance(imageInByte); 
    document.add(image); 
    } 
    catch(IOException ex) 
    { 
     return; 
    } 
} 
6

Ho trovato una soluzione per il problema. Se si desidera ottenere immagini dalla cartella drawable e metterlo in un file PDF con iText utilizzare questo codice:

try { 
 

 
    document.open(); 
 
\t \t \t \t 
 
    Drawable d = getResources().getDrawable(R.drawable.myImage); 
 

 
    BitmapDrawable bitDw = ((BitmapDrawable) d); 
 

 
    Bitmap bmp = bitDw.getBitmap(); 
 

 
    ByteArrayOutputStream stream = new ByteArrayOutputStream(); 
 

 
    bmp.compress(Bitmap.CompressFormat.PNG, 100, stream); 
 

 
    Image image = Image.getInstance(stream.toByteArray()); 
 

 
    document.add(image); \t 
 
\t \t  
 
    document.close(); 
 

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

+0

Funzionante Ottimo! Eccezionale. – Neela

Problemi correlati