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: "소책자로 접을 수 있도록 PDF 페이지를 배열합니다."
|
||||
i18n_source_hash: 8844b6d4fe96
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 27ce846398cb
|
||||
---
|
||||
|
||||
# Booklet PDF {#booklet-pdf}
|
||||
|
||||
인쇄된 용지를 접어 소책자로 만들 수 있도록 양면 인쇄용으로 페이지를 배치합니다.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/booklet-pdf`
|
||||
|
||||
PDF 파일과 JSON `settings` 필드를 담은 multipart form data를 받습니다.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| perSheet | integer | No | `2` | 용지당 페이지 수: `2`, `4`, `6`, 또는 `8` |
|
||||
|
||||
## Example Request {#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}'
|
||||
```
|
||||
|
||||
## 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": 2400000
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- 기본값 `perSheet: 2`는 각 용지에 두 페이지를 나란히 배치하며, 이는 양면 인쇄를 위한 표준 소책자 레이아웃입니다.
|
||||
- 총 페이지 수가 용지 크기의 배수가 아니면 빈 페이지가 자동으로 추가됩니다.
|
||||
- 출력을 단변 제본으로 양면 인쇄한 다음 접고 스테이플러로 고정하세요.
|
||||
@@ -0,0 +1,62 @@
|
||||
---
|
||||
description: "내장된 이미지를 압축하여 PDF 파일 크기를 줄입니다."
|
||||
i18n_source_hash: a8bb0baaca25
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 0d4bcd6775bc
|
||||
---
|
||||
|
||||
# Compress PDF {#compress-pdf}
|
||||
|
||||
내장된 이미지를 다운샘플링하여 PDF 파일 크기를 줄입니다. 품질 슬라이더와 목표 파일 크기 중에서 선택할 수 있습니다.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/compress-pdf`
|
||||
|
||||
PDF 파일과 JSON `settings` 필드가 포함된 multipart form data를 받습니다.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| mode | string | No | `"quality"` | 압축 모드: `quality` 또는 `targetSize` |
|
||||
| quality | integer | No | `75` | 압축 품질, 1-100 (높을수록 압축이 적음). `quality` 모드에서 사용됨 |
|
||||
| targetSizeKb | number | No | - | 목표 파일 크기(킬로바이트). `targetSize` 모드에서 사용됨 |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
품질로 압축:
|
||||
|
||||
```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}'
|
||||
```
|
||||
|
||||
목표 크기로 압축:
|
||||
|
||||
```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}
|
||||
|
||||
- `quality` 모드에서는 값이 낮을수록 파일이 작아지지만 이미지 열화가 심해집니다.
|
||||
- `targetSize` 모드에서는 이진 탐색으로 요청한 크기에 맞는 가장 높은 DPI를 찾습니다.
|
||||
- 압축이 오히려 파일을 키우게 되는 경우, 원본 바이트가 변경 없이 반환됩니다.
|
||||
- 텍스트와 벡터 콘텐츠는 영향을 받지 않으며, 내장된 래스터 이미지만 다운샘플링됩니다.
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "균일한 여백으로 PDF의 모든 페이지를 자릅니다."
|
||||
i18n_source_hash: ffa1a2cee08d
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 2360cf702fff
|
||||
---
|
||||
|
||||
# Crop PDF {#crop-pdf}
|
||||
|
||||
균일한 여백을 적용하여 각 가장자리에서 콘텐츠를 동일하게 잘라내는 방식으로 PDF의 모든 페이지를 자릅니다.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/crop-pdf`
|
||||
|
||||
PDF 파일과 JSON `settings` 필드가 포함된 multipart form data를 받습니다.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| margin | number | No | `20` | 균일한 자르기 여백(포인트 단위, 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}
|
||||
|
||||
- 여백 값은 PDF 포인트 단위입니다(1포인트 = 1/72인치).
|
||||
- 동일한 여백이 모든 페이지의 네 가장자리 전부에 적용됩니다.
|
||||
- `0` 여백은 기존의 모든 자르기 여백을 제거하여 전체 media box를 표시합니다.
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
description: "PDF에서 선택한 페이지를 뽑아 새 문서로 만듭니다."
|
||||
i18n_source_hash: e4a8fad31e0f
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: ea4fa2d78331
|
||||
---
|
||||
|
||||
# Extract Pages {#extract-pages}
|
||||
|
||||
PDF에서 선택한 페이지를 뽑아 더 작은 새 문서로 만듭니다.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/extract-pages`
|
||||
|
||||
PDF 파일과 JSON `settings` 필드가 포함된 multipart form data를 받습니다.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| range | string | Yes | - | qpdf 문법의 페이지 범위, 예: `"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}
|
||||
|
||||
- 페이지 범위는 qpdf 문법을 사용합니다: 1페이지부터 5페이지까지는 `1-5`, 마지막 페이지는 `z`, 그리고 쉼표로 범위를 결합합니다(예: `1-3,7,10-z`).
|
||||
- 추출된 페이지는 원본 서식, 주석, 링크를 그대로 유지합니다.
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
description: "양식과 주석을 페이지 콘텐츠에 굽습니다."
|
||||
i18n_source_hash: b25c2a2b6f40
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: f063390c8496
|
||||
---
|
||||
|
||||
# Flatten PDF {#flatten-pdf}
|
||||
|
||||
대화형 양식 필드와 주석을 페이지 콘텐츠에 구워 넣어, 어디서나 동일하게 보이는 정적 PDF를 생성합니다.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/flatten-pdf`
|
||||
|
||||
PDF 파일이 포함된 multipart form data를 받습니다.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
이 도구에는 구성 가능한 매개변수가 없습니다. PDF를 업로드하면 모든 양식과 주석이 평탄화됩니다.
|
||||
|
||||
## 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}
|
||||
|
||||
- 허용되는 입력 형식: `.pdf`.
|
||||
- 이 도구는 결과를 직접 반환하는 빠른(동기) 도구입니다.
|
||||
- 양식 필드 값은 출력에서 정적 텍스트로 보존됩니다.
|
||||
- 주석(댓글, 강조 표시, 스티커 메모)은 페이지 콘텐츠의 일부가 되어 더 이상 편집할 수 없습니다.
|
||||
@@ -0,0 +1,44 @@
|
||||
---
|
||||
description: "PDF의 모든 색상을 회색조로 변환합니다."
|
||||
i18n_source_hash: f327addb32d6
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 725c4af2ac57
|
||||
---
|
||||
|
||||
# Grayscale PDF {#grayscale-pdf}
|
||||
|
||||
PDF의 모든 색상을 회색조로 변환하여 문서의 흑백 버전을 생성합니다.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/grayscale-pdf`
|
||||
|
||||
PDF 파일이 포함된 multipart form data를 받습니다. `settings` 필드는 필요하지 않습니다.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
이 도구에는 설정 매개변수가 없습니다. PDF 파일을 직접 업로드하세요.
|
||||
|
||||
## 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}
|
||||
|
||||
- 모든 색 공간(RGB, CMYK)이 회색조로 변환되며, 여기에는 내장된 이미지, 벡터 그래픽, 텍스트가 포함됩니다.
|
||||
- 회색조 데이터는 픽셀당 더 적은 바이트를 필요로 하므로 출력 파일은 원본보다 작은 경우가 많습니다.
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
description: "빠른 웹 뷰잉(점진적 다운로드)을 위해 PDF를 선형화합니다."
|
||||
i18n_source_hash: 36280b478161
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 75591ae85017
|
||||
---
|
||||
|
||||
# Web-Optimize PDF {#web-optimize-pdf}
|
||||
|
||||
PDF를 선형화하여 전체 파일을 기다리지 않고도 웹 브라우저에서 점진적으로 다운로드하고 표시할 수 있게 합니다.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/linearize-pdf`
|
||||
|
||||
PDF 파일이 포함된 multipart form data를 받습니다. `settings` 필드는 필요하지 않습니다.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
이 도구에는 설정 매개변수가 없습니다. PDF 파일을 직접 업로드하세요.
|
||||
|
||||
## 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}
|
||||
|
||||
- 선형화는 PDF의 내부 구조를 재배치하여 전체 파일이 다운로드되기 전에 첫 페이지가 렌더링될 수 있게 합니다.
|
||||
- 추가된 선형화 데이터로 인해 출력 파일이 입력보다 약간 커질 수 있습니다.
|
||||
- 이미 선형화된 PDF도 문제없이 다시 선형화됩니다.
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
description: "여러 PDF를 하나의 문서로 결합합니다."
|
||||
i18n_source_hash: e82e389cb8b6
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 78944ca5af9e
|
||||
---
|
||||
|
||||
# Merge PDFs {#merge-pdfs}
|
||||
|
||||
두 개 이상의 PDF 파일을 하나의 문서로 결합하며, 각 입력 파일의 페이지 순서를 보존합니다.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/merge-pdf`
|
||||
|
||||
두 개 이상의 PDF 파일이 포함된 multipart form data를 받습니다. `settings` 필드는 필요하지 않습니다.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
이 도구에는 설정 매개변수가 없습니다. 두 개 이상의 PDF 파일을 업로드하기만 하면 됩니다.
|
||||
|
||||
| Constraint | Value |
|
||||
|------------|-------|
|
||||
| 최소 파일 수 | 2 |
|
||||
| 최대 파일 수 | 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}
|
||||
|
||||
- 파일은 업로드된 순서대로 병합됩니다.
|
||||
- 최소 두 개의 PDF 파일이 필요하며, 그보다 적게 제공하면 요청이 400 오류로 실패합니다.
|
||||
- 입력 파일의 최대 개수는 20개입니다.
|
||||
- 암호화된 PDF는 병합하기 전에 잠금을 해제해야 합니다.
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "한 장에 여러 PDF 페이지를 배열합니다(2-up, 4-up 등)."
|
||||
i18n_source_hash: 9dd82737cb72
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: e2bb8d16e545
|
||||
---
|
||||
|
||||
# N-up PDF {#n-up-pdf}
|
||||
|
||||
2-up 또는 4-up 레이아웃처럼 한 장에 여러 페이지를 배열하여 인쇄 시 종이를 절약합니다.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/nup-pdf`
|
||||
|
||||
PDF 파일과 JSON `settings` 필드가 포함된 multipart form data를 받습니다.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| perSheet | integer | No | `2` | 장당 페이지 수: `2`, `3`, `4`, `8`, `9`, `12` 또는 `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}
|
||||
|
||||
- 페이지는 읽기 순서(왼쪽에서 오른쪽, 위에서 아래)로 배열됩니다.
|
||||
- 출력 페이지 크기는 원본과 동일하며, 개별 페이지가 그리드에 맞게 축소됩니다.
|
||||
- `perSheet: 4`로 설정한 20페이지 문서는 5페이지 출력을 생성합니다.
|
||||
@@ -0,0 +1,53 @@
|
||||
---
|
||||
description: "AI 기반 OCR을 사용하여 PDF 문서에서 텍스트를 추출합니다."
|
||||
i18n_source_hash: 1431fcba180b
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 2ada53399131
|
||||
---
|
||||
|
||||
# PDF OCR {#pdf-ocr}
|
||||
|
||||
AI 기반 광학 문자 인식을 사용하여 PDF 문서에서 텍스트를 추출합니다. 여러 품질 등급과 언어를 지원합니다. OCR 기능 번들이 설치되어 있어야 합니다.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/ocr-pdf`
|
||||
|
||||
PDF 파일과 선택적 JSON `settings` 필드가 포함된 multipart form data를 받습니다.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| quality | string | No | `"balanced"` | OCR 품질 등급: `fast`, `balanced`, `best` |
|
||||
| language | string | No | `"auto"` | 문서 언어: `auto`, `en`, `de`, `fr`, `es`, `zh`, `ja`, `ko` |
|
||||
| pages | string | No | `"all"` | 페이지 선택, 예: `"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}
|
||||
|
||||
`202 Accepted`을(를) 반환합니다. `/api/v1/jobs/{jobId}/progress`의 SSE로 진행 상황을 추적하세요.
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- 허용되는 입력 형식: `.pdf`.
|
||||
- 이 도구는 **OCR 기능 번들**이 설치되어 있어야 하는 AI 도구입니다. 번들이 설치되어 있지 않으면 API가 `501 Not Implemented`을(를) 반환합니다.
|
||||
- `fast` 품질 등급은 더 가벼운 모델을 사용하여 빠르게 처리하고, `best`은(는) 속도를 희생하는 대신 더 정확한 모델을 사용합니다.
|
||||
- `auto` 언어 설정은 문서 언어를 자동으로 감지하려고 시도합니다.
|
||||
- 범위(`"1-3"`), 쉼표로 구분된 목록(`"1,3,5"`), 또는 모든 페이지를 뜻하는 `"all"`을(를) 사용하여 특정 페이지를 지정할 수 있습니다.
|
||||
- 이미 선택 가능한 텍스트가 포함된 PDF의 경우, 더 빠른 [PDF to Text](./pdf-to-text) 도구를 대신 사용하는 것을 고려하세요.
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "명시적인 페이지 순서로 PDF의 페이지를 재정렬합니다."
|
||||
i18n_source_hash: e961fc895b4b
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 0452f122f360
|
||||
---
|
||||
|
||||
# Organize PDF {#organize-pdf}
|
||||
|
||||
원하는 페이지 순서를 지정하여 PDF의 페이지를 재정렬합니다.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/organize-pdf`
|
||||
|
||||
PDF 파일과 JSON `settings` 필드가 포함된 multipart form data를 받습니다.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| order | string | Yes | - | qpdf 문법의 원하는 페이지 순서, 예: `"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}
|
||||
|
||||
- 페이지 범위는 qpdf 문법을 사용합니다: `3,1,2`은(는) 처음 세 페이지를 재정렬하고, `5-z`은(는) 5페이지부터 마지막 페이지까지를 추가합니다.
|
||||
- 페이지를 두 번 이상 나열하여 복제할 수 있습니다(예: `"1,1,2,3"`은(는) 1페이지를 복제합니다).
|
||||
- 순서 문자열에 나열되지 않은 페이지는 출력에서 생략됩니다.
|
||||
@@ -0,0 +1,61 @@
|
||||
---
|
||||
description: "PDF 문서 메타데이터를 읽고 씁니다."
|
||||
i18n_source_hash: b2eaebf7467f
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 44b1ee802252
|
||||
---
|
||||
|
||||
# PDF Metadata {#pdf-metadata}
|
||||
|
||||
제목, 작성자, 주제, 키워드 같은 PDF 문서 메타데이터 필드를 읽고 업데이트합니다. 설정을 제공하지 않으면 기존 메타데이터가 수정 없이 반환됩니다.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/pdf-metadata`
|
||||
|
||||
PDF 파일과 선택적 JSON `settings` 필드가 포함된 multipart form data를 받습니다.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| title | string | No | - | 문서 제목 (최대 500자) |
|
||||
| author | string | No | - | 문서 작성자 (최대 500자) |
|
||||
| subject | string | No | - | 문서 주제 (최대 500자) |
|
||||
| keywords | string | No | - | 문서 키워드 (최대 500자) |
|
||||
|
||||
모든 매개변수는 선택 사항입니다. 생략된 필드는 변경되지 않습니다.
|
||||
|
||||
## 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}
|
||||
|
||||
- 허용되는 입력 형식: `.pdf`.
|
||||
- 이 도구는 결과를 직접 반환하는 빠른(동기) 도구입니다.
|
||||
- 응답의 `metadata` 필드에는 업데이트 후 결과 메타데이터가 담겨 있습니다.
|
||||
- 메타데이터를 수정하지 않고 읽으려면 `settings` 필드를 생략하거나 빈 객체를 보내세요.
|
||||
- 각 메타데이터 필드는 500자로 제한됩니다.
|
||||
@@ -0,0 +1,54 @@
|
||||
---
|
||||
description: "PDF의 모든 페이지에 페이지 번호를 추가합니다."
|
||||
i18n_source_hash: 58342d6ac8d2
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: c049ab379e54
|
||||
---
|
||||
|
||||
# PDF Page Numbers {#pdf-page-numbers}
|
||||
|
||||
PDF의 모든 페이지에 "Page N of M" 페이지 번호를 추가합니다.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/pdf-page-numbers`
|
||||
|
||||
PDF 파일과 JSON `settings` 필드가 포함된 multipart form data를 받습니다.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| position | string | No | `"bc"` | 페이지 번호 위치: `bl`, `bc`, `br`, `tl`, `tc`, `tr` |
|
||||
| fontSize | integer | No | `10` | 글꼴 크기(포인트, 6-24) |
|
||||
|
||||
### Position Values {#position-values}
|
||||
|
||||
- `tl` 왼쪽 위, `tc` 가운데 위, `tr` 오른쪽 위
|
||||
- `bl` 왼쪽 아래, `bc` 가운데 아래, `br` 오른쪽 아래
|
||||
|
||||
## 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}
|
||||
|
||||
- 페이지 번호는 "Page 1 of 10" 형식으로 렌더링됩니다.
|
||||
- 기존의 제목 페이지나 표지 페이지를 포함해 모든 페이지에 번호가 추가됩니다.
|
||||
- 기본 위치 `"bc"`은(는) 각 페이지의 가운데 아래에 번호를 배치합니다.
|
||||
@@ -0,0 +1,133 @@
|
||||
---
|
||||
description: "PDF 페이지를 고품질 이미지로 변환합니다."
|
||||
i18n_source_hash: 1c36be5dadb8
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 14ab51070e40
|
||||
---
|
||||
|
||||
# PDF to Image {#pdf-to-image}
|
||||
|
||||
PDF 페이지를 고품질 래스터 이미지로 변환합니다. 페이지 선택, 다양한 출력 형식, DPI 제어, 색상 모드를 지원합니다. 변환 전에 PDF를 검사할 수 있는 info 및 preview 하위 경로를 포함합니다.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/pdf-to-image`
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| format | string | No | `"png"` | 출력 형식: `png`, `jpg`, `webp`, `avif`, `tiff`, `gif`, `heic`, `heif`, `jxl` |
|
||||
| dpi | number | No | 150 | 렌더링 해상도(36에서 2400). DPI가 높을수록 더 크고 세밀한 이미지를 생성합니다. |
|
||||
| quality | number | No | 85 | 손실 형식의 출력 품질(1에서 100) |
|
||||
| colorMode | string | No | `"color"` | 색상 모드: `color`, `grayscale`, `bw` (흑백 임계값) |
|
||||
| pages | string | No | `"all"` | 페이지 선택: `all`, 단일 페이지(`3`), 범위(`1-5`), 또는 쉼표로 구분(`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`
|
||||
|
||||
페이지를 렌더링하지 않고 PDF의 페이지 수를 반환합니다.
|
||||
|
||||
### 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`
|
||||
|
||||
모든 페이지의 저해상도 JPEG 썸네일을 base64 data URL로 반환합니다. 페이지 선택 UI를 구축하는 데 유용합니다.
|
||||
|
||||
### 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}
|
||||
|
||||
- MuPDF를 사용하여 PDF를 렌더링하므로 올바른 글꼴 렌더링과 벡터 그래픽을 갖춘 고충실도 출력을 제공합니다.
|
||||
- 비밀번호로 보호된 PDF는 지원되지 않으며 400 오류를 반환합니다.
|
||||
- `pages` 매개변수는 유연한 문법을 지원합니다:
|
||||
- `"all"` 또는 `""` - 모든 페이지
|
||||
- `"3"` - 단일 페이지
|
||||
- `"1-5"` - 페이지 범위(양 끝 포함)
|
||||
- `"1,3,5-8"` - 개별 페이지와 범위 혼합
|
||||
- 페이지 번호는 1부터 시작합니다. 문서 길이를 초과하는 페이지를 지정하면 400 오류를 반환합니다.
|
||||
- 메인 엔드포인트는 항상 개별 페이지 다운로드와 선택된 모든 페이지가 담긴 ZIP을 모두 생성합니다.
|
||||
- preview 엔드포인트는 72 DPI로 렌더링하고 빠른 썸네일 생성을 위해 너비 300px로 크기를 조정합니다. 썸네일은 60% 품질의 JPEG입니다.
|
||||
- preview 엔드포인트는 `MAX_PDF_PAGES` 서버 구성을 준수하여 생성되는 썸네일 수를 제한합니다.
|
||||
- 높은 DPI의 대용량 문서의 경우 처리 시간이 비례하여 증가합니다. 웹용으로는 낮은 DPI(150)를, 인쇄용으로는 높은 DPI(300-600)를 사용하는 것을 고려하세요.
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
description: "PDF에서 일반 텍스트를 추출합니다."
|
||||
i18n_source_hash: 15a7bc1cdf8f
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: dc89125fead0
|
||||
---
|
||||
|
||||
# PDF to Text {#pdf-to-text}
|
||||
|
||||
PDF 문서에서 읽을 수 있는 모든 일반 텍스트를 추출하여 텍스트 파일로 만듭니다.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/pdf-to-text`
|
||||
|
||||
PDF 파일이 포함된 multipart form data를 받습니다.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
이 도구에는 구성 가능한 매개변수가 없습니다. PDF를 업로드하면 텍스트 콘텐츠가 추출됩니다.
|
||||
|
||||
## 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}
|
||||
|
||||
- 허용되는 입력 형식: `.pdf`.
|
||||
- 이 도구는 결과를 직접 반환하는 빠른(동기) 도구입니다.
|
||||
- 응답의 `chars` 필드는 추출된 문자 수를 나타냅니다.
|
||||
- 디지털로 내장된 텍스트만 추출됩니다. 스캔된 문서나 이미지 기반 PDF의 경우 [PDF OCR](./ocr-pdf) 도구를 대신 사용하세요.
|
||||
@@ -0,0 +1,46 @@
|
||||
---
|
||||
description: "PDF를 Word 문서(DOCX)로 변환합니다."
|
||||
i18n_source_hash: be41b6b49f84
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: ed86e083c9e3
|
||||
---
|
||||
|
||||
# PDF to Word {#pdf-to-word}
|
||||
|
||||
텍스트 기반 PDF를 Word 문서(DOCX)로 변환합니다. 선택 가능한 텍스트가 있는 PDF에 가장 적합하며, 스캔된 페이지는 먼저 OCR이 필요합니다.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/pdf-to-word`
|
||||
|
||||
PDF 파일이 포함된 multipart form data를 받습니다.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
이 도구에는 구성 가능한 매개변수가 없습니다. PDF를 업로드하면 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}
|
||||
|
||||
`202 Accepted`을(를) 반환합니다. `/api/v1/jobs/{jobId}/progress`의 SSE로 진행 상황을 추적하세요.
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- 허용되는 입력 형식: `.pdf`.
|
||||
- 텍스트 기반 PDF에서 가장 잘 작동합니다. 스캔되었거나 이미지만 있는 페이지는 빈 출력이나 최소한의 출력을 생성하므로, 먼저 [PDF OCR](./ocr-pdf)로 텍스트 레이어를 추가하세요.
|
||||
- 변환은 서버에서 헤드리스로 실행되는 LibreOffice가 처리합니다.
|
||||
- 복잡한 레이아웃(다중 열, 겹치는 요소)은 완벽하게 변환되지 않을 수 있습니다.
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
description: "장기 보존을 위해 PDF를 아카이브용 PDF/A-2 형식으로 변환합니다."
|
||||
i18n_source_hash: 4c6bf7a12e84
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 09cd8068f7f5
|
||||
---
|
||||
|
||||
# PDF/A Convert {#pdf-a-convert}
|
||||
|
||||
PDF를 PDF/A-2 아카이브 형식으로 변환하며, 이는 장기 보존과 규정 준수에 적합합니다.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/pdfa-convert`
|
||||
|
||||
PDF 파일이 포함된 multipart form data를 받습니다. `settings` 필드는 필요하지 않습니다.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
이 도구에는 설정 매개변수가 없습니다. PDF 파일을 직접 업로드하세요.
|
||||
|
||||
## 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}
|
||||
|
||||
- 출력은 PDF/A-2 표준을 준수합니다.
|
||||
- PDF/A는 모든 글꼴을 내장하고 외부 참조를 금지하므로, 출력 파일이 원본보다 클 수 있습니다.
|
||||
- 암호화와 JavaScript는 PDF/A 표준에서 허용되지 않으므로 변환 과정에서 제거됩니다.
|
||||
@@ -0,0 +1,50 @@
|
||||
---
|
||||
description: "AES-256 암호화로 PDF에 비밀번호 보호를 추가합니다."
|
||||
i18n_source_hash: 869cfbc739ef
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 8cc839d9b3ee
|
||||
---
|
||||
|
||||
# Protect PDF {#protect-pdf}
|
||||
|
||||
AES-256 암호화를 사용하여 PDF에 비밀번호 보호를 추가합니다.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/protect-pdf`
|
||||
|
||||
PDF 파일과 JSON `settings` 필드가 포함된 multipart form data를 받습니다.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| userPassword | string | Yes | - | PDF를 열 때 필요한 비밀번호 (1-256자) |
|
||||
| ownerPassword | string | No | `userPassword`과(와) 동일 | 권한을 위한 소유자 비밀번호 (1-256자) |
|
||||
|
||||
## 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}
|
||||
|
||||
- 암호화는 AES-256을 사용합니다.
|
||||
- `ownerPassword`을(를) 생략하면 `userPassword`과(와) 동일한 값으로 기본 설정됩니다.
|
||||
- 비밀번호는 감사 로그에서 마스킹됩니다.
|
||||
- 암호화된 PDF를 열려면 사용자 비밀번호가 필요하며, 전체 권한을 위해서는 소유자 비밀번호(다를 경우)가 필요합니다.
|
||||
@@ -0,0 +1,52 @@
|
||||
---
|
||||
description: "PDF에서 텍스트 항목을 영구적으로 제거합니다(검증된 실제 마스킹)."
|
||||
i18n_source_hash: 296ad2a701b2
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 7119219b9b55
|
||||
---
|
||||
|
||||
# Redact PDF {#redact-pdf}
|
||||
|
||||
검증된 실제 마스킹을 사용하여 지정된 텍스트 항목을 PDF에서 영구적으로 제거합니다. 마스킹된 텍스트는 검은 상자로 덮이는 것이 아니라 파일에서 완전히 제거됩니다.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/redact-pdf`
|
||||
|
||||
PDF 파일과 JSON `settings` 필드가 포함된 multipart form data를 받습니다.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| terms | string[] | Yes | - | 마스킹할 텍스트 문자열 (1-50개 항목, 각각 최대 200자) |
|
||||
| caseSensitive | boolean | No | `false` | 대소문자를 구분하여 일치시킬지 여부 |
|
||||
|
||||
## 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}
|
||||
|
||||
- 허용되는 입력 형식: `.pdf`.
|
||||
- 이 도구는 결과를 직접 반환하는 빠른(동기) 도구입니다.
|
||||
- 이 도구는 실제 마스킹을 수행합니다: 일치하는 텍스트는 시각적으로 가려지는 것이 아니라 PDF 콘텐츠 스트림에서 제거됩니다.
|
||||
- 응답의 `found` 필드는 몇 개의 항목이 마스킹되었는지 나타냅니다.
|
||||
- 단일 요청에서 최대 50개의 항목을 마스킹할 수 있습니다.
|
||||
@@ -0,0 +1,47 @@
|
||||
---
|
||||
description: "PDF에서 특정 페이지를 삭제합니다."
|
||||
i18n_source_hash: 003e460a047c
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 8b5ab6daa1a0
|
||||
---
|
||||
|
||||
# Remove Pages {#remove-pages}
|
||||
|
||||
PDF에서 특정 페이지를 삭제하고 나머지 모든 페이지는 그대로 유지합니다.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/remove-pages`
|
||||
|
||||
PDF 파일과 JSON `settings` 필드가 포함된 multipart form data를 받습니다.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| pages | string | Yes | - | qpdf 문법으로 제거할 페이지 범위, 예: `"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}
|
||||
|
||||
- 문서의 모든 페이지를 제거할 수는 없습니다. 최소 한 페이지는 남아 있어야 합니다.
|
||||
- 페이지 범위는 qpdf 문법을 사용합니다: 단일 페이지는 `3`, 범위는 `5-7`, 그리고 쉼표로 결합합니다(예: `1,3,5-7`).
|
||||
@@ -0,0 +1,45 @@
|
||||
---
|
||||
description: "손상되거나 깨진 PDF의 복구를 시도합니다."
|
||||
i18n_source_hash: 864073a2f09f
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 2217c6d5bf5a
|
||||
---
|
||||
|
||||
# Repair PDF {#repair-pdf}
|
||||
|
||||
내부 구조를 재구성하여 손상되거나 깨진 PDF의 복구를 시도합니다.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/repair-pdf`
|
||||
|
||||
PDF 파일이 포함된 multipart form data를 받습니다. `settings` 필드는 필요하지 않습니다.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
이 도구에는 설정 매개변수가 없습니다. 손상된 PDF 파일을 직접 업로드하세요.
|
||||
|
||||
## 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}
|
||||
|
||||
- 잘못된 형식의 파일을 통과시키기 위해 입력 시 구조 검증을 건너뜁니다.
|
||||
- 복구는 최선 노력 방식입니다. 심하게 손상된 파일은 완전히 복구되지 않을 수 있습니다.
|
||||
- 재구성된 상호 참조 테이블로 인해 복구된 PDF의 크기가 원본과 약간 다를 수 있습니다.
|
||||
@@ -0,0 +1,49 @@
|
||||
---
|
||||
description: "PDF의 페이지를 90, 180, 또는 270도 회전합니다."
|
||||
i18n_source_hash: cc2acd091427
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 965c1f42a400
|
||||
---
|
||||
|
||||
# Rotate PDF {#rotate-pdf}
|
||||
|
||||
지정한 각도로 PDF의 전체 또는 선택한 페이지를 회전합니다.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/rotate-pdf`
|
||||
|
||||
PDF 파일과 JSON `settings` 필드가 포함된 multipart form data를 받습니다.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| angle | integer | No | `90` | 회전 각도: `90`, `180`, 또는 `270` |
|
||||
| range | string | No | `"1-z"` | qpdf 문법의 페이지 범위, 예: `"1-5,8"` (`"1-z"` = 모든 페이지) |
|
||||
|
||||
## 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}
|
||||
|
||||
- 회전은 시계 방향입니다.
|
||||
- 페이지 범위는 qpdf 문법을 사용합니다: 1페이지부터 5페이지까지는 `1-5`, 마지막 페이지는 `z`, 그리고 쉼표로 범위를 결합합니다.
|
||||
- 기본 범위 `"1-z"`은(는) 모든 페이지를 회전합니다.
|
||||
@@ -0,0 +1,79 @@
|
||||
---
|
||||
description: "정규화된 페이지 배치를 사용하여 업로드한 서명 이미지를 PDF에 스탬프합니다."
|
||||
i18n_source_hash: c28f78c2e7fd
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 100625cb01dc
|
||||
---
|
||||
|
||||
# Sign PDF {#sign-pdf}
|
||||
|
||||
업로드한 하나 이상의 서명 PNG 이미지를 PDF의 아무 페이지에나 스탬프합니다. 이 경로는 PDF, 하나 이상의 서명 이미지, 그리고 배치 좌표가 필요하기 때문에 사용자 지정 multipart 계약을 사용합니다.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/sign-pdf`
|
||||
|
||||
multipart form data를 받습니다. PDF는 `file`로 전송되고, 서명은 `sig0`, `sig1` 등으로 전송되며, 배치는 `placements` JSON 필드로 전송됩니다.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| file | file | Yes | - | 서명할 PDF 파일 |
|
||||
| sig0 | file | Yes | - | 첫 번째 서명 이미지. 추가 이미지는 `sig1`, `sig2` 등을 사용합니다 |
|
||||
| placements | JSON string | Yes | - | 배치 객체 배열: `{ "sig": 0, "page": 0, "x": 0.2, "y": 0.7, "w": 0.25, "h": 0.08 }` |
|
||||
| clientJobId | string | No | - | SSE를 통한 진행 상황 추적을 위한 선택적 UUID |
|
||||
| fileId | string | No | - | 서명된 결과를 새 버전으로 저장하기 위한 선택적 파일 라이브러리 ID |
|
||||
|
||||
## Placement Coordinates {#placement-coordinates}
|
||||
|
||||
| Field | Type | Description |
|
||||
|-------|------|-------------|
|
||||
| sig | integer | 서명 이미지 인덱스. `0`은(는) `sig0`에 매핑됩니다 |
|
||||
| page | integer | 0부터 시작하는 PDF 페이지 인덱스 |
|
||||
| x | number | 페이지 비율로 표현한 왼쪽 위치 |
|
||||
| y | number | 페이지 비율로 표현한 위쪽 위치 |
|
||||
| w | number | 페이지 비율로 표현한 서명 너비 |
|
||||
| h | number | 페이지 비율로 표현한 서명 높이 |
|
||||
|
||||
좌표는 왼쪽 위 원점을 사용합니다. 값이 페이지 가장자리를 약간 벗어날 수 있으며, PDF 렌더러가 최종 스탬프를 페이지에 맞게 잘라냅니다.
|
||||
|
||||
## 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
|
||||
}
|
||||
```
|
||||
|
||||
요청이 동기 대기 창 내에 완료되지 못하면 API는 다음을 반환합니다:
|
||||
|
||||
```json
|
||||
{
|
||||
"jobId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
|
||||
"async": true
|
||||
}
|
||||
```
|
||||
|
||||
`/api/v1/jobs/<jobId>/progress`에 연결하여 작업이 완료되면 결과를 다운로드하세요.
|
||||
|
||||
## Notes {#notes}
|
||||
|
||||
- 허용되는 PDF 입력 형식: `.pdf`.
|
||||
- 서명 이미지는 유효한 이미지 파일이어야 하며, 일반적으로 투명도가 있는 PNG입니다.
|
||||
- 최대 100개의 서명 이미지와 100개의 배치가 허용됩니다.
|
||||
- `sign-pdf`은(는) 사용자 지정 경로이며 표준 도구 `settings` JSON 필드를 사용하지 않습니다.
|
||||
@@ -0,0 +1,61 @@
|
||||
---
|
||||
description: "페이지를 추출하거나 PDF를 여러 부분으로 분할합니다."
|
||||
i18n_source_hash: 5c8d8041d219
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 73639f25fa10
|
||||
---
|
||||
|
||||
# Split PDF {#split-pdf}
|
||||
|
||||
페이지 범위를 새 PDF로 추출하거나, 문서를 N페이지 단위로 분할합니다.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/split-pdf`
|
||||
|
||||
PDF 파일과 JSON `settings` 필드가 포함된 multipart form data를 받습니다.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| mode | string | No | `"range"` | 분할 모드: `range` 또는 `every` |
|
||||
| range | string | mode가 `range`일 때 | - | qpdf 문법의 페이지 범위, 예: `"1-5,8,10-z"` |
|
||||
| everyN | integer | mode가 `every`일 때 | - | N페이지 단위로 분할(1-500) |
|
||||
|
||||
## Example Request {#example-request}
|
||||
|
||||
특정 페이지 추출:
|
||||
|
||||
```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"}'
|
||||
```
|
||||
|
||||
10페이지 단위로 분할:
|
||||
|
||||
```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}
|
||||
|
||||
- `range` 모드에서는 선택한 페이지가 담긴 단일 PDF가 반환됩니다.
|
||||
- `every` 모드에서는 개별 부분들이 담긴 ZIP 아카이브가 결과로 반환됩니다.
|
||||
- 페이지 범위는 qpdf 문법을 사용합니다: 1페이지부터 5페이지까지는 `1-5`, 마지막 페이지는 `z`, 그리고 쉼표로 범위를 결합합니다(예: `1-3,7,10-z`).
|
||||
@@ -0,0 +1,48 @@
|
||||
---
|
||||
description: "PDF에서 비밀번호 보호를 제거합니다."
|
||||
i18n_source_hash: 14f5165d185c
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 715a972e920b
|
||||
---
|
||||
|
||||
# Unlock PDF {#unlock-pdf}
|
||||
|
||||
올바른 비밀번호를 제공하여 암호화된 PDF에서 비밀번호 보호를 제거합니다.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/unlock-pdf`
|
||||
|
||||
PDF 파일과 JSON `settings` 필드가 포함된 multipart form data를 받습니다.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| password | string | Yes | - | PDF를 복호화할 비밀번호 (1-256자) |
|
||||
|
||||
## 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}
|
||||
|
||||
- 올바른 비밀번호를 제공해야 하며, 잘못된 비밀번호는 400 오류를 반환합니다.
|
||||
- 사용자 비밀번호 또는 소유자 비밀번호 중 어느 것이든 복호화에 사용할 수 있습니다.
|
||||
- 비밀번호는 감사 로그에서 마스킹됩니다.
|
||||
@@ -0,0 +1,58 @@
|
||||
---
|
||||
description: "PDF의 모든 페이지에 텍스트 워터마크를 추가합니다."
|
||||
i18n_source_hash: f1f7d8912fbd
|
||||
i18n_provenance: human
|
||||
i18n_output_hash: 893a002081ec
|
||||
---
|
||||
|
||||
# Watermark PDF {#watermark-pdf}
|
||||
|
||||
위치, 크기, 불투명도, 회전을 구성할 수 있는 텍스트 워터마크를 PDF의 모든 페이지에 스탬프합니다.
|
||||
|
||||
## API Endpoint {#api-endpoint}
|
||||
|
||||
`POST /api/v1/tools/pdf/watermark-pdf`
|
||||
|
||||
PDF 파일과 JSON `settings` 필드가 포함된 multipart form data를 받습니다.
|
||||
|
||||
## Parameters {#parameters}
|
||||
|
||||
| Parameter | Type | Required | Default | Description |
|
||||
|-----------|------|----------|---------|-------------|
|
||||
| text | string | Yes | - | 워터마크 텍스트 (1-200자) |
|
||||
| position | string | No | `"c"` | 페이지 내 위치: `tl`, `tc`, `tr`, `l`, `c`, `r`, `bl`, `bc`, `br` |
|
||||
| fontSize | integer | No | `48` | 글꼴 크기(포인트, 6-72) |
|
||||
| opacity | number | No | `0.3` | 워터마크 불투명도(0.05-1) |
|
||||
| rotation | number | No | `45` | 회전 각도(도 단위, -180에서 180) |
|
||||
|
||||
### Position Values {#position-values}
|
||||
|
||||
- `tl` 왼쪽 위, `tc` 가운데 위, `tr` 오른쪽 위
|
||||
- `l` 왼쪽 가운데, `c` 가운데, `r` 오른쪽 가운데
|
||||
- `bl` 왼쪽 아래, `bc` 가운데 아래, `br` 오른쪽 아래
|
||||
|
||||
## 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}
|
||||
|
||||
- 워터마크는 각 페이지에 텍스트 오버레이로 렌더링됩니다.
|
||||
- 동일한 워터마크 텍스트, 위치, 스타일이 모든 페이지에 균일하게 적용됩니다.
|
||||
- 콘텐츠를 가리지 않는 은은한 워터마크를 원하면 낮은 불투명도 값(0.1-0.3)을 사용하세요.
|
||||
Reference in New Issue
Block a user