我想从 PDF 文件中获取总页数
I want to get total pages count from PDF file
我正在尝试在我的 Flutter 应用中实现一个功能。我想接收 PDF 文件的总页数。到目前为止,我检查过的所有查看器都只提供视图,不提供任何接收总页数的方法。
我现在正在使用 flutter_full_pdf_viewer 库进行查看。
请指导。
您可以使用包 https://pub.dev/packages/pdf_render
此包提供 pageCount
属性
您可以使用 filePath
或 assetName
作为 PDF 文件位置
代码片段
PdfDocumentLoader(
//filePath: "yourFilePath",
assetName: 'assets/hello.pdf',
documentBuilder: (context, pdfDocument, pageCount) => LayoutBuilder(
builder: (context, constraints) => ListView.builder(
controller: controller,
itemCount: pageCount,
itemBuilder: (context, index) => Container(
margin: EdgeInsets.all(margin),
padding: EdgeInsets.all(padding),
color: Colors.black12,
child: PdfPageView(
pageNumber: index + 1,
工作演示
完整示例代码
import 'package:flutter/material.dart';
import 'package:pdf_render/pdf_render_widgets.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
/// render at 100 dpi
static const scale = 100.0 / 72.0;
static const margin = 4.0;
static const padding = 1.0;
static const wmargin = (margin + padding) * 2;
static final controller = ScrollController();
@override
Widget build(BuildContext context) {
return new MaterialApp(
home: new Scaffold(
appBar: new AppBar(
title: const Text('Pdf_render example app'),
),
backgroundColor: Colors.grey,
body: Center(
child: PdfDocumentLoader(
//filePath: "yourFilePath",
assetName: 'assets/hello.pdf',
documentBuilder: (context, pdfDocument, pageCount) => LayoutBuilder(
builder: (context, constraints) => ListView.builder(
controller: controller,
itemCount: pageCount,
itemBuilder: (context, index) => Container(
margin: EdgeInsets.all(margin),
padding: EdgeInsets.all(padding),
color: Colors.black12,
child: PdfPageView(
pageNumber: index + 1,
calculateSize: (pageWidth, pageHeight, aspectRatio) => Size(constraints.maxWidth - wmargin, (constraints.maxWidth - wmargin) / aspectRatio),
customizer: (context, page, size) => Stack(
alignment: Alignment.bottomCenter,
children: <Widget>[
if (page != null) page,
Text('${index + 1}', style: TextStyle(fontSize: 50)) // adding page number on the bottom of rendered page
],)
)
)
)
),
)
)
),
);
}
}
我正在尝试在我的 Flutter 应用中实现一个功能。我想接收 PDF 文件的总页数。到目前为止,我检查过的所有查看器都只提供视图,不提供任何接收总页数的方法。 我现在正在使用 flutter_full_pdf_viewer 库进行查看。 请指导。
您可以使用包 https://pub.dev/packages/pdf_render
此包提供 pageCount
属性
您可以使用 filePath
或 assetName
作为 PDF 文件位置
代码片段
PdfDocumentLoader(
//filePath: "yourFilePath",
assetName: 'assets/hello.pdf',
documentBuilder: (context, pdfDocument, pageCount) => LayoutBuilder(
builder: (context, constraints) => ListView.builder(
controller: controller,
itemCount: pageCount,
itemBuilder: (context, index) => Container(
margin: EdgeInsets.all(margin),
padding: EdgeInsets.all(padding),
color: Colors.black12,
child: PdfPageView(
pageNumber: index + 1,
工作演示
完整示例代码
import 'package:flutter/material.dart';
import 'package:pdf_render/pdf_render_widgets.dart';
void main() => runApp(new MyApp());
class MyApp extends StatelessWidget {
/// render at 100 dpi
static const scale = 100.0 / 72.0;
static const margin = 4.0;
static const padding = 1.0;
static const wmargin = (margin + padding) * 2;
static final controller = ScrollController();
@override
Widget build(BuildContext context) {
return new MaterialApp(
home: new Scaffold(
appBar: new AppBar(
title: const Text('Pdf_render example app'),
),
backgroundColor: Colors.grey,
body: Center(
child: PdfDocumentLoader(
//filePath: "yourFilePath",
assetName: 'assets/hello.pdf',
documentBuilder: (context, pdfDocument, pageCount) => LayoutBuilder(
builder: (context, constraints) => ListView.builder(
controller: controller,
itemCount: pageCount,
itemBuilder: (context, index) => Container(
margin: EdgeInsets.all(margin),
padding: EdgeInsets.all(padding),
color: Colors.black12,
child: PdfPageView(
pageNumber: index + 1,
calculateSize: (pageWidth, pageHeight, aspectRatio) => Size(constraints.maxWidth - wmargin, (constraints.maxWidth - wmargin) / aspectRatio),
customizer: (context, page, size) => Stack(
alignment: Alignment.bottomCenter,
children: <Widget>[
if (page != null) page,
Text('${index + 1}', style: TextStyle(fontSize: 50)) // adding page number on the bottom of rendered page
],)
)
)
)
),
)
)
),
);
}
}