Save code files into PDF format with syntax highlighting.
It can convert a single code file or all files in a project (folder) using one command.
Updated for MacOS M2 Chipset.
> pip install PDFCode
########################################
# install wkhtmltopdf
> brew cask reinstall wkhtmltopdf
# or
# brew install caskroom/cask/wkhtmltopdf
########################################
########################################
# install libmagic
> brew install libmagic
########################################
- 2.1 Python Library
from PDFCode import PDFCode
- 2.2 Console app. Open a terminal and type the following command:
> pdfcode --help
# usage: PDFCode.py [-h] [--dst [DST]] [-l] [-s SIZE] [-S NAME] [-m MARGIN]
# [--ignore IGNORE] [-v]
# src
# Convert source files into .pdf with syntax highlighting
# positional arguments:
# src The path of the file/folder
# optional arguments:
# -h, --help show this help message and exit
# --dst [DST] The path of the saving target folder. Empty will save
# to PDFCode_Results/
# -l, --linenos Include line numbers.
# -s SIZE, --size SIZE PDF size. Letter,A1,A2,A3,A4,A5, etc.
# -S NAME, --style NAME
# The style name for highlighting.
# -m MARGIN, --margin MARGIN
# The layout margins in inch (default 0.4in).
# --ignore IGNORE Ignore files whose names contain sub-string. (multiple
# ignore str splited using , e.g., --ignore abc,.jpg to
# ignore 'abc' and '.jpg')
# -v, --version show program's version number and exit
Example
# process single file:
> pdfcode ./test/algol.py -s a4 -S colorful --ignore .json,test
# process all files in a folder and its subfolders:
> pdfcode ./test -s a4 -S colorful
Now, the code supports 36 styles:
- This code is modified from code2pdf. I am holding this repository because the code2pdf had the following problems at the moment when I was trying to use.
- The generated PDF files did not have syntax highlighting (all black-white).
- The command only supported to process a single file. Sometime, I want to process multiple code files.
- The code2pdf used python2 and pyqt4. They were not easy to setup on my machine (especially pyqt4).
- This code is implemented based on libraries like pdfkit, magic, pygments, etc. I appreciate the contributations of all of these authors.