toeverything/AFFiNE · error · Error

Failed to render page

Error message

Failed to render page

What it means

A render-result guard in the PDF worker's render(): after renderPage resolved, the produced bitmap was falsy, meaning the native render call returned no usable output for the requested page. It fires when a page render silently produces nothing (e.g. invalid page number or render backend failure) rather than throwing natively — the worker converts that into this explicit error before transferring to the main thread.

Source

Thrown at packages/frontend/core/src/modules/pdf/renderer/pdf.worker.ts:121

  open({ data }: { data: ArrayBuffer }) {
    this.binary$.next(new Uint8Array(data));
    return this.docInfo$;
  }

  render(opts: RenderPageOpts) {
    return this.doc$.pipe(
      combineLatestWith(this.viewer$),
      switchMap(([doc, viewer]) => {
        if (!doc) {
          throw new Error('Document not opened');
        }

        return from(this.renderPage(viewer, doc, opts));
      }),
      map(bitmap => {
        if (!bitmap) {
          throw new Error('Failed to render page');
        }

        return transfer({ ...opts, bitmap }, [bitmap]);
      })
    );
  }

  async renderPage(viewer: Viewer, doc: Document, opts: RenderPageOpts) {
    const page = doc.page(opts.pageNum);
    if (!page) return;

    const scale = opts.scale ?? 1;
    const width = Math.ceil(opts.width * scale);
    const height = Math.ceil(opts.height * scale);

    const bitmap = viewer.createBitmap(width, height, 0);
    bitmap.fill(0, 0, width, height);
    page.render(

View on GitHub (pinned to b4c8548c09)

Solutions

  1. Retry rendering; check the PDF is not corrupt.
  2. Reduce render scale if the canvas allocation fails.
Defensive patterns

Strategy: fallback

When it happens

Trigger: Thrown in the PDF worker render pipeline when renderPage produces no bitmap for the requested page, so nothing can be transferred back to the main thread.

Common situations: A PDF page fails to rasterize, often due to rendering limits or a problematic page. Try zooming out, reloading, or re-uploading the PDF.


AI-assisted analysis of toeverything/AFFiNE@b4c8548c09 (2026-08-18). Data as JSON: /api/errors/4d6753b41c04ed01. Report an issue: GitHub.