13

iTextを使用してAndroid PDFに画像を追加したい。最初に画像を SDCard に保存せずにこれを実現したいと考えています。画像を res/drawable フォルダーに入れましたが、画像パスが機能しないことを証明し、FileNotFound 例外がスローされます。私のパスは次のようなものです:

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

getInstance(…) メソッドに正しいファイル パスを追加する方法を教えてください。ありがとう

4

5 に答える 5

32

もちろんそのままではうまくいきません。

画像を assets フォルダーに移動して、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;
        }
于 2013-04-01T11:04:29.060 に答える
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;
    }
}
于 2014-03-26T03:54:53.683 に答える