【问题标题】:PdfDocument android 11 breaking changesPdfDocument android 11 重大更改
【发布时间】:2020-10-02 02:24:31
【问题描述】:

我在新的 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);

【问题讨论】:

  • The output file is not correct. I。您的代码中没有文件。

标签: android pdf-generation


【解决方案1】:

问题似乎与返回错误值的 TypedValue.applyDimension 有关。

    pageWidth = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM, 210, displayMetrics);
    pageHeight = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_MM, 297, displayMetrics);

所以它与 PdfDocument 无关。

【讨论】:

  • 所以你的意思是说而不是 pageCanvas.getWidth();和 pageCanvas.getHeight();在你的答案中使用上面的那个?
  • 这似乎是 Android 版本中的一个错误。最新的 Android 11 Beta 版本改进了该行为。
  • 我面临着复杂布局的问题,对我来说,我能知道您是如何计算传递给 pageinfo 构建器的宽度和高度吗?
猜你喜欢
  • 2014-05-13
  • 2016-06-22
  • 2011-08-11
  • 2017-03-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-02
相关资源
最近更新 更多