# Poppler utilities 26.04.0: lesson test 2026-10-11 (passed)

Cite: headlesson test:wgxi8q — Poppler utilities 26.04.0, 2026-10-11: 7/7 lesson steps passed (operator record). On 2026-10-11, the headlesson operator ran all 7 steps of this lesson with Poppler utilities 26.04.0 (macOS26.5.2 arm64; Homebrew poppler 26.04.0 already installed (not reinstalled; upstream current is 26.10.0); test PDF made with macOS cupsfilter from self-made text), and all passed. The final Next step is advice and was not run. No independent check has been reviewed. This is the operator's own run, not a vendor claim. https://headlesson.com/tests/wgxi8q

Record test:wgxi8q. Question: Make a one-page PDF, read its metadata with pdfinfo and extract its text with pdftotext.

## Answer

On 2026-10-11, the headlesson operator ran all 7 steps of this lesson with Poppler utilities 26.04.0 (macOS26.5.2 arm64; Homebrew poppler 26.04.0 already installed (not reinstalled; upstream current is 26.10.0); test PDF made with macOS cupsfilter from self-made text), and all passed. The final Next step is advice and was not run. No independent check has been reviewed. This is the operator's own run, not a vendor claim.

## Tested on

- Test date: 2026-10-11
- Record confirmed: 2026-10-11
- Version: 26.04.0
- Environment: macOS26.5.2 arm64; Homebrew poppler 26.04.0 already installed (not reinstalled; upstream current is 26.10.0); test PDF made with macOS cupsfilter from self-made text
- Result: passed, 7/7 steps

## Lesson steps and what happened

- 1. [passed] command -v pdftotext || brew install poppler
- 2. [passed] pdftotext -v
- 3. [passed] printf 'Invoice 2026-001\nTotal: 42 apples\n' > note.txt
- 4. [passed] cupsfilter -m application/pdf note.txt > note.pdf
- 5. [passed] pdfinfo note.pdf
- 6. [passed] pdftotext -layout note.pdf out.txt
- 7. [passed] grep -c 'Total: 42 apples' out.txt

## Next (advice, not tested)

Next: Agree with the user on the real PDF and the output path; run pdfinfo first to check page count and encryption, extract with pdftotext (add -f/-l for a page range), and if the text is empty or only form feeds, treat the PDF as scanned and switch to OCR.

## Cautions recorded with the lesson

These notes come from the lesson. Some describe failures seen in tests; others are general cautions. Each one is not a separately tested result.

- A PDF made only of page images gives no text; in the test pdftotext exited 0 and the output was a single form feed character. Check for empty output instead of relying on the exit code.
- pdftotext ends each page with a form feed (\f) page break; pass -nopgbrk to omit page breaks.
- Without a text-file argument pdftotext writes file.txt next to file.pdf; pass - to write to standard output.
- Exit codes per the installed man page: 0 no error, 1 error opening the PDF, 2 error opening the output file, 3 PDF permission error, 99 other error; a missing input exited 1 in the test.
- Default output follows reading order and undoes the physical layout; -layout keeps columns, and -tsv prints words with bounding boxes as tab-separated values.
- Step 3 uses the macOS cupsfilter command only to make a test PDF; on other systems use any small PDF that contains real text.
- Confirm: Check which PDF is read and where the text file is written (an existing output file is replaced), and confirm the extracted text is not empty before passing it to a downstream step.

## What this record does not show

- Not measured in this run: Encrypted or password-protected PDFs.
- Not measured in this run: non-Latin text.
- Not measured in this run: multi-column layouts.
- Not measured in this run: very large files.
- Not measured in this run: Poppler 26.10.0 (the release current at test time).
- Not measured in this run: the other Poppler utilities (pdftoppm was used only to build the image-only test PDF).
- Whether an agent new to this tool can use it from this record alone (the operator wrote and ran the lesson).
- Comparisons between models or clients.
- Production use, accounts, or real customer data.
- Behaviour of the latest version (the test is tied to the version and date below).
- The final "Next" step is advice and was not part of the test.

## Primary record

Operator record: a past lesson trial (legacy). It is not claimed to meet level L1 of run-task-contract/0.1.0.

## Independent check

Independent check: not yet reviewed. (Whether an independent check exists has not been looked up for this record.)

## Evidence

A non-public test report exists and is not published, so third parties cannot check it directly.

## Retrieve over MCP

`headlesson_get id="app:poppler" sections ["lesson","gotchas"]` on https://mcp.headlesson.com/mcp

## Source version

This page is built from the catalog record app:poppler at revision 0a66d9cd024b. It is not rewritten when the current lesson changes; a new test gets a new record ID.

## Sources (lesson text at the fixed revision)

Each line names fields of this page (as JSON pointers into the .json version) and where they come from. Labels without a link are non-public sources. Fields not listed (such as test results) are the headlesson operator's own observations.

- /question, /next_advice, /cautions/items/5, /cautions/items/6: headlesson editorial judgement (checked 2026-10-11, inferred, editorial)
- /steps/0/step: [https://formulae.brew.sh/formula/poppler](https://formulae.brew.sh/formula/poppler) (checked 2026-10-11, primary, third-party)
- /steps/1/step, /steps/2/step, /steps/3/step, /steps/4/step, /steps/5/step, /steps/6/step, /cautions/items/0, /cautions/items/1, /cautions/items/2, /cautions/items/3, /cautions/items/4: headlesson editorial judgement (checked 2026-10-11, primary, editorial)

## Corrections

None.

Page updated: 2026-10-13 (the date its content last changed).

要約（日本語）: Poppler utilities の lesson を 2026-10-11 に headlesson の運営が 26.04.0 で試し、7/7 段が通った（passed、運営の実測で製品側の主張ではない）。この記録が示さないこと・独立確認の状況は本文のとおり。
