Files
html/api/_pdf_gen.py
2026-04-12 22:57:03 +02:00

39 lines
2.4 KiB
Python

#!/usr/bin/env python3
import sys,warnings
warnings.filterwarnings("ignore")
from fpdf import FPDF
class P(FPDF):
def header(self):
self.add_font('DV','','/usr/share/fonts/truetype/dejavu/DejaVuSans.ttf')
self.add_font('DV','B','/usr/share/fonts/truetype/dejavu/DejaVuSans-Bold.ttf')
self.set_font('DV','B',16);self.set_text_color(88,28,135);self.cell(0,10,'WEVIA',new_x="LMARGIN",new_y="NEXT",align='C')
self.set_font('DV','',8);self.set_text_color(120,120,120);self.cell(0,5,'WEVAL Consulting — Proposition Commerciale',new_x="LMARGIN",new_y="NEXT",align='C')
self.ln(3);self.set_draw_color(88,28,135);self.line(10,self.get_y(),200,self.get_y());self.ln(4)
def footer(self):
self.set_y(-12);self.set_font('DV','',7);self.set_text_color(150,150,150);self.cell(0,8,f'WEVAL Consulting — weval-consulting.com — p.{self.page_no()}',align='C')
pdf=P();pdf.add_page()
pdf.set_font('DV','B',13);pdf.set_text_color(30,30,30);pdf.cell(0,8,sys.argv[2],new_x="LMARGIN",new_y="NEXT");pdf.ln(2)
for line in open(sys.argv[1],encoding='utf-8'):
s=line.strip()
if not s:pdf.ln(2);continue
if s.startswith('# '):pdf.ln(3);pdf.set_font('DV','B',13);pdf.set_text_color(88,28,135);pdf.cell(0,7,s[2:],new_x="LMARGIN",new_y="NEXT");continue
if s.startswith('## '):pdf.ln(2);pdf.set_font('DV','B',11);pdf.set_text_color(60,60,60);pdf.cell(0,6,s[3:],new_x="LMARGIN",new_y="NEXT");continue
if s.startswith('### '):pdf.set_font('DV','B',10);pdf.set_text_color(80,80,80);pdf.cell(0,5,s[4:],new_x="LMARGIN",new_y="NEXT");continue
if s.startswith('|') and '|' in s[1:]:
cells=[c.strip() for c in s.split('|')[1:-1]]
if all(set(c)<=set('-: ') for c in cells):continue
w=190/max(len(cells),1)
if any(c.startswith('**') for c in cells):
pdf.set_font('DV','B',8);pdf.set_fill_color(88,28,135);pdf.set_text_color(255,255,255)
for c in cells:pdf.cell(w,5,c.replace('**',''),border=1,fill=True)
else:
pdf.set_font('DV','',8);pdf.set_text_color(30,30,30)
for c in cells:pdf.cell(w,5,c.replace('**',''),border=1)
pdf.ln();continue
if s.startswith(('- ','* ')):
pdf.set_font('DV','',9);pdf.set_text_color(30,30,30);pdf.cell(5,4,' ');pdf.multi_cell(180,4,s[2:].replace('**',''));continue
pdf.set_font('DV','',9);pdf.set_text_color(30,30,30);pdf.multi_cell(0,4,s.replace('**',''));pdf.ln(1)
pdf.output(sys.argv[3]);print('OK')