All notable changes to PDF-Helper will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- New CLI subcommand:
pdf-helper generate-recipe [template_name] [output_path]- Lists all available templates when called without arguments
- Generates a recipe YAML file for a chosen template
- Templates:
remove-pages,bundle,split-and-extract,extract-text,convert-to-images
templates.pymodule withlist_templates()andget_template()API functions
- Remove
sys.exit()calls from library functions (extract_text(),split_pdf(),run_recipe()). Library code now raises proper exceptions (ValueError,PermissionError,RecipeError) instead of terminating the process, making the package safe to import and use as a library
- Make sure
pdf_to_image()closes the PDF file it opens, preventing file-lock issues on Windows - Improve error handling for recipe cleanup and improve reporting
- Recipe system: run multi-step PDF workflows from YAML files
- 8 supported operations:
bundle,remove_pages,split_pdf,pdf_to_image,extract_text,watermark,encrypt,metadata - Step referencing with
input: { step: step_id }to pipe outputs - Template resolution (
{temp_dir}) in file paths - Input resolution from environment variables or interactive prompts
- Cleanup of temporary files via
cleanup_tempsetting
- 8 supported operations:
- New CLI subcommand:
pdf-helper run-recipe <recipe.yaml> [--force] [--verbose] encrypt_pdf()andset_metadata()API functions (raiseNotImplementedError, graceful pipeline fallback)- Example recipes in
examples/recipes/:remove-pages.yaml— remove pages from a PDFbundle-with-pages.yaml— bundle files with per-file page selectionsplit-convert-extract.yaml— split, convert to images, and extract textsecure-report-workflow.yaml— full multi-step pipeline with encryption and metadata
- Recipe JSON Schema at
schemas/recipe-schema.jsonfor YAML LSP support
- Windows file-lock issues: explicit
PdfDocumentreader/writer close inbundle(),remove_pages(), andsplit_pdf() - README: corrected
mergeCLI example tobundle