【问题标题】:Android: Create document for printingAndroid:创建打印文档
【发布时间】:2015-08-12 09:13:31
【问题描述】:

在我的应用程序中,我需要能够创建可打印文档的大量数据。

我发现我可以使用 Android 4.4 及更高版本中包含的打印服务。我可以创建一个 HTML 文档并打印它,也可以在每个页面的 Canvas 上绘图。

Printing HTML DocumentPrinting Custom Document

但我的问题是,我有很多内容,需要正确格式化。如果我必须将大型 HTML 文档编写为字符串,那就太麻烦了……我需要创建一个很好的格式并从我的应用程序中添加数据。

对我来说理想的解决方案是制作一个布局文件,对其进行膨胀,用数据填充 TextViews 和 ListViews,然后打印该视图。但是打印 HTML 文档只允许从 WebView 打印,我还没有找到任何在 Canvas 上添加 ViewLayout 的方法(反之亦然,我认为这是因为 Canvas 是一种布局可以包含在视图中但不能包含其他布局元素的元素)。

有没有办法打印我的视图或其布局?

如果没有,有没有办法创建一个比用字符串写出更容易的 HTML 文档?还是一种将View 的所有内容绘制到Canvas 的方法?

【问题讨论】:

  • 我们使用cloudformatter.com/css2pdf,这是一个远程格式化服务。适用于 Android,但确实需要互联网,因为实际的格式化服务器在云端。
  • 恐怕这对我没有帮助。我没有要打印的网页,甚至没有 HTML 文档。那是我的问题。如果我有,我可以使用描述的打印功能。

标签: android html printing android-canvas


【解决方案1】:

实际上有一种方法可以将View 的所有内容添加到Canvas。它是:

view.draw(canvas);

来自Android Developer:View

public void draw(画布画布)

在 API 级别 1 中添加手动呈现此视图(及其所有 孩子)到给定的画布。视图必须已经完成了完整的 调用此函数之前的布局。在实现视图时, 实现 onDraw(android.graphics.Canvas) 而不是覆盖它 方法。如果确实需要重写此方法,请调用超类 版本。

参数

canvas View 被渲染到的 Canvas。

这实际上是我一直在寻找的方法。

【讨论】:

    猜你喜欢
    • 2018-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-09
    相关资源
    最近更新 更多