插件介绍
pdf_render 是一个功能强大的 PDF 渲染插件,支持在多个平台上显示和操作 PDF 文件。该插件为自定义修改版本,已适配 HarmonyOS 平台,确保在鸿蒙设备上稳定运行。
主要功能特点:
- 支持多种 PDF 文件来源:本地文件、资源文件和内存数据
- 提供灵活的 PDF 渲染 API,可自定义渲染区域和尺寸
- 内置 PdfViewer 组件,支持 pinch-zoom 缩放功能
- 支持页面导航和滚动
- 跨平台兼容性,包括 iOS、Android、macOS、Web 和 HarmonyOS
安装与配置
依赖配置
在引用的项目中,pubspec.yaml 中 dependencies 新增配置:
dependencies:
pdf_render:
git:
url: "https://atomgit.com/"
path: "fluttertpc_pdf_render-master"
执行命令安装依赖:
flutter pub get
权限配置
在 entry 目录下的 module.json5 中添加网络权限:
"requestPermissions": [
{
"name": "ohos.permission.INTERNET",
"reason": "$string:network_reason",
"usedScene": {
"abilities": [
"EntryAbility"
],
"when":"inuse"
}
}
]
在 entry 目录下的 string.json 中添加权限原因:
{
"string": [
{
"name": "network_reason",
"value": "使用网络"
}
]
}
API 使用示例
导入插件
import 'package:pdf_render/pdf_render.dart';
import 'package:pdf_render/pdf_render_widgets.dart';
最简单的使用方式
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Easiest PDF sample'),
),
backgroundColor: Colors.grey,
body: PdfViewer.openAsset('assets/hello.pdf')
)
);
}
打开本地文件
PdfViewer.openFile('/path/to/your/file.pdf')
打开内存中的 PDF 数据
Uint8List pdfData = ...; // 从网络或其他地方获取的 PDF 二进制数据
PdfViewer.openData(pdfData)
自定义 PDF 查看器
PdfViewerController? controller;
Widget build(BuildContext context) {
return MaterialApp(
home: Scaffold(
appBar: AppBar(
title: const Text('Custom PDF Viewer'),
),
backgroundColor: Colors.grey,
body: PdfViewer.openAsset(
'assets/hello.pdf',
params: PdfViewerParams(
pageNumber: 2, // 默认显示第 2 页
minScale: 0.5, // 最小缩放比例
maxScale: 4.0, // 最大缩放比例
),
controller: controller = PdfViewerController(),
)
)
);
}
手动渲染 PDF 页面
final doc = await PdfDocument.openAsset('assets/hello.pdf');
final page = await doc.getPage(1);
final pageImage = await page.render(
width: page.width * 2, // 渲染宽度
height: page.height * 2, // 渲染高度
);
// 使用渲染后的图像
Image(image: pageImage.createImageIfNotAvailable());
// 释放资源
pageImage.dispose();
page.dispose();
doc.dispose();
支持的 API 列表
| API 名称 | 功能描述 | HarmonyOS 支持 |
|---|---|---|
| PdfDocument.openFile | 打开本地 PDF 文件 | ✅ |
| PdfDocument.openAsset | 打开资源文件中的 PDF | ✅ |
| PdfDocument.openData | 打开内存中的 PDF 数据 | ✅ |
| PdfDocument.getPage | 获取指定页码的页面对象 | ✅ |
| PdfPage.render | 渲染 PDF 页面 | ✅ |
| PdfViewer.openFile | 使用 PdfViewer 打开本地文件 | ✅ |
| PdfViewer.openAsset | 使用 PdfViewer 打开资源文件 | ✅ |
| PdfViewer.openData | 使用 PdfViewer 打开内存数据 | ✅ |
约束与限制
兼容性
在以下版本中已测试通过:
- Flutter: 3.7.12-ohos-1.0.6
- SDK: 5.0.0(12)
- IDE: DevEco Studio: 5.0.13.200
- ROM: 5.1.0.120 SP3
权限说明
该插件需要网络权限来加载远程 PDF 文件和资源。请确保在 module.json5 中正确配置权限。
总结
pdf_render 是一个功能全面的 PDF 渲染插件,为开发者提供了丰富的 API 和组件来处理 PDF 文件。通过简单的配置,您可以在 HarmonyOS 应用中轻松实现 PDF 查看功能。无论是简单的显示需求还是复杂的自定义渲染,pdf_render 都能满足您的需求。
欢迎加入开源鸿蒙跨平台社区:https://openharmonycrossplatform.youkuaiyun.com
2296

被折叠的 条评论
为什么被折叠?



