{
  "schema_version": "1.0.0",
  "site": "pdfbin.net",
  "license_default": "CC0-1.0",
  "fixture_count": 51,
  "facet_axes": {
    "health": [
      "valid",
      "corrupt-xref-truncated",
      "corrupt-header-truncated",
      "corrupt-stream-length-mismatch",
      "corrupt-object-generation-mismatch",
      "corrupt-trailer-missing",
      "corrupt-eof-missing",
      "corrupt-byte-flipped"
    ],
    "access": [
      "open",
      "encrypted-aes256-owner",
      "encrypted-aes256-user",
      "encrypted-aes256-both",
      "encrypted-aes128-owner",
      "encrypted-aes128-user",
      "encrypted-rc4-128-owner",
      "encrypted-rc4-40-owner"
    ],
    "document_shape": [
      "blank",
      "fax-cover-sheet",
      "invoice",
      "receipt",
      "irs-1040",
      "bank-statement",
      "contract-nda",
      "lab-report"
    ],
    "provenance": [
      "digital-native",
      "scanned-clean",
      "scanned-noisy",
      "scanned-skewed",
      "scanned-noisy-skewed"
    ],
    "paper_size": [
      "DIN-A4",
      "US-Letter",
      "JIS-B5",
      "mixed"
    ],
    "spec": [
      "PDF-1.4",
      "PDF-1.7",
      "PDF-2.0",
      "PDF/A-1B",
      "PDF/A-1A",
      "PDF/A-2B",
      "PDF/A-3B",
      "PDF/A-4"
    ],
    "features": [
      "acroform",
      "signed",
      "embedded-file"
    ]
  },
  "fixtures": [
    {
      "id": "acroform-empty",
      "url": "https://pdfbin.net/acroform-empty.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 5500,
      "sha256": "ad46305d2e1b24dd6afd3dc5dbd9b732a778ce56adaf125239ca7abeb463cc10",
      "page_count": 1,
      "description": "PDF with three empty AcroForm text fields (name, email, phone).",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": [
          "acroform"
        ]
      },
      "source_script": "generate/builders/features.py:acroform_empty"
    },
    {
      "id": "acroform-fully-filled",
      "url": "https://pdfbin.net/acroform-fully-filled.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 5600,
      "sha256": "a3ac70e2c71a83fe1dfb1eaf5680e41d3c2c0d08bae3ae10aa17a4b98f1ef2a6",
      "page_count": 1,
      "description": "AcroForm with all three fields filled (name, email, phone).",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": [
          "acroform"
        ]
      },
      "source_script": "generate/builders/features.py:acroform_fully_filled"
    },
    {
      "id": "acroform-partially-filled",
      "url": "https://pdfbin.net/acroform-partially-filled.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 5523,
      "sha256": "3670b821cfbe784d9e9749528fd2f4150a9ac3b29847ffafe90fdc479f811a44",
      "page_count": 1,
      "description": "AcroForm with the name field filled; email and phone left empty.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": [
          "acroform"
        ]
      },
      "source_script": "generate/builders/features.py:acroform_partially_filled"
    },
    {
      "id": "aes128-owner",
      "url": "https://pdfbin.net/aes128-owner.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 2216,
      "sha256": "1d8c838415edcee6922b2e9b049461d686ba7170fc4b2586017d1fefc5896dce",
      "page_count": 1,
      "description": "AES-128 (revision 4) with owner password only.",
      "facets": {
        "health": "valid",
        "access": "encrypted-aes128-owner",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": [],
        "passwords": {
          "owner": "ownerpass",
          "user": null
        }
      },
      "source_script": "generate/builders/access.py:aes128_owner"
    },
    {
      "id": "aes128-user",
      "url": "https://pdfbin.net/aes128-user.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 2216,
      "sha256": "dcf7f97629ea0ec0aa60a0e599697ace845a59c8cd9064927fe12913dfc5b10b",
      "page_count": 1,
      "description": "AES-128 (revision 4) with user password.",
      "facets": {
        "health": "valid",
        "access": "encrypted-aes128-user",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": [],
        "passwords": {
          "owner": "ownerpass",
          "user": "userpass"
        }
      },
      "source_script": "generate/builders/access.py:aes128_user"
    },
    {
      "id": "aes256-both",
      "url": "https://pdfbin.net/aes256-both.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 2530,
      "sha256": "18e06ea4974b9ce8aa2a0d7f797baa47c6a184924402ac05425fe557f4ada914",
      "page_count": 1,
      "description": "AES-256 with both owner and user passwords set distinctly.",
      "facets": {
        "health": "valid",
        "access": "encrypted-aes256-both",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": [],
        "passwords": {
          "owner": "ownerpass",
          "user": "userpass"
        }
      },
      "source_script": "generate/builders/access.py:aes256_both"
    },
    {
      "id": "aes256-owner",
      "url": "https://pdfbin.net/aes256-owner.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 2530,
      "sha256": "9a67ce959d4060362346c103a4d9d5f9d703bc6878723b01226787a5f3c4573d",
      "page_count": 1,
      "description": "AES-256 with owner password only. Open password is empty.",
      "facets": {
        "health": "valid",
        "access": "encrypted-aes256-owner",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": [],
        "passwords": {
          "owner": "ownerpass",
          "user": null
        }
      },
      "source_script": "generate/builders/access.py:aes256_owner"
    },
    {
      "id": "aes256-user",
      "url": "https://pdfbin.net/aes256-user.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 2530,
      "sha256": "9d423a303ad4615aeb1b4e7e068cc3b3695604e1ae80ad2496f5333458f01c95",
      "page_count": 1,
      "description": "AES-256 with user (open) password. Owner password also set.",
      "facets": {
        "health": "valid",
        "access": "encrypted-aes256-user",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": [],
        "passwords": {
          "owner": "ownerpass",
          "user": "userpass"
        }
      },
      "source_script": "generate/builders/access.py:aes256_user"
    },
    {
      "id": "bank-statement-letter-clean",
      "url": "https://pdfbin.net/bank-statement-letter-clean.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 2078,
      "sha256": "0b4ad2f268c7755e6ab56e7080229a8a7bb4da0540328cd49243cfde5c7df0a4",
      "page_count": 1,
      "description": "Bank account statement on US Letter. Synthesized.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "bank-statement",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": []
      },
      "source_script": "generate/builders/documents.py:bank_statement_letter_clean"
    },
    {
      "id": "byte-flipped-mid-stream",
      "url": "https://pdfbin.net/byte-flipped-mid-stream.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 1533,
      "sha256": "c7138418376ec12787cfa35af0f19546e29afca04b9c518f806d79514495ecaa",
      "page_count": 1,
      "description": "One byte XOR-flipped mid-content-stream. Likely renders pages with garbage.",
      "facets": {
        "health": "corrupt-byte-flipped",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": []
      },
      "source_script": "generate/builders/health.py:byte_flipped_mid_stream"
    },
    {
      "id": "clean-100-pages",
      "url": "https://pdfbin.net/clean-100-pages.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 55977,
      "sha256": "750fd7035cc89cbe0cd07e70a3d4f0a1c336192b092f4078c5a9f9450d31d1e3",
      "page_count": 100,
      "description": "Clean US Letter, 100 portrait pages.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": []
      },
      "source_script": "generate/builders/form_factor.py:clean_100_pages"
    },
    {
      "id": "clean-10mb",
      "url": "https://pdfbin.net/clean-10mb.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 10001617,
      "sha256": "82e8228fe03afd7dcdaa8cf46a5c1aa47973d57953c7c6e772241af9c6e3dc65",
      "page_count": 1,
      "description": "Clean US Letter PDF padded to approximately 10 MB via an attached random-bytes file (embedded-file feature).",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": [
          "embedded-file"
        ]
      },
      "source_script": "generate/builders/size.py:clean_10mb"
    },
    {
      "id": "clean-1mb",
      "url": "https://pdfbin.net/clean-1mb.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 998870,
      "sha256": "dadac1125da1179222512b0813ceb885fa1946404a5482dd06118cb3f1784cd0",
      "page_count": 1,
      "description": "Clean US Letter PDF padded to approximately 1 MB via an attached random-bytes file (embedded-file feature).",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": [
          "embedded-file"
        ]
      },
      "source_script": "generate/builders/size.py:clean_1mb"
    },
    {
      "id": "clean-25mb",
      "url": "https://pdfbin.net/clean-25mb.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 25006194,
      "sha256": "a282fcf51adeb6621966a10956ec36de5bd8b4d8829dc65ecfc9fd2b80a2709c",
      "page_count": 1,
      "description": "Clean US Letter PDF padded to approximately 25 MB via an attached random-bytes file (embedded-file feature).",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": [
          "embedded-file"
        ]
      },
      "source_script": "generate/builders/size.py:clean_25mb"
    },
    {
      "id": "clean-500-pages",
      "url": "https://pdfbin.net/clean-500-pages.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 277667,
      "sha256": "d61cc6ea9ab6e8da0917880349cf171bc15be1f2c1d2b50aefea663d822e9c40",
      "page_count": 500,
      "description": "Clean US Letter, 500 portrait pages.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": []
      },
      "source_script": "generate/builders/form_factor.py:clean_500_pages"
    },
    {
      "id": "clean-50mb",
      "url": "https://pdfbin.net/clean-50mb.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 50013824,
      "sha256": "6663e9c1d6121b70cc37fb8fa282419eafbcbf8ab64fb1a1cc33e8defa017bb3",
      "page_count": 1,
      "description": "Clean US Letter PDF padded to approximately 50 MB via an attached random-bytes file (embedded-file feature).",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": [
          "embedded-file"
        ]
      },
      "source_script": "generate/builders/size.py:clean_50mb"
    },
    {
      "id": "clean-a4-1page",
      "url": "https://pdfbin.net/clean-a4-1page.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 1559,
      "sha256": "cbb7bdf0918b895234a9f5702e806e35dab8b3ef5539ba3cfa49498fc8aae4d5",
      "page_count": 1,
      "description": "Clean DIN A4 (210x297mm), single portrait page, body text.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "DIN-A4",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": []
      },
      "source_script": "generate/builders/form_factor.py:clean_a4_1page"
    },
    {
      "id": "clean-a4-3page",
      "url": "https://pdfbin.net/clean-a4-3page.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 2673,
      "sha256": "ae22562031aae0f5b857f463c270a27cf0df0074ba8368325a2d867fb77a5771",
      "page_count": 3,
      "description": "Clean DIN A4, three portrait pages.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "DIN-A4",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": []
      },
      "source_script": "generate/builders/form_factor.py:clean_a4_3page"
    },
    {
      "id": "clean-jis-b5-1page",
      "url": "https://pdfbin.net/clean-jis-b5-1page.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 1568,
      "sha256": "d8e8c30adc3f9a04af914533626961627a4ac2866e7b04561b4e66c61d8a721b",
      "page_count": 1,
      "description": "Clean JIS B5 (182x257mm) - not ISO B5. Single portrait page.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "JIS-B5",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": []
      },
      "source_script": "generate/builders/form_factor.py:clean_jis_b5_1page"
    },
    {
      "id": "clean-letter-1page",
      "url": "https://pdfbin.net/clean-letter-1page.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 1550,
      "sha256": "52eb9b330d18ce748fb87bdce8a68ab5ce237954cd3df914c96469e6a691601e",
      "page_count": 1,
      "description": "Clean US Letter (8.5x11in), single portrait page, body text.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": []
      },
      "source_script": "generate/builders/form_factor.py:clean_letter_1page"
    },
    {
      "id": "clean-letter-3page",
      "url": "https://pdfbin.net/clean-letter-3page.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 2647,
      "sha256": "b7329ca30567cb79facbb43f2fe69a5b9feae0cbf74239d03c86c4336c72ed0d",
      "page_count": 3,
      "description": "Clean US Letter, three portrait pages.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": []
      },
      "source_script": "generate/builders/form_factor.py:clean_letter_3page"
    },
    {
      "id": "clean-mixed-orientation",
      "url": "https://pdfbin.net/clean-mixed-orientation.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 3773,
      "sha256": "62e0a2b81f17c1d47d73f4cf2a4019f0aa824f022e3922521b93dd92f471dcf7",
      "page_count": 5,
      "description": "US Letter, alternating portrait and landscape across 5 pages.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "mixed",
        "spec": "PDF-1.7",
        "features": []
      },
      "source_script": "generate/builders/form_factor.py:clean_mixed_orientation"
    },
    {
      "id": "clean-paper-sizes-mixed",
      "url": "https://pdfbin.net/clean-paper-sizes-mixed.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 2699,
      "sha256": "3ca488f718eaacc304324fd412d0e686f64c9dd6d68669c71b61319e4c2f941b",
      "page_count": 3,
      "description": "Mixed paper sizes: A4, US Letter, and JIS B5 in one document.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "mixed",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": []
      },
      "source_script": "generate/builders/form_factor.py:clean_paper_sizes_mixed"
    },
    {
      "id": "contract-nda-letter-clean",
      "url": "https://pdfbin.net/contract-nda-letter-clean.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 1971,
      "sha256": "178e2eaa48266f779e3b7a92c62bae4a842fdab9b92089bbaa6187a26a732960",
      "page_count": 1,
      "description": "Mutual non-disclosure agreement on US Letter. Synthesized.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "contract-nda",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": []
      },
      "source_script": "generate/builders/documents.py:contract_nda_letter_clean"
    },
    {
      "id": "eof-missing",
      "url": "https://pdfbin.net/eof-missing.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 1528,
      "sha256": "e706e414b019ebb623757dda5ca2a65f362e6321df648a15062cf845f034fdb5",
      "page_count": 1,
      "description": "%%EOF marker stripped. Parsers that key on it cannot find the end.",
      "facets": {
        "health": "corrupt-eof-missing",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": []
      },
      "source_script": "generate/builders/health.py:eof_missing"
    },
    {
      "id": "fax-cover-letter-clean",
      "url": "https://pdfbin.net/fax-cover-letter-clean.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 2008,
      "sha256": "dd4822e5cc6d5426cbe1e4a196269abddb51a8ea0054f7dff0b0875c426d9358",
      "page_count": 1,
      "description": "Fax cover sheet on US Letter (To/From/Company/Fax/Pages/Date/Re). Synthesized.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "fax-cover-sheet",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": []
      },
      "source_script": "generate/builders/documents.py:fax_cover_letter_clean"
    },
    {
      "id": "fax-cover-letter-scanned-noisy",
      "url": "https://pdfbin.net/fax-cover-letter-scanned-noisy.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 776786,
      "sha256": "4185da432bdb4742addc8c180d06df62a1749357492727703f905b9ddc61d28e",
      "page_count": 1,
      "description": "Fax cover sheet rendered as a noisy 300 DPI scan - realistic faxed-document case.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "fax-cover-sheet",
        "provenance": "scanned-noisy",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": [],
        "scan_quality": {
          "dpi": 300,
          "noise": "high",
          "skew_degrees": 0
        }
      },
      "source_script": "generate/builders/documents.py:fax_cover_letter_scanned_noisy"
    },
    {
      "id": "header-truncated",
      "url": "https://pdfbin.net/header-truncated.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 1524,
      "sha256": "ff0e6f17dcdfb4215045c5af62645cf1ea945bd0eeabea77b1f3daa3eb937bb7",
      "page_count": 1,
      "description": "First line (%PDF-1.7) removed. Parsers that key on the header fail to detect a PDF.",
      "facets": {
        "health": "corrupt-header-truncated",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": []
      },
      "source_script": "generate/builders/health.py:header_truncated"
    },
    {
      "id": "invoice-letter-clean",
      "url": "https://pdfbin.net/invoice-letter-clean.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 2112,
      "sha256": "1ada3ace800b3663cdbaee97442d39cf3dee2eb9157978635a8b7915de5293d3",
      "page_count": 1,
      "description": "Invoice on US Letter with line items and totals. Synthesized.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "invoice",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": []
      },
      "source_script": "generate/builders/documents.py:invoice_letter_clean"
    },
    {
      "id": "irs-1040-blank",
      "url": "https://pdfbin.net/irs-1040-blank.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 220237,
      "sha256": "3d31c226df0d189ced80e039d01cf0f8820c1019681a0f0ca6264de277b7e982",
      "page_count": 2,
      "description": "Blank IRS Form 1040, imported verbatim from irs.gov. US federal work, public domain.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "irs-1040",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": []
      },
      "source_script": "generate/builders/documents.py:irs_1040_blank"
    },
    {
      "id": "lab-report-letter-clean",
      "url": "https://pdfbin.net/lab-report-letter-clean.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 2051,
      "sha256": "050ad01c3d24d3074cff4b41bb4849190cbbf6549d273a350f6a35a6290713ec",
      "page_count": 1,
      "description": "Diagnostics lab report on US Letter. Synthesized.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "lab-report",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": []
      },
      "source_script": "generate/builders/documents.py:lab_report_letter_clean"
    },
    {
      "id": "object-generation-mismatch",
      "url": "https://pdfbin.net/object-generation-mismatch.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 1533,
      "sha256": "86d86664fa907ec7a54697e48c9f51d903b2c5ad5b7d33a5c4051e0b104fe2ae",
      "page_count": 1,
      "description": "First object's header says generation 1; xref says generation 0.",
      "facets": {
        "health": "corrupt-object-generation-mismatch",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": []
      },
      "source_script": "generate/builders/health.py:object_generation_mismatch"
    },
    {
      "id": "pdf-1.4-clean",
      "url": "https://pdfbin.net/pdf-1.4-clean.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 1755,
      "sha256": "87cdb1decffa1c6f7f507905fd8d3e486ef107f712eef8c779d3e5793db55d56",
      "page_count": 1,
      "description": "Clean PDF saved targeting spec version 1.4.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.4",
        "features": []
      },
      "source_script": "generate/builders/spec.py:pdf_1_4_clean"
    },
    {
      "id": "pdf-1.7-clean",
      "url": "https://pdfbin.net/pdf-1.7-clean.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 1755,
      "sha256": "f0be554cca8cf23c54f001fb54eeda72db0bf6ad585df75c945f87852859aad8",
      "page_count": 1,
      "description": "Clean PDF saved targeting spec version 1.7.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": []
      },
      "source_script": "generate/builders/spec.py:pdf_1_7_clean"
    },
    {
      "id": "pdf-2.0-clean",
      "url": "https://pdfbin.net/pdf-2.0-clean.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 1755,
      "sha256": "84340fcbc399fa6d3eda5ac633f668fceb1b5de09dbd5ebd8fa87defb0ad545c",
      "page_count": 1,
      "description": "Clean PDF saved targeting spec version 2.0.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-2.0",
        "features": []
      },
      "source_script": "generate/builders/spec.py:pdf_2_0_clean"
    },
    {
      "id": "pdfa-1a-compliant",
      "url": "https://pdfbin.net/pdfa-1a-compliant.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 7121,
      "sha256": "08915dcb0eb0d154b6c5b4bfb1c99a1c3607626490583ecc0957fe1fffeebc7c",
      "page_count": 1,
      "description": "PDF/A-1A compliant document (accessible / tagged variant of -1B).",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF/A-1A",
        "features": []
      },
      "source_script": "generate/builders/spec.py:pdfa_1a_compliant"
    },
    {
      "id": "pdfa-1b-compliant",
      "url": "https://pdfbin.net/pdfa-1b-compliant.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 7121,
      "sha256": "d7cefcca57da6c9371d64385d3422925609cb318ec0a81f48d997cf0f9aa5584",
      "page_count": 1,
      "description": "PDF/A-1B compliant document (visual appearance preserved).",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF/A-1B",
        "features": []
      },
      "source_script": "generate/builders/spec.py:pdfa_1b_compliant"
    },
    {
      "id": "pdfa-2b-compliant",
      "url": "https://pdfbin.net/pdfa-2b-compliant.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 7121,
      "sha256": "d101bef04c4af2dee29b03369df1e5cf04f905341c95dcbb0d06676b09c36d74",
      "page_count": 1,
      "description": "PDF/A-2B compliant document (PDF 1.7 features allowed).",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF/A-2B",
        "features": []
      },
      "source_script": "generate/builders/spec.py:pdfa_2b_compliant"
    },
    {
      "id": "pdfa-3b-with-attachment",
      "url": "https://pdfbin.net/pdfa-3b-with-attachment.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 7622,
      "sha256": "b633145cdfc4f5da9bb8c4f7db6b36377a787204b4d3d56c9dca5e352dc77854",
      "page_count": 1,
      "description": "PDF/A-3B with an embedded plain-text attachment - the headline PDF/A-3 feature.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF/A-3B",
        "features": [
          "embedded-file"
        ]
      },
      "source_script": "generate/builders/spec.py:pdfa_3b_with_attachment"
    },
    {
      "id": "rc4-128-owner",
      "url": "https://pdfbin.net/rc4-128-owner.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 1701,
      "sha256": "343fe3b6fce4e8c455700a0a3651f3ba42b51a46d2141715a3b70288ac683bd9",
      "page_count": 1,
      "description": "Legacy RC4-128 (revision 3) with owner password only.",
      "facets": {
        "health": "valid",
        "access": "encrypted-rc4-128-owner",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": [],
        "passwords": {
          "owner": "ownerpass",
          "user": null
        }
      },
      "source_script": "generate/builders/access.py:rc4_128_owner"
    },
    {
      "id": "rc4-40-owner",
      "url": "https://pdfbin.net/rc4-40-owner.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 1698,
      "sha256": "42d1a553615aa0dc4d44014f5a4545e8a6ed26b209c3011010dfa2da8fe6c5e5",
      "page_count": 1,
      "description": "Legacy RC4-40 (revision 2) - common in older documents.",
      "facets": {
        "health": "valid",
        "access": "encrypted-rc4-40-owner",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": [],
        "passwords": {
          "owner": "ownerpass",
          "user": null
        }
      },
      "source_script": "generate/builders/access.py:rc4_40_owner"
    },
    {
      "id": "receipt-letter-clean",
      "url": "https://pdfbin.net/receipt-letter-clean.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 1740,
      "sha256": "a53261b8d20f783f08b9d20c777204c2057776b06810fb458280c30cbe2ca2ec",
      "page_count": 1,
      "description": "Coffee-shop receipt on US Letter. Synthesized.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "receipt",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": []
      },
      "source_script": "generate/builders/documents.py:receipt_letter_clean"
    },
    {
      "id": "receipt-scanned-noisy-300dpi",
      "url": "https://pdfbin.net/receipt-scanned-noisy-300dpi.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 772563,
      "sha256": "e701ddf2da61debd819cf84b613a4ac82412eb2ee8b5aaf09f624d0316348dd3",
      "page_count": 1,
      "description": "Receipt rendered as a noisy 300 DPI scan - classic crumpled-receipt OCR target.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "receipt",
        "provenance": "scanned-noisy",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": [],
        "scan_quality": {
          "dpi": 300,
          "noise": "high",
          "skew_degrees": 0
        }
      },
      "source_script": "generate/builders/documents.py:receipt_scanned_noisy_300dpi"
    },
    {
      "id": "scanned-clean-200dpi",
      "url": "https://pdfbin.net/scanned-clean-200dpi.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 17007,
      "sha256": "f636765313bf9a1ae409b0876ce0b1976956c11884acb6c570539485b98785ac",
      "page_count": 1,
      "description": "Clean 200 DPI scan of a generic Letter PDF.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "scanned-clean",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": [],
        "scan_quality": {
          "dpi": 200,
          "noise": null,
          "skew_degrees": 0
        }
      },
      "source_script": "generate/builders/provenance.py:scanned_clean_200dpi"
    },
    {
      "id": "scanned-clean-300dpi",
      "url": "https://pdfbin.net/scanned-clean-300dpi.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 27112,
      "sha256": "5310aea82cb8ba3a9aa5073d90cb198689a06d43cb5d51b648b68d76d30b512b",
      "page_count": 1,
      "description": "Clean 300 DPI scan of a generic Letter PDF.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "scanned-clean",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": [],
        "scan_quality": {
          "dpi": 300,
          "noise": null,
          "skew_degrees": 0
        }
      },
      "source_script": "generate/builders/provenance.py:scanned_clean_300dpi"
    },
    {
      "id": "scanned-noisy-300dpi",
      "url": "https://pdfbin.net/scanned-noisy-300dpi.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 776227,
      "sha256": "f45872984357eb9094e3107155901ca57df7a611d661e69c8a2ca2fa22418049",
      "page_count": 1,
      "description": "Noisy 300 DPI scan with high-density speckle noise.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "scanned-noisy",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": [],
        "scan_quality": {
          "dpi": 300,
          "noise": "high",
          "skew_degrees": 0
        }
      },
      "source_script": "generate/builders/provenance.py:scanned_noisy_300dpi"
    },
    {
      "id": "scanned-skewed-3deg",
      "url": "https://pdfbin.net/scanned-skewed-3deg.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 77626,
      "sha256": "3e10ad087e0495a952f3b3d3313503f353a1469b1be7dea506a9c520615d4be7",
      "page_count": 1,
      "description": "Clean 300 DPI scan rotated 3 degrees.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "scanned-skewed",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": [],
        "scan_quality": {
          "dpi": 300,
          "noise": null,
          "skew_degrees": 3
        }
      },
      "source_script": "generate/builders/provenance.py:scanned_skewed_3deg"
    },
    {
      "id": "scanned-skewed-noisy",
      "url": "https://pdfbin.net/scanned-skewed-noisy.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 2357172,
      "sha256": "73521f32566f00147ef1c442c2821acc48119a9380c5c1681c66c7d1f96eba83",
      "page_count": 1,
      "description": "Noisy 3-degree skewed 300 DPI scan - hardest realistic case.",
      "facets": {
        "health": "valid",
        "access": "open",
        "document_shape": "blank",
        "provenance": "scanned-noisy-skewed",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": [],
        "scan_quality": {
          "dpi": 300,
          "noise": "high",
          "skew_degrees": 3
        }
      },
      "source_script": "generate/builders/provenance.py:scanned_skewed_noisy"
    },
    {
      "id": "stream-length-mismatch",
      "url": "https://pdfbin.net/stream-length-mismatch.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 1533,
      "sha256": "2a241452c29344675007cf4d69e49e21919ee17394e408844edaaefef535b1cd",
      "page_count": 1,
      "description": "One stream object's /Length is overstated by 99 bytes.",
      "facets": {
        "health": "corrupt-stream-length-mismatch",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": []
      },
      "source_script": "generate/builders/health.py:stream_length_mismatch"
    },
    {
      "id": "trailer-missing",
      "url": "https://pdfbin.net/trailer-missing.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 1338,
      "sha256": "56d9eed776f5ed23a53377ec802a7b63d5583de8d75aed0779082854ea8a4406",
      "page_count": 1,
      "description": "Trailer dictionary removed; startxref present but points to nothing useful.",
      "facets": {
        "health": "corrupt-trailer-missing",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": []
      },
      "source_script": "generate/builders/health.py:trailer_missing"
    },
    {
      "id": "xref-truncated",
      "url": "https://pdfbin.net/xref-truncated.pdf",
      "added": "2026-05-12",
      "status": "current",
      "superseded_by": null,
      "license": "CC0-1.0",
      "size_bytes": 1517,
      "sha256": "b3dd5100a9f3c51e4c0864efa780eb16ccd56207158b3725854d2e11ab086fd5",
      "page_count": 1,
      "description": "PDF byte-truncated at the start of the xref table. Parsers without xref-recovery will fail.",
      "facets": {
        "health": "corrupt-xref-truncated",
        "access": "open",
        "document_shape": "blank",
        "provenance": "digital-native",
        "paper_size": "US-Letter",
        "orientation": "portrait",
        "spec": "PDF-1.7",
        "features": []
      },
      "source_script": "generate/builders/health.py:xref_truncated"
    }
  ]
}