Вставьте изображение в PDF документ - PullRequest
0 голосов
/ 04 октября 2019

Можно ли добавить изображение в документ PDF? Мой макет имеет один (Button) и один (ImageView), я хотел бы, чтобы, когда я нажимаю (Button), он открыл галерею, чтобы выбрать изображение, показать его в (ImageView) и добавить его в документ PDF, как если быэто была учебная программа для генераторов, заранее спасибо.

* Eu estou utilizando com.itextpdf: itextg: 5.5.10

1 Ответ

0 голосов
/ 04 октября 2019

вот полный код того, что вы хотели. Попробуйте это и дайте мне знать.

В методе onCreate:

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

        imageView = findViewById(R.id.imageView);
        galleryBtn = findViewById(R.id.gallery);
        convertBtn = findViewById(R.id.convert);

        galleryBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss", Locale.getDefault()).format(new Date());
                String imageFileName = "PDF_" + timeStamp + "_";
                File storageDir = getAlbumDir();
                try {
                    pdfPath = File.createTempFile(
                            imageFileName, /* prefix */
                            ".pdf", /* suffix */
                            storageDir  /* directory */
                    );
                } catch (IOException e) {
                    e.printStackTrace();
                }
                Intent photoPickerIntent = new Intent(Intent.ACTION_PICK, android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI);
                startActivityForResult(photoPickerIntent, GALLERY_INTENT);
            }
        });

        convertBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (bitmap == null) {
                    Toast.makeText(ImageToPDF.this, "Please select the image from gallery", Toast.LENGTH_LONG).show();
                } else {
                    convertToPDF(pdfPath);
                }
            }
        });
    }

Создайте каталог для файла PDF:

private File getAlbumDir() {
        File storageDir = null;
        if (Environment.MEDIA_MOUNTED.equals(Environment.getExternalStorageState())) {
            storageDir = new File(Environment.getExternalStorageDirectory()
                    + "/dcim/"
                    + "Image to pdf");
            if (!storageDir.mkdirs()) {
                if (!storageDir.exists()) {
                    Log.d("CameraSample", "failed to create directory");
                    return null;
                }
            }
        } else {
            Log.v(getString(R.string.app_name), "External storage is not mounted READ/WRITE.");
        }
        return storageDir;
    }

Результат действия камеры:

@Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == GALLERY_INTENT) {
            if (resultCode == Activity.RESULT_OK && data != null) {
                Uri selectedImage = data.getData();
                String[] filePathColumn = {MediaStore.Images.Media.DATA};
                if (selectedImage != null) {
                    Cursor cursor = getContentResolver().query(selectedImage,
                            filePathColumn, null, null, null);
                    if (cursor != null) {
                        cursor.moveToFirst();
                        int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
                        String imagePath = cursor.getString(columnIndex);
                        bitmap = BitmapFactory.decodeFile(imagePath);
                        imageView.setImageBitmap(bitmap);
                        cursor.close();
                    }
                }
            } else if (resultCode == Activity.RESULT_CANCELED) {
                Log.e("Canceled", "Image not selected");
            }
        }
    }

Теперь код для преобразования изображения в PDF и сохранения в каталоге:

private void convertToPDF(File pdfPath) {
        int width = bitmap.getWidth();
        int height = bitmap.getHeight();

        PdfDocument pdfDocument = new PdfDocument();
        PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(width, height, 1).create();
        PdfDocument.Page page = pdfDocument.startPage(pageInfo);

        Canvas canvas = page.getCanvas();

        Paint paint = new Paint();
        paint.setColor(Color.parseColor("#ffffff"));
        canvas.drawPaint(paint);

        bitmap = Bitmap.createScaledBitmap(bitmap, width, height, true);
        paint.setColor(Color.BLUE);
        canvas.drawBitmap(bitmap, 0, 0, null);
        pdfDocument.finishPage(page);

        try {
            pdfDocument.writeTo(new FileOutputStream(pdfPath));
            Toast.makeText(ImageToPDF.this, "Image is successfully converted to PDF", Toast.LENGTH_LONG).show();
        } catch (IOException e) {
            e.printStackTrace();
        }
        pdfDocument.close();
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...