Web app that shows a printed piece in 3D from a PDF or image: folds, page turning, client sharing.

Pl. 10 / 13Case study

Print Preview

Web app that shows a printed piece in 3D from a PDF or image: folds, page turning, client sharing.

Job ticketNo. Pl. 10 · 2026
Client
None (personal project)
Year
2026A few days
Role
Product design and scope (print types, formats, paper options)Directed the development, carried out as vibe coding with ClaudeTesting on a real 18-page PDF and spotting rendering defectsCompetitor analysis and subscription service planning
Type of work
  • Web & App ✓
  • Branding
  • Print
  • Motion
  • Social media
  • Illustration
Deliverables
  • 3D preview web application (single HTML file)
  • Read-only client preview generator
  • Deployment on Vercel
  • Competitor analysis and strategy document for a subscription service
Tools
  • Three.js
  • pdf.js
  • JavaScript (modules ES)
  • HTML
  • CSS
  • Vercel
  • Javascript

The brief

Personal project. I wanted an online tool where you drop a PDF or an image, pick a print type (flyer, business card, leaflet, booklet, book), its size and fold, and see the final result in 3D. It is aimed at graphic designers.

The challenge

A flat PDF shows neither the panel order, nor the effect of a fold, nor the thickness of a booklet. The goal was a preview that the client can handle on their own.

Features

  • Upload of PDF, PNG, JPG or WebP files, by click or drag and drop
  • Flyer, business card, 2 and 3 panel leaflets (roll fold, Z fold, gate fold), stapled booklet, book
  • A4, A5, A6, DL, square, business card or custom sizes, portrait or landscape
  • Paper weight from 90 to 350 gsm and matte, gloss or soft touch finish
  • Folding animation and page-by-page flipping
  • Image resolution check (DPI)
  • PNG capture of the preview and read-only client preview

The process

  1. 01Scoping

    I defined the scope: eight print types, standard or custom sizes, paper weight and finish, and a French interface.

  2. 023D prototype

    With Three.js, a leaflet becomes an open sheet cut into hinged panels that fold on screen. pdf.js reads PDFs directly in the browser.

  3. 03Client sharing

    The share button generates a standalone read-only HTML file. The client rotates, folds and flips through pages without being able to change anything.

  4. 04Real PDF test

    I tested an 18-page booklet. Artifacts at the spine, then overlapping pages, showed up. They were fixed over several passes.

  5. 05Market study

    I compared the tool with existing services (mockup generators, web-to-print modules, proofing tools) and outlined a subscription service.

Plates

Print Preview
Pl. 10.1
Print Preview
Pl. 10.2

Decisions

01

Real thickness rather than exaggerated

I brought booklet page thickness close to its real value rather than exaggerating it, because the exaggeration (×3) raised the right-hand stack and made pages overlap at the spine. Leaflets keep an accentuated thickness, which reads better on screen.

02

Processing in the browser

I chose to read and display files in the browser rather than on a server, because a prototype needs no backend and the artwork stays on the designer’s computer. The trade-off: no hosted share link.

03

HTML file rather than link

I chose a standalone HTML file rather than a hosted link for client sharing, because it validates the use case without a server or accounts. Known limit: the file gets heavier with a multi-page PDF.

Results

  • 8print types simulated in 3D
  • 4accepted file formats
  • 40PDF pages handled in page flipping

What I take away

A test on a real PDF exposed defects in minutes that demo templates were hiding. Bleed is not trimmed yet, the preview shows the whole PDF page: this is the first thing to fix, since a prepress professional spots it right away. I use it regularly for my freelance print work, and it suits me. No client has tried it yet: before going further, I would check the need with designers, since free tools already cover leaflet previews.

Palette

Colours sampled from the project visuals.

  • Charcoal#14171CC29 M18 Y0 K89
  • Graphite#1B1F26C29 M18 Y0 K85
  • Pearl grey#E8EAEEC3 M2 Y0 K7
  • Steel grey#9AA3B2C13 M8 Y0 K30
  • Ember orange#FF6A3DC0 M58 Y76 K0
  • Peach#FFB27AC0 M30 Y52 K0