Test cases / image

deft image to-pdf

One page per image

2 runs on real files, 15 tests on generated files, not shown. 0 failed.

Real-file tasks

Real files and a plain-language job, from the agent benchmark. These are the reference answers, not an agent run.

Photos into a PDFPassed

Turn DSCN0010.jpg, earth.jpg and landscape_6.jpg into one PDF called album.pdf, one photo per page, in that order.

deft image to-pdf DSCN0010.jpg earth.jpg landscape_6.jpg -o album.pdf

Input

DSCN0010.jpg 157.9 KB · 640x480
DSCN0010.jpg
earth.jpg 6.2 MB · 3000x3002
earth.jpg
landscape_6.jpg 134.4 KB · 450x600
landscape_6.jpg

Output

album.pdf 6.5 MB · 3 pages
Page 1Page 2Page 3
Automatic checks (2)
  • pdf_pages: file = "album.pdf", pages = 3
  • pdf_page: file = "album.pdf", page = 1, ink_min = 0.2

Assemble an application from mixed filesPassed

Put together one application.pdf for a portal: letter.docx first, then the photo DSCN0010.jpg, then fw9.pdf. Number the pages at the bottom. The portal rejects anything over 1MB.

deft doc to-pdf letter.docx -o letter.pdf
deft image to-pdf DSCN0010.jpg -o photo.pdf
deft pdf merge letter.pdf photo.pdf fw9.pdf -o joined.pdf
deft pdf number joined.pdf -o numbered.pdf
deft pdf compress numbered.pdf --target-size 1MB -o application.pdf

Input

DSCN0010.jpg 157.9 KB · 640x480
DSCN0010.jpg
fw9.pdf 137.5 KB · 6 pages
Page 1Page 2Page 3
letter.docx 11.3 KB
Rendered by macOS Quick Look, first page

Rendered by macOS Quick Look, first page

Text inside
I am a test document
This is page 1
I am Calibri (Body) in font size 11

This is page two
It’s Arial Black in 16 point
It’s also in blue

Output

application.pdf 222.6 KB · 9 pages
Page 1Page 2Page 3
joined.pdf 220.9 KB · 9 pages
Page 1Page 2Page 3
letter.pdf 9.6 KB · 2 pages
Page 1Page 2
numbered.pdf 224.1 KB · 9 pages
Page 1Page 2Page 3
photo.pdf 158.6 KB · 1 page
Page 1
Automatic checks (2)
  • max_bytes: file = "application.pdf", bytes = 1048576
  • python: code = "import subprocess\ndef text(first, last):\n return subprocess.run(['gs', '-q', '-dNOPAUSE', '-dBATCH', '-sDEVICE=txtwrite', f'-dFirstPage={first}', f'-dLastPage={last}', '-sOutputFile=-', 'application.pdf'], capture_output=True, text=True, errors='replace').stdout\nn = int(subprocess.check_output(['gs', '-q', '-dNODISPLAY', '--permit-file-read=application.pdf', '-c', '(application.pdf) (r) file runpdfbegin pdfpagecount = quit'], text=True).split()[-1])\nw9 = subprocess.check_output(['gs', '-q', '-dNODISPLAY', '--permit-file-read=fw9.pdf', '-c', '(fw9.pdf) (r) file runpdfbegin pdfpagecount = quit'], text=True).split()[-1]\nassert n >= int(w9) + 2, n\nassert 'W-9' in text(n - int(w9) + 1, n - int(w9) + 1), 'the form is not last'\nassert 'W-9' not in text(1, 1), 'the letter is not first'\nassert str(n) in text(n, n).split(), 'last page has no number'\n"