Skip to content

[syncfusion_flutter_pdfviewer 33.2.6] Filled AcroForm widgets on Quartz-authored PDF 1.4 render as blank page (no exception, no console output) #2531

@iamku7sh

Description

@iamku7sh

Bug description

SfPdfViewer silently renders a blank white page for PDF files that:

  1. Were originally authored by macOS Quartz (/Producer (macOS … Quartz PDFContext)), producing a PDF 1.4 AcroForm with AcroForm.DR = null
  2. Have any text-field widget with a non-empty /V (filled value)

The viewer shows no error, throws no exception, prints nothing to the console. The page is just blank. The same PDFs render correctly in every other PDF viewer I've tested:

  • pdfx (Flutter, PDFium-backed) — renders correctly
  • Adobe Acrobat Reader — renders correctly
  • Google Chrome (built-in PDF viewer) — renders correctly
  • macOS Preview / PDFKit — renders correctly

Unfilled versions of the same template do render in SfPdfViewer once /AcroForm/DR/Font is populated. The trigger is specifically setting /V on any widget — not the appearance stream, not the PDF version, not the fill library. I verified this across 13 structural variants (matrix below).

This is a new defect distinct from previously-closed similar issues (#1988, #223) — those samples render fine in 33.2.6.

Steps to reproduce

The smallest failing case is single_widget_v_only.pdf — the original Quartz-authored AcroForm template with /V (TEST) set on exactly one text widget. No /AP, no /DA change, no other modifications. /AcroForm/DR/Font/Helv is present and resolves to standard Type1 Helvetica.

Producing this PDF from any compliant PDF library reproduces the bug. Example with PyMuPDF (same shape with pikepdf, qpdf, pypdf — all fail identically):

import fitz

doc = fitz.open("original_template.pdf")

# Add /AcroForm/DR/Font/Helv (standard 14 Helvetica Type1)
helv_xref = doc.get_new_xref()
doc.update_object(helv_xref, """<<
  /Type /Font
  /Subtype /Type1
  /BaseFont /Helvetica
  /Encoding /WinAnsiEncoding
>>""")
dr_xref = doc.get_new_xref()
doc.update_object(dr_xref, f"<<\n/Font << /Helv {helv_xref} 0 R >>\n>>")
catalog = doc.pdf_catalog()
af = doc.xref_get_key(catalog, "AcroForm")
form_xref = int(af[1].split()[0])
doc.xref_set_key(form_xref, "DR", f"{dr_xref} 0 R")

# Set /V on a single text widget — nothing else
for page in doc:
    for w in page.widgets() or []:
        if w.field_type_string == "Text" and w.field_name == "FirstName":
            doc.xref_set_key(w.xref, "V", "(TEST)")
            doc.xref_set_key(w.xref, "AP", "null")  # force regen
            break
    break
doc.xref_set_key(form_xref, "NeedAppearances", "true")
doc.save("filled_single_widget.pdf", garbage=3, deflate=True)

Open filled_single_widget.pdf in SfPdfViewer.asset(...) → blank page. Open the same file in any other viewer → renders fine.

Code sample

import 'package:flutter/material.dart';
import 'package:syncfusion_flutter_pdfviewer/pdfviewer.dart';

void main() => runApp(const MaterialApp(home: Scaffold(
  body: SfPdfViewer.asset('assets/filled_single_widget.pdf'),
)));

Screenshots or Video

issue_recording.mov

filled_dr_no_ap.pdf
filled_dr_pdf17.pdf
filled_pikepdf_v14.pdf
filled_pikepdf.pdf
filled_post_autoshrink.pdf

Stack Traces

Stack Traces
[Add the Stack Traces here]

On which target platforms have you observed this bug?

Web (iOS browser)

Flutter Doctor output

Doctor output
[✓] Flutter (Channel stable, 3.38.5, on macOS 26.3.1 25D2128 darwin-arm64, locale en-IN) [403ms]
    • Flutter version 3.38.5 on channel stable at /opt/homebrew/Caskroom/flutter/3.32.5/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision f6ff1529fd (5 months ago), 2025-12-11 11:50:07 -0500
    • Engine revision 1527ae0ec5
    • Dart version 3.10.4
    • DevTools version 2.51.1
    • Feature flags: enable-web, enable-linux-desktop, enable-macos-desktop, enable-windows-desktop,
      enable-android, enable-ios, cli-animations, enable-native-assets, omit-legacy-version-file,
      enable-lldb-debugging

[!] Android toolchain - develop for Android devices (Android SDK version 36.0.0) [882ms]
    • Android SDK at /Users/kamleshuikey/Library/Android/sdk
    • Emulator version 36.1.9.0 (build_id 13823996) (CL:N/A)
    ✗ cmdline-tools component is missing.
      Try installing or updating Android Studio.
      Alternatively, download the tools from
      https://developer.android.com/studio#command-line-tools-only and make sure to set the ANDROID_HOME
      environment variable.
      See https://developer.android.com/studio/command-line for more details.
    ✗ Android license status unknown.
      Run `flutter doctor --android-licenses` to accept the SDK licenses.
      See https://flutter.dev/to/macos-android-setup for more details.

[!] Xcode - develop for iOS and macOS (Xcode 26.2) [1,402ms]
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Build 17C52
    ! iOS 26.2 Simulator not installed; this may be necessary for iOS and macOS development.
      To download and install the platform, open Xcode, select Xcode > Settings > Components,
      and click the GET button for the required platform.

      For more information, please visit:
        https://developer.apple.com/documentation/xcode/installing-additional-simulator-runtimes
    • CocoaPods version 1.16.2

[✓] Chrome - develop for the web [5ms]
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Connected device (2 available) [5.8s]
    • macOS (desktop) • macos  • darwin-arm64   • macOS 26.3.1 25D2128 darwin-arm64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 148.0.7778.97

[✓] Network resources [520ms]
    • All expected network resources are available.

! Doctor found issues in 2 categories.
(.venv) ➜  syncfusion_

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions