【问题标题】:How to create images in A4 or PDF in Flutter from widgets?如何从小部件在 Flutter 中创建 A4 或 PDF 格式的图像?
【发布时间】:2021-08-13 06:34:53
【问题描述】:

我的应用程序需要从 Widgets 创建 A4 格式的图像或 pdf,实际上是一个具有动态高度的 Column(取决于用户在 SingleChildScrollView -> Column 上添加的内容,用户可以添加图像和文本到那个专栏)。

如何在 Flutter 中从具有动态高度的 Column 的 Widgets 创建 A4 格式或 PDF 格式的图像? (我可以有一个列,其中包含适合屏幕的小部件列表和不适合屏幕的其他小部件,例如 20 个将离开屏幕的大小部件。)

【问题讨论】:

    标签: image flutter dart pdf pdf-generation


    【解决方案1】:

    方法1:为一页生成,然后(自动)滚动到下一页,然后为第二页生成,等等。

    方法2:对每一页,用一个RepaintBoundary和一个Key进行换行。假设您有 10 个页面,那么您有 10 个键,并使用这些键生成所有页面。

    如果只生成可见的东西,请尝试以下操作:

    List<Widget> yourPages = ...;
    List<Key> yourKeys = yourPages.map((_) => GlobalKey()).toList(); // or other kinds of keys? what do you use
    Stack(children:[
    for(var i=0;i< yourPages.length;i++) 
    RepaintBoundary(key: yourKeys[i], child: yourPages[i]),
    ])
    

    这样,一切都可以生成。

    【讨论】:

    • 我尝试的第一种方法,但是当页面大于屏幕时,我无法生成具有正确高度的页面,是否可以提供代码示例?
    • 第二种方法不行,因为页面是动态生成的,我没有具体的页数。
    • @djalmafreestyler 对于方法 2,请参阅编辑后的代码。对于方法一,你能让你的小部件更小吗?例如,Transform 小部件
    • 我有一个列,它的高度取决于用户添加的内容,例如,用户可以在列内添加图像,它是一个可以有 3 页或 20 页的列页或更多。
    • @djalmafreestyler 然后尝试方法1。例如,假设您的页面高度为500,然后为页面生成,向下滚动500px,然后再次生成,等等
    猜你喜欢
    • 2017-07-31
    • 2021-01-15
    • 2022-11-21
    • 1970-01-01
    • 2013-02-21
    • 2018-10-04
    • 1970-01-01
    • 2019-08-23
    • 2022-01-23
    相关资源
    最近更新 更多