pdf-free.openapps.xyz

Source

This app’s code and revision history are public. Download a copy or explore the files below.

Public
The app’s code and revision history are public.
Owned app · rev 0341fee61377
Run it yourself
Take the whole tree and run it on your own machine. The download needs no account. Cloning needs a sign-in.
Download .zip
bounded clone 7716a56ff3432bc0c1e4837c
A copy you download is not bounded. The guarantees this app runs under - declared egress, proven invariants, writes that fail closed - live in the runtime serving this page, not in the files. What you get is auditable source you can read and run, with no runtime guarantees attached.
← All files
src/lib/tools.ts
// Links straight to one job, such as /compress or /split, for people who arrive with a task and for
// assistants that send them. Each one sets the tab title, the drop zone and the panel that opens first.
import type { NumberPos, Shrink } from "./engine";

export type Tab = "pdf" | "split" | "images";
export type Tool = { title: string; drop: string; tab: Tab; shrink?: Shrink; numbers?: NumberPos };

export const TOOLS: Record<string, Tool> = {
  merge: { title: "Merge PDF free", drop: "Drop the PDFs to merge", tab: "pdf" },
  split: { title: "Split PDF free", drop: "Drop a PDF to split", tab: "split" },
  compress: { title: "Compress PDF free", drop: "Drop a PDF to make it smaller", tab: "pdf", shrink: "medium" },
  rotate: { title: "Rotate PDF free", drop: "Drop a PDF to rotate", tab: "pdf" },
  "delete-pages": { title: "Delete PDF pages free", drop: "Drop a PDF to remove pages", tab: "pdf" },
  "extract-pages": { title: "Extract PDF pages free", drop: "Drop a PDF to take pages from", tab: "pdf" },
  organize: { title: "Organize PDF pages free", drop: "Drop a PDF to reorder", tab: "pdf" },
  "jpg-to-pdf": { title: "JPG to PDF free", drop: "Drop photos or scans", tab: "pdf" },
  "pdf-to-jpg": { title: "PDF to JPG free", drop: "Drop a PDF to turn into images", tab: "images" },
  "page-numbers": { title: "Add page numbers to PDF free", drop: "Drop a PDF to number", tab: "pdf", numbers: "bottom-center" },
};

/** The job this address opens, if it names one. */
export function currentTool(): Tool | null {
  return TOOLS[location.pathname.replace(/^\/+|\/+$/g, "")] || null;
}

Change history

Quality pass: compress, PDF to JPG, phone layout, job links, llms.txt and index.md
0341fee613 · 5 hours ago
Bounded source sync
f00de5deb0 · 1 day ago
Bounded source sync
3c8124e576 · 1 day ago
Bounded source sync
5c14663e0f · 1 day ago
Bounded source sync
ee5c852f40 · 1 day ago