postProcess method

void postProcess(
  1. Document document
)

Implementation

void postProcess(Document document) {
  final canvas = _pdfPage!.getGraphics();
  canvas.reset();
  final _margin = resolvedMargin;
  var constraints = mustRotate
      ? BoxConstraints(
          maxWidth: pageFormat.height - _margin!.vertical,
          maxHeight: pageFormat.width - _margin.horizontal)
      : BoxConstraints(
          maxWidth: pageFormat.width - _margin!.horizontal,
          maxHeight: pageFormat.height - _margin.vertical);

  final calculatedTheme = theme ?? document.theme ?? ThemeData.base();
  final context = Context(
    document: document.document,
    page: _pdfPage!,
    canvas: canvas,
  ).inheritFromAll(<Inherited>[
    calculatedTheme,
    if (pageTheme.textDirection != null)
      InheritedDirectionality(pageTheme.textDirection),
  ]);

  Widget? background;
  Widget? content;
  Widget? foreground;

  content = _build(context);

  final size = layout(content, context, constraints);

  if (_pdfPage!.pageFormat.height == double.infinity) {
    _pdfPage!.pageFormat =
        _pdfPage!.pageFormat.copyWith(width: size.x, height: size.y);
    constraints = mustRotate
        ? BoxConstraints(
            maxWidth: _pdfPage!.pageFormat.height - _margin.vertical,
            maxHeight: _pdfPage!.pageFormat.width - _margin.horizontal)
        : BoxConstraints(
            maxWidth: _pdfPage!.pageFormat.width - _margin.horizontal,
            maxHeight: _pdfPage!.pageFormat.height - _margin.vertical);
  }

  if (pageTheme.buildBackground != null) {
    background = pageTheme.buildBackground!(context);
    layout(background, context, constraints);
  }

  if (pageTheme.buildForeground != null) {
    foreground = pageTheme.buildForeground!(context);
    layout(foreground, context, constraints);
  }

  assert(() {
    if (Document.debug) {
      debugPaint(context);
    }
    return true;
  }());

  if (background != null) {
    paint(background, context);
  }

  paint(content, context);

  if (foreground != null) {
    paint(foreground, context);
  }
}