mirror of
https://github.com/snapotter-hq/SnapOtter.git
synced 2026-08-03 07:46:42 +02:00
feat(docs-i18n): translate all documentation into 20 languages
All 181 docs markdown files translated into 20 languages (apps/docs/<locale>/**). Companion to the i18n code PR; admin-merged because the file count exceeds GitHub's per-PR CI trigger limit. Validated by pnpm i18n:check (all surfaces, 0 stale/missing) and a clean all-locale docs build.
This commit is contained in:
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "Organiza páginas de PDF para dobra em formato de livreto."
|
||||
i18n_source_hash: 8844b6d4fe96
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 5bcb3392d46a
|
||||
---
|
||||
|
||||
# PDF em Livreto (Booklet) {#booklet-pdf}
|
||||
|
||||
Impõe páginas para impressão duplex, de modo que as folhas impressas possam ser dobradas em um livreto.
|
||||
|
||||
## Endpoint da API {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/booklet-pdf`
|
||||
|
||||
Aceita dados de formulário multipart com um arquivo PDF e um campo JSON `settings`.
|
||||
|
||||
## Parâmetros {#parameters}
|
||||
|
||||
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| perSheet | integer | Não | `2` | Páginas por folha: `2`, `4`, `6` ou `8` |
|
||||
|
||||
## Exemplo de Requisição {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/booklet-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"perSheet": 2}'
|
||||
```
|
||||
|
||||
## Exemplo de Resposta {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2400000
|
||||
}
|
||||
```
|
||||
|
||||
## Notas {#notes}
|
||||
|
||||
- O padrão `perSheet: 2` posiciona duas páginas lado a lado em cada folha, que é o layout padrão de livreto para impressão duplex.
|
||||
- Páginas em branco são adicionadas automaticamente se a contagem total de páginas não for um múltiplo do tamanho da folha.
|
||||
- Imprima a saída em frente e verso com encadernação pela borda curta, depois dobre e grampeie.
|
||||
@@ -0,0 +1,62 @@
|
||||
---
|
||||
description: "Reduza o tamanho do arquivo PDF comprimindo as imagens incorporadas."
|
||||
i18n_source_hash: a8bb0baaca25
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 02373ca0a6ef
|
||||
---
|
||||
|
||||
# Compress PDF {#compress-pdf}
|
||||
|
||||
Reduza o tamanho do arquivo PDF fazendo o downsampling das imagens incorporadas. Escolha entre um controle deslizante de qualidade ou um tamanho de arquivo alvo.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/compress-pdf`
|
||||
|
||||
Aceita dados de formulário multipart com um arquivo PDF e um campo JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| mode | string | Não | `"quality"` | Modo de compressão: `quality` ou `targetSize` |
|
||||
| quality | integer | Não | `75` | Qualidade da compressão, 1-100 (maior = menos compressão). Usado no modo `quality` |
|
||||
| targetSizeKb | number | Não | - | Tamanho de arquivo alvo em kilobytes. Usado no modo `targetSize` |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
Comprimir por qualidade:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/compress-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"mode": "quality", "quality": 60}'
|
||||
```
|
||||
|
||||
Comprimir para um tamanho alvo:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/compress-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"mode": "targetSize", "targetSizeKb": 500}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 5200000,
|
||||
"processedSize": 1800000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- No modo `quality`, valores mais baixos produzem arquivos menores com mais degradação da imagem.
|
||||
- No modo `targetSize`, uma busca binária encontra o maior DPI que cabe no tamanho solicitado.
|
||||
- Se a compressão aumentar o tamanho do arquivo, os bytes originais são retornados sem alteração.
|
||||
- O conteúdo de texto e vetorial não é afetado; apenas as imagens raster incorporadas passam por downsampling.
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "Recorte todas as páginas de um PDF com uma margem uniforme."
|
||||
i18n_source_hash: ffa1a2cee08d
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 5cb3e156ad55
|
||||
---
|
||||
|
||||
# Crop PDF {#crop-pdf}
|
||||
|
||||
Recorte todas as páginas de um PDF aplicando uma margem uniforme, cortando o conteúdo de cada borda igualmente.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/crop-pdf`
|
||||
|
||||
Aceita dados de formulário multipart com um arquivo PDF e um campo JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| margin | number | Não | `20` | Margem de recorte uniforme em pontos (0-2000) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/crop-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"margin": 50}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2440000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- O valor da margem é em pontos PDF (1 ponto = 1/72 polegada).
|
||||
- A mesma margem é aplicada às quatro bordas de cada página.
|
||||
- Uma margem de `0` remove todas as margens de recorte existentes, exibindo a media box completa.
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
description: "Extraia páginas selecionadas de um PDF para um novo documento."
|
||||
i18n_source_hash: e4a8fad31e0f
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: f6fc24009fa4
|
||||
---
|
||||
|
||||
# Extract Pages {#extract-pages}
|
||||
|
||||
Extraia páginas selecionadas de um PDF para um novo documento, menor.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/extract-pages`
|
||||
|
||||
Aceita dados de formulário multipart com um arquivo PDF e um campo JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| range | string | Sim | - | Intervalo de páginas na sintaxe qpdf, por exemplo `"1-5,8,10-z"` |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/extract-pages \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"range": "1-5,8,10-z"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 3200000,
|
||||
"processedSize": 1100000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Os intervalos de páginas usam a sintaxe qpdf: `1-5` para as páginas 1 a 5, `z` para a última página, e vírgulas para combinar intervalos (por exemplo `1-3,7,10-z`).
|
||||
- As páginas extraídas mantêm a formatação, anotações e links originais.
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
description: "Incorpore formulários e anotações ao conteúdo da página."
|
||||
i18n_source_hash: b25c2a2b6f40
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 55bbc26b338a
|
||||
---
|
||||
|
||||
# Flatten PDF {#flatten-pdf}
|
||||
|
||||
Incorpore campos de formulário interativos e anotações ao conteúdo da página, produzindo um PDF estático que fica igual em qualquer lugar.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/flatten-pdf`
|
||||
|
||||
Aceita dados de formulário multipart com um arquivo PDF.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Esta ferramenta não tem parâmetros configuráveis. Envie um PDF e todos os formulários e anotações serão achatados.
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/flatten-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@form.pdf"
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/form.pdf",
|
||||
"originalSize": 185000,
|
||||
"processedSize": 172000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Formato de entrada aceito: `.pdf`.
|
||||
- Esta é uma ferramenta rápida (síncrona) que retorna o resultado diretamente.
|
||||
- Os valores dos campos de formulário são preservados como texto estático na saída.
|
||||
- As anotações (comentários, destaques, notas adesivas) passam a fazer parte do conteúdo da página e não podem mais ser editadas.
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
description: "Converta todas as cores de um PDF para escala de cinza."
|
||||
i18n_source_hash: f327addb32d6
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 597949982c22
|
||||
---
|
||||
|
||||
# Grayscale PDF {#grayscale-pdf}
|
||||
|
||||
Converta todas as cores de um PDF para escala de cinza, produzindo uma versão em preto e branco do documento.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/grayscale-pdf`
|
||||
|
||||
Aceita dados de formulário multipart com um arquivo PDF. Nenhum campo `settings` é necessário.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Esta ferramenta não tem parâmetros de configuração. Envie o arquivo PDF diretamente.
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/grayscale-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf"
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 3200000,
|
||||
"processedSize": 2800000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Todos os espaços de cor (RGB, CMYK) são convertidos para escala de cinza, incluindo imagens incorporadas, gráficos vetoriais e texto.
|
||||
- O arquivo de saída costuma ser menor que o original, pois os dados em escala de cinza exigem menos bytes por pixel.
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
description: "Linearize um PDF para visualização web rápida (download progressivo)."
|
||||
i18n_source_hash: 36280b478161
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 780ddb2b9093
|
||||
---
|
||||
|
||||
# Web-Optimize PDF {#web-optimize-pdf}
|
||||
|
||||
Linearize um PDF para que ele possa ser baixado e exibido progressivamente em navegadores web sem esperar pelo arquivo completo.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/linearize-pdf`
|
||||
|
||||
Aceita dados de formulário multipart com um arquivo PDF. Nenhum campo `settings` é necessário.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Esta ferramenta não tem parâmetros de configuração. Envie o arquivo PDF diretamente.
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/linearize-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf"
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2460000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- A linearização reorganiza a estrutura interna do PDF para que a primeira página possa ser renderizada antes de o arquivo completo ser baixado.
|
||||
- O arquivo de saída pode ficar ligeiramente maior que a entrada devido aos dados de linearização adicionados.
|
||||
- PDFs já linearizados são relinearizados sem problemas.
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
description: "Combine vários PDFs em um único documento."
|
||||
i18n_source_hash: e82e389cb8b6
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: b587bdc028a3
|
||||
---
|
||||
|
||||
# Merge PDFs {#merge-pdfs}
|
||||
|
||||
Combine dois ou mais arquivos PDF em um único documento, preservando a ordem das páginas de cada arquivo de entrada.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/merge-pdf`
|
||||
|
||||
Aceita dados de formulário multipart com dois ou mais arquivos PDF. Nenhum campo `settings` é necessário.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Esta ferramenta não tem parâmetros de configuração. Basta enviar dois ou mais arquivos PDF.
|
||||
|
||||
| Restrição | Valor |
|
||||
|------------|-------|
|
||||
| Mínimo de arquivos | 2 |
|
||||
| Máximo de arquivos | 20 |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/merge-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document1.pdf" \
|
||||
-F "file=@document2.pdf" \
|
||||
-F "file=@document3.pdf"
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/merged.pdf",
|
||||
"originalSize": 4500000,
|
||||
"processedSize": 4200000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Os arquivos são combinados na ordem em que são enviados.
|
||||
- São necessários pelo menos dois arquivos PDF; a requisição falhará com um erro 400 se forem fornecidos menos.
|
||||
- O número máximo de arquivos de entrada é 20.
|
||||
- PDFs criptografados devem ser desbloqueados antes de mesclar.
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "Organize várias páginas de PDF por folha (2 por folha, 4 por folha, etc.)."
|
||||
i18n_source_hash: 9dd82737cb72
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 7ce40924fea5
|
||||
---
|
||||
|
||||
# N-up PDF {#n-up-pdf}
|
||||
|
||||
Organize várias páginas por folha para economizar papel na impressão, como layouts de 2 por folha ou 4 por folha.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/nup-pdf`
|
||||
|
||||
Aceita dados de formulário multipart com um arquivo PDF e um campo JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| perSheet | integer | Não | `2` | Páginas por folha: `2`, `3`, `4`, `8`, `9`, `12` ou `16` |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/nup-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"perSheet": 4}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2300000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- As páginas são organizadas na ordem de leitura (da esquerda para a direita, de cima para baixo).
|
||||
- O tamanho da página de saída corresponde ao original; as páginas individuais são reduzidas para caber na grade.
|
||||
- Um documento de 20 páginas com `perSheet: 4` produz uma saída de 5 páginas.
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
description: "Extraia texto de documentos PDF usando OCR com tecnologia de IA."
|
||||
i18n_source_hash: 1431fcba180b
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 42ac624970b5
|
||||
---
|
||||
|
||||
# PDF OCR {#pdf-ocr}
|
||||
|
||||
Extraia texto de documentos PDF usando reconhecimento óptico de caracteres com tecnologia de IA. Oferece suporte a vários níveis de qualidade e idiomas. Requer que o pacote de recurso OCR esteja instalado.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/ocr-pdf`
|
||||
|
||||
Aceita dados de formulário multipart com um arquivo PDF e um campo JSON `settings` opcional.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| quality | string | Não | `"balanced"` | Nível de qualidade do OCR: `fast`, `balanced`, `best` |
|
||||
| language | string | Não | `"auto"` | Idioma do documento: `auto`, `en`, `de`, `fr`, `es`, `zh`, `ja`, `ko` |
|
||||
| pages | string | Não | `"all"` | Seleção de páginas, por exemplo `"all"`, `"1-3"`, `"1,3,5"` |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/ocr-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@scanned.pdf" \
|
||||
-F 'settings={"quality": "best", "language": "en", "pages": "1-5"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
Retorna `202 Accepted`. Acompanhe o progresso via SSE em `/api/v1/jobs/{jobId}/progress`.
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Formato de entrada aceito: `.pdf`.
|
||||
- Esta é uma ferramenta de IA que requer que o **pacote de recurso OCR** esteja instalado. Se o pacote não estiver instalado, a API retorna `501 Not Implemented`.
|
||||
- O nível de qualidade `fast` usa um modelo mais leve para processamento mais rápido; `best` usa um modelo mais preciso ao custo de velocidade.
|
||||
- A configuração de idioma `auto` tenta detectar o idioma do documento automaticamente.
|
||||
- Você pode direcionar páginas específicas usando intervalos (`"1-3"`), listas separadas por vírgula (`"1,3,5"`) ou `"all"` para todas as páginas.
|
||||
- Para PDFs que já contêm texto selecionável, considere usar a ferramenta [PDF to Text](./pdf-to-text), que é mais rápida.
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "Reordene páginas em um PDF com uma ordem de páginas explícita."
|
||||
i18n_source_hash: e961fc895b4b
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 09c57987f23b
|
||||
---
|
||||
|
||||
# Organize PDF {#organize-pdf}
|
||||
|
||||
Reordene páginas em um PDF especificando a sequência de páginas desejada.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/organize-pdf`
|
||||
|
||||
Aceita dados de formulário multipart com um arquivo PDF e um campo JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| order | string | Sim | - | Ordem de páginas desejada na sintaxe qpdf, por exemplo `"3,1,2,5-z"` |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/organize-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"order": "3,1,2,5-z"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2450000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Os intervalos de páginas usam a sintaxe qpdf: `3,1,2` reordena as três primeiras páginas, e `5-z` acrescenta as páginas 5 até a última.
|
||||
- As páginas podem ser duplicadas listando-as mais de uma vez (por exemplo `"1,1,2,3"` duplica a página 1).
|
||||
- As páginas não listadas na string de ordem são omitidas da saída.
|
||||
@@ -0,0 +1,61 @@
|
||||
---
|
||||
description: "Leia e escreva metadados de documentos PDF."
|
||||
i18n_source_hash: b2eaebf7467f
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: d9353f5c61dd
|
||||
---
|
||||
|
||||
# PDF Metadata {#pdf-metadata}
|
||||
|
||||
Leia e atualize campos de metadados de documentos PDF, como título, autor, assunto e palavras-chave. Quando nenhuma configuração é fornecida, os metadados existentes são retornados sem modificação.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/pdf-metadata`
|
||||
|
||||
Aceita dados de formulário multipart com um arquivo PDF e um campo JSON `settings` opcional.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| title | string | Não | - | Título do documento (máximo de 500 caracteres) |
|
||||
| author | string | Não | - | Autor do documento (máximo de 500 caracteres) |
|
||||
| subject | string | Não | - | Assunto do documento (máximo de 500 caracteres) |
|
||||
| keywords | string | Não | - | Palavras-chave do documento (máximo de 500 caracteres) |
|
||||
|
||||
Todos os parâmetros são opcionais. Os campos omitidos permanecem inalterados.
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/pdf-metadata \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@report.pdf" \
|
||||
-F 'settings={"title": "Q2 Report", "author": "Finance Team"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/report.pdf",
|
||||
"originalSize": 245000,
|
||||
"processedSize": 245200,
|
||||
"metadata": {
|
||||
"title": "Q2 Report",
|
||||
"author": "Finance Team",
|
||||
"subject": "",
|
||||
"keywords": ""
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Formato de entrada aceito: `.pdf`.
|
||||
- Esta é uma ferramenta rápida (síncrona) que retorna o resultado diretamente.
|
||||
- O campo `metadata` na resposta contém os metadados resultantes após quaisquer atualizações.
|
||||
- Para ler os metadados sem modificá-los, omita o campo `settings` ou envie um objeto vazio.
|
||||
- Cada campo de metadados é limitado a 500 caracteres.
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
description: "Adicione números de página a cada página de um PDF."
|
||||
i18n_source_hash: 58342d6ac8d2
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 79901ced3a4e
|
||||
---
|
||||
|
||||
# PDF Page Numbers {#pdf-page-numbers}
|
||||
|
||||
Adicione números de página "Página N de M" a cada página de um PDF.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/pdf-page-numbers`
|
||||
|
||||
Aceita dados de formulário multipart com um arquivo PDF e um campo JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| position | string | Não | `"bc"` | Posicionamento do número de página: `bl`, `bc`, `br`, `tl`, `tc`, `tr` |
|
||||
| fontSize | integer | Não | `10` | Tamanho da fonte em pontos (6-24) |
|
||||
|
||||
### Position Values {#position-values}
|
||||
|
||||
- `tl` superior-esquerda, `tc` superior-centro, `tr` superior-direita
|
||||
- `bl` inferior-esquerda, `bc` inferior-centro, `br` inferior-direita
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/pdf-page-numbers \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"position": "bc", "fontSize": 12}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2470000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Os números de página são renderizados no formato "Página 1 de 10".
|
||||
- Os números são adicionados a cada página, incluindo quaisquer páginas de título ou de capa existentes.
|
||||
- A posição padrão `"bc"` coloca os números na parte inferior central de cada página.
|
||||
@@ -0,0 +1,133 @@
|
||||
---
|
||||
description: "Converta páginas de PDF em imagens de alta qualidade."
|
||||
i18n_source_hash: 1c36be5dadb8
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 216205ce228d
|
||||
---
|
||||
|
||||
# PDF to Image {#pdf-to-image}
|
||||
|
||||
Converta páginas de PDF em imagens raster de alta qualidade. Oferece suporte a seleção de páginas, vários formatos de saída, controle de DPI e modos de cor. Inclui sub-rotas de informações e pré-visualização para inspecionar PDFs antes da conversão.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/pdf-to-image`
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| format | string | Não | `"png"` | Formato de saída: `png`, `jpg`, `webp`, `avif`, `tiff`, `gif`, `heic`, `heif`, `jxl` |
|
||||
| dpi | number | Não | 150 | Resolução de renderização (36 a 2400). DPI mais alto produz imagens maiores e mais detalhadas. |
|
||||
| quality | number | Não | 85 | Qualidade de saída para formatos com perdas (1 a 100) |
|
||||
| colorMode | string | Não | `"color"` | Modo de cor: `color`, `grayscale`, `bw` (limiar de preto e branco) |
|
||||
| pages | string | Não | `"all"` | Seleção de páginas: `all`, página única (`3`), intervalo (`1-5`) ou separadas por vírgula (`1,3,5-8`) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/pdf-to-image \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"format":"png","dpi":300,"pages":"1-3","colorMode":"color"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"pageCount": 10,
|
||||
"selectedPages": [1, 2, 3],
|
||||
"format": "png",
|
||||
"pages": [
|
||||
{
|
||||
"page": 1,
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/page-1.png",
|
||||
"size": 234567
|
||||
},
|
||||
{
|
||||
"page": 2,
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/page-2.png",
|
||||
"size": 198765
|
||||
},
|
||||
{
|
||||
"page": 3,
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/page-3.png",
|
||||
"size": 210456
|
||||
}
|
||||
],
|
||||
"zipUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/pdf-pages.zip",
|
||||
"zipSize": 612345
|
||||
}
|
||||
```
|
||||
|
||||
## Info Sub-Route {#info-sub-route}
|
||||
|
||||
`POST /api/v1/tools/pdf/pdf-to-image/info`
|
||||
|
||||
Retorna a contagem de páginas de um PDF sem renderizar nenhuma página.
|
||||
|
||||
### Info Request {#info-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/pdf-to-image/info \
|
||||
-F "file=@document.pdf"
|
||||
```
|
||||
|
||||
### Info Response {#info-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"pageCount": 10
|
||||
}
|
||||
```
|
||||
|
||||
## Preview Sub-Route {#preview-sub-route}
|
||||
|
||||
`POST /api/v1/tools/pdf/pdf-to-image/preview`
|
||||
|
||||
Retorna miniaturas JPEG de baixa resolução de todas as páginas como data URLs base64. Útil para construir uma interface de seleção de páginas.
|
||||
|
||||
### Preview Request {#preview-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/pdf-to-image/preview \
|
||||
-F "file=@document.pdf"
|
||||
```
|
||||
|
||||
### Preview Response {#preview-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"pageCount": 10,
|
||||
"thumbnails": [
|
||||
{
|
||||
"page": 1,
|
||||
"dataUrl": "data:image/jpeg;base64,/9j/4AAQ...",
|
||||
"width": 300,
|
||||
"height": 424
|
||||
},
|
||||
{
|
||||
"page": 2,
|
||||
"dataUrl": "data:image/jpeg;base64,/9j/4AAQ...",
|
||||
"width": 300,
|
||||
"height": 424
|
||||
}
|
||||
]
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Usa o MuPDF para renderização de PDF, oferecendo saída de alta fidelidade com renderização correta de fontes e gráficos vetoriais.
|
||||
- PDFs protegidos por senha não são suportados e retornarão um erro 400.
|
||||
- O parâmetro `pages` oferece suporte a uma sintaxe flexível:
|
||||
- `"all"` ou `""` - todas as páginas
|
||||
- `"3"` - página única
|
||||
- `"1-5"` - intervalo de páginas (inclusivo)
|
||||
- `"1,3,5-8"` - páginas individuais e intervalos combinados
|
||||
- Os números de página começam em 1. Especificar páginas além do comprimento do documento retorna um erro 400.
|
||||
- O endpoint principal sempre gera tanto downloads de páginas individuais quanto um ZIP contendo todas as páginas selecionadas.
|
||||
- O endpoint de pré-visualização renderiza a 72 DPI e redimensiona para 300px de largura para geração rápida de miniaturas. As miniaturas são JPEG com qualidade de 60%.
|
||||
- O endpoint de pré-visualização respeita a configuração de servidor `MAX_PDF_PAGES`, limitando quantas miniaturas são geradas.
|
||||
- Para documentos grandes em DPI alto, o tempo de processamento aumenta proporcionalmente. Considere usar DPI mais baixo (150) para uso web e DPI mais alto (300-600) para impressão.
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
description: "Extraia texto simples de um PDF."
|
||||
i18n_source_hash: 15a7bc1cdf8f
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: cd7140a98b01
|
||||
---
|
||||
|
||||
# PDF to Text {#pdf-to-text}
|
||||
|
||||
Extraia todo o texto simples legível de um documento PDF para um arquivo de texto.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/pdf-to-text`
|
||||
|
||||
Aceita dados de formulário multipart com um arquivo PDF.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Esta ferramenta não tem parâmetros configuráveis. Envie um PDF e seu conteúdo de texto será extraído.
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/pdf-to-text \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@report.pdf"
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/report.txt",
|
||||
"originalSize": 520000,
|
||||
"processedSize": 14300,
|
||||
"chars": 14300
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Formato de entrada aceito: `.pdf`.
|
||||
- Esta é uma ferramenta rápida (síncrona) que retorna o resultado diretamente.
|
||||
- O campo `chars` na resposta indica o número de caracteres extraídos.
|
||||
- Apenas o texto incorporado digitalmente é extraído. Para documentos digitalizados ou PDFs baseados em imagem, use a ferramenta [PDF OCR](./ocr-pdf).
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
description: "Converta um PDF em um documento Word (DOCX)."
|
||||
i18n_source_hash: be41b6b49f84
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: c658777d1be0
|
||||
---
|
||||
|
||||
# PDF to Word {#pdf-to-word}
|
||||
|
||||
Converta um PDF baseado em texto em um documento Word (DOCX). Mais adequado para PDFs com texto selecionável; páginas digitalizadas precisarão de OCR antes.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/pdf-to-word`
|
||||
|
||||
Aceita dados de formulário multipart com um arquivo PDF.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Esta ferramenta não tem parâmetros configuráveis. Envie um PDF e ele será convertido para DOCX.
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/pdf-to-word \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@report.pdf"
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
Retorna `202 Accepted`. Acompanhe o progresso via SSE em `/api/v1/jobs/{jobId}/progress`.
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Formato de entrada aceito: `.pdf`.
|
||||
- Funciona melhor com PDFs baseados em texto. Páginas digitalizadas ou somente de imagem produzirão saída vazia ou mínima; use o [PDF OCR](./ocr-pdf) para adicionar uma camada de texto antes.
|
||||
- A conversão é feita pelo LibreOffice rodando em modo headless no servidor.
|
||||
- Layouts complexos (múltiplas colunas, elementos sobrepostos) podem não ser convertidos perfeitamente.
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
description: "Converta um PDF para o formato de arquivamento PDF/A-2 para preservação de longo prazo."
|
||||
i18n_source_hash: 4c6bf7a12e84
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 28eef5080ad1
|
||||
---
|
||||
|
||||
# PDF/A Convert {#pdf-a-convert}
|
||||
|
||||
Converta um PDF para o formato de arquivamento PDF/A-2, adequado para preservação de longo prazo e conformidade regulatória.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/pdfa-convert`
|
||||
|
||||
Aceita dados de formulário multipart com um arquivo PDF. Nenhum campo `settings` é necessário.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Esta ferramenta não tem parâmetros de configuração. Envie o arquivo PDF diretamente.
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/pdfa-convert \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf"
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2600000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- A saída está em conformidade com o padrão PDF/A-2.
|
||||
- O PDF/A incorpora todas as fontes e não permite referências externas, portanto o arquivo de saída pode ser maior que o original.
|
||||
- Criptografia e JavaScript são removidos durante a conversão, pois não são permitidos pelo padrão PDF/A.
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
description: "Adicione proteção por senha com criptografia AES-256 a um PDF."
|
||||
i18n_source_hash: 869cfbc739ef
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: a3b7b2e29bfd
|
||||
---
|
||||
|
||||
# Protect PDF {#protect-pdf}
|
||||
|
||||
Adicione proteção por senha a um PDF usando criptografia AES-256.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/protect-pdf`
|
||||
|
||||
Aceita dados de formulário multipart com um arquivo PDF e um campo JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| userPassword | string | Sim | - | Senha necessária para abrir o PDF (1-256 caracteres) |
|
||||
| ownerPassword | string | Não | Igual a `userPassword` | Senha do proprietário para permissões (1-256 caracteres) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/protect-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"userPassword": "s3cret", "ownerPassword": "0wn3r"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2500000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- A criptografia usa AES-256.
|
||||
- Se `ownerPassword` for omitido, ele assume por padrão o mesmo valor de `userPassword`.
|
||||
- As senhas são ocultadas dos logs de auditoria.
|
||||
- O PDF criptografado exige a senha do usuário para abrir e a senha do proprietário (se diferente) para permissões completas.
|
||||
@@ -0,0 +1,52 @@
|
||||
---
|
||||
description: "Remova permanentemente ocorrências de texto de um PDF (redação verdadeira verificada)."
|
||||
i18n_source_hash: 296ad2a701b2
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 3d230772545c
|
||||
---
|
||||
|
||||
# Redact PDF {#redact-pdf}
|
||||
|
||||
Remova permanentemente ocorrências de texto especificadas de um PDF usando redação verdadeira verificada. O texto redigido é completamente removido do arquivo, não apenas coberto com uma caixa preta.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/redact-pdf`
|
||||
|
||||
Aceita dados de formulário multipart com um arquivo PDF e um campo JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| terms | string[] | Sim | - | Strings de texto a redigir (1-50 termos, cada um com até 200 caracteres) |
|
||||
| caseSensitive | boolean | Não | `false` | Se a correspondência diferencia maiúsculas de minúsculas |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/redact-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@contract.pdf" \
|
||||
-F 'settings={"terms": ["John Doe", "555-0123"], "caseSensitive": false}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/contract.pdf",
|
||||
"originalSize": 245000,
|
||||
"processedSize": 243000,
|
||||
"found": 7
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Formato de entrada aceito: `.pdf`.
|
||||
- Esta é uma ferramenta rápida (síncrona) que retorna o resultado diretamente.
|
||||
- Isto executa uma redação verdadeira: o texto correspondente é removido do fluxo de conteúdo do PDF, não apenas ocultado visualmente.
|
||||
- O campo `found` na resposta indica quantas ocorrências foram redigidas.
|
||||
- Você pode redigir até 50 termos em uma única requisição.
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
description: "Exclua páginas específicas de um PDF."
|
||||
i18n_source_hash: 003e460a047c
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 68675a4547b3
|
||||
---
|
||||
|
||||
# Remove Pages {#remove-pages}
|
||||
|
||||
Exclua páginas específicas de um PDF, mantendo todas as páginas restantes intactas.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/remove-pages`
|
||||
|
||||
Aceita dados de formulário multipart com um arquivo PDF e um campo JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| pages | string | Sim | - | Intervalo de páginas a remover na sintaxe qpdf, por exemplo `"3,5-7"` |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/remove-pages \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"pages": "3,5-7"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 1800000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Você não pode remover todas as páginas de um documento; pelo menos uma página deve permanecer.
|
||||
- Os intervalos de páginas usam a sintaxe qpdf: `3` para uma única página, `5-7` para um intervalo, e vírgulas para combinar (por exemplo `1,3,5-7`).
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
description: "Tente reparar um PDF danificado ou corrompido."
|
||||
i18n_source_hash: 864073a2f09f
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: e40d1d840755
|
||||
---
|
||||
|
||||
# Repair PDF {#repair-pdf}
|
||||
|
||||
Tente reparar um PDF danificado ou corrompido reconstruindo sua estrutura interna.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/repair-pdf`
|
||||
|
||||
Aceita dados de formulário multipart com um arquivo PDF. Nenhum campo `settings` é necessário.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
Esta ferramenta não tem parâmetros de configuração. Envie o arquivo PDF danificado diretamente.
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/repair-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@damaged.pdf"
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/damaged.pdf",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2400000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- A validação estrutural é ignorada na entrada para permitir a passagem de arquivos malformados.
|
||||
- O reparo é feito na medida do possível; arquivos gravemente corrompidos podem não ser totalmente recuperáveis.
|
||||
- O PDF reparado pode ter tamanho ligeiramente diferente do original devido às tabelas de referência cruzada reconstruídas.
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
description: "Gire páginas em um PDF em 90, 180 ou 270 graus."
|
||||
i18n_source_hash: cc2acd091427
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: d30dc3765354
|
||||
---
|
||||
|
||||
# Rotate PDF {#rotate-pdf}
|
||||
|
||||
Gire todas ou páginas selecionadas em um PDF por um ângulo especificado.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/rotate-pdf`
|
||||
|
||||
Aceita dados de formulário multipart com um arquivo PDF e um campo JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| angle | integer | Não | `90` | Ângulo de rotação: `90`, `180` ou `270` |
|
||||
| range | string | Não | `"1-z"` | Intervalo de páginas na sintaxe qpdf, por exemplo `"1-5,8"` (`"1-z"` = todas as páginas) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/rotate-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"angle": 90, "range": "1-3"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2450000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- A rotação é no sentido horário.
|
||||
- Os intervalos de páginas usam a sintaxe qpdf: `1-5` para as páginas 1 a 5, `z` para a última página, e vírgulas para combinar intervalos.
|
||||
- O intervalo padrão `"1-z"` gira todas as páginas.
|
||||
@@ -0,0 +1,79 @@
|
||||
---
|
||||
description: "Aplique imagens de assinatura enviadas a um PDF usando posicionamentos de página normalizados."
|
||||
i18n_source_hash: c28f78c2e7fd
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: d0a7937e97db
|
||||
---
|
||||
|
||||
# Sign PDF {#sign-pdf}
|
||||
|
||||
Aplique uma ou mais imagens de assinatura PNG enviadas a qualquer página de um PDF. Esta rota usa um contrato multipart personalizado porque precisa do PDF, de uma ou mais imagens de assinatura e das coordenadas de posicionamento.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/sign-pdf`
|
||||
|
||||
Aceita dados de formulário multipart. O PDF é enviado como `file`; as assinaturas são enviadas como `sig0`, `sig1` e assim por diante; os posicionamentos são enviados em um campo JSON `placements`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| file | file | Sim | - | Arquivo PDF a assinar |
|
||||
| sig0 | file | Sim | - | Primeira imagem de assinatura. Imagens adicionais usam `sig1`, `sig2` e assim por diante |
|
||||
| placements | JSON string | Sim | - | Array de objetos de posicionamento: `{ "sig": 0, "page": 0, "x": 0.2, "y": 0.7, "w": 0.25, "h": 0.08 }` |
|
||||
| clientJobId | string | Não | - | UUID opcional para acompanhamento do progresso via SSE |
|
||||
| fileId | string | Não | - | ID opcional da biblioteca de arquivos para salvar o resultado assinado como uma nova versão |
|
||||
|
||||
## Placement Coordinates {#placement-coordinates}
|
||||
|
||||
| Campo | Tipo | Descrição |
|
||||
|-------|------|-------------|
|
||||
| sig | integer | Índice da imagem de assinatura. `0` mapeia para `sig0` |
|
||||
| page | integer | Índice de página do PDF baseado em zero |
|
||||
| x | number | Posição à esquerda como fração da página |
|
||||
| y | number | Posição superior como fração da página |
|
||||
| w | number | Largura da assinatura como fração da página |
|
||||
| h | number | Altura da assinatura como fração da página |
|
||||
|
||||
As coordenadas usam origem no canto superior esquerdo. Os valores podem ultrapassar ligeiramente a borda da página; o renderizador de PDF recorta o carimbo final para caber na página.
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/sign-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@contract.pdf" \
|
||||
-F "sig0=@signature.png" \
|
||||
-F 'placements=[{"sig":0,"page":0,"x":0.64,"y":0.82,"w":0.22,"h":0.08}]'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/contract_signed.pdf",
|
||||
"previewUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/preview.png",
|
||||
"originalSize": 245000,
|
||||
"processedSize": 249000
|
||||
}
|
||||
```
|
||||
|
||||
Se a requisição não puder ser concluída dentro da janela de espera síncrona, a API retorna:
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
Conecte-se a `/api/v1/jobs/<jobId>/progress` e baixe o resultado quando o job for concluído.
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- Formato de entrada PDF aceito: `.pdf`.
|
||||
- As imagens de assinatura devem ser arquivos de imagem válidos, normalmente PNG com transparência.
|
||||
- São aceitas até 100 imagens de assinatura e 100 posicionamentos.
|
||||
- `sign-pdf` é uma rota personalizada e não usa o campo JSON `settings` padrão da ferramenta.
|
||||
@@ -0,0 +1,61 @@
|
||||
---
|
||||
description: "Extraia páginas ou divida um PDF em partes."
|
||||
i18n_source_hash: 5c8d8041d219
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 1db35b82cee8
|
||||
---
|
||||
|
||||
# Split PDF {#split-pdf}
|
||||
|
||||
Extraia um intervalo de páginas para um novo PDF ou divida um documento em blocos de N páginas.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/split-pdf`
|
||||
|
||||
Aceita dados de formulário multipart com um arquivo PDF e um campo JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| mode | string | Não | `"range"` | Modo de divisão: `range` ou `every` |
|
||||
| range | string | Quando o modo é `range` | - | Intervalo de páginas na sintaxe qpdf, por exemplo `"1-5,8,10-z"` |
|
||||
| everyN | integer | Quando o modo é `every` | - | Divide em blocos de N páginas (1-500) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
Extrair páginas específicas:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/split-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"mode": "range", "range": "1-5,8"}'
|
||||
```
|
||||
|
||||
Dividir em blocos de 10 páginas:
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/split-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"mode": "every", "everyN": 10}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 980000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- No modo `range`, é retornado um único PDF contendo as páginas selecionadas.
|
||||
- No modo `every`, o resultado é um arquivo ZIP contendo as partes individuais.
|
||||
- Os intervalos de páginas usam a sintaxe qpdf: `1-5` para as páginas 1 a 5, `z` para a última página, e vírgulas para combinar intervalos (por exemplo `1-3,7,10-z`).
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "Remova a proteção por senha de um PDF."
|
||||
i18n_source_hash: 14f5165d185c
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: e9050d1a1b08
|
||||
---
|
||||
|
||||
# Unlock PDF {#unlock-pdf}
|
||||
|
||||
Remova a proteção por senha de um PDF criptografado fornecendo a senha correta.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/unlock-pdf`
|
||||
|
||||
Aceita dados de formulário multipart com um arquivo PDF e um campo JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| password | string | Sim | - | Senha para descriptografar o PDF (1-256 caracteres) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/unlock-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"password": "s3cret"}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 2500000,
|
||||
"processedSize": 2450000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- A senha correta deve ser fornecida; uma senha incorreta retorna um erro 400.
|
||||
- Tanto a senha do usuário quanto a senha do proprietário funcionam para a descriptografia.
|
||||
- As senhas são ocultadas dos logs de auditoria.
|
||||
@@ -0,0 +1,58 @@
|
||||
---
|
||||
description: "Adicione uma marca d'água de texto a cada página de um PDF."
|
||||
i18n_source_hash: f1f7d8912fbd
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: fbc23166e0b6
|
||||
---
|
||||
|
||||
# Watermark PDF {#watermark-pdf}
|
||||
|
||||
Aplique uma marca d'água de texto em cada página de um PDF com posição, tamanho, opacidade e rotação configuráveis.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/watermark-pdf`
|
||||
|
||||
Aceita dados de formulário multipart com um arquivo PDF e um campo JSON `settings`.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parâmetro | Tipo | Obrigatório | Padrão | Descrição |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| text | string | Sim | - | Texto da marca d'água (1-200 caracteres) |
|
||||
| position | string | Não | `"c"` | Posicionamento na página: `tl`, `tc`, `tr`, `l`, `c`, `r`, `bl`, `bc`, `br` |
|
||||
| fontSize | integer | Não | `48` | Tamanho da fonte em pontos (6-72) |
|
||||
| opacity | number | Não | `0.3` | Opacidade da marca d'água (0.05-1) |
|
||||
| rotation | number | Não | `45` | Ângulo de rotação em graus (-180 a 180) |
|
||||
|
||||
### Position Values {#position-values}
|
||||
|
||||
- `tl` superior-esquerda, `tc` superior-centro, `tr` superior-direita
|
||||
- `l` centro-esquerda, `c` centro, `r` centro-direita
|
||||
- `bl` inferior-esquerda, `bc` inferior-centro, `br` inferior-direita
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
```bash
|
||||
curl -X POST http://localhost:1349/api/v1/tools/pdf/watermark-pdf \
|
||||
-H "Authorization: Bearer si_your-api-key" \
|
||||
-F "file=@document.pdf" \
|
||||
-F 'settings={"text": "CONFIDENTIAL", "position": "c", "opacity": 0.2, "rotation": 45}'
|
||||
```
|
||||
|
||||
## Example Response {#example-response}
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"downloadUrl": "/api/v1/download/a1b2c3d4-e5f6-7890-abcd-ef1234567890/document.pdf",
|
||||
"originalSize": 2450000,
|
||||
"processedSize": 2500000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- A marca d'água é renderizada como uma sobreposição de texto em cada página.
|
||||
- O mesmo texto, posição e estilo de marca d'água são aplicados uniformemente a todas as páginas.
|
||||
- Use valores de opacidade mais baixos (0.1-0.3) para marcas d'água sutis que não obscurecem o conteúdo.
|
||||
Reference in New Issue
Block a user