-
在使用andorid源生的生成pdf时,可以看看官网的使用,很简单的几个功能,并且可以生成对应的页面,暂时不知道要是实现将List的页面全部解出来的 要怎么设定高度(考虑:可以使用计算所有的子空间的高度(未验证))
-
这次碰到最大的坑!!
当页面中存在Imagerview的时候,而且你是使用LayoutInflater去反射出Lyaout布局时,在代码中动态紧挨在图片的时候不用使用!!!Glide加载图片,导出pdf的时候出现图片没有显示出来!!
PdfDocument document = new PdfDocument();
PdfDocument.PageInfo pg = new PdfDocument.PageInfo.Builder(getWindow().getWindowManager().getDefaultDisplay().getWidth(), getWindow().getWindowManager().getDefaultDisplay().getHeight(), 1)
.create();
String s1 = getExternalCacheDir().getAbsolutePath();
View layoutInflater = getLayoutInflater().inflate(R.layout.layout_test_output_pdf, null);
ImageView s5 = layoutInflater.findViewById(R.id.img);
//错误的代码
//Glide.with(layoutInflater.getContext().getApplicationContext()).load(file).into(s5);
//正确的代码
Bitmap bitmap = BitmapFactory.decodeFile(s1 + "/address.jpeg");
s5.setImageBitmap(bitmap);
PdfDocument.Page page = document.startPage(pg);
layoutInflater.measure(View.MeasureSpec.makeMeasureSpec(getWindowManager().getDefaultDisplay().getWidth(), View.MeasureSpec.EXACTLY), View.MeasureSpec.makeMeasureSpec(getWindowManager().getDefaultDisplay().getHeight(), View.MeasureSpec.EXACTLY));
layoutInflater.layout(0, 0, layoutInflater.getMeasuredWidth(), layoutInflater.getMeasuredHeight());
Canvas canvas = page.getCanvas();
layoutInflater.draw(canvas);
document.finishPage(page);