{
  "schemaVersion": 1,
  "title": "Öffentlicher Zwei-Seiten-Prüffall: PDF lokal schwärzen",
  "testDate": "2026-10-20",
  "scope": "Zwei tatsächliche Browserexporte einer bereits veröffentlichten synthetischen PDF. Der Prüffall verwendet ein lokales Prüfbuild des Browserwerkzeugs von /pdf-schwaerzen.",
  "original": {
    "url": "/beispiele/pdf-schwaerzen/synthetische-akte.pdf",
    "sha256": "8cb3789164e73451ce8b762c0b07f7eb1065515a78d3d3258c4cba0fb6aa7f10",
    "bytes": 2148,
    "pages": 2,
    "synthetic": true,
    "firstPageTestToken": "SECRET_PAGE_ONE_7F8A2",
    "secondPageControlToken": "CONTROL_PAGE_TWO_3C4D9",
    "hasAnnotations": false,
    "hasAcroForm": false,
    "embeddedFiles": 0
  },
  "procedure": {
    "manualMarking": "Auf Seite 1 Testkennung und Satz darunter gemeinsam markieren; Überschrift und farbige Kontrollflächen frei lassen. Seite 2 bleibt ohne Markierung.",
    "pageSwitch": "Seite 2 öffnen und zu Seite 1 zurückkehren.",
    "export": "Nach dem Öffnen, Markieren und Seitenwechsel Browserkontext offline setzen, Ergebnis erzeugen und ausdrücklich herunterladen.",
    "sourceCase": "mark-switch-offline-export-download",
    "testSourceSha256": "ebde11631ddd25ddd9eff3620aa1841078c492626f4ecc7764b77dc98dd9d4c8",
    "temporaryHarnessSha256": "61665205ea9f0e18ccd091b4b05159c5fe5655fa5d8b1b73d8d289cfb44fd081",
    "harnessAdaptations": [
      "Pfadauflösung für den lokalen Prüflauf",
      "Veröffentlichte Originaldatei unverändert laden, statt eine neue Fixture zu erzeugen"
    ],
    "assertionsUnchanged": true,
    "bindingReview": "Dateihashes und vollständigen Harness-Diff unabhängig geprüft."
  },
  "independentChecks": {
    "textExtractionTools": [
      "pypdf",
      "MuPDF",
      "Poppler pdftotext"
    ],
    "rendering": "Poppler pdftoppm, 120 dpi, RGB",
    "visualReview": "Alle acht Seitenraster beider Original-/Ergebnispaare tatsächlich angesehen.",
    "objectSearch": "Alle XRef- und komprimiert referenzierten Objekte auf die bekannte Testkennung in dekodierten Daten und PDF-Hexstrings untersucht.",
    "attachmentCheck": [
      "pypdf",
      "Poppler pdfdetach"
    ],
    "syntaxCheck": "qpdf --check",
    "toolVersions": {
      "pypdf": "6.6.0",
      "PyMuPDF": "1.27.2.2",
      "Pillow": "12.1.1",
      "qpdf": "qpdf version 12.4.1",
      "poppler": "pdftoppm version 26.09.0"
    }
  },
  "results": [
    {
      "browser": "chromium",
      "browserVersion": "151.0.7922.34",
      "startedAtUtc": "2026-10-20T11:00:59.061Z",
      "finishedAtUtc": "2026-10-20T11:01:00.581Z",
      "url": "/beispiele/pdf-schwaerzen/prueflauf-2026-10-20/ergebnis-chromium.pdf",
      "sha256": "6fffd06da60c416209bceb0efd67ef45b22b45bd72674c50853473de59198fd9",
      "bytes": 46290,
      "originalSha256": "8cb3789164e73451ce8b762c0b07f7eb1065515a78d3d3258c4cba0fb6aa7f10",
      "pages": 2,
      "markedPage": {
        "page": 1,
        "textExtractedByAllThreeTools": "",
        "knownTestTokenFoundInObjectSearch": false,
        "imageObjects": [
          {
            "width": 1696,
            "height": 2400,
            "colorSpace": "/DeviceRGB",
            "filter": "/DCTDecode"
          }
        ],
        "visibleHeadingRetained": true,
        "greenControlVisible": true,
        "blueControlVisible": true,
        "innerMarkedArea": {
          "pixelCount": 166222,
          "meanRgb": [
            0.0,
            0.0,
            0.0
          ],
          "nearBlackRatio": 1.0
        }
      },
      "controlPage": {
        "page": 2,
        "testTokenRetained": true,
        "allThreeTextExtractionsEqualOriginal": true,
        "rasterComparison": {
          "dpi": 120,
          "pixelIdentical": true,
          "meanAbsoluteRgbDifference": [
            0.0,
            0.0,
            0.0
          ],
          "size": [
            992,
            1404
          ]
        }
      },
      "metadata": {
        "/Producer": "veronto.de/pdf-schwaerzen (lokal im Browser)",
        "/ModDate": "D:20261020110100Z",
        "/Creator": "veronto PDF-Schwärzen",
        "/CreationDate": "D:20261020110100Z"
      },
      "embeddedFiles": 0,
      "hasAcroForm": false,
      "annotationsByPage": [
        0,
        0
      ],
      "qpdfSyntaxCheckExitCode": 0,
      "recordedBrowserTraffic": {
        "httpRequestsAfterOffline": 0,
        "externalRequestsInCase": 0,
        "writeRequestsInCase": 0,
        "source": "Aufgezeichnetes Browserprotokoll des gezielten Prüffalls; kein eigenständiger Paketmitschnitt."
      }
    },
    {
      "browser": "webkit",
      "browserVersion": "26.5",
      "startedAtUtc": "2026-10-20T11:00:59.647Z",
      "finishedAtUtc": "2026-10-20T11:01:02.009Z",
      "url": "/beispiele/pdf-schwaerzen/prueflauf-2026-10-20/ergebnis-webkit.pdf",
      "sha256": "93706a30f356e6404e7c73808087b5183a5acdecb83a09fd00021efc3401cd53",
      "bytes": 95479,
      "originalSha256": "8cb3789164e73451ce8b762c0b07f7eb1065515a78d3d3258c4cba0fb6aa7f10",
      "pages": 2,
      "markedPage": {
        "page": 1,
        "textExtractedByAllThreeTools": "",
        "knownTestTokenFoundInObjectSearch": false,
        "imageObjects": [
          {
            "width": 1696,
            "height": 2400,
            "colorSpace": "/DeviceRGB",
            "filter": "/DCTDecode"
          }
        ],
        "visibleHeadingRetained": true,
        "greenControlVisible": true,
        "blueControlVisible": true,
        "innerMarkedArea": {
          "pixelCount": 166222,
          "meanRgb": [
            0.0,
            0.0,
            0.0
          ],
          "nearBlackRatio": 1.0
        }
      },
      "controlPage": {
        "page": 2,
        "testTokenRetained": true,
        "allThreeTextExtractionsEqualOriginal": true,
        "rasterComparison": {
          "dpi": 120,
          "pixelIdentical": true,
          "meanAbsoluteRgbDifference": [
            0.0,
            0.0,
            0.0
          ],
          "size": [
            992,
            1404
          ]
        }
      },
      "metadata": {
        "/Producer": "veronto.de/pdf-schwaerzen (lokal im Browser)",
        "/ModDate": "D:20261020110101Z",
        "/Creator": "veronto PDF-Schwärzen",
        "/CreationDate": "D:20261020110101Z"
      },
      "embeddedFiles": 0,
      "hasAcroForm": false,
      "annotationsByPage": [
        0,
        0
      ],
      "qpdfSyntaxCheckExitCode": 0,
      "recordedBrowserTraffic": {
        "httpRequestsAfterOffline": 0,
        "externalRequestsInCase": 0,
        "writeRequestsInCase": 0,
        "source": "Aufgezeichnetes Browserprotokoll des gezielten Prüffalls; kein eigenständiger Paketmitschnitt."
      }
    }
  ],
  "limits": [
    "Ein synthetisches Dokument mit zwei Seiten und einer manuellen Markierung. Die Aussage gilt für diesen Prüffall und die genannten Browserstände.",
    "Die gesamte markierte Seite wird zur Bildseite. Auch die sichtbare Überschrift verliert ihre kopierbare Textebene.",
    "Die Eingabe enthält keine Anhänge, Formulare oder Kommentare. Deren Bereinigung wird mit diesem Beispiel nicht geprüft.",
    "Im Ergebnis bleiben Werkzeug- und Zeitmetadaten erhalten.",
    "Der Suchbefund betrifft die bekannte synthetische Testkennung. Er ersetzt keine vollständige Kontrolle beliebiger Dokumente.",
    "Die Browserprotokolle beschreiben die aufgezeichneten Anfragen in diesem Prüffall.",
    "Der Browserfall verwendet ein lokales Prüfbuild. Die öffentliche Auslieferung der Ergebnisdateien wird beim anschließenden Release getrennt geprüft."
  ]
}
