PDFTron Flutter 包装器
- 一个有效的评估或许可证。如果您没有许可证密钥,请联系销售部门获取商业许可证密钥,或单击此处获取评估密钥。
- PDFTron Gradle 凭证,随您的许可证密钥提供(Android)
- PDFTron SDK >= 6.9.0
- Flutter >= 1.0.0
预览
| Android | iOS |
|---|---|
![]() |
![]() |
安装
完整的安装和 API 指南可在 https://www.pdftron.com/documentation/android/guides/flutter 找到
Android
-
首先,请遵循 Flutter 入门指南 安装、设置编辑器,以及 创建 Flutter 项目。本指南的其余部分假定您的项目是通过运行
flutter create myapp创建的。 -
将以下依赖项添加到您的 Flutter 项目的
myapp/pubspec.yaml中dependencies: flutter: sdk: flutter + pdftron_flutter: + git: + url: git://github.com/PDFTron/pdftron-flutter.git + permission: 0.1.0 -
现在,将以下项添加到您的
myapp/android/app/build.gradle文件中android { - compileSdkVersion 27 + compileSdkVersion 28 lintOptions { disable 'InvalidPackage' } defaultConfig { applicationId "com.example.myapp" - minSdkVersion 16 + minSdkVersion 21 - targetSdkVersion 27 + targetSdkVersion 28 + multiDexEnabled true versionCode flutterVersionCode.toInteger() versionName flutterVersionName testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" } + configurations.all { + resolutionStrategy.force "com.android.support:appcompat-v7:28.0.0" + resolutionStrategy.force "com.android.support:support-v4:28.0.0" + resolutionStrategy.force "android.arch.lifecycle:runtime:1.0.3" + } ... } -
在您的
myapp\android\app\src\main\AndroidManifest.xml文件中,将以下行添加到<application>标签内... <application android:name="io.flutter.app.FlutterApplication" android:label="myapp" android:icon="@mipmap/ic_launcher" + android:largeHeap="true" + android:usesCleartextTraffic="true"> ...此外,在
<manifest>标签中为您的应用程序添加必要的权限... <uses-permission android:name="android.permission.INTERNET" /> <!-- Required to read and write documents from device storage --> + <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <!-- Required if you want to record audio annotations --> + <uses-permission android:name="android.permission.RECORD_AUDIO" /> ... -
将您的 PDFTron 凭证添加到
myapp/android/gradle.properties文件中。org.gradle.jvmargs=-Xmx1536M AWS_ACCESS_KEY=YOUR_ACCESS_KEY_GOES_HERE AWS_SECRET_KEY=YOUR_SECRET_KEY_GOES_HERE -
将
lib/main.dart替换为 此处 显示的内容 -
通过运行命令
flutter devices检查您的 Android 设备是否正在运行。如果没有可用的设备,请按照您平台上的“安装”指南中的设备设置说明进行操作。 -
使用命令
flutter run运行应用程序。
iOS
-
首先,请遵循官方入门指南 安装、设置编辑器,以及 创建 Flutter 项目,以下步骤假定您的应用程序是通过
flutter create myapp创建的 -
在文本编辑器中打开
myapp文件夹。然后打开myapp/pubspec.yaml文件,添加dependencies: flutter: sdk: flutter + pdftron_flutter: + git: + url: git://github.com/PDFTron/pdftron-flutter.git + permission: 0.1.0 -
运行
flutter packages get -
打开
myapp/ios/Podfile,添加# Uncomment this line to define a global platform for your project -# platform :ios, '9.0' +platform :ios, '9.3' ... target 'Runner' do ... + # PDFTron Pods + use_frameworks! + pod 'PDFNet', podspec: 'POD_LINK_GOES_HERE' end -
运行
flutter build ios --no-codesign以确保集成过程成功 -
将
lib/main.dart替换为 此处 显示的内容 -
运行
flutter emulators --launch apple_ios_simulator -
运行
flutter run
用法
打开 lib/main.dart,用以下内容替换整个文件
将 your_pdftron_license_key 字符串替换为您的许可证密钥
import 'dart:async';
import 'dart:io' show Platform;
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';
import 'package:pdftron_flutter/pdftron_flutter.dart';
import 'package:permission/permission.dart';
void main() => runApp(MyApp());
class MyApp extends StatefulWidget {
@override
_MyAppState createState() => _MyAppState();
}
class _MyAppState extends State<MyApp> {
String _version = 'Unknown';
String _document = "https://pdftron.s3.amazonaws.com/downloads/pdfref.pdf";
@override
void initState() {
super.initState();
initPlatformState();
if (Platform.isIOS) {
// Open the document for iOS, no need for permission
PdftronFlutter.openDocument(_document);
} else {
// Request for permissions for android before opening document
requestPermission();
}
}
Future<void> requestPermission() async {
final res = await Permission.requestSinglePermission(PermissionName.Storage);
if (granted(res)) {
PdftronFlutter.openDocument(_document);
}
}
// Platform messages are asynchronous, so we initialize in an async method.
Future<void> initPlatformState() async {
String version;
// Platform messages may fail, so we use a try/catch PlatformException.
try {
PdftronFlutter.initialize("your_pdftron_license_key");
version = await PdftronFlutter.version;
} on PlatformException {
version = 'Failed to get platform version.';
}
// If the widget was removed from the tree while the asynchronous platform
// message was in flight, we want to discard the reply rather than calling
// setState to update our non-existent appearance.
if (!mounted) return;
setState(() {
_version = version;
});
}
bool granted(PermissionStatus status) {
return status == PermissionStatus.allow;
}
@override
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('PDFTron flutter app'),
),
body: Center(
child: Text('Running on: $_version\n'),
),
),
);
}
}
API
PdftronFlutter.version
获取 PDFTron SDK 版本
PdftronFlutter.initialize(String)
初始化 PDFTron SDK
PdftronFlutter.openDocument(String)
在查看器中打开文档

