I don't know about best, but Native Winds' Tomakhawk PDF+ will convert
chm to PDF nicely.
"CHM Extraction - Now supports extracting formatted text and images from
CHM files. (Compiled help files are decompiled and contents are saved to
disk)."
Sounds like Tomahawk first decompiles the chm files. Do you need to
convert the resulting html, hhc, index etc. files to tomahawk pdf
in a separate step? How does the size of the result compare to the
original chm file?
Currently I use chmencode to decompile chm files, and dir2html to
create a table of contents, identical to the hhc file, with dir2html.
Index files can be created with text indexers like wulber. Problem with
this approach is the size and number of the uncompressed files.