corpdoc 0.4.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- corpdoc-0.4.0/LICENSE +21 -0
- corpdoc-0.4.0/PKG-INFO +260 -0
- corpdoc-0.4.0/README.md +219 -0
- corpdoc-0.4.0/pyproject.toml +80 -0
- corpdoc-0.4.0/setup.cfg +4 -0
- corpdoc-0.4.0/src/corpdoc/__init__.py +19 -0
- corpdoc-0.4.0/src/corpdoc/api.py +480 -0
- corpdoc-0.4.0/src/corpdoc/canvas.py +230 -0
- corpdoc-0.4.0/src/corpdoc/cli.py +284 -0
- corpdoc-0.4.0/src/corpdoc/colors.py +173 -0
- corpdoc-0.4.0/src/corpdoc/flowables.py +407 -0
- corpdoc-0.4.0/src/corpdoc/i18n.py +59 -0
- corpdoc-0.4.0/src/corpdoc/logo.py +89 -0
- corpdoc-0.4.0/src/corpdoc/parser.py +214 -0
- corpdoc-0.4.0/src/corpdoc/styles.py +260 -0
- corpdoc-0.4.0/src/corpdoc.egg-info/PKG-INFO +260 -0
- corpdoc-0.4.0/src/corpdoc.egg-info/SOURCES.txt +23 -0
- corpdoc-0.4.0/src/corpdoc.egg-info/dependency_links.txt +1 -0
- corpdoc-0.4.0/src/corpdoc.egg-info/entry_points.txt +2 -0
- corpdoc-0.4.0/src/corpdoc.egg-info/requires.txt +14 -0
- corpdoc-0.4.0/src/corpdoc.egg-info/top_level.txt +1 -0
- corpdoc-0.4.0/tests/test_colors.py +132 -0
- corpdoc-0.4.0/tests/test_logo.py +110 -0
- corpdoc-0.4.0/tests/test_parser.py +169 -0
- corpdoc-0.4.0/tests/test_render.py +240 -0
corpdoc-0.4.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Alejandro Méndez
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
corpdoc-0.4.0/PKG-INFO
ADDED
|
@@ -0,0 +1,260 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: corpdoc
|
|
3
|
+
Version: 0.4.0
|
|
4
|
+
Summary: Professional Corporate PDF Generator from Markdown + Logo
|
|
5
|
+
Author-email: Alejandro Méndez <roccoco13@gmail.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/RoCCoCo13/corpdoc
|
|
8
|
+
Project-URL: Documentation, https://github.com/RoCCoCo13/corpdoc/tree/main/docs
|
|
9
|
+
Project-URL: Repository, https://github.com/RoCCoCo13/corpdoc
|
|
10
|
+
Project-URL: Issues, https://github.com/RoCCoCo13/corpdoc/issues
|
|
11
|
+
Project-URL: Changelog, https://github.com/RoCCoCo13/corpdoc/blob/main/CHANGELOG.md
|
|
12
|
+
Keywords: pdf,markdown,corporate,branding,documents,reports,proposals,ai,llm
|
|
13
|
+
Classifier: Development Status :: 4 - Beta
|
|
14
|
+
Classifier: Intended Audience :: End Users/Desktop
|
|
15
|
+
Classifier: Intended Audience :: Developers
|
|
16
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
17
|
+
Classifier: Operating System :: OS Independent
|
|
18
|
+
Classifier: Programming Language :: Python :: 3
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
21
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
22
|
+
Classifier: Topic :: Office/Business
|
|
23
|
+
Classifier: Topic :: Text Processing :: Markup :: Markdown
|
|
24
|
+
Classifier: Topic :: Printing
|
|
25
|
+
Requires-Python: >=3.10
|
|
26
|
+
Description-Content-Type: text/markdown
|
|
27
|
+
License-File: LICENSE
|
|
28
|
+
Requires-Dist: reportlab>=4.0
|
|
29
|
+
Requires-Dist: Pillow>=10.0
|
|
30
|
+
Requires-Dist: PyYAML>=6.0
|
|
31
|
+
Requires-Dist: mistune>=3.0
|
|
32
|
+
Requires-Dist: svglib<1.6,>=1.5
|
|
33
|
+
Provides-Extra: dev
|
|
34
|
+
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
35
|
+
Requires-Dist: pytest-cov>=4.0; extra == "dev"
|
|
36
|
+
Requires-Dist: ruff>=0.1; extra == "dev"
|
|
37
|
+
Provides-Extra: mermaid
|
|
38
|
+
Requires-Dist: requests>=2.28; extra == "mermaid"
|
|
39
|
+
Requires-Dist: cairosvg>=2.6; extra == "mermaid"
|
|
40
|
+
Dynamic: license-file
|
|
41
|
+
|
|
42
|
+
<p align="center">
|
|
43
|
+
<img src="assets/corpdoc-logo-card.svg" alt="CorpDoc" width="460"/>
|
|
44
|
+
</p>
|
|
45
|
+
|
|
46
|
+
<p align="center">
|
|
47
|
+
<strong>Turn Markdown into branded corporate PDFs. In seconds.</strong>
|
|
48
|
+
</p>
|
|
49
|
+
|
|
50
|
+
<p align="center">
|
|
51
|
+
<a href="https://github.com/RoCCoCo13/corpdoc/actions/workflows/test.yml"><img src="https://github.com/RoCCoCo13/corpdoc/actions/workflows/test.yml/badge.svg" alt="Tests"/></a>
|
|
52
|
+
<a href="https://github.com/RoCCoCo13/corpdoc/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="License"/></a>
|
|
53
|
+
<a href="https://www.python.org/"><img src="https://img.shields.io/badge/python-3.10%2B-blue" alt="Python"/></a>
|
|
54
|
+
</p>
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## See it in action
|
|
59
|
+
|
|
60
|
+
Drop in your logo and CorpDoc automatically derives your brand palette:
|
|
61
|
+
|
|
62
|
+
<p align="center">
|
|
63
|
+
<img src="assets/preview-corpdoc-cover.png" alt="CorpDoc sample" width="60%"/>
|
|
64
|
+
<br/>
|
|
65
|
+
<em>CorpDoc self-demo — forest/camel palette from the CorpDoc logo</em>
|
|
66
|
+
</p>
|
|
67
|
+
|
|
68
|
+
---
|
|
69
|
+
|
|
70
|
+
## What is CorpDoc?
|
|
71
|
+
|
|
72
|
+
CorpDoc is an open-source tool that converts plain Markdown into professional
|
|
73
|
+
corporate PDFs with almost zero manual layout work. Drop in your **logo** and
|
|
74
|
+
a **YAML config** once, and every document you produce afterwards comes out
|
|
75
|
+
branded, paginated, and ready to send to clients.
|
|
76
|
+
|
|
77
|
+
**The killer feature:** CorpDoc is designed to be driven by AI. A single
|
|
78
|
+
`SKILL.md` file teaches any LLM (Claude, GPT, Gemini, local Ollama models)
|
|
79
|
+
how to generate CorpDoc-compatible Markdown. Your workflow becomes:
|
|
80
|
+
|
|
81
|
+
```
|
|
82
|
+
prompt the AI → AI generates Markdown → corpdoc render → done
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
## Why CorpDoc exists
|
|
86
|
+
|
|
87
|
+
Because this shouldn't take an afternoon in Word every time you need to send
|
|
88
|
+
an offer. It should take 30 seconds.
|
|
89
|
+
|
|
90
|
+
AI models generate great text. They don't generate professional layouts.
|
|
91
|
+
CorpDoc bridges that gap without requiring you (or the AI) to learn LaTeX,
|
|
92
|
+
Typst, or fight with Word templates.
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
## Features
|
|
97
|
+
|
|
98
|
+
- 🎨 **Extracts brand colors automatically** from your SVG logo
|
|
99
|
+
- 📄 **Cover page** with 4 styles to pick from (classic, minimal,
|
|
100
|
+
bold-band, split) — configurable in the YAML
|
|
101
|
+
- 📋 **Version history** page for document control (change log)
|
|
102
|
+
- 📚 **Auto table of contents** from your headings
|
|
103
|
+
- 🏷️ **Branded headers and footers** with company info on every page
|
|
104
|
+
- 📊 **Auto-styled tables** with zebra striping in your brand colors
|
|
105
|
+
- 📐 **Auto-landscape for wide tables** — 8+ column tables rotate the page
|
|
106
|
+
so content stays readable
|
|
107
|
+
- 🌐 **Language detection** (English, Spanish, German, French) — pagination
|
|
108
|
+
and labels localize automatically
|
|
109
|
+
- 📐 **Nested lists**, inline formatting, code blocks, Mermaid diagrams
|
|
110
|
+
- 🤖 **AI-ready** — comes with a `SKILL.md` any LLM can follow
|
|
111
|
+
|
|
112
|
+
---
|
|
113
|
+
|
|
114
|
+
## Quickstart
|
|
115
|
+
|
|
116
|
+
### 1. Install
|
|
117
|
+
|
|
118
|
+
```bash
|
|
119
|
+
pip install corpdoc
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Or from source:
|
|
123
|
+
|
|
124
|
+
```bash
|
|
125
|
+
git clone https://github.com/RoCCoCo13/corpdoc.git
|
|
126
|
+
cd corpdoc
|
|
127
|
+
pip install -e .
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
### 2. Create a config from your logo
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
corpdoc init --logo my-logo.svg --name "My Company SL"
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
This extracts the brand colors from your logo and writes a `corpdoc.yml`
|
|
137
|
+
template. Open it and fill in your footer info (address, director, VAT, etc.).
|
|
138
|
+
|
|
139
|
+
### 3. Write (or generate) a Markdown document
|
|
140
|
+
|
|
141
|
+
```markdown
|
|
142
|
+
---
|
|
143
|
+
title: "Project Proposal"
|
|
144
|
+
subtitle: "For ACME Industrial"
|
|
145
|
+
reference: "OFR-2026-0042"
|
|
146
|
+
version: "1.0"
|
|
147
|
+
---
|
|
148
|
+
|
|
149
|
+
# 1. Executive Summary
|
|
150
|
+
|
|
151
|
+
We propose the installation of a 500 kWp photovoltaic system...
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
### 4. Render it
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
corpdoc render proposal.md --config corpdoc.yml
|
|
158
|
+
```
|
|
159
|
+
|
|
160
|
+
Open `proposal.pdf`. Done.
|
|
161
|
+
|
|
162
|
+
---
|
|
163
|
+
|
|
164
|
+
## AI-driven workflow
|
|
165
|
+
|
|
166
|
+
The `skill/SKILL.md` file in this repo is the manual for any LLM. Paste it
|
|
167
|
+
into your Claude / ChatGPT / Gemini / Ollama system prompt and the model will
|
|
168
|
+
generate CorpDoc-compatible Markdown on demand.
|
|
169
|
+
|
|
170
|
+
**Example prompt to your AI:**
|
|
171
|
+
|
|
172
|
+
> "Using the CorpDoc skill, draft an offer for installing HVAC in a 2,000 m²
|
|
173
|
+
> warehouse for ClienteCorp. Budget around €45k. Include timeline and team
|
|
174
|
+
> section."
|
|
175
|
+
|
|
176
|
+
The AI writes the Markdown. You run `corpdoc render`. The PDF lands in your
|
|
177
|
+
clients' inbox 30 seconds later.
|
|
178
|
+
|
|
179
|
+
See the [AI Integration Guide](docs/ai-integration.md) for detailed workflows.
|
|
180
|
+
|
|
181
|
+
---
|
|
182
|
+
|
|
183
|
+
## Examples
|
|
184
|
+
|
|
185
|
+
A complete example is included in `examples/corpdoc-sample/` — a self-referential
|
|
186
|
+
demo using CorpDoc's own logo (forest + camel) that exercises every feature in one file.
|
|
187
|
+
|
|
188
|
+
```bash
|
|
189
|
+
cd examples/corpdoc-sample
|
|
190
|
+
corpdoc render demo.md --config corpdoc.yml
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
---
|
|
194
|
+
|
|
195
|
+
## Project structure
|
|
196
|
+
|
|
197
|
+
```
|
|
198
|
+
corpdoc/
|
|
199
|
+
├── src/corpdoc/ # Python package
|
|
200
|
+
│ ├── api.py # Main CorpDoc class
|
|
201
|
+
│ ├── cli.py # Command-line interface
|
|
202
|
+
│ ├── colors.py # SVG color extraction
|
|
203
|
+
│ ├── parser.py # Markdown parser
|
|
204
|
+
│ ├── canvas.py # Header/footer drawing
|
|
205
|
+
│ ├── flowables.py # Cover page, custom flowables
|
|
206
|
+
│ └── styles.py # Paragraph and table styles
|
|
207
|
+
├── skill/
|
|
208
|
+
│ └── SKILL.md # Instructions for any LLM
|
|
209
|
+
├── examples/
|
|
210
|
+
│ └── corpdoc-sample/ # Self-referential demo
|
|
211
|
+
├── assets/
|
|
212
|
+
│ ├── corpdoc-logo.svg # Brand mark (transparent — for in-product use)
|
|
213
|
+
│ └── corpdoc-logo-card.svg # Same logo with white card (for docs/README)
|
|
214
|
+
├── docs/ # Extended documentation
|
|
215
|
+
└── tests/ # Unit tests
|
|
216
|
+
```
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## Roadmap
|
|
221
|
+
|
|
222
|
+
- [x] **v0.3** — Core rendering, SVG color extraction, AI skill
|
|
223
|
+
- [x] **v0.4** — Native SVG rendering, auto-landscape for wide tables,
|
|
224
|
+
configurable cover styles, `highlight` color role, pastel cover
|
|
225
|
+
surfaces, hardened release pipeline (OIDC + pip-audit + Dependabot)
|
|
226
|
+
- [ ] **v0.5** — Mermaid diagram rendering via Quarto/Kroki fallback
|
|
227
|
+
- [ ] **v0.6** — DOCX export via Pandoc pipeline
|
|
228
|
+
- [ ] **v0.7** — Template gallery (offers, reports, memos, contracts)
|
|
229
|
+
- [ ] **v1.0** — Stable API, PyPI release, comprehensive test suite
|
|
230
|
+
|
|
231
|
+
See [CHANGELOG.md](CHANGELOG.md) for release history.
|
|
232
|
+
|
|
233
|
+
---
|
|
234
|
+
|
|
235
|
+
## Contributing
|
|
236
|
+
|
|
237
|
+
Contributions welcome! Areas we'd love help with:
|
|
238
|
+
|
|
239
|
+
- Additional document templates (legal briefs, academic papers, invoices)
|
|
240
|
+
- Language support beyond en/es/de/fr
|
|
241
|
+
- Better diagram rendering
|
|
242
|
+
- Integrations (VS Code extension, Obsidian plugin, GitHub Action)
|
|
243
|
+
|
|
244
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
245
|
+
|
|
246
|
+
---
|
|
247
|
+
|
|
248
|
+
## License
|
|
249
|
+
|
|
250
|
+
MIT — see [LICENSE](LICENSE). Use it for anything, commercial or otherwise.
|
|
251
|
+
|
|
252
|
+
---
|
|
253
|
+
|
|
254
|
+
## Credits
|
|
255
|
+
|
|
256
|
+
Built by [Alejandro Méndez](https://github.com/RoCCoCo13) because nobody should
|
|
257
|
+
spend 2 hours maquetting a proposal in Word when an AI can generate the
|
|
258
|
+
content in 30 seconds.
|
|
259
|
+
|
|
260
|
+
If CorpDoc saves you time, a ⭐ on GitHub goes a long way.
|
corpdoc-0.4.0/README.md
ADDED
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="assets/corpdoc-logo-card.svg" alt="CorpDoc" width="460"/>
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<p align="center">
|
|
6
|
+
<strong>Turn Markdown into branded corporate PDFs. In seconds.</strong>
|
|
7
|
+
</p>
|
|
8
|
+
|
|
9
|
+
<p align="center">
|
|
10
|
+
<a href="https://github.com/RoCCoCo13/corpdoc/actions/workflows/test.yml"><img src="https://github.com/RoCCoCo13/corpdoc/actions/workflows/test.yml/badge.svg" alt="Tests"/></a>
|
|
11
|
+
<a href="https://github.com/RoCCoCo13/corpdoc/blob/main/LICENSE"><img src="https://img.shields.io/badge/license-MIT-green" alt="License"/></a>
|
|
12
|
+
<a href="https://www.python.org/"><img src="https://img.shields.io/badge/python-3.10%2B-blue" alt="Python"/></a>
|
|
13
|
+
</p>
|
|
14
|
+
|
|
15
|
+
---
|
|
16
|
+
|
|
17
|
+
## See it in action
|
|
18
|
+
|
|
19
|
+
Drop in your logo and CorpDoc automatically derives your brand palette:
|
|
20
|
+
|
|
21
|
+
<p align="center">
|
|
22
|
+
<img src="assets/preview-corpdoc-cover.png" alt="CorpDoc sample" width="60%"/>
|
|
23
|
+
<br/>
|
|
24
|
+
<em>CorpDoc self-demo — forest/camel palette from the CorpDoc logo</em>
|
|
25
|
+
</p>
|
|
26
|
+
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
## What is CorpDoc?
|
|
30
|
+
|
|
31
|
+
CorpDoc is an open-source tool that converts plain Markdown into professional
|
|
32
|
+
corporate PDFs with almost zero manual layout work. Drop in your **logo** and
|
|
33
|
+
a **YAML config** once, and every document you produce afterwards comes out
|
|
34
|
+
branded, paginated, and ready to send to clients.
|
|
35
|
+
|
|
36
|
+
**The killer feature:** CorpDoc is designed to be driven by AI. A single
|
|
37
|
+
`SKILL.md` file teaches any LLM (Claude, GPT, Gemini, local Ollama models)
|
|
38
|
+
how to generate CorpDoc-compatible Markdown. Your workflow becomes:
|
|
39
|
+
|
|
40
|
+
```
|
|
41
|
+
prompt the AI → AI generates Markdown → corpdoc render → done
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Why CorpDoc exists
|
|
45
|
+
|
|
46
|
+
Because this shouldn't take an afternoon in Word every time you need to send
|
|
47
|
+
an offer. It should take 30 seconds.
|
|
48
|
+
|
|
49
|
+
AI models generate great text. They don't generate professional layouts.
|
|
50
|
+
CorpDoc bridges that gap without requiring you (or the AI) to learn LaTeX,
|
|
51
|
+
Typst, or fight with Word templates.
|
|
52
|
+
|
|
53
|
+
---
|
|
54
|
+
|
|
55
|
+
## Features
|
|
56
|
+
|
|
57
|
+
- 🎨 **Extracts brand colors automatically** from your SVG logo
|
|
58
|
+
- 📄 **Cover page** with 4 styles to pick from (classic, minimal,
|
|
59
|
+
bold-band, split) — configurable in the YAML
|
|
60
|
+
- 📋 **Version history** page for document control (change log)
|
|
61
|
+
- 📚 **Auto table of contents** from your headings
|
|
62
|
+
- 🏷️ **Branded headers and footers** with company info on every page
|
|
63
|
+
- 📊 **Auto-styled tables** with zebra striping in your brand colors
|
|
64
|
+
- 📐 **Auto-landscape for wide tables** — 8+ column tables rotate the page
|
|
65
|
+
so content stays readable
|
|
66
|
+
- 🌐 **Language detection** (English, Spanish, German, French) — pagination
|
|
67
|
+
and labels localize automatically
|
|
68
|
+
- 📐 **Nested lists**, inline formatting, code blocks, Mermaid diagrams
|
|
69
|
+
- 🤖 **AI-ready** — comes with a `SKILL.md` any LLM can follow
|
|
70
|
+
|
|
71
|
+
---
|
|
72
|
+
|
|
73
|
+
## Quickstart
|
|
74
|
+
|
|
75
|
+
### 1. Install
|
|
76
|
+
|
|
77
|
+
```bash
|
|
78
|
+
pip install corpdoc
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
Or from source:
|
|
82
|
+
|
|
83
|
+
```bash
|
|
84
|
+
git clone https://github.com/RoCCoCo13/corpdoc.git
|
|
85
|
+
cd corpdoc
|
|
86
|
+
pip install -e .
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
### 2. Create a config from your logo
|
|
90
|
+
|
|
91
|
+
```bash
|
|
92
|
+
corpdoc init --logo my-logo.svg --name "My Company SL"
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
This extracts the brand colors from your logo and writes a `corpdoc.yml`
|
|
96
|
+
template. Open it and fill in your footer info (address, director, VAT, etc.).
|
|
97
|
+
|
|
98
|
+
### 3. Write (or generate) a Markdown document
|
|
99
|
+
|
|
100
|
+
```markdown
|
|
101
|
+
---
|
|
102
|
+
title: "Project Proposal"
|
|
103
|
+
subtitle: "For ACME Industrial"
|
|
104
|
+
reference: "OFR-2026-0042"
|
|
105
|
+
version: "1.0"
|
|
106
|
+
---
|
|
107
|
+
|
|
108
|
+
# 1. Executive Summary
|
|
109
|
+
|
|
110
|
+
We propose the installation of a 500 kWp photovoltaic system...
|
|
111
|
+
```
|
|
112
|
+
|
|
113
|
+
### 4. Render it
|
|
114
|
+
|
|
115
|
+
```bash
|
|
116
|
+
corpdoc render proposal.md --config corpdoc.yml
|
|
117
|
+
```
|
|
118
|
+
|
|
119
|
+
Open `proposal.pdf`. Done.
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
## AI-driven workflow
|
|
124
|
+
|
|
125
|
+
The `skill/SKILL.md` file in this repo is the manual for any LLM. Paste it
|
|
126
|
+
into your Claude / ChatGPT / Gemini / Ollama system prompt and the model will
|
|
127
|
+
generate CorpDoc-compatible Markdown on demand.
|
|
128
|
+
|
|
129
|
+
**Example prompt to your AI:**
|
|
130
|
+
|
|
131
|
+
> "Using the CorpDoc skill, draft an offer for installing HVAC in a 2,000 m²
|
|
132
|
+
> warehouse for ClienteCorp. Budget around €45k. Include timeline and team
|
|
133
|
+
> section."
|
|
134
|
+
|
|
135
|
+
The AI writes the Markdown. You run `corpdoc render`. The PDF lands in your
|
|
136
|
+
clients' inbox 30 seconds later.
|
|
137
|
+
|
|
138
|
+
See the [AI Integration Guide](docs/ai-integration.md) for detailed workflows.
|
|
139
|
+
|
|
140
|
+
---
|
|
141
|
+
|
|
142
|
+
## Examples
|
|
143
|
+
|
|
144
|
+
A complete example is included in `examples/corpdoc-sample/` — a self-referential
|
|
145
|
+
demo using CorpDoc's own logo (forest + camel) that exercises every feature in one file.
|
|
146
|
+
|
|
147
|
+
```bash
|
|
148
|
+
cd examples/corpdoc-sample
|
|
149
|
+
corpdoc render demo.md --config corpdoc.yml
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
---
|
|
153
|
+
|
|
154
|
+
## Project structure
|
|
155
|
+
|
|
156
|
+
```
|
|
157
|
+
corpdoc/
|
|
158
|
+
├── src/corpdoc/ # Python package
|
|
159
|
+
│ ├── api.py # Main CorpDoc class
|
|
160
|
+
│ ├── cli.py # Command-line interface
|
|
161
|
+
│ ├── colors.py # SVG color extraction
|
|
162
|
+
│ ├── parser.py # Markdown parser
|
|
163
|
+
│ ├── canvas.py # Header/footer drawing
|
|
164
|
+
│ ├── flowables.py # Cover page, custom flowables
|
|
165
|
+
│ └── styles.py # Paragraph and table styles
|
|
166
|
+
├── skill/
|
|
167
|
+
│ └── SKILL.md # Instructions for any LLM
|
|
168
|
+
├── examples/
|
|
169
|
+
│ └── corpdoc-sample/ # Self-referential demo
|
|
170
|
+
├── assets/
|
|
171
|
+
│ ├── corpdoc-logo.svg # Brand mark (transparent — for in-product use)
|
|
172
|
+
│ └── corpdoc-logo-card.svg # Same logo with white card (for docs/README)
|
|
173
|
+
├── docs/ # Extended documentation
|
|
174
|
+
└── tests/ # Unit tests
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
---
|
|
178
|
+
|
|
179
|
+
## Roadmap
|
|
180
|
+
|
|
181
|
+
- [x] **v0.3** — Core rendering, SVG color extraction, AI skill
|
|
182
|
+
- [x] **v0.4** — Native SVG rendering, auto-landscape for wide tables,
|
|
183
|
+
configurable cover styles, `highlight` color role, pastel cover
|
|
184
|
+
surfaces, hardened release pipeline (OIDC + pip-audit + Dependabot)
|
|
185
|
+
- [ ] **v0.5** — Mermaid diagram rendering via Quarto/Kroki fallback
|
|
186
|
+
- [ ] **v0.6** — DOCX export via Pandoc pipeline
|
|
187
|
+
- [ ] **v0.7** — Template gallery (offers, reports, memos, contracts)
|
|
188
|
+
- [ ] **v1.0** — Stable API, PyPI release, comprehensive test suite
|
|
189
|
+
|
|
190
|
+
See [CHANGELOG.md](CHANGELOG.md) for release history.
|
|
191
|
+
|
|
192
|
+
---
|
|
193
|
+
|
|
194
|
+
## Contributing
|
|
195
|
+
|
|
196
|
+
Contributions welcome! Areas we'd love help with:
|
|
197
|
+
|
|
198
|
+
- Additional document templates (legal briefs, academic papers, invoices)
|
|
199
|
+
- Language support beyond en/es/de/fr
|
|
200
|
+
- Better diagram rendering
|
|
201
|
+
- Integrations (VS Code extension, Obsidian plugin, GitHub Action)
|
|
202
|
+
|
|
203
|
+
See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
204
|
+
|
|
205
|
+
---
|
|
206
|
+
|
|
207
|
+
## License
|
|
208
|
+
|
|
209
|
+
MIT — see [LICENSE](LICENSE). Use it for anything, commercial or otherwise.
|
|
210
|
+
|
|
211
|
+
---
|
|
212
|
+
|
|
213
|
+
## Credits
|
|
214
|
+
|
|
215
|
+
Built by [Alejandro Méndez](https://github.com/RoCCoCo13) because nobody should
|
|
216
|
+
spend 2 hours maquetting a proposal in Word when an AI can generate the
|
|
217
|
+
content in 30 seconds.
|
|
218
|
+
|
|
219
|
+
If CorpDoc saves you time, a ⭐ on GitHub goes a long way.
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
[build-system]
|
|
2
|
+
requires = ["setuptools>=61.0", "wheel"]
|
|
3
|
+
build-backend = "setuptools.build_meta"
|
|
4
|
+
|
|
5
|
+
[project]
|
|
6
|
+
name = "corpdoc"
|
|
7
|
+
version = "0.4.0"
|
|
8
|
+
description = "Professional Corporate PDF Generator from Markdown + Logo"
|
|
9
|
+
readme = "README.md"
|
|
10
|
+
requires-python = ">=3.10"
|
|
11
|
+
license = { text = "MIT" }
|
|
12
|
+
authors = [
|
|
13
|
+
{ name = "Alejandro Méndez", email = "roccoco13@gmail.com" },
|
|
14
|
+
]
|
|
15
|
+
keywords = [
|
|
16
|
+
"pdf", "markdown", "corporate", "branding", "documents",
|
|
17
|
+
"reports", "proposals", "ai", "llm"
|
|
18
|
+
]
|
|
19
|
+
classifiers = [
|
|
20
|
+
"Development Status :: 4 - Beta",
|
|
21
|
+
"Intended Audience :: End Users/Desktop",
|
|
22
|
+
"Intended Audience :: Developers",
|
|
23
|
+
"License :: OSI Approved :: MIT License",
|
|
24
|
+
"Operating System :: OS Independent",
|
|
25
|
+
"Programming Language :: Python :: 3",
|
|
26
|
+
"Programming Language :: Python :: 3.10",
|
|
27
|
+
"Programming Language :: Python :: 3.11",
|
|
28
|
+
"Programming Language :: Python :: 3.12",
|
|
29
|
+
"Topic :: Office/Business",
|
|
30
|
+
"Topic :: Text Processing :: Markup :: Markdown",
|
|
31
|
+
"Topic :: Printing",
|
|
32
|
+
]
|
|
33
|
+
dependencies = [
|
|
34
|
+
"reportlab>=4.0",
|
|
35
|
+
"Pillow>=10.0",
|
|
36
|
+
"PyYAML>=6.0",
|
|
37
|
+
"mistune>=3.0",
|
|
38
|
+
# Pinned < 1.6 because 1.6.0 added a hard dep on rlpycairo → pycairo,
|
|
39
|
+
# which requires libcairo system libs (no Linux wheels exist). We only
|
|
40
|
+
# use svglib's classic svg2rlg path, which 1.5.x supports cleanly.
|
|
41
|
+
"svglib>=1.5,<1.6",
|
|
42
|
+
]
|
|
43
|
+
|
|
44
|
+
[project.optional-dependencies]
|
|
45
|
+
dev = [
|
|
46
|
+
"pytest>=7.0",
|
|
47
|
+
"pytest-cov>=4.0",
|
|
48
|
+
"ruff>=0.1",
|
|
49
|
+
]
|
|
50
|
+
mermaid = [
|
|
51
|
+
"requests>=2.28",
|
|
52
|
+
"cairosvg>=2.6",
|
|
53
|
+
]
|
|
54
|
+
|
|
55
|
+
[project.urls]
|
|
56
|
+
Homepage = "https://github.com/RoCCoCo13/corpdoc"
|
|
57
|
+
Documentation = "https://github.com/RoCCoCo13/corpdoc/tree/main/docs"
|
|
58
|
+
Repository = "https://github.com/RoCCoCo13/corpdoc"
|
|
59
|
+
Issues = "https://github.com/RoCCoCo13/corpdoc/issues"
|
|
60
|
+
Changelog = "https://github.com/RoCCoCo13/corpdoc/blob/main/CHANGELOG.md"
|
|
61
|
+
|
|
62
|
+
[project.scripts]
|
|
63
|
+
corpdoc = "corpdoc.cli:main"
|
|
64
|
+
|
|
65
|
+
[tool.setuptools]
|
|
66
|
+
package-dir = { "" = "src" }
|
|
67
|
+
|
|
68
|
+
[tool.setuptools.packages.find]
|
|
69
|
+
where = ["src"]
|
|
70
|
+
|
|
71
|
+
[tool.setuptools.package-data]
|
|
72
|
+
corpdoc = ["*.yml", "templates/*"]
|
|
73
|
+
|
|
74
|
+
[tool.ruff]
|
|
75
|
+
line-length = 100
|
|
76
|
+
target-version = "py310"
|
|
77
|
+
|
|
78
|
+
[tool.pytest.ini_options]
|
|
79
|
+
testpaths = ["tests"]
|
|
80
|
+
python_files = ["test_*.py"]
|
corpdoc-0.4.0/setup.cfg
ADDED
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"""
|
|
2
|
+
CorpDoc — Professional Corporate PDF Generator from Markdown + Logo.
|
|
3
|
+
|
|
4
|
+
Turn a Markdown file and a corporate logo into a branded PDF with cover page,
|
|
5
|
+
version history, table of contents, headers, footers, and auto-styled tables.
|
|
6
|
+
|
|
7
|
+
Basic usage:
|
|
8
|
+
from corpdoc import CorpDoc
|
|
9
|
+
|
|
10
|
+
doc = CorpDoc(config='corpdoc.yml')
|
|
11
|
+
doc.render('report.md', output='report.pdf')
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
__version__ = "0.4.0"
|
|
15
|
+
|
|
16
|
+
from corpdoc.api import CorpDoc
|
|
17
|
+
from corpdoc.colors import extract_colors_from_svg, assign_roles
|
|
18
|
+
|
|
19
|
+
__all__ = ["CorpDoc", "extract_colors_from_svg", "assign_roles", "__version__"]
|