render method

Future<UPdfRenderResult> render(
  1. UPdfPage page, {
  2. 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);
}