O que cli-anything-wps faz?
Ferramenta de linha de comando para controlar o WPS Office via interface de automação COM. Suporta WPS Writer (texto), WPS Calc (planilha) e WPS Impress (apresentação).
Pré-requisitos
- Sistema Operacional Windows
- WPS Office (instalado, versão 12.0 ou superior)
- Python 3.10+
- pywin32:
pip install pywin32
Instalação
pip install -e .
cli-anything-wps --help
Geração de PPT orientada por dados JSON ⭐ Fluxo de trabalho principal em produção
Este é o modo mais utilizado: Pesquise dados → Gere gráficos matplotlib → Escreva JSON → Gere com WPS COM em um único comando.
Fluxo completo (6 etapas)
1. Extrair fundo do modelo: modelo.pptx → template_bg.png (960x540)
2. WebSearch para dados: notas de corte/rankings de disciplinas/planos de matrícula/dados científicos
3. matplotlib gera gráficos: barras/pizza/linha/barras horizontais/bolhas
4. Escrever data.json: 12-15 slides com elements[] (título ≤4 caracteres + espaçamento ≥24pt)
5. python build_xxx.py: WPS COM constrói slide por slide
6. Saída: PPTX + PDF em formato duplo
Ordem padrão dos slides
S1 Capa → S2 Índice → S3-S10 Conteúdo (gráficos+tabelas+cartões) → S11 Cartão de resumo → S12 Agradecimentos
Roteamento de tipos de elementos
| type | Uso |
|---|
text | Caixa de texto |
image | Imagem (incluindo gráficos matplotlib) |
table | Tabela |
cards_2x3 | Cartões coloridos 2 linhas x 3 colunas |
cards_1x4_info | Cartões de estatísticas numéricas (4 colunas) |
card_list_wide | Lista numerada de índice |
tagline_bar | Barra de resumo no rodapé do slide |
Restrições importantes ⚠️
- Espaçamento entre título e conteúdo: título y=14 h=40 (termina em y≈54), o primeiro elemento de conteúdo deve começar em y≥76-78 (gap ≥24pt)
- Título com no máximo 4 caracteres, centralizado, SimHei 40-44pt, cor da marca, sem linhas decorativas
- Aspas chinesas no JSON: use 「」 em vez de
"" em citações no texto
- Nenhum elemento ultrapassa o slide: 960×540, y+h≤518
- WPS COM:
Fill.ForeColor.RGB, SaveAs(path, 32) para exportar PDF
- Limpeza antes da execução:
taskkill //F //IM wps.exe //T
Exemplos de referência
WPS/ diretório com 16 projetos:
| Projeto | Páginas | Tema |
|---|
| Tsinghua Xiehe/Lanzhou University/Tongji Medical School/HIT/Chongqing University/Nanhua University | 12 | Matrículas de cada universidade |
| Sun Yat-sen University/USTC/UCAS | 15 | Matrículas de universidades de elite |
| Fudan University | 12 | Novas engenharias + Faculdade de Medicina |
| SUSTech Cancer Hospital | 12 | Mestrado/doutorado conjunto |
| PKU/Tsinghua/SUSTech/HUST/Zhejiang University City College | 9-14 | Apresentações institucionais |
python -c "import zipfile; ..."
python gen_charts.py
python -c "import json; json.load(open('data.json','r',encoding='utf-8'))"
taskkill //F //IM wps.exe //T
python build_xxx.py
Estrutura de comandos CLI
wps
├── document # Gerenciamento de documentos: new/open/save/info
├── writer # Texto: add-paragraph/heading/list/table/image
├── calc # Planilha: set-cell/get-cell/set-range/merge-cells
├── impress # Apresentação: add-slide/remove-slide/set-content/add-element
├── style # Estilos: create/modify/list/apply/remove
├── preset # Predefinições de design: list/info/apply
├── export # Exportar: render output.pptx -p pptx
└── session # Sessão: status/undo/redo/history
Exemplos de uso
cli-anything-wps document new --type writer --name "Relatório" -o report.json
cli-anything-wps --project report.json writer add-heading -t "Relatório Anual" -l 1
cli-anything-wps --project report.json export render report.docx -p docx
cli-anything-wps --json document new --type writer --name "teste"
Predefinições de design
| Predefinição | Paleta de cores | Cenário de uso |
|---|
| academic | Azul escuro #1A3C8B | Defesa acadêmica/solicitação de bolsa |
| consultant | Azul escuro #003366 + ciano claro | Relatório de consultoria |
| business | Azul corporativo #005294 | Reuniões/apresentações corporativas |
| tech | Quase preto #0F1423 | Tecnologia/IA/relatórios de dados |
Revisão de qualidade (5 dimensões)
| Dimensão | Itens verificados | Limiar |
|---|
| visual | Hierarquia de fontes/contraste/espaçamento | 70 pontos |
| pedagogia | Arco narrativo/conhecimento prévio | 75 pontos |
| revisão | Ortografia/termos/estouro | 80 pontos |
| paridade | Consistência PPTX/PDF | 85 pontos |
| substância | Precisão dos dados/citações | 90 pontos |