# PDF Tools — Manual

> The complete reference for PDF Tools: Viewer & Editor, Creator, Merge & Split, Convert and Reference — every feature, every option, every limit.

Source: https://www.jpkc.com/db/en/tools/pdf/manual/

Back to the overview: [PDF Tools](https://www.jpkc.com/db/en/tools/pdf/) · Open the tool live: [www.jpkc.com/tools/pdf/](https://www.jpkc.com/tools/pdf/)

This manual documents **PDF Tools** in full: all five tabs, every feature and option, plus the architecture and operating limits. The interface is in English, so the original tab, button and option labels are used throughout.

## Architecture: all in the browser

PDF Tools are **purely client-side**. There is no server processing your files, no API, no upload and no account. Every operation runs locally in your browser via JavaScript. To do that, the tool combines several open-source libraries, all bundled locally and loaded only when you use the relevant tab:

- **Mozilla PDF.js** (Apache 2.0) — the embedded viewer, preview rendering, text extraction and metadata reading.
- **pdfmake** (MIT) — the *Creator* plus the Markdown and Simple HTML conversions (producing real, searchable text). Embedded font: **Roboto**.
- **pdf-lib** (MIT) — *Merge*, *Split* and *Images → PDF*.
- **html2pdf.js** (MIT, internally html2canvas + jsPDF) — the visual *Rich HTML* conversion (raster).

**Size limit:** files may be **up to 50 MB**. Larger ones are rejected with a message. This protects your browser's memory — it is not a server-side limit. When opening PDFs for *Merge* and *Split*, the tool ignores existing encryption (`ignoreEncryption`), so it can load many protected files too.

## Viewer & Editor

The default tab on load. Here you view and **edit** a PDF in the full Mozilla PDF.js viewer.

### Open a PDF

Drag and drop a `.pdf` file onto the drop zone or click **Browse Files**. The file is loaded locally as an object URL and shown in the embedded viewer — it never leaves your browser. **Close** unloads the file.

### View, search, navigate

The embedded viewer offers the complete PDF.js interface: paging, zoom, page thumbnails and outline, **search with match highlighting**, rotate, presentation mode and **print**. The tool's own toolbar above the viewer adds **Fullscreen**.

### Annotate, highlight, draw, sign, insert images

The viewer's editor tools let you genuinely edit the PDF:

- **Highlight** — highlight text passages in colour (colour, thickness and visibility adjustable).
- **FreeText** — place text notes directly on the page (colour, font size).
- **Ink (Draw)** — draw freehand (colour, opacity, stroke width).
- **Stamp (Add Image)** — insert an image as a stamp.
- **Signature** — create and place a signature.

You save your changes via the viewer's **Save** — the result is downloaded as a new PDF file. There is no server-side storage; saving means a local download only.

### Fill in forms

If the PDF contains interactive form fields (AcroForms), the viewer renders them as fillable fields. Enter your values directly and save the completed form via **Save**.

### Info (document metadata)

The **Info** button opens a panel with the document's metadata: file name and size, page count, title, author, subject, keywords, creator, producer, PDF version, **page size** (in points, mm and inches, computed from the first page), creation and modification dates, and the **Linearized** and **Encrypted** flags. Empty fields are hidden. **Copy** copies the table as text. (The "Tagged" field is derived from the AcroForm flag and therefore indicates the presence of form fields rather than a true tagged-PDF structure.)

### Extract text

The **Text** button reads all text content out of the PDF — page by page, each marked `--- Page N ---`. Below it you see statistics (pages, words, characters). You can **Copy** the text or download it as `.txt`. This only works on PDFs with a real text layer; pure scans without text return little (the tool has **no OCR**).

## Creator

Here you build a PDF from scratch — from blocks instead of code. The form on the left, the live preview on the right.

### Document Settings

- **Page Size** — A4 (default), A3, A5, Letter, Legal or Tabloid.
- **Orientation** — Portrait or Landscape.
- **Font** — fixed to **Roboto** (the only embedded font).
- **Font Size** — base font size in points (6–72, default 12).
- **Margins** — top/right/bottom/left page margins in points (default 40 each).

### Content Blocks

Use **Add Block** to add building blocks. Each block can be moved up/down, **duplicated**, deleted and collapsed:

- **Heading** — a heading at level H1–H4 (sizes 24/20/16/14 pt) with alignment; always bold.
- **Paragraph** — body text with alignment, its own font size, and bold/italic toggles.
- **Table** — an editable grid; a **First row is header** toggle; add rows and columns via **Row**/**Col**. Columns are distributed at equal width.
- **List** — a list; an **Ordered list** toggle for numbered vs. bulleted; add/remove items (empty items are dropped at generation).
- **Image** — embed an image (PNG or JPEG); width in points and alignment adjustable.
- **Two Columns** — a two-column section with left and right text.
- **Horizontal Rule** — a divider line across the page width.
- **Page Break** — forces a new page at this position.

### Generate, preview, export

- **Generate PDF** renders the document; the preview appears on the right, paged with the arrow buttons (tooltip *Previous page* / *Next page*).
- **Download** saves the result as `document.pdf`.
- **Export JSON** / **Import JSON** saves and loads the full document definition (settings **and** blocks, including embedded images) as `pdf-document.json` — so you can build templates and reuse them later.
- **Clear All** discards all blocks.

## Merge & Split

Two sub-tabs (pills): **Merge** and **Split**, both built on pdf-lib.

### Merge

Drag several `.pdf` files onto the drop zone (non-PDFs are skipped with a notice). The table shows each file's number, name, page count and size. The action buttons let you **reorder** (up/down) or remove a file. **Merge All** combines all pages in exactly that order into one document — you need at least two files. Then download the result via **Download Merged PDF** as `merged.pdf`. **Clear All** empties the list.

### Split

Drag a single `.pdf` onto the drop zone; the tool shows its name, size and page count. There are three **Split Modes**:

- **Extract page ranges** — enter pages and ranges comma-separated, e.g. `1-3, 5, 8-10`. This produces **one** file with exactly those pages. Out-of-range values are ignored, duplicates removed, pages sorted ascending.
- **Split every N pages** — splits the PDF into chunks of N pages; each chunk becomes its own file.
- **Extract each page as single PDF** — pulls every page out as a separate PDF.

The result appears as a list (each labelled like "Page 1" or "Pages 1-3" with a page count). Download each file individually as `split_N.pdf`.

## Convert

Four sub-tabs (pills): **Markdown**, **Images**, **Simple HTML** and **Rich HTML**. Remember the core distinction: **Markdown and Simple HTML produce searchable text**, while **Rich HTML produces a raster image PDF**.

### Markdown → PDF

An ACE editor for Markdown (with **Open File** for `.md`/`.markdown`/`.txt`, **Load Example** and **Clear**). Supported: headings, **bold**, *italic*, `inline code`, bulleted and numbered lists (including nested), code blocks, tables, links, blockquotes and horizontal rules. Under **Page Settings** you set page size (A4/A3/A5/Letter/Legal), orientation, font size and margin. **Generate PDF** renders the preview (with page navigation); **Download** saves `markdown.pdf`. The result contains real text — you can search and copy from it.

### Images → PDF

Drag one or more images onto the drop zone or select them. Supported formats: **JPG, PNG, WebP, GIF, BMP, TIFF**. PNG and JPEG are embedded directly; WebP, GIF, BMP and TIFF are first converted to PNG via a canvas (capped at 4000 px). Each image gets its own page and is placed **centred**. Per image and globally you pick a **Fit Mode**:

- **Fit** — keep aspect ratio, fit within the page (default).
- **Fill** — scale to fill the page, cropping the overflow.
- **Stretch** — distort to the page area.

Under **Page Settings** you set size, orientation, margin and default fit. **Generate PDF** → **Download** saves `images.pdf`.

### Simple HTML → PDF

An ACE editor for HTML. Supported are common block and inline elements: `p`, `h1`–`h6`, `ul`/`ol`/`li`, `strong`/`em`, `code`/`pre`, `table`, `br`, `hr`, `a` and `blockquote` (containers like `div`/`section`/`article` are traversed). The markup is translated into real PDF text — the result is **searchable**. **CSS styling is ignored here**; that is what *Rich HTML* is for. Page Settings and download (`html.pdf`) as with Markdown.

### Rich HTML → PDF

Also an ACE editor, but a different approach: html2pdf.js renders the HTML **visually, like a browser** — including CSS, colours, flexbox, images and complex layouts. The output, however, is **raster**: the page is embedded as an image in the PDF, and the **text is not selectable or searchable**. An extra **Quality Scale** option: 1× (fast), 2× (default) or 3× (high quality for print). The margin here is given in **mm**. Download as `rich-html.pdf`.

## Reference

A static lookup with no processing — always available, even without a loaded file:

- **PDF Versions** — the version history from PDF 1.0 (1993) to 2.0 (2020, ISO 32000-2) with each release's additions.
- **Page Sizes Reference** — A3 through Executive in millimetres, inches and points.
- **Available Font** — the font available in the Creator (Roboto, in Regular/Medium/Italic/MediumItalic).
- **Creating Accessible PDFs** — notes on accessible PDFs (tagged PDF, reading order, alt text, document language, bookmarks, colour contrast, labelled form fields, Unicode fonts).
- **Unit Conversions** — conversion to points (1 pt = 1/72 inch) for mm, cm, inches and pixels.
- **Further Reading** — links to the PDF specification (ISO 32000-1) and the libraries used.

## Operating limits and privacy — in brief

- **Privacy:** everything runs locally in the browser; nothing is uploaded, no server sees your files.
- **Size limit:** files up to **50 MB** (browser memory safeguard, not a server limit).
- **No OCR:** text extraction and searchable conversions need real text; pure scans return none.
- **Rich HTML is raster:** no searchable text — use *Simple HTML* or *Markdown* for searchable text.
- **Embedded font in the Creator:** Roboto only.
- **Saving edits:** local download only (no server-side persistence).

For the starting point and the big picture, see the [overview page](https://www.jpkc.com/db/en/tools/pdf/). For concrete walkthroughs, see the [Examples](https://www.jpkc.com/db/en/tools/pdf/examples/). You can try everything directly in the [tool](https://www.jpkc.com/tools/pdf/).

