2013-04-01 101 views
6

我想使用iText將圖像添加到android PDF中。我想要在不將圖像保存到SDCard的情況下實現此目的。我把我的圖像放入res/drawable文件夾,但證明圖像路徑不起作用,並拋出FileNotFound異常。我的路徑是這樣的:使用iText將圖像從drawable中添加到PDF中

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

現在請建議我一個解決方案如何,我會加入的getInstance(...)方法正確的文件路徑。謝謝

回答

22

當然,它不會那樣工作。

圖像移動到資產文件夾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我只是更新我的代碼 –

+0

我不能添加位圖文件添加方法,不支持類型位圖:( – sns

+0

@NaeemShah看看更新 –

1

這裏是添加圖像利用iText PDF,如果圖像是動態的代碼(即),如果圖像不能在編譯時添加到資產文件夾中,

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

我找到了適合您的問題的解決方案。如果你想從你的文件夾,繪製圖像獲取和利用iText使用此代碼放到一個PDF文件:

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

工作好極了!真棒。 – Neela

相關問題