- β‘ Simple. Neat. Fast. Powerful. β‘
- Perfect for creating professional, customizable PDF documents
- Leverages the most powerful PDF document generator:
$\LaTeX$ - Advanced templating with complex variables and for loops
- Persistent CLI settings and configuration management
- Built with DDD, SOLID principles, and GoF design patterns
Like, Share, Subscribe, and Hit the Bell Icon!
Please do mention the software usage in your projects, products, etc.
Built with β€οΈ by BuddhiLW. Using Bonzai π³.
go install github.com/BuddhiLW/AutoPDF/cmd/autopdf@latest- LaTeX PDF Generation: Professional document creation
- Template Processing: Go template syntax with custom delimiters
- YAML Configuration: Flexible and readable configuration
- Multiple Engines: Support for pdflatex, xelatex, and more
- PDF Conversion: Convert PDFs to images (PNG, JPEG, etc.)
- Complex Variables: Nested objects, arrays, and mixed data types
- For Loops: Range loops over arrays and objects
- Persistent Settings: CLI settings that survive across sessions
- Structured Logging: Detailed logging with zap integration
- Configuration Management: Export/import configurations
- Domain-Driven Design (DDD): Clear domain boundaries
- SOLID Principles: Maintainable and extensible code
- GoF Design Patterns: Factory, Builder, Strategy, Command
- Clean Architecture: Separation of concerns
- Test-Driven Development: Comprehensive test coverage
# Simple document generation
autopdf build template.tex config.yaml
# With cleaning
autopdf build template.tex config.yaml clean
# With conversion
autopdf build template.tex config.yaml --convert png,jpeg# Complex variables with nested structures
autopdf build advanced_document.tex complex_config.yaml
# For loops with dynamic content
autopdf build loops_document.tex loops_config.yaml
# Persistent settings
autopdf verbose 3
autopdf clean on
autopdf debug switchtemplate: "document.tex"
output: "output.pdf"
engine: "pdflatex"
variables:
title: "My Document"
author: "AutoPDF User"
date: "2025-01-07"template: "advanced_document.tex"
output: "advanced_output.pdf"
engine: "pdflatex"
variables:
title: "Advanced Document"
metadata:
version: "1.0.0"
tags: ["example", "advanced", "complex"]
settings:
verbose: true
debug: false
items:
- name: "Feature 1"
enabled: true
priority: 1
- name: "Feature 2"
enabled: false
priority: 2\title{delim[[.vars.title]]}
\author{delim[[.vars.author]]}
\date{delim[[.vars.date]]}% Direct access to nested properties
Version: delim[[.vars.metadata.version]]
Verbose: delim[[.vars.metadata.settings.verbose]]
% Range loops over arrays
delim[[range .complex.metadata.tags]]
delim[[.]]\par
delim[[end]]
% Range loops over objects
delim[[range .complex.items]]
\subsection{delim[[.name]]}
Enabled: delim[[.enabled]]
Priority: delim[[.priority]]
delim[[end]]The test/ directory contains comprehensive examples:
- Simple variable substitution
- Basic YAML configuration
- LaTeX document generation
- Complex nested variables
- Range loops and dynamic content
- Mixed data types and structures
- Array iteration with
rangeloops - Object property access in loops
- Nested loop structures
- CLI settings management
- Configuration persistence
- Cross-session settings
test/model_letter/: Letter document exampletest/model_xelatex/: XeLaTeX engine exampletest/complex_variables/: Complex variable demonstration
-
Install AutoPDF:
go install github.com/BuddhiLW/AutoPDF/cmd/autopdf@latest
-
Try Basic Example:
cd test/basic_usage autopdf build document.tex config.yaml -
Explore Advanced Features:
cd test/advanced_features autopdf build advanced_document.tex config.yaml -
Test For Loops:
cd test/for_loops autopdf build loops_document.tex config.yaml
# Basic build
autopdf build TEMPLATE [CONFIG]
# With options
autopdf build TEMPLATE [CONFIG] [OPTIONS]# Verbose settings
autopdf verbose [LEVEL|on|off]
# Clean settings
autopdf clean [on|off|switch|status]
# Debug settings
autopdf debug [on|off|switch]
# Force settings
autopdf force [on|off|switch]# Clean auxiliary files
autopdf clean <path>
# Convert PDF to images
autopdf convert <pdf> <formats>This project is licensed under the Apache License 2.0.

