render method
Future<UPdfRenderResult>
render(
- UPdfPage page, {
- UPdfRenderOptions options = const UPdfRenderOptions(),
Implementation
Future<UPdfRenderResult> render(UPdfPage page, {UPdfRenderOptions options = const UPdfRenderOptions()}) async {
final Rect box = page.box;
final Size device = page.rotation == 90 || page.rotation == 270 ? Size(box.height * options.scale, box.width * options.scale) : Size(box.width * options.scale, box.height * options.scale);
final ui.PictureRecorder recorder = ui.PictureRecorder();
final Canvas canvas = Canvas(recorder, Rect.fromLTWH(0, 0, device.width, device.height));
canvas.drawRect(Rect.fromLTWH(0, 0, device.width, device.height), Paint()..color = const Color(0xFFFFFFFF));
final _UPdfContentExecutor executor = _UPdfContentExecutor(document: document, canvas: canvas, options: options);
final List<double> base = uPdfBaseMatrix(box, page.rotation, options.scale);
try {
final Uint8List content = await document.pageContent(page);
await executor.run(content, page.resources, base, 0);
if (options.drawAnnotations) await _drawAnnotations(executor, page, base);
} on Object {
executor.markTruncated();
}
final ui.Picture picture = recorder.endRecording();
return UPdfRenderResult(picture: picture, text: executor.buildTextPage(page.index, device), deviceSize: device, truncated: executor.truncated);
}