Correção do PDF QRCODE holerite
This commit is contained in:
25
README.md
25
README.md
@@ -591,3 +591,28 @@ Conjunto de melhorias para deixar o sistema pronto para entrega final.
|
||||
20260617000002_add_operacoes_to_consolidacoes.rb
|
||||
```
|
||||
Aplicar com: `docker-compose exec app bundle exec rails db:migrate`
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Correções — Holerite PDF (18/06/2026)
|
||||
|
||||
### 🔴 Bugs corrigidos
|
||||
- **500 ao gerar holerite** (`gerar_pdf_holerite`): `Prawn::Errors::IncompatibleStringEncoding`
|
||||
(`Encoding::UndefinedConversionError`). Os PDFs usavam a fonte **embutida** do Prawn
|
||||
(Helvetica/AFM), que só aceita o charset **Windows-1252** — o caractere **`✓`** do selo
|
||||
"✓ PAGO" não existe nesse charset e derrubava a geração.
|
||||
✅ **Corrigido:** `BasePdf` agora registra a família **DejaVu Sans (TTF)** e a define como
|
||||
fonte padrão (`registrar_fonte_utf8`), com suporte total a **UTF-8**. Vale para todos os PDFs
|
||||
(holerite e relatório) — qualquer caractere Unicode passa a funcionar.
|
||||
- Fontes versionadas em `app/assets/fonts/DejaVuSans.ttf` e `DejaVuSans-Bold.ttf`
|
||||
(a imagem Docker `ruby:3.2.2-slim` não traz fontes do sistema; o `COPY . .` do Dockerfile e
|
||||
o volume `.:/app` garantem que estejam disponíveis em runtime).
|
||||
- **Assinaturas do holerite caíam na 2ª página:** após o QR Code o cursor ficava abaixo do
|
||||
limite de quebra (`start_new_page if cursor < 120`), empurrando o bloco de assinaturas para
|
||||
uma página nova. ✅ **Corrigido:** espaçamentos do holerite compactados (selo, tabelas, caixa
|
||||
do total, bloco do QR menor) + folga antes das assinaturas reduzida (`BasePdf#assinaturas`,
|
||||
60 → 36) — **o holerite agora cabe em uma única página**.
|
||||
|
||||
### 📌 Padrão (novo)
|
||||
- **PDFs com Prawn**: usar **sempre** a fonte TTF registrada no `BasePdf` (DejaVu, UTF-8). Nunca
|
||||
contar com a fonte embutida — ela quebra em qualquer caractere fora do Windows-1252.
|
||||
|
||||
Reference in New Issue
Block a user