Skip to content

Commit

Permalink
code review
Browse files Browse the repository at this point in the history
  • Loading branch information
falkoschindler committed Aug 12, 2023
1 parent 6e301b6 commit 1e12b22
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 19 deletions.
1 change: 1 addition & 0 deletions examples/generate_pdf/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
*.pdf
34 changes: 17 additions & 17 deletions examples/generate_pdf/main.py
100644 → 100755
Original file line number Diff line number Diff line change
@@ -1,51 +1,51 @@
#!/usr/bin/env python3
from io import BytesIO
from pathlib import Path

import cairo

from nicegui import ui

PDF_PATH = Path('output.pdf')


def generate_svg() -> str:
output = BytesIO()
surface = cairo.SVGSurface(output, 200, 150)
surface = cairo.SVGSurface(output, 300, 200)
draw(surface)
surface.finish()
return output.getvalue().decode('utf-8')


def generate_pdf() -> bytes:
output = BytesIO()
surface = cairo.PDFSurface(output, 200, 150)
surface = cairo.PDFSurface(output, 300, 200)
draw(surface)
surface.finish()
return output.getvalue()


def draw(surface: cairo.SVGSurface):
def draw(surface: cairo.SVGSurface) -> None:
context = cairo.Context(surface)

context.select_font_face("Arial", cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL)
context.select_font_face('Arial', cairo.FONT_SLANT_NORMAL, cairo.FONT_WEIGHT_NORMAL)
context.set_font_size(20)
context.move_to(10, 40)
context.show_text(f"{name_input.value}")
context.show_text(name.value)
context.move_to(10, 80)
context.show_text(f"{email_input.value}")
context.show_text(email.value)


def update():
def update() -> None:
preview.content = generate_svg()
Path('output.pdf').write_bytes(generate_pdf())
PDF_PATH.write_bytes(generate_pdf())


with ui.row().classes('items-stretch gap-12'):
with ui.column():
name_input = ui.input("Name", placeholder="Enter your name", on_change=update)
email_input = ui.input("E-Mail", placeholder="Enter your E-Mail address", on_change=update)
with ui.column():
preview = ui.html().classes('w-[400px] h-[300px] border-2 border-gray-500')
with ui.row():
with ui.column():
ui.button("Download PDF", on_click=lambda: ui.download('output.pdf'))\
.bind_visibility_from(preview, 'content')
name = ui.input('Name', placeholder='Enter your name', on_change=update)
email = ui.input('E-Mail', placeholder='Enter your E-Mail address', on_change=update)
preview = ui.html().classes('border-2 border-gray-500')
update()
ui.button('Download PDF', on_click=lambda: ui.download(PDF_PATH)).bind_visibility_from(name, 'value')

ui.run()
4 changes: 2 additions & 2 deletions examples/generate_pdf/requirements.txt
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
pycairo
nicegui
nicegui
pycairo

0 comments on commit 1e12b22

Please sign in to comment.