pageImage static method
Future<Uint8List?>
pageImage(
- UPdfController controller,
- int pageIndex, {
- double dpi = 150,
- bool png = true,
Implementation
static Future<Uint8List?> pageImage(UPdfController controller, int pageIndex, {double dpi = 150, bool png = true}) async {
try {
final ui.Picture? picture = await controller.renderPage(pageIndex);
if (picture == null) return null;
final Size size = controller.pageInfo(pageIndex).rotatedSize;
final double scale = (dpi <= 0 ? 150 : dpi) / 72;
final int width = (size.width * scale).round().clamp(1, 10000);
final int height = (size.height * scale).round().clamp(1, 10000);
final ui.PictureRecorder recorder = ui.PictureRecorder();
final Canvas canvas = Canvas(recorder);
canvas.drawRect(Rect.fromLTWH(0, 0, width.toDouble(), height.toDouble()), Paint()..color = const Color(0xFFFFFFFF));
canvas.scale(scale);
canvas.drawPicture(picture);
final ui.Picture scaled = recorder.endRecording();
final ui.Image image = await scaled.toImage(width, height);
scaled.dispose();
final ByteData? data = await image.toByteData(format: png ? ui.ImageByteFormat.png : ui.ImageByteFormat.rawRgba);
image.dispose();
return data?.buffer.asUint8List();
} on Object {
return null;
}
}