【发布时间】:2019-10-03 07:15:21
【问题描述】:
在我的应用程序中,用户从相机或图库中获取图像,然后将这些图像转换为 PDF 现在我的问题是在某些设备上,相机捕获的图像旋转了 90 度,这些设备是一些专门的三星设备S7,
我知道我需要编辑图像的 EXIF 数据,但我是 android 新手,整个 EXIF 数据的事情完全超出了我的想象,任何帮助都会得到帮助
这是我调用所选图像并将其转换为 PDF 的地方
PdfDocument document=new PdfDocument();
// crate a page description
PdfDocument.PageInfo pageInfo;
PdfDocument.Page page;
Canvas canvas;
int i;
位图图像;
for (i=0; i < list.size(); i++) {
pageInfo=new PdfDocument.PageInfo.Builder(992, 1432, 1).create();
page=document.startPage(pageInfo);
canvas=page.getCanvas();
image=BitmapFactory.decodeFile(list.get(i));
image = Bitmap.createScaledBitmap(image, 980, 1420, true);
image.setDensity(DisplayMetrics.DENSITY_300);
canvas.setDensity(DisplayMetrics.DENSITY_300);
canvas.drawBitmap(image, 0, 0, null);
document.finishPage(page);
}
@SuppressWarnings("deprecation") String directory_path=Environment.getExternalStorageDirectory().getPath() + "/mypdf/";
File file=new File(directory_path);
if (!file.exists()) {
//noinspection ResultOfMethodCallIgnored
file.mkdirs();
}
@SuppressLint("SimpleDateFormat") String timeStamp=(new SimpleDateFormat("yyyyMMdd_HHmmss")).format(new Date());
String targetPdf=directory_path + timeStamp + ".pdf";
File filePath=new File(targetPdf);
try {
document.writeTo(new FileOutputStream(filePath));
} catch (IOException e) {
Log.e("main", "error " + e.toString());
Toasty.error(this, "Error making PDF" + e.toString(), Toast.LENGTH_LONG).show();
}
// close the document
document.close();
【问题讨论】:
-
如果可行,请接受并支持我的回答,请注意,您生成的 pdf 不会保存在 android 10 中,因为它使用范围存储进行外部存储访问
-
谢谢老兄,这并不重要,因为我的客户群并不真正需要访问存储在手机上的内容,因为我的服务器无论如何都会将其邮寄给他们,拥有它更棒而不是应用程序的重要组成部分,但感谢您的提醒