使用 PdfDocument 在 Android 中生成自定义尺寸的 PDF

2024-01-03

Pdf文档 https://developer.android.com/reference/android/graphics/pdf/PdfDocument是一个可以从 Android 视图生成 PDF 的类。您只需添加一个视图即可PdfDocument然后将 PDF 保存到内存中。

但是,我不想添加已经在屏幕中渲染的视图,因为这样的视图仅适用于智能手机屏幕,而我想为打印机生成 PDF 文档。

因此,我想传递一个View而不渲染。虽然我当然可以这样做,但尺寸和比例如何决定?我如何在 PDF 中控制它?

UPDATE:

根据 clotodex 的以下答案,我做了:

    LayoutInflater inflater = getLayoutInflater();
    View linearview;
    linearview = inflater.inflate(R.layout.printed_order,
                                  findViewById(android.R.id.content),
                                  false);

    PdfDocument document = new PdfDocument();
    PdfDocument.PageInfo pageInfo = new PdfDocument.PageInfo.Builder(2480, 3508, 0).create();
    PdfDocument.Page page = document.startPage(pageInfo);

    linearview.draw(page.getCanvas());
    document.finishPage(page);

    OutputStream outStream;
    File file = new File(getExternalFilesDir(null), "pedido.PDF");

    try {
        outStream = new FileOutputStream(file);
        document.writeTo(outStream);
        document.close();
        outStream.flush();
        outStream.close();

但我得到一个空的 PDF。如果我做

View view = findViewById(android.R.id.content);
view.draw(page.getCanvas());

代替

linearview.draw(page.getCanvas()); 

我得到了我所在的活动,这确认了一切都正确,除了我试图打印的视图之外。


看看这个问题在android中渲染离屏视图 https://stackoverflow.com/questions/7854664/render-view-to-bitmap-off-screen-in-android.

在 Android 中,视图的尺寸由父布局给出。 这意味着您可以使用所需的尺寸创建新的布局,并使用attachToRoot=false and root=your_new_layout.

渲染视图后,您现在可以像将渲染视图绘制为 pdf 一样继续操作(按照链接中的说明操作或在绘制到页面画布之前将其转换为位图)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 PdfDocument 在 Android 中生成自定义尺寸的 PDF 的相关文章

随机推荐

  • C# 和 SIMD:高加速和低加速。怎么了?

    问题介绍 我正在尝试加快我正在编写的 2d 光线追踪器的相交代码 我使用 C 和 System Numerics 库来提高 SIMD 指令的速度 问题是我得到了奇怪的结果 有超顶加速和相当低的加速 我的问题是 为什么一个是在屋顶之上 而另一
  • 计算多部分/表单数据编码文件的大小

    我正在编写一个应该接收文件并存储它的应用程序 一种存储方式是将其上传到另一台服务器 例如 filehoster 服务器端我使用Python和金字塔框架 我已经解决了客户端上传时获取文件的问题 并包装了返回的应用程序make wsgi app
  • CSS:居中块,但内容向左对齐

    我希望整个块位于其父级的中心 但我希望块的内容左对齐 例子最有效 在本页 ascii 艺术应该居中 正如它所显示的那样 但它应该对齐并且看起来像 YAML 或这个 http yaml online parser appspot com ya
  • C++对象构造方法之间的区别

    C 中不同的构造语法总是让我有点困惑 在另一个问题 https stackoverflow com questions 48255276 why does stdstring x00 report length of 0 48255303
  • java.lang.NoClassDefFoundError: android/graphics/drawable/Icon

    到目前为止 我仅对一位使用 root 手机 SM G900R7 Android 4 4 2 的用户遇到此错误 错误是这样的 Fatal Exception java lang NoClassDefFoundError android gra
  • 在 C#/WPF 中获取 PathGeometry(行)的长度

    如果我有一条闭合路径 我可以使用Geometry GetArea 来近似我的形状的面积 这太棒了 节省了我很多时间 但是周围有什么东西可以帮助我找到一条未闭合路径的长度吗 我现在能想到的最好办法就是确保我正在使用PathGeometry并致
  • 如何使用 PCL 读取 .ply 文件

    我可以使用这个程序读取 pcd 数据 include
  • Python 字符串不区分大小写

    我知道您可以使用 ctypes 库对字符串执行不区分大小写的比较 但是我也想执行不区分大小写的替换 目前我知道做到这一点的唯一方法是使用正则表达式 通过它来做到这一点似乎有点糟糕 Replace 是否有不区分大小写的版本 您可以将标志 re
  • 使用 Python 的“子进程”运行“导出”命令不起作用

    subprocess run export FOO BAR shell True 这根本行不通 我不知道为什么 我想做的就是从 python 3 5 1 脚本中设置一个环境变量 当我运行上面的行时 什么也没有发生 没有引发任何错误 当我自己
  • 如何在Python中返回递归函数的列表

    我试图从函数返回一个字符串列表 该函数计算没有连续 0 的所有可能排列 为此 我正在运行一个有效的递归函数 但我需要创建一个包含结果的列表 Function to print all n digit binary strings witho
  • 如何在 C# 中将 HTML 设置为剪贴板?

    我想将 HTML 格式的富文本放在剪贴板上 这样当用户粘贴到 Word 时 它将包含源 HTML 格式 Using the Clipboard SetText method http msdn microsoft com en us lib
  • 过时的 Kotlin 运行时

    当我想更新 kotlin 运行时时收到此消息 kotlin stdlib 1 1 2 4 库中的 Kotlin 运行时版本是 1 1 2 4 而插件版本是 1 1 3 release Studio 3 0 2 应更新运行时库以避免兼容性问题
  • 在 matplotlib 中将图形尺寸设置为大于屏幕尺寸

    我正在尝试创建数字matplotlib这在期刊文章中读起来很好 我有一些较大的图形 带有子图形 我想在纵向模式下占据几乎整个页面 具体来说 6 5 x9 对于美国信纸上具有 1 边距的整页图形 我可以设置轻松调整图形尺寸figsize范围
  • R 中可以有多行注释吗? [复制]

    这个问题在这里已经有答案了 我找到了这个旧线程 http r 789695 n4 nabble com How to comment in R tt882882 html none 一年多前 这解释了为什么 R 不支持多行注释 例如 PHP
  • Entity Framework 4 加载并包含组合

    如果我有 3 张表 表1 表2 表3 并且Table3有一个针对Table2的FK 而Table2也有一个针对Table1的FK 然后我像这样加载我的对象 using Entities entities new Entities Table
  • 如何在 Safari 中使用 AJAX 调用之前的 WebShareAPI?

    当用户单击我们的付费网站上的共享按钮时 我们会通过异步调用生成一个令牌 该令牌允许人们单击共享链接绕过付费墙 我添加了对 Web Share API 的支持 在触发之前首先调用令牌navigator share 沿着这些思路 fetchCa
  • 如何从 Z 缓冲区获取 Z 值

    我在 OpenGL 中绘图时遇到问题 我需要准确查看深度缓冲区中放置的值 谁能告诉我如何检索这些值 谢谢 克里斯 Use glReadPixels http www opengl org sdk docs man xhtml glReadP
  • C# 建立从笔记本电脑内部蓝牙 4.0 到蓝牙低功耗 (BLE) 外设的流

    我正在尝试编写一个连接到蓝牙低功耗设备 BLE 的程序 然后在更新时或在给定的时间间隔读取特征 我的外设是 Texas Instruments CC2540 BLE 设备 我的出发点是查看 TI 的示例程序 它有一个心率监视器 http p
  • 我可以在 El Capitan 上安装 Xcode 8.3

    我可以在不更新 Mac 操作系统的情况下安装 xcode 8 3 即 OS X El Capitan 版本 10 11 6 我在苹果网站上找不到任何参考资料 但是 这个link https stackoverflow com a 10335
  • 使用 PdfDocument 在 Android 中生成自定义尺寸的 PDF

    Pdf文档 https developer android com reference android graphics pdf PdfDocument是一个可以从 Android 视图生成 PDF 的类 您只需添加一个视图即可PdfDoc