Lattice
연구를 위한 작업공간
브라우저에서 양식 작성·텍스트 추가·체크박스 선택·도형 그리기·PDF 서명 가능, 무료이며 회원가입 없이 파일이 기기에 남습니다
Fill forms, add text, tick boxes, draw shapes and sign PDFs in your browser. Free, no sign-up, and your files never leave your device.
생산성JavaScript · CSSGitHub @talaljawaid94온라인운영자 미확인
써 보셨어요? 한 번만 눌러 주세요. 로그인은 필요 없어요.
아직 감지된 업데이트가 없습니다. GitHub 릴리스가 나오면 여기에 보입니다.
I free pdf editor and signing tool
README 전체를 불러오는 중입니다. 아래는 저장된 발췌입니다.
Fill forms, add text, tick boxes, draw shapes and sign PDFs in the browser.
Everything runs on the user's device: files are never uploaded, so hosting is a
plain static site (free on Vercel) with no server, storage, or per-use cost.
Sejda and Smallpdf are the reference products. Their most-used editing features are the same
small set: add text, fill form fieREADME 전문 보기 ↗Fill forms, add text, tick boxes, draw shapes and sign PDFs in the browser. Everything runs on the user's device: files are never uploaded, so hosting is a plain static site (free on Vercel) with no server, storage, or per-use cost.
| Area | What you get |
|---|---|
| Fillable forms | Detects AcroForm fields (text, multiline, checkbox, radio, dropdown) and fills them natively. Optional "Flatten form" on download. |
| Text | Click anywhere to type. 5 fonts across categories: Helvetica (sans), Times (serif), Courier (mono), Kalam (handwriting), Dancing Script (script). Size, bold, italic, colour. Date stamp. |
| Form marks | Tick ✓, cross ✗ and radio dot ● for printed (non-fillable) forms. Resizable, recolourable. |
| Shapes | Box, circle/ellipse, line, arrow — stroke colour, stroke width, fill on/off, fill colour, opacity. Shift = square / circle / 45° snap. |
| Markup | Freehand pen, highlighter (multiply blend), whiteout. |
| Images | Insert PNG / JPEG / WebP / GIF. |
| Signatures & initials | Draw, type (4 signature fonts) or upload (with white-background removal). Black / blue / red ink. Saved on the device for reuse. |
| Editing | Move, resize, duplicate, bring to front / send to back, delete, undo / redo, arrow-key nudge, zoom. |
| Robustness | Handles rotated pages, crop-box offsets, and pages whose content leaks graphics state. Password-protected PDFs open after entering the password; encrypted PDFs export as a flattened copy. |
Keyboard: V select · T text · D date · K tick · X cross · O dot · R box · E circle · L line · A arrow · P draw · H highlight · W whiteout · I image · S sign · N initials · Ctrl/⌘+Z undo · Ctrl/⌘+Shift+Z redo · Ctrl/⌘+D duplicate · Ctrl/⌘+S download · Del delete · Esc cancel.
Sejda and Smallpdf are the reference products. Their most-used editing features are the same small set: add text, fill form fields, checkmarks, shapes/whiteout, highlight and draw, images, and signatures (type / draw / upload) plus initials and dates. Both process files on their servers and cap free use (Sejda: 3 tasks per hour, 50 pages, 50 MB; Smallpdf: limited free tasks, and editing the PDF's original text requires Pro).
FreePDF covers that core set with no limits, because the work happens locally in the browser. Not included (yet): editing text that's already in the PDF, adding links or new form fields, and page tools (merge/split/rotate/reorder).
src/shapes.js produces the SVG path for each shape; the same path is
drawn on screen and written to the PDF, so output matches what you see.src/
main.js app shell: toolbar, property bar, shortcuts, open/download
viewer.js pdf.js loading, page rendering, form-field detection
overlay.js annotation rendering, selection, drag/resize, tools, form inputs
exporter.js pdf-lib export (+ flattened fallback for encrypted files)
shapes.js geometry shared by screen and export
signature.js signature/initials dialog
fonts.js font registry and text metrics
state.js state + undo/redo
sample.js generates the demo form
pdf-lib's font subsetter drops glyphs from many fonts (Kalam, Caveat). Fonts are therefore
embedded whole unless subsetting is known to work for that file (Dancing Script, which
can't be embedded whole). The subset flag lives on each font in src/fonts.js. If you add
a font, check the exported PDF in a second viewer (e.g. Preview or Chrome).
The three standard fonts only cover Western European characters. Other characters are
replaced with ? in the exported file. Arabic/Urdu etc. would need an embedded Unicode font.
npm install
npm run dev
npm run build # production build into dist/
npm run preview # serves dist/ on localhost with the same security headers as Vercel
vercel.json sets a strict Content-Security-Policy (everything from the same origin, no third-party
requests), HSTS, no-referrer, clickjacking protection, and long-lived caching for hashed assets.
npm run preview applies the same headers, so a policy change that breaks the app shows up locally.
If you add a CDN, analytics or an embedded iframe, update the policy in vercel.json first.
main is the live website. Never work on it directly. Every other branch gets its own private
preview link from Vercel, so you can review changes on a real URL before they go live.
git switch -c short-name-of-change # 1. new branch from main
npm run dev # 2. build and test locally
git add -A && git commit -m "What I changed"
git push # 3. publish the branch (first push sets up tracking)
여기까지가 README 앞부분입니다. 나머지는 원문에서 읽을 수 있습니다. README 전문 보기 ↗