【问题标题】:Convert Android view to PDF of A4 size将 Android 视图转换为 A4 大小的 PDF
【发布时间】:2020-08-16 15:46:52
【问题描述】:

我有一个 android 简历构建应用程序。我想从我的视图中生成 A4 大小的 PDF。这是我的布局的样子 - 在顶部我有一个顶部应用栏,整个视图封装在抽屉中。包含用户详细信息的主要部分封装在nestedScrollView中,其中包含多个LinearLayout和TextView。在下面的屏幕截图中,我使用模拟数据填充了它,但实际上,我从 Firebase 实时数据库中获取数据并将其显示在 UI 上。

我试图了解 iTextPdf 解决方案和此处提出的多个类似类型的问题,但我找不到可靠的东西。请帮帮我,这会很有帮助。

另外,请不要通过给出问题不包含任何代码的理由来结束此问题。不是因为我没有。我正在尝试从头开始解决这个问题。我已尽力描述我的问题。

【问题讨论】:

  • 嗨 Nihal,您找到解决方案了吗?

标签: java android pdf-generation


【解决方案1】:

试试这个:

创建一个 WebView 并在其中复制您的 edittext 的文本:

webview.loadData(youredittext.gettext().tostring, "text/html", "UTF-8");

并通过以下函数将 webview 转换为 pdf:

private void createWebPrintJob(WebView webView) {

PrintManager printManager = (PrintManager) this
        .getSystemService(Context.PRINT_SERVICE);

PrintDocumentAdapter printAdapter =
        webView.createPrintDocumentAdapter();

String jobName = getString(R.string.app_name) + " Print Test";

if (printManager != null) {
    printManager.print(jobName, printAdapter,
            new PrintAttributes.Builder().build());
}
}

之后用户可以选择页面大小,例如 A4

【讨论】:

  • 这也适用于TextView 吗?如果是,那么我是否必须为每个布局中的每个 TextView webview.loadData(yourTextView.gettext().tostring, "text/html", "UTF-8");
  • 是的。但是您应该将所有 textview 的文本放在单个字符串变量中
  • 嗯,我该怎么做呢?每个文本视图都包含不同的字符串,正如我在问题中已经提到的那样,我正在从数据库中获取数据,然后在文本视图中显示该数据
【解决方案2】:

有很多库可以将布局转换为 PDF,但让我们选择流行的库,以便在遇到困难时找到答案。

我列出的库是这样工作的:它们将您的布局截图作为位图图像并将其转换为 pdf。

- 第一种解决方案: iTextPDF https://github.com/itext/itext7(新版本)。

查看此详细教程,该教程还处理了对滚动视图进行截图的情况https://www.codeproject.com/Articles/989236/How-to-Convert-Android-View-to-PDF-2

这个stackoverflow回答https://stackoverflow.com/a/29731275/12802591

- 第二种解决方案: PdfMyXML 库https://github.com/HendrixString/Android-PdfMyXml 只需按照文档中的步骤操作即可。

它们可能是其他解决方案,但这些是流行的。

让我知道它是否适合您以及您是否遇到困难。谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-12-26
    • 2014-06-06
    • 2016-05-14
    • 2019-08-03
    • 2013-12-20
    • 2015-06-26
    • 2013-07-29
    • 2016-03-05
    相关资源
    最近更新 更多