Feature Deep Dive

PDF Reader — Zoom, Search & Touch Gestures

A3KM Studio's built-in PDF reader renders documents directly inside the app — no external app, no download required. It supports zoom, page navigation, in-document search, swipe gestures, fullscreen mode, and password-protected PDFs.

External app ছাড়াই PDF পড়া যায় — zoom, page navigation, Ctrl+F search, swipe gesture, fullscreen এবং সুরক্ষিত PDF সব কিছুই built-in। Books এবং Research Papers দুটো সেকশনেই এই reader ব্যবহার হয়।

Mobile Reader In-PDF Search Fullscreen Download
What is it?

PDF Reader — Full Feature Set

Used in both the Books section and the Research Papers section. The same viewer JS handles all PDFs site-wide.

Zoom In / Out
Pinch-to-zoom on mobile. +/- buttons in the toolbar. Zoom level displayed as percentage.
Page Navigation
Previous/Next buttons, direct page number input, and swipe left/right on mobile. State: currentPage + totalPages.
In-Document Search
Search box highlights matches across the whole PDF. PDF.js handles text extraction and matching.
Fullscreen Mode
isFullscreen state. Opens document in fullscreen via the Fullscreen API. Hint overlay shown first time.
Download Button
Controlled by the showDownload option. Public PDFs show download; password-protected PDFs may restrict it.
Touch Gestures
Swipe left/right changes page. Pinch-to-zoom adjusts scale. Touch action: none on canvas prevents scroll conflicts. Swipe hint overlay shown for new users.
Anatomy

Viewer UI Breakdown

Papers
PDF Viewer
Page 3 / 24
115%

Abstract

This paper presents a novel approach to embedded ML inference using TinyML frameworks. Performance benchmarks are compared across ARM Cortex-M4 and RISC-V cores...

Keywords: TinyML, Edge AI, RISC-V, Cortex-M4, Power Analysis

← Swipe to change page →
Read
Info
Save
1

PDF Toolbar

Page navigation (prev/next), zoom controls with live percentage display, and download button. State: currentPage, totalPages, zoom level.

2

Search Bar

Persistent search field above the canvas. Type any word to highlight all matches in the document. PDF.js text layer enables this.

3

PDF Canvas

PDF.js renders each page onto an HTML5 canvas element. High-quality text rendering with selectable text layer overlay.

4

Swipe Hint

.pdf-swipe-hint overlay shown to first-time visitors. Arrows animate left/right. Hides after first swipe or after user dismisses it.

5

Fullscreen Button

Top-right of header. Uses Fullscreen API. isFullscreen boolean tracks state. A .fullscreen-hint overlay appears briefly on first entry.

6

Download Button

Shown only when showDownload: true option is passed. For password-protected PDFs, download may be intentionally disabled.

Shortcuts

Keyboard Controls

Works on desktop when the PDF viewer is focused. Click anywhere on the PDF first.

KeyActionNotes
/ Page↓Next pageQueues if still rendering (pageNumPending)
/ Page↑Previous page
HomeFirst pageJumps to page 1
EndLast pageJumps to page totalPages
+ / =Zoom in10% per step
-Zoom out10% per step
Ctrl+FOpen searchFocuses the search input
FFullscreenToggle fullscreen mode
EscExit fullscreen
Comparison

Mobile vs Desktop

Mobile
  • Swipe left/right to change pages
  • Pinch-to-zoom — two finger spread/pinch
  • touch-action: none on canvas prevents page scroll during zoom
  • Swipe hint overlay shown on first open
  • Fullscreen via the expand button
  • No keyboard shortcuts
Desktop
  • Full keyboard navigation (arrows, home, end)
  • Ctrl+F opens search box
  • +/- keys for zoom
  • Mouse scroll within the canvas
  • Larger canvas — more text visible at once
  • F key toggles fullscreen
Hidden Features

Lesser-Known Tricks

Page render queue

If you tap "Next" while a page is still rendering, the viewer queues it in pageNumPending. As soon as the current page finishes, the queued page renders automatically — no missed taps.

Password-protected PDFs

Some Book PDFs require a password (added by the add_pdf_password.py tool). The viewer detects the password requirement and shows an input prompt before loading pages.

Configurable download control

The viewer is initialized with options: { showDownload: true/false, allowZoom: true, downloadName: 'filename.pdf' }. The Only-Boss manager sets these per-document.

Technical Details

Code Reference

Key File
Viewer JS
mobile/shared/pdf-viewer.js
State vars
currentPage, totalPages, pageRendering, pageNumPending, isFullscreen
Init options
{ showDownload, allowZoom, downloadName }
Mobile touch
initialPinchDistance, touches[] array
Swipe hint class
.pdf-swipe-hint (hidden after first use)
Zoom CSS
.pdf-zoom-group, .pdf-zoom-level
Page info CSS
.pdf-page-info
Password tool
add_pdf_password.py (root of workspace)
Size checker
check_pdf_size.py (root of workspace)
Explore More

Other Feature Guides

More deep-dives into A3KM Studio features — shortcuts, hidden tricks, mobile vs desktop comparisons and code references.