搜尋套件、儲存庫與 APP 分類

套件詳情v1.4.5

flutter_pdfview

一個 Flutter 外掛程式,可在 Android 和 iOS 上提供 PDFView 小部件。

AndroidiOS
近 30 天下載
45.8萬
喜歡數
751
Pub 分數
160

安裝套件

flutter pub add flutter_pdfview

套件介紹

根據套件公開資料產生的選型評估,僅供參考。

flutter_pdfview 是一個 Flutter 插件,可在 Android 和 iOS 平台上呈現 PDF 文件。它提供了一個 PDFView 小工具,支援縮放、拖曳和頁面導航等基本 PDF 查看功能。該插件利用各平台的原生 PDF 渲染功能,確保流暢的效能與準確的顯示。非常適合需要文件預覽或閱讀功能,而不需外部檢視器的應用程式。

適用情境

  • 在應用程式中顯示PDF文件
  • 文件預覽功能
  • 閱讀電子書或手冊
  • 在教育類應用程式中整合PDF
  • 離線文件存取

主要特色

  • Android 和 iOS 上的原生 PDF 渲染
  • 縮放和平移支援
  • 頁面導航
  • 輕便高效
  • 跨平台相容性

適合對象

  • 需要PDF檢視的App
  • 教育或文件導向的應用程式
  • 移動閱讀器
  • 內容分發平台
  • 離線文件存取

使用建議

  • 有限的高級PDF編輯功能
  • 無內建搜尋功能
  • 效能可能會因大型 PDF 而異
  • 需要對本地或遠端PDF進行適當的檔案處理
  • 依賴於原生平台的渲染品質

原始 README

以下為關聯原始碼儲存庫的 README 原文快照,最新內容請造訪原始碼儲存庫。

flutter_pdfview

Native PDF View for iOS and Android

Buy Me A Coffee

Use this package as a library

1. Depend on it

Add this to your package's pubspec.yaml file:

dependencies:
  flutter_pdfview: ^1.4.5
2. Install it

You can install packages from the command line:

with Flutter:

$ flutter packages get

Alternatively, your editor might support pub get or flutter packages get. Check the docs for your editor to learn more.

3. Import it

Now in your Dart code, you can use:

import 'package:flutter_pdfview/flutter_pdfview.dart';

Options

Name Android iOS Default
defaultPage ✅ ✅ 0
onViewCreated ✅ ✅ null
onRender ✅ ✅ null
onPageChanged ✅ ✅ null
onLoadComplete ✅ ✅ null
onDraw ✅ ✅ null
onError ✅ ✅ null
onPageError ✅ ❌ null
onLinkHandle ✅ ✅ null
gestureRecognizers ✅ ✅ null
filePath ✅ ✅
pdfData ✅ ✅
fitPolicy ✅ ✅ FitPolicy.WIDTH
enableSwipe ✅ ✅ true
swipeHorizontal ✅ ✅ false
password ✅ ✅ null
nightMode ✅ ❌ false
autoSpacing* ✅ ✅ true
pageFling ✅ ✅ true
pageSnap ✅ ❌ true
preventLinkNavigation ✅ ✅ false
backgroundColor ✅ ✅ null
minZoom ✅ ✅ 1.0
maxZoom ✅ ✅ 4.0
showScrollIndicators* ✅ ✅ false

Notes:

  • showScrollIndicators is ignored on iOS while horizontal page-flipping is active (pageFling: true together with swipeHorizontal: true).
  • autoSpacing only adds gaps between pages. It does not change initial zoom or fitPolicy (fixed in #150).
Using PDFView inside a scrollable widget

When a PDFView is embedded in a scrollable parent (SingleChildScrollView, ListView, PageView, ...), the parent can claim drag gestures before they reach the native view, so swiping inside the PDF does not work — most notably on iOS (#265). Pass an EagerGestureRecognizer to let the PDF view consume gestures within its bounds:

import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart';

PDFView(
  filePath: path,
  gestureRecognizers: {
    Factory<OneSequenceGestureRecognizer>(() => EagerGestureRecognizer()),
  },
)

Controller Options

Name Description Parameters Return
getPageCount Get total page count - Future<int>
getCurrentPage Get current page - Future<int>
setPage Go to/Set page int page Future<bool>
getCurrentPageSize Return the width and height of the loaded page - Future<Size>
getScreenshot Create a PNG of the contents of the PDFView and save to fileName String fileName Future<String>
getPosition Get the position of the top left of the PDF with respect to the origin (top left of PDFView) - Future<Offset>
getScale Get the PDF zoom value, for zooming - Future<double>
setPosition Set the position of the top left of the PDF with respect to the origin (top left of PDFView) Offset position Future<bool>
setScale Set the PDF zoom value, for zooming double scale Future<bool>
setZoomLimits Set the minimum, maximum and mid bounds of the zoom limits double minZoom, double midZoom, double maxZoom -
reload Reload the PDF document in the PDFView - Future<bool>

Example

PDFView(
  filePath: path,
  enableSwipe: true,
  swipeHorizontal: true,
  autoSpacing: false,
  pageFling: false,
  showScrollIndicators: true,
  backgroundColor: Colors.grey,
  onRender: (_pages) {
    setState(() {
      pages = _pages;
      isReady = true;
    });
  },
  onError: (error) {
    print(error.toString());
  },
  onPageError: (page, error) {
    print('$page: ${error.toString()}');
  },
  onViewCreated: (PDFViewController pdfViewController) {
    _controller.complete(pdfViewController);
  },
  onPageChanged: (int page, int total) {
    print('page change: $page/$total');
  },
  onLoadComplete: (int? pages) {
    print('# of pages: $pages');
  },
  onDraw: (double xOffset, double yOffset, double scale) {
    print('onDraw');
  },
),

Dependencies

Android

AndroidPdfViewer

iOS (only support> 12.0)

PDFKit

Future plans

  • Replace barteksc/AndroidPdfViewer with MuPDF or Android Native PDF Renderer.
  • Improve documentation
  • Support other platforms such as MacOS, Windows, Linux and Web
  • Add search functionality
  • Improve performance on zooming, page changing
  • Improve image quality
  • Write more test

Support

Buy Me A Coffee

Donate with PayPal button

Star History

Star History Chart
Developer

所屬分類

原始碼儲存庫

使用此套件的專案