Skip to content

Feat/implement cv pdf download#171

Closed
Azfe wants to merge 6 commits into
developfrom
feat/implement-cv-pdf-download
Closed

Feat/implement cv pdf download#171
Azfe wants to merge 6 commits into
developfrom
feat/implement-cv-pdf-download

Conversation

@Azfe
Copy link
Copy Markdown
Owner

@Azfe Azfe commented May 6, 2026

No description provided.

Azfe added 6 commits May 7, 2026 00:32
  Add GET /cv/download endpoint that generates and streams the CV as PDF.
  Includes IPDFService interface, WeasyPrintPDFService with Jinja2 template,
  asyncio.to_thread for non-blocking generation, and updated Dockerfile/
  requirements with WeasyPrint system and Python dependencies.
  WeasyPrint requires libgobject-2.0-0 (provided by libglib2.0-0) at import
  time. Added to both production Dockerfile and Dockerfile.dev.
  Packages libglib2.0-0, libpango-1.0-0, libpangocairo-1.0-0 and
  libgdk-pixbuf2.0-0 were renamed with t64 suffix in Bookworm as part
  of the 64-bit time_t transition.
  Two-column layout with sidebar (contact, networks, skills, tools,
  certifications) and main area (header, bio, experience, education,
  projects, training). Uses frontend color palette and xhtml2pdf-compatible
  CSS (tables instead of flexbox/grid, no CSS variables).
  xhtml2pdf pulls in svglib → rlpycairo → pycairo, which requires the
  libcairo2-dev system library to compile at pip install time. CI runners
  lacked that dependency, breaking every pipeline run.

  WeasyPrint ≥ v53 ships a pure-Python wheel (pydyf renderer), so pip
  install succeeds without any C compilation. Its runtime system deps
  (Pango, HarfBuzz, GDK-Pixbuf) are added to both Dockerfiles and to all
  three CI jobs. The service implementation is simplified to a single
  HTML(string=...).write_pdf() call, matching the file and class name that
  was already declared as the intended library.
@Azfe Azfe closed this May 7, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant