Apple - Can man pages be converted to html and/or pdf format?

Yes, there are numerous tools to convert manual pages to HTML and PDF.

UNIX Approach

Converting a man page to HTML, PDF, and text provides detailed instructions for macOS:

cat /usr/share/man/man1/osascript.1 | groff -mandoc -Thtml >man_osascript.html

If the file ends in .gz, then substitute the following.

gunzip --to-stdout /usr/share/man/man8/cupsfilter.8.gz | groff -mandoc -Thtml >man_cupsfilter.html

For converting from HTML to PDF:

cupsfilter man_osascript.html > man_osascript.pdf

For other tool chains, see these related questions:

  • How do I convert Linux man pages to HTML without using groff?
  • What's the easy way to convert all man pages to html?
  • Convert all Linux man pages to text / html or markdown

pandoc

Another approach is to use the popular pandoc tool. This tool can convert manual pages to a wide range of formats.

Link x-man-page

macOS's Terminal.app offers a x-man-page URL scheme for pretty printing manual pages. Try opening the link below to see the ls man page:

x-man-page://ls

man -t yourcommand | open -fa "Preview"

where yourcommand is the one you want the man page of.


$ man -t tmutil | open -fa "Preview"


Here is a function I added to my .bash_profile file to create a PDF of each BSD command I'd check the manual page for:

manp () 
{ 
    docDir="$HOME/Documents/BSD Commands"
    [[ ! -d $docDir ]] && mkdir -p "$docDir"
    if [[ ! -f $docDir/$1.pdf ]]; then
        man -t "$1" | pstopdf -i -o "$docDir/$1.pdf"
        open "$docDir/$1.pdf"
    else
        open "$docDir/$1.pdf"
    fi
}

So, in Terminal, typing e.g. manp bash instead of man bash a PDF gets created, if it hasn't already been, and then opened by the app registered to handle PDF documents. The default is Preview, however on my system it's set to use Skim, as its search functionality is better then Preview and as a matter of fact will find the search string when Preview just will not.

Note that the first time the function is used it will enumerate some fonts in the output in Terminal, however this is a one time enumeration of the fonts.


As a side note, typing just the command name in Terminal and then right-click on it and select Open man Page, displays it in a fully scrollable and searchable Terminal window, which is much better then typing e.g. man bash.