마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

pdf 저장 질문 드립니다.

0 추천

화면을 pdf로 저장하는 코드입니다.. 이전에는 잘 돌아갔는데

안드로이드 11은 저장이 안되네요ㅠ

찾아보니까 api 30부터는 권한이 강화되어서 바꼈다고 해서 이리저리 찾아보면서 바꿔봤는데도 

동작이 안되네요ㅠㅠ

어느 부분이 잘못된걸까요?

 

Bitmap bm = Bitmap.createBitmap(relativeLayout.getWidth(), relativeLayout.getHeight(), Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bm);
relativeLayout.draw(canvas);
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
bm.compress(Bitmap.CompressFormat.JPEG, 100, bytes);

File f2 = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS)+ File.separator +".jpg");
try {
   f2.createNewFile();
    FileOutputStream fo = new FileOutputStream(f2);
    fo.write(bytes.toByteArray());

    Document document = new Document();
   String dirpath = pdfsave.this.getExternalFilesDir(null).getPath()+"/AudioData";
    File dir = new File(dirpath);
    if(!dir.exists()){
        dir.mkdir();
    }

    PdfWriter.getInstance(document, new FileOutputStream(dirpath + "/" + 저장 할 파일 이름 + ".pdf"));
    document.open();

    Image image = Image.getInstance(f2.toString());
    float scaler = ((document.getPageSize().getWidth() - document.leftMargin()
            - document.rightMargin() - 0) / image.getWidth()) * 100;
    image.scalePercent(scaler);
    image.setAlignment(Image.ALIGN_CENTER | Image.ALIGN_TOP);
    document.add(image);
    document.close();
    f2.delete();
} catch (Exception e) {
    e.printStackTrace();
}
안드로이드222 (180 포인트) 님이 2022년 8월 31일 질문

1개의 답변

0 추천
안드로이드 11에 스토리지 권한 강화로 인한 변경사항이 있었고 권한과 관련해서 조금씩 더 강화되고 있습니다.
아래 stackoverflow 답변들을 달 살펴보시고 적절한 샘플을 사용하세요.
https://stackoverflow.com/questions/65637610/saving-files-in-android-11-to-external-storagesdk-30
spark (224,800 포인트) 님이 2022년 8월 31일 답변
...