Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/222.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Android中将选定图像从图像切换器转换为PDF?_Java_Android_Android Studio_Android Bitmap - Fatal编程技术网

Java 如何在Android中将选定图像从图像切换器转换为PDF?

Java 如何在Android中将选定图像从图像切换器转换为PDF?,java,android,android-studio,android-bitmap,Java,Android,Android Studio,Android Bitmap,我正在从gallery中选择多个图像并将其显示在image switcher中。 我想将图像切换器中显示的所有这些图像转换为PDF格式。 我正在使用android.graphics.pdf.PdfDocument,但我不知道如何正确使用它将多个图像转换为pdf。 如何将多个图像转换为PDF? 我的代码示例: 来自我的Android studio IDE的IMG2PDF.java: public class IMG2PDF extends AppCompatActivity { Toolb

我正在从gallery中选择多个图像并将其显示在image switcher中。 我想将图像切换器中显示的所有这些图像转换为PDF格式。 我正在使用android.graphics.pdf.PdfDocument,但我不知道如何正确使用它将多个图像转换为pdf。 如何将多个图像转换为PDF? 我的代码示例:

来自我的Android studio IDE的IMG2PDF.java:

public class IMG2PDF extends AppCompatActivity {
    Toolbar toolbar;
    Button selectfilebtn,convert2pdfbtn,nextbtn,prevbtn;
    ArrayList<Uri> imageuri =new ArrayList<>();;
    ImageSwitcher imageSwitcher;
    private static final int PICK_IMAGES=0;
    int position=0;
    int img;
    @Override
    public void onCreate( Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_imagetopdfconverter);
        selectfilebtn = findViewById(R.id.select_file);
        convert2pdfbtn = findViewById(R.id.convert_to_pdf);
        nextbtn = findViewById(R.id.next);
        prevbtn = findViewById(R.id.prev);
        imageSwitcher = findViewById(R.id.imagetoconvert);

        imageSwitcher.setFactory(new ViewSwitcher.ViewFactory() {
            @Override
            public View makeView() {
                ImageView imageView = new ImageView(IMG2PDF.this);
                return imageView;
            }
        });
        ActivityResultLauncher<Intent> launchactivity = registerForActivityResult(new ActivityResultContracts.StartActivityForResult(), new ActivityResultCallback<ActivityResult>() {
            @Override
            public void onActivityResult(ActivityResult result) {
                Intent data = result.getData();
                if (data.getClipData() != null) {

                    img = data.getClipData().getItemCount();
                    for (int i = 0; i < img; i++) {
                        Uri imguri = data.getClipData().getItemAt(i).getUri();
                        imageuri.add(imguri);
                    }
                    imageSwitcher.setImageURI(imageuri.get(0));
                    position = 0;
                }
            }
        });
        selectfilebtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(IMG2PDF.this, "Soon the App will be world best App InShaAllah ta'aala", Toast.LENGTH_SHORT).show();
                Intent intent = new Intent(Intent.ACTION_GET_CONTENT);
                intent.setType("image/*");
                intent.putExtra(Intent.EXTRA_ALLOW_MULTIPLE, true);
                intent.setAction(Intent.ACTION_GET_CONTENT);
                launchactivity.launch(Intent.createChooser(intent, "Pictures: "));
            }
        });
        nextbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (position > 0) {
                    position--;
                    imageSwitcher.setImageURI(imageuri.get(position));
                }
            }
        });
        convert2pdfbtn.setOnClickListener(new View.OnClickListener() {
            @RequiresApi(api = Build.VERSION_CODES.KITKAT)
            @Override
            public void onClick(View v) {
                //I dont know what to provide in Path
                final File file = new File(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOWNLOADS),"MY_PDF"+".pdf");
                if(file!=null)
                {
                    try {
                        FileOutputStream fileOutputStream=new FileOutputStream(file);
                        PdfDocument pdfDocument=new PdfDocument();
                        for(int i=0;i<imageuri.size();i++)
                        {

                            Bitmap bitmap= BitmapFactory.decodeFile(imageuri.get(i).getPath());
                            PdfDocument.PageInfo pageInfo=new PdfDocument.PageInfo.Builder(bitmap.getWidth(),bitmap.getHeight(),(i+1)).create();
                            PdfDocument.Page page=pdfDocument.startPage(pageInfo);
                            Canvas canvas=page.getCanvas();
                            Paint paint=new Paint();
                            paint.setColor(Color.BLUE);
                            canvas.drawPaint(paint);
                            canvas.drawBitmap(bitmap,0f,0f,null);
                            pdfDocument.finishPage(page);
                            bitmap.recycle();
                        }
                        pdfDocument.writeTo(fileOutputStream);
                        pdfDocument.close();

                    } catch (FileNotFoundException e) {
                        e.printStackTrace();
                    } catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        });
        prevbtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Toast.makeText(IMG2PDF.this, "WORKING", Toast.LENGTH_SHORT).show();
                if (position < imageuri.size() - 1) {
                    position++;
                    imageSwitcher.setImageURI(imageuri.get(position));
                }
            }
        });
    }
}
公共类IMG2PDF扩展了AppCompative活动{
工具栏;
按钮选择FileBTN、convert2pdfbtn、nextbtn、prevbtn;
ArrayList imageuri=新的ArrayList();;
图像切换器;
私有静态最终整型拾取图像=0;
int位置=0;
int img;
@凌驾
创建时的公共void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity\u imagetopdfconverter);
selectfilebtn=findviewbyd(R.id.select\u文件);
convert2pdfbtn=findviewbyd(R.id.convert\u to\u pdf);
nextbtn=findviewbyd(R.id.next);
prevbtn=findViewById(R.id.prev);
imageSwitcher=findViewById(R.id.imagetoconvert);
imageSwitcher.setFactory(新的ViewSwitcher.ViewFactory(){
@凌驾
公共视图makeView(){
ImageView ImageView=新的ImageView(IMG2PDF.this);
返回图像视图;
}
});
ActivityResultLauncher launchactivity=registerForActivityResult(新ActivityResultContracts.StartActivityForResult(),新ActivityResultCallback()){
@凌驾
ActivityResult上的公共无效(ActivityResult结果){
Intent data=result.getData();
if(data.getClipData()!=null){
img=data.getClipData().getItemCount();
对于(int i=0;i0){
位置--;
setImageURI(imageuri.get(position));
}
}
});
convert2pdfbtn.setOnClickListener(新视图.OnClickListener(){
@RequiresApi(api=Build.VERSION\u CODES.KITKAT)
@凌驾
公共void onClick(视图v){
//我不知道在路径中提供什么
最终文件=新文件(Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_下载),“MY_PDF”+“.PDF”);
如果(文件!=null)
{
试一试{
FileOutputStream FileOutputStream=新的FileOutputStream(文件);
PdfDocument PdfDocument=新PdfDocument();
对于(int i=0;i