使用 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 的相关文章

  • 为什么是 javascript:history.go(-1);无法在移动设备上工作?

    首先 一些背景 我有一个向用户呈现搜索页面 html 表单 的应用程序 填写标准并单击 搜索 按钮后 结果将显示在标准部分下方 在结果列表中 您可以通过单击将您带到新页面的链接来查看单个结果的详细信息 在详细信息页面中 我添加了一个 返回结
  • 从 BroadcastReceiver 类调用活动方法

    我知道我可以做一个内部接收器类来调用接收器中的任何方法 但我的主要活动太大了 要做的事情也很多 因此 我需要一个扩展广播接收器的类 但它不是内部类 并且可以从我的主要活动中调用一种方法 我不知道是否可能 但我的活动是家庭活动和 single
  • tomcat 中受密码保护的应用程序

    我正在使用 JSP Servlet 开发一个Web应用程序 并且我使用了Tomcat 7 0 33 as a web container 所以我的要求是tomcat中的每个应用程序都会password像受保护的manager applica
  • 如何访问JAR文件中的Maven资源? [复制]

    这个问题在这里已经有答案了 我有一个使用 Maven 构建的 Java 应用程序 我有一个资源文件夹com pkg resources 我需要从中访问文件 例如directory txt 我一直在查看各种教程和其他答案 但似乎没有一个对我有
  • 对于一个单元格,RecyclerView onBindViewHolder 调用次数过多

    我正在将 RecyclerView 与 GridLayoutManager 一起使用 对于网格中的每个项目 我需要调用 REST api 来检索数据 然后 从远程异步获取数据后 我使用 UIL 加载 显示图像 一切似乎都很好 但我发现 on
  • 尝试将 Web 服务部署到 TomEE 时出现“找不到...的 appInfo”

    我有一个非常简单的项目 用于培训目的 它是一个 RESTful Web 服务 我使用 js css 和 html 创建了一个客户端 我正在尝试将该服务部署到 TomEE 这是我尝试部署时遇到的错误 我在这里做错了什么 刚刚遇到这个问题 我曾
  • 为什么 Java 8 不允许非公共默认方法?

    让我们举个例子 public interface Testerface default public String example return Hello public class Tester implements Testerface
  • java for windows 中的文件图标叠加

    我正在尝试像 Tortoise SVN 或 Dropbox 一样在文件和文件夹上实现图标叠加 我在网上查了很多资料 但没有找到Java的解决方案 Can anyone help me with this 很抱歉确认您的担忧 但这无法在 Ja
  • java.io.Serialized 在 C/C++ 中的等价物是什么?

    C C 的等价物是什么java io Serialized https docs oracle com javase 7 docs api java io Serializable html 有对序列化库的引用 用 C 序列化数据结构 ht
  • 专门针对 JSP 的测试驱动开发

    在理解 TDD 到底是什么之前 我就已经开始编写测试驱动的代码了 在没有实现的情况下调用函数和类可以帮助我以更快 更有效的方式理解和构建我的应用程序 所以我非常习惯编写代码 gt 编译它 gt 看到它失败 gt 通过构建其实现来修复它的过程
  • 我如何在java中读取二进制数据文件

    因此 我正在为学校做一个项目 我需要读取二进制数据文件并使用它来生成角色的统计数据 例如力量和智慧 它的设置是让前 8 位组成一个统计数据 我想知道执行此操作的实际语法是什么 是不是就像读文本文件一样 这样 File file new Fi
  • 干净构建 Java 命令行

    我正在使用命令行编译使用 eclipse 编写的项目 如下所示 javac file java 然后运行 java file args here 我将如何运行干净的构建或编译 每当我重新编译时 除非删除所有内容 否则更改不会受到影响 cla
  • 卡片视图 单击卡片移至新活动

    我是 Android 编程新手 正在研究卡片布局 我想知道如何使其可点击 android clickable true android foreground android attr selectableItemBackground 我的卡
  • 通过系统应用程序以编程方式静默安装 apk(无需 root)

    我有带有 android sharedUserId android uid system UID 1000 的系统级应用程序 设备未root INSTALL PACKAGES 权限包含在清单中 我可以静默安装下载的 apk 吗 我已经发现这
  • 如何使用mockito模拟构建器

    我有一个建造者 class Builder private String name private String address public Builder setName String name this name name retur
  • 问题:为什么React Native Video不能全屏播放视频?

    我正在react native 0 57 7 中为android和ios创建一个应用程序并使用反应本机视频 https github com react native community react native video播放上传到的视频
  • 使用 CXF-RS 组件时,为什么我们使用 而不是普通的

    作为后续这个问题 https stackoverflow com questions 20598199 对于如何正确使用CXF RS组件我还是有点困惑 我很困惑为什么我们需要
  • CamcorderProfile.videoCodec 返回错误值

    根据docs https developer android com reference android media CamcorderProfile html 您可以使用CamcorderProfile获取设备默认视频编解码格式 然后将其
  • 如何防止在Spring Boot单元测试中执行import.sql

    我的类路径中有一个 import sql 文件 其中包含一些 INSERT 语句 当使用 profile devel 运行我的应用程序时 它的数据被加载到 postgres 数据库中 到目前为止一切正常 当使用测试配置文件执行测试时 imp
  • Spring Boot 无法更新 azure cosmos db(MongoDb) 上的分片集合

    我的数据库中存在一个集合 documentDev 其分片键为 dNumber 样本文件 id 12831221wadaee23 dNumber 115 processed false 如果我尝试使用以下命令通过任何查询工具更新此文档 db

随机推荐

  • 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