Android - PdfDocument - 将 LinearLayout 分解为多个 pdf 页面

San*_*man 5 pdf android

我有一个 android 线性布局,我想将其转换为 PDF。很多时候,这个 PDF 会跨越多个页面。虽然我能够将内容转换为单页 PDF,但在将 PDF 分解为多页 PDF 时遇到了一些困难。我已经给出了下面的相关代码块,为了简单起见,硬编码了一些数字。在这里, PdfDocument.PageInfo.Builder 接受 3 个参数 - 宽度、高度和页码(之前,它曾经接受新的 Rect(0,0,800,100) ,它不再在 API 23 中工作)。现在,当我遍历 for 循环时,我不确定如何为多页 PDF 获取不同的内容。下面给出的当前代码段为每个页面生成相同的内容,因为它基于宽度和高度而不是基于坐标。

    PdfDocument.PageInfo pageInfo;
    int noOfPages = (int)Math.floor(content.getHeight()/1000)+1;
    for (int i=1;i<=noOfPages;i++) {
        pageInfo = new PdfDocument.PageInfo.Builder
                (800,1000,i).create();
        PdfDocument.Page page = document.startPage(pageInfo);
        content.draw(page.getCanvas());
        document.finishPage(page);
    }
Run Code Online (Sandbox Code Playgroud)

Vas*_*nth 7

自从我上次处理 PDFDocument 内容以来,已经超过 2 年了,很抱歉我没有准确回答您的问题,但我会分享我对它的一点了解,希望对您有所帮助。

  1. 在 Android PDFDocument 中,我们将为单个 PDFPage 提供 View。
  2. 创建 PDFPage 时,我们将为 PDFPage 设置宽度和高度(A4 尺寸为 598px * 842px)。
  3. 因此,您用于编写 PDFPage 的视图也应与 PDFPage 大小相同。
  4. 因此,我认为我们有责任为具有与 PDFPage 大小(宽度和高度)匹配的正确尺寸(宽度和高度)的单个页面创建视图。
  5. PDFDocument 是转储,您为 PDFPage 提供的任何视图都会写入,因此我们有责任为单个页面创建视图并将其提供给 PDFDocument。

样本

看看我 2 年前写的代码,它可能对你有帮助 - https://gist.github.com/apvasanth03/ed903535aed12c93e30b102d9596c399

笔记

如果您的视图包含多行的 TextView,那么如何将您的视图分解为不同的页面会很困难。我没有答案。

如果您找到任何解决方案,请分享。