簡體   English   中英

從 flutter 中的 Firebase Firestore 集合創建一個 PDF 文件

[英]Create a PDF file from Firebase Firestore collection in flutter

我在 Firestore 中有各種 collections,我想創建一個按鈕,將從特定集合中獲取的數據保存到 PDF 文件中。 我不知道如何使用PDF package 將通過查詢獲取的數據保存到 PDF 文件中。

我有一個演示代碼,它從 Firestore 集合中獲取數據並將其顯示在列表視圖中,現在我想在那里創建一個按鈕,允許用戶將獲取的數據下載到 PDF 並將該 PDF 保存到設備。

下面是顯示從該集合中獲取的數據的列表視圖的代碼

 Container buildUserPosts() {
  Future<List<NewsPost>> getPosts() async {
    List<NewsPost> posts = [];
    var snap = await FirebaseFirestore.instance
        .collection('News')
        .orderBy("timestamp")
        .get();

    for (var doc in snap.docs) {
       posts.add(NewsPost.fromDocument(doc));
    }

    return posts.reversed.toList();
  }
  return Container(
      child: FutureBuilder<List<NewsPost>>(
    future: getPosts(),
    builder: (context, snapshot) {
      if (!snapshot.hasData) {
        return Container(
            alignment: FractionalOffset.center,
            padding: const EdgeInsets.only(top: 10.0),
            child: CircularProgressIndicator());
      } else {
        return Column(
            children: snapshot.data!.map((NewsPost imagePost) {
          return imagePost;
        }).toList());
      }
    },
  ));

現在我希望將此數據保存在 PDF 中,但不知道如何實現。 請建議如何完成?

您需要使用包小部件來構建生成 pdf

import 'dart:io';

import 'package:pdf/widgets.dart' as pw;

Future<void> generatePdf(MyData? mydata) async {
  final pdf = pw.Document();
// build your pdf view here
  pdf.addPage(
    pw.Page(
      build: (pw.Context context) => pw.Center(
        child: pw.Text(mydata?.title ??''),
      ),
    ),
  );
//save pdf
  final file = File('example.pdf');
  await file.writeAsBytes(await pdf.save());
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM