我在Flutter项目中使用此打印包打印本地PDF文件。它运行良好,但我只是想知道我如何才能只打印特定/特定的页面,而不是整个PDF。
在我的屏幕主体中,我使用Synfusion PDF View包,并传递widget.pageNumber来显示用户选择的特定页面。
我只是想知道是否有一种方法也可以在打印包或其他包中做到这一点。
IconButton(
onPressed: _print,
color: primaryText,
icon: Icon(Icons.print_outlined),
),
],
),
body: SfPdfViewer.asset(
'assets/data/song.pdf',
initialZoomLevel: 3.0,
controller: _pdfViewerController,
onDocumentLoaded: (details) {
_pdfViewerController.jumpToPage(widget.pageNumber);
},
),
);
}
}
void _print() async {
final pdf = await rootBundle.load('assets/data/song.pdf');
await Printing.layoutPdf(onLayout: (_) => pdf.buffer.asUint8List());
}
import 'package:flutter/material.dart';
import 'package:syncfusion_flutter_pdfviewer/pdfviewer.dart';
import 'package:provider/provider.dart' as provider;
import 'package:pdf/widgets.dart' as pw;
import 'package:printing/printing.dart';
import 'package:syncfusion_flutter_pdf/pdf.dart';
创建一个新的pdf并将相关页面复制到新的pdf中,然后像一样打印该文档
final PdfDocument newDocument = PdfDocument();
newDocument.pages.add():
//Load the existing PDF document.
final PdfDocument document =
PdfDocument(inputBytes: File('input.pdf').readAsBytesSync());
//Get the existing PDF page.
final PdfPage page = document.pages[0];
newDocument.pages[0] = page;
await Printing.layoutPdf(
onLayout: (PdfPageFormat format) async => newDocument.save());