Skip to content

Commit cceee41

Browse files
committed
docs: Add improvements analysis based on forks review
Analyzed popular forks and pending PRs to identify potential improvements: - SVG support (from cantoo-scribe/pdf-lib fork) - PDF encryption/decryption (from pdf-lib-plus-encrypt fork) - Incremental save for digital signatures (from pdf-lib-incremental-save) - Rounded rectangles (from pdfme/pdf-lib fork) - Hyperlinks support (PR Hopding#1691) - Form field improvements (PRs Hopding#1748, Hopding#1758) https://claude.ai/code/session_01T85UagjFeYdf4vUW9pzeyn
1 parent 93dd36e commit cceee41

File tree

1 file changed

+222
-0
lines changed

1 file changed

+222
-0
lines changed

IMPROVEMENTS_TODO.md

Lines changed: 222 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,222 @@
1+
# PDF-Lib - Propostas de Melhorias
2+
3+
Este documento foi gerado a partir da análise dos forks mais populares do pdf-lib e dos Pull Requests pendentes no repositório original.
4+
5+
## Resumo da Análise
6+
7+
### Forks Analisados
8+
| Fork | Stars | Principais Melhorias |
9+
|------|-------|---------------------|
10+
| [pdfme/pdf-lib](https://github.com/pdfme/pdf-lib) | 26 | Retângulos arredondados, SVG melhorado, compatibilidade fontkit v2 |
11+
| [cantoo-scribe/pdf-lib](https://github.com/cantoo-scribe/pdf-lib) | 304 | Suporte completo a SVG |
12+
| [remdra/pdf-lib-incremental-save](https://github.com/remdra/pdf-lib-incremental-save) | 11 | Salvamento incremental para assinaturas |
13+
| [brennanmcquerry/pdf-lib-plus-encrypt](https://github.com/brennanmcquerry/pdf-lib-plus-encrypt) | 6 | Criptografia de PDFs |
14+
15+
---
16+
17+
## TODO - Melhorias Prioritárias
18+
19+
### 1. ALTA PRIORIDADE - Funcionalidades Críticas
20+
21+
#### 1.1 Suporte a Criptografia/Descriptografia de PDFs
22+
- **Origem**: Fork `pdf-lib-plus-encrypt` + Issue #1326
23+
- **Descrição**: Adicionar capacidade de abrir e salvar PDFs protegidos por senha
24+
- **Benefícios**:
25+
- Manipular PDFs criptografados sem erros
26+
- Criar PDFs com proteção por senha
27+
- Diferenciar entre senha de abertura e senha de permissões
28+
- **Arquivos a modificar**:
29+
- `src/api/PDFDocument.ts` - Adicionar opções de criptografia
30+
- `src/core/` - Criar módulo de criptografia (RC4, AES)
31+
32+
#### 1.2 Suporte a SVG
33+
- **Origem**: Fork `cantoo-scribe/pdf-lib`
34+
- **Descrição**: Implementar métodos `drawSvg()` e `drawSvgPath()`
35+
- **Benefícios**:
36+
- Desenhar gráficos vetoriais complexos
37+
- Importar ícones e logos em SVG
38+
- Melhor qualidade visual em qualquer escala
39+
- **Arquivos a modificar**:
40+
- `src/api/PDFPage.ts` - Adicionar métodos drawSvg
41+
- `src/api/operations.ts` - Operações de renderização SVG
42+
- Criar `src/utils/svg.ts` - Parser de SVG para operações PDF
43+
44+
#### 1.3 Salvamento Incremental
45+
- **Origem**: Fork `remdra/pdf-lib-incremental-save`
46+
- **Descrição**: Permitir salvar apenas as modificações, preservando o documento original
47+
- **Benefícios**:
48+
- Essencial para assinaturas digitais
49+
- Preserva trilha de auditoria
50+
- Mais eficiente para arquivos grandes
51+
- **API proposta**:
52+
```typescript
53+
await pdfDoc.takeSnapshot();
54+
await pdfDoc.markRefForSave(pageRef);
55+
const incrementalBytes = await pdfDoc.saveIncremental(snapshot);
56+
```
57+
- **Arquivos a modificar**:
58+
- `src/api/PDFDocument.ts` - Novos métodos
59+
- `src/core/writers/PDFWriter.ts` - Lógica de escrita incremental
60+
61+
---
62+
63+
### 2. MÉDIA PRIORIDADE - Melhorias de Funcionalidade
64+
65+
#### 2.1 Retângulos com Cantos Arredondados
66+
- **Origem**: Fork `pdfme/pdf-lib`
67+
- **Descrição**: Adicionar opção `radius` ao método `drawRectangle()`
68+
- **Benefícios**: Elementos visuais mais modernos
69+
- **Implementação**: Usar curvas de Bezier para os cantos
70+
- **Arquivos a modificar**:
71+
- `src/api/PDFPage.ts` - Método drawRectangle
72+
- `src/api/operations.ts` - Operação drawRectangle
73+
74+
#### 2.2 Suporte a Hyperlinks
75+
- **Origem**: PR #1691
76+
- **Descrição**: Adicionar links clicáveis em PDFs
77+
- **Benefícios**: PDFs interativos com navegação
78+
- **Arquivos a modificar**:
79+
- `src/api/PDFPage.ts` - Método para criar links
80+
- `src/core/annotation/` - Anotações de link
81+
82+
#### 2.3 Renomear Campos de Formulário
83+
- **Origem**: PR #1748
84+
- **Descrição**: Permitir renomear campos AcroForm existentes
85+
- **Benefícios**: Maior flexibilidade na manipulação de formulários
86+
- **Arquivos a modificar**:
87+
- `src/api/form/PDFField.ts` - Método rename
88+
89+
#### 2.4 Função de Translação de Página
90+
- **Origem**: PR #1379
91+
- **Descrição**: Mover/transladar conteúdo de página
92+
- **Benefícios**: Reposicionamento de conteúdo existente
93+
- **Arquivos a modificar**:
94+
- `src/api/PDFPage.ts` - Método translate
95+
96+
#### 2.5 Flatten Parcial de Formulários
97+
- **Origem**: PR #1758
98+
- **Descrição**: Flatten apenas campos específicos, não todos
99+
- **Benefícios**: Controle granular sobre campos de formulário
100+
- **Arquivos a modificar**:
101+
- `src/api/form/PDFForm.ts` - Opções de flatten seletivo
102+
103+
---
104+
105+
### 3. BAIXA PRIORIDADE - Melhorias de Qualidade
106+
107+
#### 3.1 Integração OSS-Fuzz
108+
- **Origem**: PR #1768
109+
- **Descrição**: Adicionar testes de fuzzing para segurança
110+
- **Benefícios**: Identificar vulnerabilidades de parsing
111+
112+
#### 3.2 PageSizes Imutáveis
113+
- **Origem**: PR #1765
114+
- **Descrição**: Tornar definições de tamanho de página literais e imutáveis
115+
- **Benefícios**: Melhor type-safety em TypeScript
116+
117+
#### 3.3 Preservar Ordem de Objetos
118+
- **Origem**: PR #1769
119+
- **Descrição**: Manter ordem de objetos em PDFs com atualizações incrementais
120+
- **Benefícios**: Compatibilidade com assinaturas digitais
121+
122+
#### 3.4 Manter Versão do PDF
123+
- **Origem**: PR #1747
124+
- **Descrição**: Preservar versão original do PDF ao salvar
125+
- **Benefícios**: Evitar problemas de compatibilidade
126+
127+
#### 3.5 Metadata Producer
128+
- **Origem**: PR #1761
129+
- **Descrição**: Definir metadata de produtor automaticamente
130+
- **Benefícios**: Rastreabilidade de documentos gerados
131+
132+
---
133+
134+
### 4. CORREÇÕES DE BUGS IMPORTANTES
135+
136+
#### 4.1 Corrupção Visual em PDFs
137+
- **Origem**: PR #1772, Issue #951
138+
- **Descrição**: Resolver problemas de renderização visual
139+
140+
#### 4.2 Encoding WinAnsi para Texto Não-Latino
141+
- **Origem**: Issue #1152
142+
- **Descrição**: Suportar caracteres não-latinos em dropdowns
143+
- **Solução**: Usar encoding UTF-16 ou Unicode adequado
144+
145+
#### 4.3 Compatibilidade com Fontkit v2
146+
- **Origem**: Fork `pdfme/pdf-lib`
147+
- **Descrição**: Resolver corrupção de caracteres japoneses/chineses em subsets de fontes
148+
149+
#### 4.4 Validação NaN
150+
- **Origem**: PR #1722
151+
- **Descrição**: Corrigir problemas de validação com valores NaN
152+
153+
#### 4.5 Valores de Checkbox
154+
- **Origem**: PR #1685
155+
- **Descrição**: Melhorar manipulação de valores de checkbox
156+
157+
---
158+
159+
### 5. FUNCIONALIDADES SOLICITADAS (Longo Prazo)
160+
161+
#### 5.1 Extração de Texto
162+
- **Origem**: Issues #93, #137, #177, #329, #380
163+
- **Descrição**: Extrair texto plano de páginas PDF
164+
- **Complexidade**: ALTA - Requer parsing de content streams
165+
166+
#### 5.2 Edição de Texto Existente
167+
- **Origem**: Issues #93, #137, #177, #329, #380
168+
- **Descrição**: Modificar texto existente em páginas
169+
- **Complexidade**: MUITO ALTA - Requer reconstrução de content streams
170+
171+
#### 5.3 Suporte a Spot Colors
172+
- **Origem**: Issue #444
173+
- **Descrição**: Suportar cores especiais (Pantone, etc.)
174+
- **Complexidade**: MÉDIA
175+
176+
---
177+
178+
## Roadmap Sugerido
179+
180+
### Fase 1 - Fundação (Semanas 1-4)
181+
- [ ] Implementar suporte a SVG (`drawSvgPath`, `drawSvg`)
182+
- [ ] Adicionar retângulos arredondados
183+
- [ ] Integrar correções de bugs críticos (PR #1772)
184+
185+
### Fase 2 - Funcionalidades Core (Semanas 5-8)
186+
- [ ] Implementar salvamento incremental
187+
- [ ] Adicionar suporte a hyperlinks
188+
- [ ] Implementar flatten parcial de formulários
189+
190+
### Fase 3 - Segurança (Semanas 9-12)
191+
- [ ] Adicionar suporte a criptografia/descriptografia
192+
- [ ] Integrar OSS-Fuzz para testes de segurança
193+
- [ ] Melhorar validação de entrada
194+
195+
### Fase 4 - Polimento (Semanas 13-16)
196+
- [ ] Compatibilidade com fontkit v2
197+
- [ ] Melhorias de encoding para i18n
198+
- [ ] Documentação e exemplos
199+
200+
---
201+
202+
## Referências
203+
204+
### Forks Principais
205+
- https://github.com/cantoo-scribe/pdf-lib
206+
- https://github.com/pdfme/pdf-lib
207+
- https://github.com/remdra/pdf-lib-incremental-save
208+
- https://github.com/brennanmcquerry/pdf-lib-plus-encrypt
209+
210+
### PRs Relevantes
211+
- https://github.com/Hopding/pdf-lib/pull/1772 - Fix visual corruption
212+
- https://github.com/Hopding/pdf-lib/pull/1768 - OSS-Fuzz
213+
- https://github.com/Hopding/pdf-lib/pull/1691 - Hyperlinks
214+
- https://github.com/Hopding/pdf-lib/pull/1748 - Rename form fields
215+
- https://github.com/Hopding/pdf-lib/pull/1758 - Partial flatten
216+
217+
### Discussões
218+
- https://github.com/Hopding/pdf-lib/discussions/1631 - Future of pdf-lib
219+
220+
---
221+
222+
*Documento gerado em 2026-01-31 a partir da análise de forks e PRs do repositório pdf-lib*

0 commit comments

Comments
 (0)