как преобразовать сгенерированный QR-код в PDF-файл и сохранить его на устройстве в Android Studio

#android

#Android

Вопрос:

Я создал QR-код в Android studio. Теперь я хочу сохранить сгенерированный QR-код в формате PDF в телефоне одним нажатием кнопки.

Для этого какой код я должен добавить. Пожалуйста, помогите мне..

Вот мой текущий код для генерации QR-кода.

 QRCodeWriter qrCodeWriter = new QRCodeWriter();
        try {
            BitMatrix bitMatrix = qrCodeWriter.encode(gymid_adapter, BarcodeFormat.QR_CODE, 200, 200);
            final Bitmap bitmap = Bitmap.createBitmap(200, 200, Bitmap.Config.RGB_565);
            for (int x = 0; x<200; x  ){
                for (int y=0; y<200; y  ){
                    bitmap.setPixel(x,y,bitMatrix.get(x,y)? Color.BLACK : Color.WHITE);
                }
            }
            imageView.setImageBitmap(bitmap);
            save.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    /*
                    PdfDocument pdfDocument=new PdfDocument();
                   PdfDocument.PageInfo pi=new PdfDocument.PageInfo.Builder(bitmap.getWidth(),bitmap.getHeight(),1).create();

                    PdfDocument.Page page=pdfDocument.startPage(pi);
                    Canvas canvas =page.getCanvas();
                    Paint paint=new Paint();
                    paint.setColor(Color.parseColor("#FFFFFF"));
                    canvas.drawPaint(paint);
                    
                     */
                    

                }
            });

        } catch (Exception e) {
            e.printStackTrace();
        }
 

Ответ №1:

Используйте этот код и вызовите creatMyPDFofQRCode() функцию в MainActivity

 private void createMyPDFofQRCode() {

    QRCodeWriter qrCodeWriter = new QRCodeWriter();
    try {
        final BitMatrix bitMatrix = qrCodeWriter.encode(qr_edittext_str, BarcodeFormat.QR_CODE, 200, 200);
        final Bitmap bitmap = Bitmap.createBitmap(200, 200, Bitmap.Config.RGB_565);
        for (int x = 0; x < 200; x  ) {
            for (int y = 0; y < 200; y  ) {
                bitmap.setPixel(x, y, bitMatrix.get(x, y) ? Color.BLACK : Color.WHITE);
            }
        }
        qr_ImageView.setImageBitmap(bitmap);

        // setOn Click listener
        generatePdfBtn.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {
                PdfDocument pdfDocument = new PdfDocument();
                PdfDocument.PageInfo pi = new PdfDocument.PageInfo.Builder(bitmap.getWidth(), bitmap.getHeight(), 1).create();
                PdfDocument.Page page = pdfDocument.startPage(pi);


                Paint paint = new Paint();
                int x = 5, y = 5;
                Canvas canvas = page.getCanvas();
                canvas.drawBitmap(bitmap, x, y, paint);  // float left = x, float top = y


                pdfDocument.finishPage(page);

                // save pdf file in Mobile Phone Storage
                String myFilePath = Environment.getExternalStorageDirectory().getPath()   "/myPDFFile.pdf";
                File myFile = new File(myFilePath);
                try {
                    pdfDocument.writeTo(new FileOutputStream(myFile));
                    Toast.makeText(A1_QRGenerator.this, "PDF File saved in mobile Location", Toast.LENGTH_SHORT).show();

                } catch (Exception e) {
                    e.printStackTrace();
                    qr_edittext.setText("ERROR");
                }

                pdfDocument.close();
            }
        });


    } catch (Exception e) {
        e.printStackTrace();
    }
}