如何显示在线 pdf 的缩略图

问题描述 投票:0回答:2

我正在 flutter 中制作一个基于 firebase 服务器的电子书阅读器。但找不到任何方法来显示书籍的缩略图。

我尝试使用缩略图和 pdf_thumbnail 包,但找不到任何方法。我本来希望下载并缓存第一页作为缩略图。

flutter dart flutter-dependencies dart-pub
2个回答
0
投票

使用 https://pub.dev/packages/flutter_pdfview 包将 PDF 的第一页渲染为图像,然后将该图像显示为书籍缩略图。

import 'dart:typed_data';
import 'package:flutter/material.dart';
import 'package:flutter_pdfview/flutter_pdfview.dart';

class PdfThumbnail extends StatefulWidget {
  final String path;
  final double height;
  final double width;

  PdfThumbnail({required this.path, required this.height, required this.width});

  @override
  _PdfThumbnailState createState() => _PdfThumbnailState();
}

class _PdfThumbnailState extends State<PdfThumbnail> {
  late PDFViewController pdfViewController;
  Uint8List? imageBytes;

  @override
  void initState() {
    super.initState();
    _renderPdf();
  }

  void _renderPdf() async {
    final data = await pdfViewController.render(
      page: 1,
      x: 0.0,
      y: 0.0,
      width: widget.width,
      height: widget.height,
    );
    setState(() {
      imageBytes = data!;
    });
  }

  @override
  Widget build(BuildContext context) {
    return imageBytes != null
        ? Image.memory(
            imageBytes!,
            width: widget.width,
            height: widget.height,
            fit: BoxFit.cover,
          )
        : Container();
  }
}

然后你可以使用as

PdfThumbnail(path: 'Insert_your_path_to_pdf', height: 50, width: 50)

我认为这将有助于解决您的问题


0
投票

我不明白在线部分,要使用dart代码或库在设备上处理pdf文件,您需要下载该文件。

我开发了 pdf_thumbnail 包,它使用 pdfx 将页面一张一张地渲染为图像。它位于 pub.dev 和 github 上,因此您可以复制我的逻辑。

© www.soinside.com 2019 - 2024. All rights reserved.