Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/379.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/228.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 从图库中拍摄多张图像并制作pdf_Java_Android_Pdf - Fatal编程技术网

Java 从图库中拍摄多张图像并制作pdf

Java 从图库中拍摄多张图像并制作pdf,java,android,pdf,Java,Android,Pdf,我正在尝试从图库中获取多幅图像,并将其制作成PDF。以下是代码。在代码中,我可以从用户那里获取多张图像,并将它们制作成PDF格式。但是PDF只包含一个图像,即使我选择了多个图像,它在PDF中只显示一个图像。我已经附上下面的代码 if (requestCode == REQUEST_CODE && resultCode == RESULT_OK && data != null) { bitmaps = new ArrayList < > ();

我正在尝试从图库中获取多幅图像,并将其制作成PDF。以下是代码。在代码中,我可以从用户那里获取多张图像,并将它们制作成PDF格式。但是PDF只包含一个图像,即使我选择了多个图像,它在PDF中只显示一个图像。我已经附上下面的代码

if (requestCode == REQUEST_CODE && resultCode == RESULT_OK && data != null) {

    bitmaps = new ArrayList < > ();
    ClipData clipData = data.getClipData();

    if (clipData != null) {
        for (int i = 0; i < clipData.getItemCount(); i++) {
            try {
                Uri uri = clipData.getItemAt(i).getUri();
                InputStream inputStream = getContentResolver().openInputStream(uri);
                Bitmap bitmap = BitmapFactory.decodeStream(inputStream);
                bitmaps.add(bitmap);

                pdfDocument = new PdfDocument();
                PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(bitmap.getWidth(), bitmap.getHeight(), bitmaps.size())
                    .create();

                for (int k = 0; k <= i; k++) {
                    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, bitmap.getWidth(), bitmap.getHeight(), true);
                    paint.setColor(Color.BLUE);
                    canvas.drawPaint(paint);
                    canvas.drawBitmap(bitmap, 0, 0, null);

                    pdfDocument.finishPage(page);
                }
                bitmap.recycle();
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IndexOutOfBoundsException ex) {
                ex.printStackTrace();
            }
        }
        File root = new File(Environment.getExternalStorageDirectory(), "PDF Folder");

        if (!root.exists()) {
            root.mkdir();
        }

        File file = new File(root, "image" + ".pdf");
        try {
            FileOutputStream fileOutputStream = new FileOutputStream(file);
            pdfDocument.writeTo(fileOutputStream);
            pdfDocument.close();
        } catch (IOException io) {
            io.printStackTrace();
        } catch (NullPointerException n) {
            n.printStackTrace();
        }
    }
}
if(requestCode==REQUEST\u code&&resultCode==RESULT\u OK&&data!=null){
位图=新阵列列表<>();
ClipData ClipData=data.getClipData();
if(clipData!=null){
对于(int i=0;i对于(int k=0;k),您为每个图片创建一个新的pdf文档。对于每个
i
。您应该首先将所有位图添加到列表中。完成后,创建一个pdf文档。
root.mkdir();
检查mkdir的返回值。如果为false,则停止并显示一个祝酒词以通知用户。同时在所有catch块中放置祝酒词以通知用户。感谢您的回答您为每张图片创建一个新的pdf文档。对于每张
i
。您应该首先将所有位图添加到列表中。完成后,创建一个pdf文档。
root.mkdir();
检查mkdir的返回值。如果为false,则停止并显示祝酒词以通知用户。同时在所有catch块中放置祝酒词以通知用户。谢谢您的回答