跳到正文

PDF

生成、合并、拆分、OCR 与加水印 PDF。

概览

基础路径: /v1/pdf
Python 命名空间: infra.pdf
text
# Python
from infrai import infra

# TypeScript
import { InfraiClient } from "@infrai/sdk";
const client = new InfraiClient({ apiKey: process.env.INFRAI_API_KEY! });
// → client.pdf

方法

pdf.generate

POST /v1/pdf/generate

从 HTML、URL 或模板生成 PDF。

Python

python
infra.pdf.generate(html=None, url=None, template_id=None, format="A4", orientation="portrait", idempotency_key=None)

TypeScript

typescript
client.pdf.generate(opts: PdfGenerateOptions): Promise<PdfResult>

参数

名称类型必填说明
htmlstring可选要渲染的 HTML 源。
urlstring可选用于渲染或操作的源 URL。
template_idstring可选用于渲染的模板 id(替代正文)。
format"A4" | "Letter" | "Legal"可选页面尺寸。
orientation"portrait" | "landscape"可选页面方向。
idempotency_keystring可选可选去重 key;相同重试将返回同一结果。

返回

PdfResult { pdf_url, bytes, pages }

示例

一次性前置(每个范例都假定已完成):

bash
pip install infrai
# one-time auth (no secret needed): anonymous account + trial, writes ~/.infrai/credentials
python -c "from infrai import infra; infra.activate()"
# returning user instead: export INFRAI_API_KEY=ifr_pk_proj_...
python
from infrai import infra

# Pass exactly one source: inline html, a remote url, or a template_id.
doc = infra.pdf.generate(
    html="<h1>Invoice #1042</h1><p>Total due: $42.00</p>",
    format="A4",
    orientation="portrait",
)
print("pdf url:", doc.get("url") or doc.get("pdf_url"))

pdf.merge

POST /v1/pdf/merge

将多个 PDF 合并为一个。

Python

python
infra.pdf.merge(urls=[...])

TypeScript

typescript
client.pdf.merge(opts: { urls }): Promise<PdfResult>

参数

名称类型必填说明
urlsstring[]
必填
要合并的 PDF URL 列表。

返回

PdfResult

示例

一次性前置(每个范例都假定已完成):

bash
pip install infrai
# one-time auth (no secret needed): anonymous account + trial, writes ~/.infrai/credentials
python -c "from infrai import infra; infra.activate()"
# returning user instead: export INFRAI_API_KEY=ifr_pk_proj_...
python
from infrai import infra

out = infra.pdf.merge(urls=["https://ex.com/a.pdf", "https://ex.com/b.pdf"])
print("merged url:", out.get("url") or out.get("pdf_url"))

pdf.split

POST /v1/pdf/split

按页码区间拆分 PDF。

Python

python
infra.pdf.split(url=..., ranges=[...])

TypeScript

typescript
client.pdf.split(opts: { url, ranges }): Promise<{ parts }>

参数

名称类型必填说明
urlstring
必填
用于渲染或操作的源 URL。
rangesstring[]
必填
页码区间,例如 1-3。

返回

{ parts: PdfResult[] }

示例

一次性前置(每个范例都假定已完成):

bash
pip install infrai
# one-time auth (no secret needed): anonymous account + trial, writes ~/.infrai/credentials
python -c "from infrai import infra; infra.activate()"
# returning user instead: export INFRAI_API_KEY=ifr_pk_proj_...
python
from infrai import infra

res = infra.pdf.split(url="https://ex.com/doc.pdf", ranges=["1-3", "4-"])
print("parts:", len(res.get("parts", [])))

pdf.ocr

POST /v1/pdf/ocr

通过 OCR 从 PDF 提取文本。

Python

python
infra.pdf.ocr(url=..., language=None)

TypeScript

typescript
client.pdf.ocr(opts: { url, language? }): Promise<{ text, pages }>

参数

名称类型必填说明
urlstring
必填
用于渲染或操作的源 URL。
languagestring可选语言提示,例如 en 或 zh。

返回

{ text, pages: Array<{ text }> }

示例

一次性前置(每个范例都假定已完成):

bash
pip install infrai
# one-time auth (no secret needed): anonymous account + trial, writes ~/.infrai/credentials
python -c "from infrai import infra; infra.activate()"
# returning user instead: export INFRAI_API_KEY=ifr_pk_proj_...
python
from infrai import infra

res = infra.pdf.ocr(url="https://ex.com/scan.pdf", language="en")
print(res.get("text", "")[:200])

pdf.watermark

POST /v1/pdf/watermark

为 PDF 添加文字或图片水印。

Python

python
infra.pdf.watermark(url=..., text=None, image_url=None, opacity=None)

TypeScript

typescript
client.pdf.watermark(opts): Promise<PdfResult>

参数

名称类型必填说明
urlstring
必填
用于渲染或操作的源 URL。
textstring可选水印文字。
opacitynumber可选水印不透明度,0 到 1。

返回

PdfResult

示例

一次性前置(每个范例都假定已完成):

bash
pip install infrai
# one-time auth (no secret needed): anonymous account + trial, writes ~/.infrai/credentials
python -c "from infrai import infra; infra.activate()"
# returning user instead: export INFRAI_API_KEY=ifr_pk_proj_...
python
from infrai import infra

out = infra.pdf.watermark(url="https://ex.com/doc.pdf", text="CONFIDENTIAL", opacity=0.2)
print("watermarked url:", out.get("url") or out.get("pdf_url"))