我在新的Android 10中使用PdfDocument生成的pdf有问题,输出文件不正确,在其他Android版本中,没有问题。
我是这样生成每一页的
View contentView = pageViewList.get(i);
PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(width, height, i + 1).create();
// Start a page
PdfDocument.Page page = pdfDocument.startPage(pageInfo);
// Draw view on the page
Canvas pageCanvas = page.getCanvas();
int pageWidth = pageCanvas.getWidth();
int pageHeight = pageCanvas.getHeight();
int measureWidth = View.MeasureSpec.makeMeasureSpec(pageWidth, View.MeasureSpec.EXACTLY);
int measuredHeight = View.MeasureSpec.makeMeasureSpec(pageHeight, View.MeasureSpec.EXACTLY);
contentView.measure(measureWidth, measuredHeight);
contentView.layout(0, 0, pageWidth, pageHeight);
contentView.draw(pageCanvas);
// Finish the page
pdfDocument.finishPage(page);
这个问题似乎与TypedValue.applyDimension有关,它返回了一个错误的值。
pageWidth = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM, 210, displayMetrics);
pageHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM, 297, displayMetrics);
所以和PdfDocument无关。