Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Some links on this page are affiliate links: if you buy through them we may earn a commission, at no extra cost to you.

The error PDFInfoNotInstalledError: Unable to get page count. Is Poppler installed and in PATH? means the program cannot find Poppler’s pdfinfo utility. Install Poppler using your operating system’s package manager, make sure the executable is visible to the same environment that runs your code, then verify it with pdfinfo -v. Installing the Python package that calls Poppler, such as pdf2image, does not install the system utility.

What the error actually means

pdfinfo is a command-line utility distributed with Poppler. Libraries such as Python’s pdf2image use it to inspect a PDF and determine its page count before rendering pages. If the executable is missing, outside PATH, or installed in a different machine or container, the wrapper raises an error such as:

PDFInfoNotInstalledError: Unable to get page count. Is Poppler installed and in PATH?

This is normally an environment problem, not a damaged PDF. There are two separate installations:

What’s actually slowing this PC down?

Pick the symptom - the matching free tool is one click away.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
  • Python wrapper: for example, python -m pip install pdf2image.
  • System dependency: Poppler, which provides pdfinfo and other PDF utilities.

Installing only the wrapper leaves the second dependency unresolved. Databricks describes pdfinfo as coming from the Linux poppler-utils package and recommends installing it with a system package manager. The pdf2image installation guidance likewise treats Poppler as a separate, cross-platform requirement.

Install Poppler on your platform

Ubuntu and Debian

Install the package that contains the command-line utilities:

sudo apt-get update
sudo apt-get install -y poppler-utils

Confirm that the shell can see the executable:

command -v pdfinfo
pdfinfo -v

The first command should print a path, and the second should print a Poppler version. If your application runs in Docker, a notebook, a CI job, or a managed workspace, run these commands inside that runtime or add the package to its image/build steps. Installing it on your laptop does not make it available inside a separate Linux environment.

macOS

With Homebrew installed, run:

brew install poppler

Then check discovery:

command -v pdfinfo
pdfinfo -v

If a terminal opened before the installation cannot find the command, open a new terminal or reload the shell environment. A graphical application launched from Finder may use a different environment from your interactive shell; verify the path from the process that actually runs the PDF code.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Windows

Install a Poppler build appropriate for your Windows environment, then add the build’s bin directory to PATH. The exact binary distributor can vary, so use a source you trust and follow its current packaging instructions. Do not assume that downloading a folder is enough: the directory containing pdfinfo.exe must be discoverable by the application.

After updating PATH, open a new PowerShell or Command Prompt window and run:

where.exe pdfinfo
pdfinfo -v

where.exe should show the full path to pdfinfo.exe. If your PDF library supports an explicit Poppler directory, pass the path to the folder containing the binaries instead of relying on global PATH. This is useful when you cannot change machine-wide environment variables or when multiple Poppler versions are installed.

Conda environments

Conda-forge provides Poppler as an environment package:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
conda install -c conda-forge poppler
python -m pip install pdf2image

Activate the same environment before running your program and verify from it:

conda activate YOUR_ENVIRONMENT
pdfinfo -v

The executable must be available in the activated environment used by the code. A Poppler installation in one Conda environment does not satisfy a program started in another environment.

Verify the exact runtime that raises the error

Checking your normal terminal is not sufficient when the failing code runs in a notebook kernel, web worker, scheduled job, container, virtual machine, or IDE-launched interpreter. Diagnose from that same runtime.

  1. Start the exact interpreter, notebook kernel, container shell, or service account that runs the PDF operation.
  2. Use the platform command-discovery tool: command -v pdfinfo on Unix-like systems or where.exe pdfinfo on Windows.
  3. Run pdfinfo -v and record whether it returns a version or a “not found” message.
  4. Check which Python interpreter is executing the wrapper with python -c "import sys; print(sys.executable)".
  5. Restart the shell, notebook kernel, IDE, worker, or service after changing PATH.

This small Python check reports what the running interpreter can discover:

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.
import shutil
import subprocess

pdfinfo = shutil.which("pdfinfo")
print("pdfinfo:", pdfinfo)

if pdfinfo is None:
    raise RuntimeError("pdfinfo is not visible to this Python process")

result = subprocess.run([pdfinfo, "-v"], text=True, capture_output=True)
print(result.stdout or result.stderr)

If this script reports None while your terminal finds the command, the process environments differ. Pass an explicit Poppler path where supported or fix the service’s environment rather than reinstalling the Python wrapper.

Use pdf2image after Poppler is available

Install the Python package separately:

python -m pip install pdf2image

When pdfinfo is on PATH, a basic conversion looks like this:

from pdf2image import convert_from_path

pages = convert_from_path("document.pdf")
for number, page in enumerate(pages, start=1):
    page.save(f"page-{number}.png")

If Poppler is installed in a nonstandard location and your pdf2image version supports an explicit path, supply the directory containing the Poppler binaries:

from pdf2image import convert_from_path

pages = convert_from_path(
    "document.pdf",
    poppler_path=r"C:pathtopopplerbin",
)

Use the path to the bin directory, not the parent archive directory. On Unix-like systems, you normally omit poppler_path when the package manager has placed pdfinfo on PATH.

Free tools Windows power users keep installed

One-click scans. No signup required.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Common causes and fixes

“I installed pdf2image, but the error remains”

pdf2image is a Python interface; it does not replace the Poppler installation. Install Poppler with the operating-system or Conda command above, then verify pdfinfo -v from the same runtime.

“The command works in my terminal but not in Python”

The Python process may have started before PATH changed, may use another interpreter, or may be launched by an IDE, service manager, notebook, or GUI with a different environment. Restart that process and print shutil.which("pdfinfo") from inside it. An explicit Poppler path is an alternative when the library supports it.

“It works locally but fails in Docker or CI”

Containers and CI runners have their own filesystems. Add the Poppler package installation to the image or job setup and verify it during the job. A host installation is not inherited by a container unless the executable is deliberately provided there.

“I installed a package named poppler, but pdfinfo is missing”

Package names differ by platform. On Ubuntu and Debian, the command-line utilities package is poppler-utils. Confirm the result with command -v pdfinfo and pdfinfo -v instead of judging by the package name alone.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

“Windows still says pdfinfo is not recognized”

Check that pdfinfo.exe is actually inside the directory added to PATH, that the entry points to the bin folder, and that you opened a new shell after editing the variable. Use where.exe pdfinfo. If it still returns nothing, configure the application’s Poppler directory directly if that option exists.

“The error changed to a PDF-specific failure”

Once pdfinfo runs, the original missing-dependency problem is resolved. A subsequent message may concern a corrupt, encrypted, malformed, or inaccessible PDF. Test the utility directly to separate dependency discovery from document processing:

pdfinfo document.pdf

If that command cannot open the file, check the file path, permissions, encryption, and whether the file is actually a PDF.

Environment and deployment checklist

  • Poppler is installed, not just the Python wrapper.
  • The package matches the operating system: poppler-utils on Ubuntu/Debian, Homebrew Poppler on macOS, a trusted Windows build, or Conda-forge Poppler.
  • pdfinfo -v succeeds in the same runtime as the application.
  • The process was restarted after a PATH change.
  • For containers, notebooks, managed workspaces, and CI, installation occurs inside the actual execution environment.
  • On Windows, the Poppler bin directory is on PATH or supplied through the library’s explicit path option.
  • The input file is readable and can be inspected directly with pdfinfo document.pdf.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Support on Ko-Fi

Or skip the browser setup

If your real task is creating a PDF or image of a public web page rather than converting an existing local PDF with pdf2image, ScreenshotNeo can do the capture through one HTTP request. It is a separate workflow, not a fix for a missing Poppler executable in an existing pdf2image application.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

ScreenshotNeo accepts a URL and returns a PNG, JPEG, WebP, or PDF. Before capture it accepts cookie or consent banners and removes more than 60 known consent platforms, newsletter popups, and chat widgets; each cleanup step can be disabled. Bot checks or CAPTCHAs, blank pages, timeouts, failed loads, and cache hits are not billed, and the response identifies the result with X-Page-Verdict and X-Billed headers. Its MCP server exposes take_screenshot, get_page_info, and capture_pdf to Claude, Cursor, and other MCP clients.

See the complete parameter reference in the ScreenshotNeo documentation. A direct cURL request is:

curl -G "https://api.screenshotneo.com/v1/shot" -d access_key=YOUR_API_KEY --data-urlencode url=https://stripe.com -o shot.webp

The equivalent Python request is:

import requests
r = requests.get("https://api.screenshotneo.com/v1/shot", params={"access_key": "YOUR_API_KEY", "url": "https://stripe.com"}, timeout=90)
open("shot.webp", "wb").write(r.content)

And Node.js:

const q = new URLSearchParams({ access_key: 'YOUR_API_KEY', url: 'https://stripe.com' });
const res = await fetch(`https://api.screenshotneo.com/v1/shot?${q}`);

Every plan includes the features, including full-page and lazy-image capture, CSS-selector element capture, device and retina settings, PDF paper and page controls, custom CSS or JavaScript, waits, request blocking, headers, cookies, geolocation, transparent backgrounds, resizing, caching, signed links, asynchronous webhooks, bulk capture for up to 100 URLs per call, usage reporting, and an OpenAPI specification. The free plan includes 1,000 shots per month with no card; paid plans start at $5 for 3,000 shots. Create a free ScreenshotNeo account to try it.

FAQ

Does Poppler replace a PDF reader?

No. Poppler supplies command-line PDF utilities used by applications; installing it does not install a desktop viewer or change which program opens PDFs.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Should I add Poppler to a project’s Python requirements file?

Keep the Python package and system dependency documented separately. A Python requirements file can install pdf2image, but your operating-system package, container image, or Conda environment must provision Poppler.

Can I solve the error by changing the input PDF?

Usually not. First make pdfinfo -v work. Only after the executable is available should you investigate a particular file’s format, permissions, encryption, or corruption.

Frequently Asked Questions

Does Poppler replace a PDF reader?

No. Poppler supplies command-line PDF utilities used by applications; installing it does not install a desktop viewer.

Should Poppler be listed in Python requirements.txt?

Document the Python wrapper and the system or Conda Poppler dependency separately; requirements.txt alone cannot install the operating-system utility.

Special offer. See more information about Outbyte and uninstall instructions. Please review EULA and Privacy policy.

Can changing the input PDF fix this error?

Not usually. Verify that pdfinfo itself runs before troubleshooting a particular file.

The Bottom Line

Install Poppler’s utilities, verify pdfinfo -v from the exact runtime running your code, and configure that runtime’s PATH or explicit Poppler directory. On Ubuntu and Debian the package is poppler-utils; on macOS use Homebrew, on Windows expose the Poppler bin directory, and in Conda install from conda-forge.

Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.