我正在 flutter 中制作一个基于 firebase 服务器的电子书阅读器。但找不到任何方法来显示书籍的缩略图。
我尝试使用缩略图和 pdf_thumbnail 包,但找不到任何方法。我本来希望下载并缓存第一页作为缩略图。
使用 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)
我认为这将有助于解决您的问题
我不明白在线部分,要使用dart代码或库在设备上处理pdf文件,您需要下载该文件。
我开发了 pdf_thumbnail 包,它使用 pdfx 将页面一张一张地渲染为图像。它位于 pub.dev 和 github 上,因此您可以复制我的逻辑。