Flutter PDF文档查看插件flutter_pdfjs_viewer的使用
Flutter PDF文档查看插件flutter_pdfjs_viewer的使用
Features
- 仅支持Android和iOS
基于封装在pdf.js
中的PDF文件浏览器,此插件可以帮助您查找正在使用的PDF无法显示相关信息(如签名)的原因。
Getting Started
添加依赖
首先,在pubspec.yaml
文件中添加flutter_pdfjs_viewer
作为依赖项:
dependencies:
flutter_pdfjs_viewer: ^latest_version # 替换为最新版本号
然后执行flutter pub get
以安装依赖。
导入包
在您的Dart代码中导入flutter_pdfjs_viewer
:
import 'package:flutter_pdfjs_viewer/flutter_pdfjs_viewer.dart';
iOS配置ATS for info.plist文件
为了确保iOS设备可以加载PDF文件,请在项目的ios/Runner/Info.plist
文件中添加以下内容:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
</dict>
Android配置
为了确保Android设备可以访问网络并加载PDF文件,请确保在android/app/src/main/AndroidManifest.xml
文件中包含以下权限声明:
<uses-permission android:name="android.permission.INTERNET" />
并且设置允许明文传输或自定义网络安全配置:
允许明文传输
<application
android:usesCleartextTraffic="true"
...>
</application>
自定义网络安全配置
创建一个名为network_security_config.xml
的文件,并将其放置在res/xml
目录下。然后在AndroidManifest.xml
中引用它:
<application
android:networkSecurityConfig="@xml/network_security_config"
...>
</application>
Usage
下面是一些简单的使用示例,展示了如何通过不同方式加载PDF文件。
示例:从网络加载PDF
这是一个完整的例子,演示了如何从网络加载PDF并在Flutter应用中显示它。
import 'package:flutter/material.dart';
import 'package:flutter_pdfjs_viewer/flutter_pdfjs_viewer.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({super.key});
@override
Widget build(BuildContext context) {
return MaterialApp(
debugShowCheckedModeBanner: false, // This line removes the debug banner
theme: ThemeData(
primarySwatch: Colors.red,
),
home: const PdfViewerPage(),
);
}
}
class PdfViewerPage extends StatefulWidget {
const PdfViewerPage({super.key});
@override
State<PdfViewerPage> createState() => _PdfViewerPageState();
}
class _PdfViewerPageState extends State<PdfViewerPage> {
final String pdfUrl = "https://www.example.com/sample.pdf"; // 替换为实际的PDF链接
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(title: const Text('PDF Detail'),),
body: PDFJSViewerWidget.network(pdfUrl), // 使用网络URL加载PDF
);
}
}
更多加载方式
除了从网络加载PDF之外,还可以通过其他方式加载PDF文件:
PDFJSViewerWidget.file(path)
- 从本地文件系统加载PDF。PDFJSViewerWidget.assets(path)
- 从Flutter assets加载PDF。PDFJSViewerWidget.data(data)
- 直接使用二进制数据加载PDF。
请根据具体需求选择合适的方法。
Demo
以上就是关于flutter_pdfjs_viewer
插件的基本介绍和使用方法,希望对您有所帮助!如果您有任何问题或需要进一步的帮助,请随时提问。
更多关于Flutter PDF文档查看插件flutter_pdfjs_viewer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
更多关于Flutter PDF文档查看插件flutter_pdfjs_viewer的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html
当然,下面是一个关于如何在Flutter项目中使用flutter_pdfjs_viewer
插件来查看PDF文档的示例代码。这个插件利用了PDF.js库来在Flutter应用中渲染PDF文件。
首先,你需要在你的pubspec.yaml
文件中添加flutter_pdfjs_viewer
依赖:
dependencies:
flutter:
sdk: flutter
flutter_pdfjs_viewer: ^x.y.z # 替换为最新版本号
然后运行flutter pub get
来安装依赖。
接下来是一个完整的示例代码,展示如何使用flutter_pdfjs_viewer
来加载和显示PDF文件:
import 'package:flutter/material.dart';
import 'package:flutter_pdfjs_viewer/flutter_pdfjs_viewer.dart';
import 'dart:typed_data';
import 'dart:convert';
void main() {
runApp(MyApp());
}
class MyApp extends StatelessWidget {
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Flutter PDF Viewer',
theme: ThemeData(
primarySwatch: Colors.blue,
),
home: MyHomePage(),
);
}
}
class MyHomePage extends StatefulWidget {
@override
_MyHomePageState createState() => _MyHomePageState();
}
class _MyHomePageState extends State<MyHomePage> {
Uint8List? pdfData;
@override
void initState() {
super.initState();
// 这里可以加载本地的PDF文件,或者从网络获取PDF数据
loadPdfFromAssets();
}
Future<void> loadPdfFromAssets() async {
// 从assets文件夹中加载PDF文件
ByteData data = await rootBundle.load('assets/sample.pdf');
setState(() {
pdfData = data.buffer.asUint8List();
});
}
@override
Widget build(BuildContext context) {
return Scaffold(
appBar: AppBar(
title: Text('PDF Viewer'),
),
body: Center(
child: pdfData == null
? CircularProgressIndicator()
: PDFViewer(
document: pdfData!,
// 可选参数,如设置初始页码等
// initialPage: 1,
// 其他参数根据需求进行设置
),
),
);
}
}
在这个示例中,我们做了以下事情:
- 在
pubspec.yaml
文件中添加了flutter_pdfjs_viewer
依赖。 - 创建了一个Flutter应用,其中包含一个主页面
MyHomePage
。 - 在
MyHomePage
的状态管理中,通过initState
方法从assets文件夹中加载PDF文件(你需要将PDF文件放在assets
文件夹中,并在pubspec.yaml
中声明它)。 - 使用
PDFViewer
小部件来显示加载的PDF文件。如果PDF数据还未加载完成,则显示一个进度指示器。
请确保你的pubspec.yaml
文件中已经声明了assets:
flutter:
assets:
- assets/sample.pdf
这样,你就可以在Flutter应用中查看PDF文档了。如果PDF文件是从网络获取的,你可以使用HTTP请求来获取PDF数据的Uint8List
表示,然后将其传递给PDFViewer
。