Skip to main content

Save code files into PDF format with syntax highlighting.

Project description

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

PDFCode-0.2.1.2.tar.gz (6.0 kB view details)

Uploaded Source

File details

Details for the file PDFCode-0.2.1.2.tar.gz.

File metadata

  • Download URL: PDFCode-0.2.1.2.tar.gz
  • Upload date:
  • Size: 6.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.7.16

File hashes

Hashes for PDFCode-0.2.1.2.tar.gz
Algorithm Hash digest
SHA256 fea26ac76eaf30c0bfd9db8d8a61175d85f7b8e1a9f1aec146d920531fcf021d
MD5 67207efaa44056184562809608ce2e2c
BLAKE2b-256 5108502f8d1692ecbbea6fa03181906ef7bf798c7ca54e61ff324e6afae5d72f

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page