Package for generating HTML and PDF/latex from python code
Project description
Pyladoc
Description
Pyladoc is a python package for programmatically generating HTML and PDF/LaTeX output. This package targets specifically applications where reports or results with Pandas-tables and Matplotlib-figures are generated to be displayed as website and as PDF document without involving any manual formatting steps.
This package focuses on the "Document in Code" approach for cases where a lot of calculations and data handling is done but not a lot of document text needs to be displayed. The multiline string capability of Python handles this very well. In comparison to "Code in Document"-templates python tools supports this approach out of the box.
As backend for PDF generation LaTeX is used. There are excellent engines for rendering HTML to PDF, but even if there is no requirement for an accurate typesetting and what not, placing programmatically content of variable composition and element sizes on fixed size pages without manual intervention is a hard problem where LaTeX is superior.
Example outputs
- HTML: test_html_render1.html (code)
- PDF: test_latex_render1.pdf (code)
The documents are generated by the script tests/test_rendering_example1_doc.py.
Supported primitives
- Text (can be Markdown or HTML formatted)
- Headings
- Tables (Pandas, Markdown or HTML)
- Matplotlib figures
- LaTeX equations (block or inline)
- Named references for figures, tables and equations
Key Features
- HTML and PDF/LaTeX rendering of the same document
- Single file output including figures
- Figure and equation embedding in HTML by inline SVG, SVG in Base64 or PNG in Base64
- Figure embedding in LaTeX as PGF/TikZ
- Tested on Linux and Windows
Usage Scenarios
- Webservices
- Report generation for lab equipment
Installation
It can be installed with pip:
pip install pyladoc
Dependencies
Pyladoc depends on the markdown package.
Optional dependencies are:
- Matplotlib python package for rendering LaTeX equations for HTML output
- LaTeX for exporting to PDF or exporting Matplotlib figures to LaTeX (PGF/TikZ rendering)
- Pandas and Matplotlib for including Pandas Tables and Matplotlib figures (obviously)
Usage
It is easy to use as the following example code shows:
import pyladoc
import pandas as pd
doc = pyladoc.DocumentWriter()
doc.add_markdown("""
# Example
This is inline LaTeX: $$\\lambda$$
This is a LaTeX block with a number:
$$
\\label{eq:test1}
\\lambda_{\text{mix}} = \\sum_{i=1}^{n} \\frac{x_i \\lambda_i}{\\sum_{j=1}^{n} x_j \\Phi_{ij}}
$$
This is an example table. The table @table:pandas_example shows some random data.
""")
some_data = {
'Row1': ["Line1", "Line2", "Line3"],
'Row2': [120, 100, 110],
'Row3': ['12 g/km', '> 150 g/km', '110 g/km']
}
df = pd.DataFrame(some_data)
doc.add_table(df, 'This is a pandas example table', 'pandas_example')
html_code = doc.to_html()
print(html_code)
doc.to_pdf('test.pdf')
Contributing
Contributions are welcome, please open an issue or submit a pull request on GitHub.
Developer Guide
To get started with developing the pyladoc package, follow these steps.
First, clone the repository to your local machine using Git:
git clone https://github.com/Nonannet/pyladoc.git
cd pyladoc
It's recommended to setup an venv:
python -m venv venv
source venv/bin/activate # On Windows use `venv\Scripts\activate`
Install the package and dev-dependencies while keeping files in the current directory:
pip install -e .[dev]
Ensure that everything is set up correctly by running the tests:
pytest
License
This project is licensed under the MIT License - see the LICENSE file for details.
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file pyladoc-1.2.0.tar.gz.
File metadata
- Download URL: pyladoc-1.2.0.tar.gz
- Upload date:
- Size: 25.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
0655c7ada8b6b6e0fad24bb938f955d7d811c8a6c1e23c98de60c13d81b6ec57
|
|
| MD5 |
ee8e81c5056b44f67e812f031ebfb435
|
|
| BLAKE2b-256 |
0ccb4371dfacbec3ab54961fa37f0fc7fec094e39743c65996a6d70bb02052e4
|
File details
Details for the file pyladoc-1.2.0-py3-none-any.whl.
File metadata
- Download URL: pyladoc-1.2.0-py3-none-any.whl
- Upload date:
- Size: 17.2 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.12.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
693b300f5ef018f95db397f7b8171ea2d9623d0dcc58eff00826be8536fe049f
|
|
| MD5 |
c462bb33f808f71e84f485f489039ac6
|
|
| BLAKE2b-256 |
8b14e816d5842fee318103653ffc3a4a793bcd00e062aef8c1f3465f4c06e43c
|