Skip to content

Latest commit

 

History

History
107 lines (80 loc) · 4.19 KB

File metadata and controls

107 lines (80 loc) · 4.19 KB

PDFCode

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.


1. Installation

MacOS:

> pip install PDFCode

########################################
# install wkhtmltopdf
> brew cask reinstall wkhtmltopdf
# or
# brew install caskroom/cask/wkhtmltopdf
########################################


########################################
# install libmagic
> brew install libmagic
########################################

2. Usage

  • 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:

abap algol algol_nu arduino autumn borland
abap algol algol_nu arduino autumn borland
bw colorful default emacs friendly fruity
bw colorful default emacs friendly fruity
igor inkpot lovelace manni monokai murphy
igor inkpot lovelace manni monokai murphy
native paraiso-dark paraiso-light pastie perldoc rainbow_dash
native paraiso-dark paraiso-light pastie perldoc rainbow_dash
rrt sas solarized-dark solarized-light stata stata-dark
rrt sas solarized-dark solarized-light stata stata-dark
stata-light tango trac vim vs xcode
stata-light tango trac vim vs xcode

3. Acknowledgements

  • 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.
    1. The generated PDF files did not have syntax highlighting (all black-white).
    2. The command only supported to process a single file. Sometime, I want to process multiple code files.
    3. 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.