{
  "id": 16446206,
  "title": "Why PDF image extractors return the stored picture, not the one on the page",
  "url": "https://urgent.news/2026/10/25/why-pdf-image-extractors-return-the-stored-picture-not-the-one-on-the",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-10-25T08:01:52.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/pm_cheng_3f36acecfb9c59f5/why-pdf-image-extractors-return-the-stored-picture-not-the-one-on-the-page-418c"
  },
  "original_language": "en",
  "account": "PDF image extractors return the stored picture, not the one on the page. After three years of codec work, the author wanted to understand why. The file is a single hand-written page containing four lossless images, each with distinct characteristics - A hidden by a clip path, B rotated 90° counter-clockwise, C mirrored, and D a 16-colour palette image with specific decoding rules. The author tested various tools including pdfimages, PyMuPDF, the decoded bitmap from pdf.js, and ImgIng to extract the images. However, three tools - pdfimages, PyMuPDF and pdf.js - returned the stored pixels, the same SHA-256 hash, for A, B and C. D, on the other hand, returned the page's colours, applying /Decode and ignoring the clip and matrix. Reading the source material suggests that the tools decode the object and stop where the page starts placing it. The author's hypothesis is that the extraction process depends on where the instruction lives - whether it's in the image's own dictionary or in the page's content stream. This finding has implications for how readers perceive PDF images, as the extracted image may not match the visible part on the page.",
  "summary": "Every extractor I pointed at my test PDF gave me back a rotated picture unrotated and a half-hidden picture whole. After three years of codec work I took that as the correct answer, but I wanted to be able to say why. The file is one hand-written page with four lossless images. Each has four coloured corners and a big letter, so I can see which way it faces. A is hidden by a clip path, so the…",
  "key_points": [
    "PDF image extractors return stored picture, not visible page image",
    "Tools like pdfimages, PyMuPDF, pdf.js show stored pixels",
    "D image returns page colors, applying /Decode and ignoring clip"
  ],
  "editors_take": "The distinction between stored pixel data and page-level transformations reveals that extraction tools prioritize raw object dictionaries over the visual instructions that actually define what a reader sees.",
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}