10 releases
Uses new Rust 2024
new 0.2.0 | Apr 20, 2025 |
---|---|
0.1.9 | Apr 17, 2025 |
0.1.5 | Mar 29, 2025 |
#1729 in Text processing
1,064 downloads per month
190KB
925 lines
code-to-pdf
Converts a folder of source code to a fully syntax-highlighted PDF
Features
- Syntax highlights code (uses syntect for highlighting and two-face for syntax definitions)
- Automatically handles line wrapping and page overflowing
- Fast. Processing runs in parallel on multiple cores
- Error-tolerant
- Configurable (custom file exclusions, output filename, fonts)
- Displays images
- Respects ignore globs in
.ignore
and.gitignore
(uses ignore)
Installation
From crates.io
cargo install code-to-pdf
Using cargo binstall
Installs a pre-built binary if it is available for your system
cargo binstall code-to-pdf
Using artefacts on Github Releases
Navigate to the latest release
Run the correct installer script for your system, or just download the correct binary directly
Build from repository source
git clone https://github.com/Tommypop2/code-to-pdf
cargo install --path ./code-to-pdf
Usage
Generating a PDF from a folder
c2pdf .
This walks the current folder and generates a syntax-highlighted PDF of all files in that folder
Excluding paths
c2pdf . --exclude pnpm-lock.yaml,*.lock
Custom output path
c2pdf . --out custom_name.pdf
Setting the font
Supports loading fonts from a path or the system fonts
# From a path
c2pdf . --font fonts/Helvetica.ttf
# From system fonts
c2pdf . --font "Arial"
Setting font size
c2pdf . --font-size 12.5 # 12.0 by default
Setting margins
c2pdf . --margin-top 20 --margin-bottom 5 --margin-left 10 --margin-right 10 # (these are the defaults)
Setting custom page text
This is text that is added to every page
c2pdf . --page-text "Hello\nWorld" # (use `\n` to indicate a newline)
Decoding
Generated PDFs can be decoded - recreating the original source tree which they were generated from
dc2pdf ./generated_pdf.pdf --out-dir ./generated # Default out-dir is `./generated`
Dependencies
~44–61MB
~755K SLoC