Run JavaScript on a PDF from the document context menu or Command Palette. Use an included script or edit your own with the same API as sumatrapdf-tool run.
Available in pre-release 3.7 and SumatraPDF ng desktop builds.
Choose a script, check its arguments, then press Run Script.
- Arguments: each row becomes an entry in
scriptArgs, starting atscriptArgs[0]. - Input and output: the first two rows start with the current PDF and an unused output filename beside it.
- Examples: load, create, annotate, extract text, render images, merge, create thumbnails, draw graphics, trace rendering, replace JPEG 2000 images, copy an outline, or bake annotations.
- Results: stdout and stderr appear below the script after it finishes. A failed script also reports its exit code.
Run an included script #
- Open a PDF, press
Ctrl + K, and choose Run PDF Script… (CmdRunPDFScript). You can also choose it from the document context menu. - Choose an example from the drop-down.
- Check Arg 1 (input) and Arg 2 (output). Use … to choose a file, x to delete a row, or Add arg to append one.
- Press Run Script. Open the output file when the script finishes.
Some examples require a third argument: an image for Create PDF or Draw graphics with Device, another input PDF for Merge PDFs, an outline source for Copy outline, or a page number for Trace device (default: 1).
Write your own script #
The runner supplies MuPDF classes such as
Document, PDFDocument, Image, and Buffer. Use print() to write output. See the JavaScript API reference.var doc = Document.openDocument(scriptArgs[0]);
print("Pages:", doc.countPages());
doc.save(scriptArgs[1], "compress");
You can also use
"<INPUT>" and "<OUTPUT>" inside the script. They expand to the first two argument values, escaped for a JavaScript string:var doc = Document.openDocument("<INPUT>");
doc.save("<OUTPUT>", "compress");
Tips #
- Changes saved in the viewer are available to the script; unsaved annotations are not, because scripts read the file on disk.
- Choose an output extension that matches the example: Draw graphics with Device writes PNG; Convert PDF to images appends page numbers and
.pngto the output path. - The script and arguments remain editable after a run. Selecting another example replaces the script text.
- The command requires disk access and is unavailable in restricted mode without it or in WebAssembly.