簡體   English   中英

如何從 Android 中的 bitmap 圖像創建 PDF 文件

[英]How to create PDF file from bitmap image in Android

我正在嘗試將 bitmap 圖像轉換為 PDF 文件。 我正在從圖庫中選擇圖像,並希望將該圖像文件轉換為 pdf 文檔。 我正在嘗試這樣做,但我得到了空的 PDF 文件。

下面是我的代碼:

public class Convert extends AppCompatActivity {

private static final int REQ_CODE = 99;
Bitmap bitmap = null;
ImageView image;
Button convert;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_convert);

    image = findViewById(R.id.image);
    convert = findViewById(R.id.convert);

    openGallery();

    convert.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            // create a new document
            PdfDocument document = new PdfDocument();

            // create a page description
            PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(100, 100, 1).create();

            // start a page
            PdfDocument.Page page = document.startPage(pageInfo);

            // Draw the bitmap onto the page
            Canvas canvas = new Canvas();
            canvas.drawBitmap(bitmap, 0f, 0f, null);
            document.finishPage(page);

            String path = android.os.Environment.getExternalStorageDirectory().toString();
            try {
                document.writeTo(new FileOutputStream(path + "/example.pdf"));
            } catch (IOException e) {
                e.printStackTrace();
            }
            document.close();
        }
    });
}

private void openGallery(){

    int pref = ScanConstants.OPEN_MEDIA;
    Intent in = new Intent(Convert.this, ScanActivity.class);
    in.putExtra(ScanConstants.OPEN_INTENT_PREFERENCE,pref);
    startActivityForResult(in,REQ_CODE);
}

@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if(requestCode == REQ_CODE && resultCode == Activity.RESULT_OK){

       Uri uri = data.getExtras().getParcelable(ScanConstants.SCANNED_RESULT);
       try{
           bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(),uri);
           if(uri != null){
               getContentResolver().delete(uri,null,null);
               image.setImageBitmap(bitmap);
           }
       } catch (FileNotFoundException e) {
           e.printStackTrace();
       } catch (IOException e) {
           e.printStackTrace();
       }
     }
  }
} 

我究竟做錯了什么?

我認為你不是在寫PdfDocument.Page canvas object 所以這是你應該嘗試的,

// start a page
PdfDocument.Page page = document.startPage(pageInfo);

// Draw the bitmap onto the page
Canvas canvas = page.getCanvas();
canvas.drawBitmap(bitmap, 0f, 0f, null);
document.finishPage(page);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM