dart 如何使pdf从小部件适合屏幕时,小部件是滚动?

iyr7buue  于 2023-03-10  发布在  其他
关注(0)|答案(1)|浏览(183)

我用这个示例代码成功地制作了一个PDF。它是从我的欲望小工具制作PDF。但是如果小工具太长(可滚动),那么PDF中的图像会变小,我必须放大它才能看到内容... smaple1如果我做fit: pw.BoxFit.fill,PDF中的小工具会得到squeeze。我可以使PDF适合A4大小的页面,刚刚适合屏幕或可滚动PDF吗?
我的功能,使pdf

final GlobalKey<State<StatefulWidget>> printKey = GlobalKey();
final doc = pw.Document();

void _printScreen() async { //=============> Pdf function
  final image = await WidgetWraper.fromKey(
    key: printKey,
    pixelRatio: 2.0,
  );

  final directory = await getTemporaryDirectory();
  final file = File('${directory.path}/my_goal.pdf');
  
  final pdf = pw.Document();
   pdf.addPage(pw.Page(
    pageFormat: PdfPageFormat.a4,
    build: (pw.Context context) {
      return pw.FullPage(
      ignoreMargins: true,
      child: pw.Image(image, fit: pw.BoxFit.contain),
      );
    },
  ));
  
  await file.writeAsBytes(await pdf.save());

  await Share.shareFiles(
    [file.path],
    text: 'Check out my goal details',
    subject: 'My goal details',
  );
}

按下按钮时调用制作和共享pdf的函数

IconButton(
              onPressed: () async {
                 _printScreen();
              },
              icon: const Icon(Icons.share),
            ),

然后 Package 我想要PDF格式的小部件

return SingleChildScrollView(
              physics: const BouncingScrollPhysics(),
              child:  RepaintBoundary( ||======>>>>>>>>>>>>>>>||
                key: printKey,
                child: Padding(
                  padding: const EdgeInsets.all(12.0),
                  child:
                      Column(crossAxisAlignment: CrossAxisAlignment.start, 
                      children: [
5lwkijsr

5lwkijsr1#

您可以使用MultiPage

doc.addPage(
      pw.MultiPage(
        build: (context) => [
          _createTitleHeader(context),
          //....
        ],
        pageTheme: pageTheme,
        footer: _buildFooter,
      ),
    );

相关问题