Java 从图库中拍摄多张图像并制作pdf
我正在尝试从图库中获取多幅图像,并将其制作成PDF。以下是代码。在代码中,我可以从用户那里获取多张图像,并将它们制作成PDF格式。但是PDF只包含一个图像,即使我选择了多个图像,它在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 < > ();
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块中放置祝酒词以通知用户。谢谢您的回答