【问题标题】:I want to get total pages count from PDF file我想从 PDF 文件中获取总页数
【发布时间】:2020-03-16 08:02:55
【问题描述】:

我正在尝试在我的 Flutter 应用中实现一项功能。我想接收 PDF 文件中的总页数。到目前为止,我检查的所有查看器都只提供视图,而不提供任何方式来接收总页数。 我现在正在使用 flutter_full_pdf_viewer 库进行查看。 请指导。

【问题讨论】:

    标签: pdf flutter dart pdf-generation


    【解决方案1】:

    你可以使用包https://pub.dev/packages/pdf_render
    这个包提供pageCount属性
    您可以使用filePathassetName 作为PDF 文件位置

    代码sn-p

    PdfDocumentLoader(
                //filePath: "yourFilePath",
                assetName: 'assets/hello.pdf',
                documentBuilder: (context, pdfDocument, pageCount) => LayoutBuilder(
                  builder: (context, constraints) => ListView.builder(
                    controller: controller,
                    itemCount: pageCount,
                    itemBuilder: (context, index) => Container(
                      margin: EdgeInsets.all(margin),
                      padding: EdgeInsets.all(padding),
                      color: Colors.black12,
                      child: PdfPageView(
                        pageNumber: index + 1,
    

    工作演示

    完整示例代码

    import 'package:flutter/material.dart';
    import 'package:pdf_render/pdf_render_widgets.dart';
    
    void main() => runApp(new MyApp());
    
    class MyApp extends StatelessWidget {
      /// render at 100 dpi
      static const scale = 100.0 / 72.0;
      static const margin = 4.0;
      static const padding = 1.0;
      static const wmargin = (margin + padding) * 2;
      static final controller = ScrollController();
    
      @override
      Widget build(BuildContext context) {
        return new MaterialApp(
          home: new Scaffold(
            appBar: new AppBar(
              title: const Text('Pdf_render example app'),
            ),
            backgroundColor: Colors.grey,
            body: Center(
              child: PdfDocumentLoader(
                //filePath: "yourFilePath",
                assetName: 'assets/hello.pdf',
                documentBuilder: (context, pdfDocument, pageCount) => LayoutBuilder(
                  builder: (context, constraints) => ListView.builder(
                    controller: controller,
                    itemCount: pageCount,
                    itemBuilder: (context, index) => Container(
                      margin: EdgeInsets.all(margin),
                      padding: EdgeInsets.all(padding),
                      color: Colors.black12,
                      child: PdfPageView(
                        pageNumber: index + 1,
                        calculateSize: (pageWidth, pageHeight, aspectRatio) => Size(constraints.maxWidth - wmargin, (constraints.maxWidth - wmargin) / aspectRatio),
    
                        customizer: (context, page, size) => Stack(
                          alignment: Alignment.bottomCenter,
                          children: <Widget>[
                            if (page != null) page,
                            Text('${index + 1}', style: TextStyle(fontSize: 50)) // adding page number on the bottom of rendered page
                          ],)
                      )
                    )
                  )
                ),
              )
            )
          ),
        );
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-08
      相关资源
      最近更新 更多