Remove Active Content (Links) from a LaTeX PDF Using Ghostscript

thumbnail
Terminal — flatten a LaTeX PDF$ gs -dNOPAUSE -sDEVICE=pdfwrite \\ -sOUTPUTFILE=NEW_FILE.pdf -dBATCH in.pdfProcessing pages 1 through 3.Page 1 ... Page 2 ... Page 3NEW_FILE.pdf active links removed

A PDF produced from LaTeX often carries "active" content: clickable hyperlinks, internal cross-reference links, bookmarks, and sometimes form fields or embedded JavaScript. When you need a flat, static PDF for printing, archiving, or submitting to a system that rejects interactive elements, the simplest reliable tool is Ghostscript. This tutorial shows how to strip that active content by re-distilling the file through Ghostscript's pdfwrite device.

Step 1: Install Ghostscript

On macOS, install it with Homebrew:

brew install ghostscript

On Debian or Ubuntu use sudo apt install ghostscript; on most Linux distributions Ghostscript is packaged as ghostscript and provides the gs command.

Step 2: Re-distill the PDF

Run the source PDF back through Ghostscript's pdfwrite device. This rewrites the file from its drawing operations, and the interactive annotation layer (links, bookmarks, form fields) is not carried across, leaving a flat PDF that looks identical but is no longer active:

gs -dNOPAUSE -sDEVICE=pdfwrite -sOUTPUTFILE=NEW_FILE.pdf -dBATCH Trivedi_Devharsh_CV.pdf

Breaking down the options:

  • -dNOPAUSE processes every page without pausing between them.
  • -sDEVICE=pdfwrite selects the PDF writer, which is what rebuilds the file.
  • -sOUTPUTFILE=NEW_FILE.pdf is the flat output file.
  • -dBATCH exits Ghostscript when the job is done instead of dropping into its prompt.
  • Trivedi_Devharsh_CV.pdf is the input file (replace with your own).

Ghostscript prints its banner and processes each page:

GPL Ghostscript 10.02.1 (2023-11-01)
Copyright (C) 2023 Artifex Software, Inc.  All rights reserved.
This software is supplied under the GNU AGPLv3 and comes with NO WARRANTY:
see the file COPYING for details.
Processing pages 1 through 3.
Page 1
Page 2
Page 3

The result, NEW_FILE.pdf, keeps the visible text and graphics but drops the clickable link layer.

Step 3: Verify

Open NEW_FILE.pdf and confirm the links no longer respond to clicks and the layout is unchanged. The text stays selectable and searchable because the page content itself is preserved; only the interactive annotations are gone.

If something interactive still survives

Re-distilling removes the annotation layer in the large majority of cases. If a particular file still carries something you need gone, the most thorough option is to rasterize each page to an image and wrap it back into a PDF, which guarantees nothing interactive remains:

gs -dNOPAUSE -dBATCH -sDEVICE=pdfimage24 -r300 -sOUTPUTFILE=NEW_FILE.pdf input.pdf

This renders every page at 300 DPI. The trade-off is that the text is no longer selectable or searchable, so use it only when a fully static, image-only PDF is acceptable.

Avoiding active content at the source

If you control the LaTeX source and simply never want these links, the cleaner long-term fix is to not load hyperref, or to disable its links with \hypersetup{draft}, so the PDF is produced flat in the first place. Ghostscript remains the right tool when you only have the finished PDF.

Reference

This uses Ghostscript to flatten a PDF produced by LaTeX, stripping the clickable links and other active content while keeping the visible pages intact.

It is handy when a submission system or reviewer requires a plain PDF without hyperlinks. Ghostscript rewrites the file through its pdfwrite device, which drops the interactive annotations.

Comments

Popular posts from this blog

[Solved] Error: No such keg: /usr/local/Cellar/gcc

[How To] Unfollow Non-followers on Instagram