2013-04-01 14 views
6

Chcę dodać obraz do androida PDF za pomocą iText. Chcę to osiągnąć bez uprzedniego zapisania obrazu na karcie SDCard. Umieszczam obraz w folderze res/drawable, ale udowadniając, że ścieżka obrazu nie działa i powoduje wyjątek FileNotFound. Moja droga jest tak:Uzyskiwanie obrazu z rysowania i dodawania do pliku PDF za pomocą iText

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

Teraz proszę mi zaproponować rozwiązanie jak dodam poprawną ścieżkę do getInstance (...) metody. Dzięki

Odpowiedz

22

Oczywiście to nie zadziała w ten sposób.

przenieść obraz do folderu aktywów do niego dostęp z metodę getAssets()

// 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 ja po prostu zaktualizować swój kod –

+0

nie mogę dodać do dokumentu dodać bitmapę metoda, nie obsługuje bitmapy typu :( – sns

+0

@NaeemShah spójrz na aktualizację –

1

Oto kod, aby dodać zdjęcie do PDF przy użyciu iText, jeśli obraz jest dynamiczny (tj), jeżeli obraz nie może zostanie dodany do folderu zasobów w czasie kompilacji,

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

Znalazłem rozwiązanie dla Twojego problemu. Jeśli chcesz uzyskać obraz z rozciągliwej folderze i umieścić go w pliku PDF przy użyciu iText użyć tego kodu:

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

Działa świetnie! Niesamowite. – Neela

Powiązane problemy