插件介绍

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/openharmony-sig/fluttertpc_flutter_pdf_render"

执行命令安装依赖:

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.csdn.net

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐