#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();
}
}