E-Book MCP Server with PDF Conversion
by rmcendarfer2017
A server for creating e-books and PDF documents from HTML content with embedded images. This project provides robust functionality for converting HTML files to PDF while properly handling embedded images.
View on GitHub
Last updated: N/A
E-Book MCP Server with PDF Conversion
A server for creating e-books and PDF documents from HTML content with embedded images. This project provides robust functionality for converting HTML files to PDF while properly handling embedded images.
Features
- Convert HTML files to PDF documents with proper image handling
- Support for both pdfkit (wkhtmltopdf) and reportlab PDF generation engines
- Robust error handling and logging
- Temporary file management with automatic cleanup
- Detailed diagnostic information during conversion process
Requirements
- Python 3.9+
- wkhtmltopdf (optional but recommended for better PDF quality)
- Python packages:
- fastapi
- python-docx
- pdfkit
- reportlab
- pydantic
- uvicorn
- pillow
Installation
- Clone this repository
- Install the required Python packages:
pip install fastapi python-docx pdfkit reportlab pydantic uvicorn pillow
- Install wkhtmltopdf (optional):
- Windows: Download and install from wkhtmltopdf.org
- Linux:
sudo apt-get install wkhtmltopdf
- macOS:
brew install wkhtmltopdf
Usage
The server provides a function called handle_call_tool
that accepts the following arguments:
arguments = {
"text_file": "path/to/input.html",
"images": {
"image1.png": "path/to/image1.png",
"image2.jpg": "path/to/image2.jpg"
},
"output_pdf": "path/to/output.pdf"
}
Example
result = await handle_call_tool("CREATE_DOC", {
"text_file": "document.html",
"images": {
"header.png": "images/header.png",
"footer.jpg": "images/footer.jpg"
},
"output_pdf": "output/document.pdf"
})
How It Works
- The server processes the input HTML file
- It replaces image references in the HTML with absolute paths
- It attempts to convert the HTML to PDF using pdfkit (if available)
- If pdfkit fails or is not available, it falls back to reportlab
- The resulting PDF is saved to the specified output path
Project Structure
main.py
: Contains the core functionality for PDF conversionpyproject.toml
: Project metadata and dependencies
License
MIT