Flutter PDF阅读插件nbrg_pdf_viewer_flutter的使用

发布于 1周前 作者 bupafengyu 来自 Flutter

Flutter PDF阅读插件nbrg_pdf_viewer_flutter的使用

1. 插件简介

nbrg_pdf_viewer_flutter 是一个用于在Flutter应用中显示PDF文件的插件,支持Android和iOS平台。该插件是基于 flutter_full_pdf_viewer 的一个分支,增加了更多功能并支持空安全(null-safety)以及Android Embedding V2。

2. 使用步骤

2.1 添加依赖

在项目的 pubspec.yaml 文件中添加以下依赖:

dependencies:
  nbrg_pdf_viewer_flutter: ^2.0.0-nullsafety.2
2.2 安装依赖

通过命令行安装依赖:

flutter packages get

或者,如果你的编辑器支持 pub getflutter packages get,可以直接在编辑器中执行。

2.3 导入库

在Dart代码中导入以下库:

import 'package:nbrg_pdf_viewer_flutter/nbrg_pdf_viewer_flutter.dart';
import 'package:nbrg_pdf_viewer_flutter/nbrg_pdf_viewer_flutter_plugin.dart';
import 'package:nbrg_pdf_viewer_flutter/nbrg_pdf_viewer_flutter_scaffold.dart';
2.4 Android发布配置

如果你需要发布Android应用,请确保按照以下步骤配置 build.gradle 文件:

buildTypes {
    release {
        signingConfig signingConfigs.release
        minifyEnabled true
        useProguard true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'

        ndk {
            abiFilters 'armeabi-v7a'
        }
    }

    debug {
        minifyEnabled false
        useProguard false
    }
}

3. 示例代码

以下是一个完整的示例代码,展示了如何使用 nbrg_pdf_viewer_flutter 插件来加载并显示PDF文件。

import 'dart:async';
import 'dart:io';

import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:nbrg_pdf_viewer_flutter/nbrg_pdf_viewer_flutter.dart';
import 'package:path_provider/path_provider.dart';

void main() {
  runApp(MaterialApp(
    title: 'Plugin example app',
    home: MyApp(),
  ));
}

class MyApp extends StatefulWidget {
  [@override](/user/override)
  _MyAppState createState() => new _MyAppState();
}

class _MyAppState extends State<MyApp> {
  String pathPDF = "";

  [@override](/user/override)
  void initState() {
    super.initState();
    // 在应用启动时下载PDF文件并保存到本地
    createFileOfPdfUrl().then((f) {
      setState(() {
        pathPDF = f.path;
        print(pathPDF); // 打印PDF文件的本地路径
      });
    });
  }

  // 下载PDF文件并保存到本地
  Future<File> createFileOfPdfUrl() async {
    final url = "http://africau.edu/images/default/sample.pdf"; // PDF文件的URL
    final filename = url.substring(url.lastIndexOf("/") + 1); // 获取文件名
    var request = await HttpClient().getUrl(Uri.parse(url)); // 发起HTTP请求
    var response = await request.close(); // 关闭请求
    var bytes = await consolidateHttpClientResponseBytes(response); // 获取响应的字节数组
    String dir = (await getApplicationDocumentsDirectory()).path; // 获取应用的文档目录
    File file = new File('$dir/$filename'); // 创建文件
    await file.writeAsBytes(bytes); // 将字节数组写入文件
    return file;
  }

  [@override](/user/override)
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('Plugin example app')),
      body: Center(
        child: ElevatedButton(
          child: Text("Open PDF"),
          onPressed: () => Navigator.push(
            context,
            MaterialPageRoute(
                builder: (context) => PDFScreen(pathPDF: pathPDF)), // 打开PDF查看页面
          ),
        ),
      ),
    );
  }
}

// PDF查看页面
class PDFScreen extends StatelessWidget {
  final String pathPDF;

  PDFScreen({required this.pathPDF});

  [@override](/user/override)
  Widget build(BuildContext context) {
    return PDFViewerScaffold(
        appBar: AppBar(
          title: Text("Document"),
          actions: <Widget>[
            IconButton(
              icon: Icon(Icons.share),
              onPressed: () {}, // 分享按钮,暂时未实现
            ),
          ],
        ),
        path: pathPDF); // 显示PDF文件
  }
}

更多关于Flutter PDF阅读插件nbrg_pdf_viewer_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter PDF阅读插件nbrg_pdf_viewer_flutter的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


当然,下面是一个关于如何使用 nbrg_pdf_viewer_flutter 插件在 Flutter 中实现 PDF 阅读功能的代码示例。这个插件允许你在 Flutter 应用中嵌入并显示 PDF 文件。

步骤 1:添加依赖

首先,你需要在你的 pubspec.yaml 文件中添加 nbrg_pdf_viewer_flutter 依赖:

dependencies:
  flutter:
    sdk: flutter
  nbrg_pdf_viewer_flutter: ^x.y.z  # 替换为最新版本号

步骤 2:导入插件

在你的 Dart 文件中导入插件:

import 'package:nbrg_pdf_viewer_flutter/nbrg_pdf_viewer_flutter.dart';

步骤 3:使用插件

下面是一个完整的 Flutter 应用示例,展示了如何使用 nbrg_pdf_viewer_flutter 插件来显示 PDF 文件:

import 'package:flutter/material.dart';
import 'package:nbrg_pdf_viewer_flutter/nbrg_pdf_viewer_flutter.dart';

void main() {
  runApp(MyApp());
}

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter PDF Viewer Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(),
    );
  }
}

class MyHomePage extends StatefulWidget {
  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  final String pdfAssetPath = 'assets/sample.pdf';  // 确保在 pubspec.yaml 中声明了此资源

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('PDF Viewer Demo'),
      ),
      body: Center(
        child: PdfViewer(
          filePath: pdfAssetPath,  // 本地文件路径
          // 如果 PDF 在网络上,可以使用 url 参数:
          // url: 'https://example.com/sample.pdf',
          autoSpacing: true,
          pageFling: true,
          nightMode: false,
          defaultPage: 0,
          onError: (error) {
            // 处理错误
            print("Error loading PDF: $error");
          },
          onLoad: (pageCount) {
            // 当 PDF 加载完成时调用
            print("PDF loaded with $pageCount pages.");
          },
          onPageChanged: (page, pageCount) {
            // 当页面改变时调用
            print("Page changed to $page of $pageCount.");
          },
        ),
      ),
    );
  }
}

步骤 4:在 pubspec.yaml 中声明 PDF 资源

确保你的 PDF 文件被声明在 pubspec.yamlassets 部分:

flutter:
  assets:
    - assets/sample.pdf

运行应用

完成以上步骤后,你可以运行你的 Flutter 应用,应该会看到一个简单的 PDF 阅读器,显示你指定的 PDF 文件。

注意事项

  • 确保你的 PDF 文件路径是正确的。
  • 如果你的 PDF 文件在网络上,你可以使用 url 参数而不是 filePath
  • 插件提供了多种配置选项,如 autoSpacingpageFlingnightMode,你可以根据需要进行调整。

这个示例展示了基本的 PDF 阅读功能,你可以根据需要进一步定制和扩展。

回到顶部