🐍 Generar PDFs con Python (incluyendo japonés) en AWS Lightsail / Ubuntu 24.04
En este artículo se explica cómo preparar un entorno Python en AWS Lightsail (Ubuntu 24.04) y cómo generar archivos PDF —incluyendo soporte para texto japonés— utilizando ReportLab. En el ejemplo, el directorio de trabajo se llama testpy.
🪜 1. Crear un directorio de trabajo
Primero, generamos una carpeta dentro del home del usuario ubuntu:
mkdir -p ~/testpy && cd ~/testpy
Aquí colocaremos el entorno virtual de Python y los scripts necesarios.
🧠 2. Configurar Python y el entorno virtual
Ubuntu 24.04 incluye Python 3.12, pero actualizamos los paquetes y preparamos el entorno:
sudo apt update sudo apt install -y python3 python3-pip python3-venv
Crear entorno virtual:
python3 -m venv .venv
Activarlo:
source .venv/bin/activate
Si aparece (.venv) al inicio del prompt, la activación fue exitosa. A partir de ese momento, Python y pip utilizarán el entorno virtual.
🧩 3. Verificar funcionamiento
echo 'print("Hola, TechFan! Python funciona correctamente.")' > test.py python test.py
Si muestra Hola, TechFan!, todo está bien.
🖋️ 4. Instalar librerías para PDF
Instalamos las librerías necesarias para generar y manipular PDFs:
pip install reportlab pypdf pillow
🧾 5. Prueba de PDF (solo texto en inglés/español)
python - <<'PY'
from reportlab.pdfgen import canvas
from reportlab.lib.pagesizes import A4
from reportlab.lib.units import mm
c = canvas.Canvas("test_reportlab.pdf", pagesize=A4)
w,h = A4
c.setFont("Helvetica-Bold", 20)
c.drawCentredString(w/2, h-40*mm, "TechFan PDF Test")
c.setFont("Helvetica", 12)
c.drawString(20*mm, h-60*mm, "ReportLab generated this page.")
c.showPage()
c.save()
print("OK: test_reportlab.pdf")
PY
Si se genera el archivo test_reportlab.pdf, la prueba fue exitosa.
6. Instalar fuentes japonesas
Para poder mostrar correctamente texto japonés en los PDFs, instalamos una fuente japonesa:
sudo apt install -y fonts-ipaexfont fontconfig fc-list | grep -i ipaex
Ejemplo de salida:
/usr/share/fonts/opentype/ipaexfont-gothic/ipaexg.ttf: IPAexGothic,IPAexゴシック:style=Regular
7. Prueba de PDF con texto de certificado (en español)
A continuación, un ejemplo de generación de PDF que utiliza la fuente IPAexGothic y muestra un modelo de certificado en español.
python - <<'PY' from reportlab.pdfgen import canvas from reportlab.lib.pagesizes import A4 from reportlab.pdfbase import pdfmetrics from reportlab.pdfbase.ttfonts import TTFont FONT_PATH = "/usr/share/fonts/opentype/ipaexfont-gothic/ipaexg.ttf" pdfmetrics.registerFont(TTFont("IPAexGothic", FONT_PATH)) c = canvas.Canvas("test_japanese.pdf", pagesize=A4) c.setFont("IPAexGothic", 18) c.drawString(72, 780, "Prueba: Ejemplo de certificado TechFan") c.drawString(72, 752, "Nombre: Taro Yamada") c.drawString(72, 724, "Nombre del examen: Certificación básica de Python") c.drawString(72, 696, "¡Felicidades por tu logro!") c.showPage() c.save() print("OK: test_japanese.pdf") PY
Si el PDF test_japanese.pdf se genera y el texto se ve correctamente, la configuración de la fuente y de ReportLab está funcionando.
🔁 8. Activar y desactivar el entorno virtual
Para activar el entorno virtual más adelante:
source ~/testpy/.venv/bin/activate
Para desactivarlo cuando termine de trabajar:
deactivate
Puede imaginarlo como abrir y cerrar un entorno de trabajo de Python de forma aislada para cada proyecto.
✅ Resumen
- Entorno virtual de Python preparado en
~/testpy. - Bibliotecas instaladas para generar y editar PDFs (
reportlab,pypdf,pillow). - Fuente IPAexGothic configurada para poder usarla en certificados y documentos.
A partir de esta base, puede construir un sistema de emisión de certificados con Python (por ejemplo, certificados de exámenes) de forma flexible.