Skip to content

xPdf API 完整接口文档

版本: v3
端点: POST /api/v3/label
Content-Type: application/json
认证: Authorization: Bearer <token>


📋 概述

xPdf API 接受一个 JSON 数组,每个元素是一个 LabelRequest 对象,返回生成的 PDF 文件(二进制流)。

json
[
  { "pdf_params": {...}, "items": [...] },
  { "pdf_params": {...}, "items": [...] }
]

🏗️ 数据结构总览

LabelRequest
├── tracking_number
├── pdf_params (PdfParams)
│   ├── 页面设置: width, height
│   ├── 文件设置: save_file, output_dir, file_name, global_font
│   ├── 元数据: metadata_*
│   └── 合规配置: pdf_profile
└── items (Item[])
    ├── 一维条码: 1d_params (OneDParams[])
    ├── 二维码: 2d_params (TwoDParams[])
    ├── 文本: text_elements (TextElement[])
    ├── 线条: lines (Line[])
    ├── 图片: images (ImageElement[])
    └── 矩形: rectangles (Rectangle[])

📦 LabelRequest(根对象)

字段名JSON 类型Rust 类型必填说明
tracking_numberstringOption<String>请求追踪编号,用于日志和调试
pdf_paramsobjectOption<PdfParams>PDF 文档全局配置
itemsarrayOption<Vec<Item>>⚠️页面内容元素列表(实际使用时必填)

📄 PdfParams(PDF 配置)

页面尺寸

字段名JSON 类型Rust 类型单位默认值说明
widthnumberOption<f32>mm100页面宽度(毫米)
heightnumberOption<f32>mm150页面高度(毫米)

文件输出控制

字段名JSON 类型Rust 类型说明
save_filebooleanOption<bool>是否在服务器端保存 PDF 文件
output_dirstringOption<String>服务端保存路径
file_namestringOption<String>保存的文件名
global_fontstringOption<String>全局默认字体名称
rust_logstringOption<String>日志级别:debug, info, warn, error

PDF 元数据 (Metadata)

字段名JSON 类型Rust 类型说明
metadata_titlestringOption<String>文档标题 ⚠️ UA-1 必填
metadata_authorsstringOption<String>作者姓名
metadata_subjectstringOption<String>主题/关键词
metadata_creatorstringOption<String>创建软件名称
metadata_producerstringOption<String>生成器名称
metadata_creation_datestringOption<String>创建日期 (ISO 8601)
metadata_modification_datestringOption<String>修改日期 (ISO 8601)
metadata_languagestringOption<String>ISO 639-1 语言代码,如 "zh", "en"

💡 智能语言检测: 如未提供 metadata_language,系统会自动检测内容语言(支持 CJK/阿拉伯语/希伯来语等),若无法识别则默认为 "und"

PDF/A 合规配置

字段名JSON 类型Rust 类型说明
pdf_profilestringOption<String>PDF/A 合规等级

支持的 Profile 值:

标准说明
"" (空字符串)标准 PDF无合规要求,体积最小
"pdfa-1b"PDF/A-1b基础归档标准
"pdfa-2b"PDF/A-2b支持透明度
"pdfa-3b"PDF/A-3b可嵌入附件
"pdfa-4"PDF/A-4最新标准
"pdfa-1a"PDF/A-1a高级归档 + 无障碍
"pdfa-2a"PDF/A-2a高级归档 + 无障碍
"pdfa-3a"PDF/A-3a高级归档 + 无障碍
"pdfa-ua1"PDF/UA-1通用无障碍标准

⚠️ E002 错误: 填写不支持的值(如 "pdfa-4u")会触发错误层叠加。


📦 Item(内容容器)

每个 Item 代表一组绑定在一起的图形元素。

字段名JSON 键名Rust 类型说明
tracking_numbertracking_numberOption<String>元素级追踪编号
two_d_params2d_paramsOption<Vec<TwoDParams>>二维码数组
one_d_params1d_paramsOption<Vec<OneDParams>>一维条码数组
text_elementstext_elementsOption<Vec<TextElement>>文本元素数组
lineslinesOption<Vec<Line>>线条数组
imagesimagesOption<Vec<ImageElement>>图片数组
rectanglesrectanglesOption<Vec<Rectangle>>矩形数组

📊 OneDParams(一维条码)

字段名JSON 键名Rust 类型单位说明
one_d_content1d_contentOption<String>-编码内容
formatformatOption<String>-码制类型
positionpositionOption<Position>-位置对象 {x, y}
sizesizeOption<BarcodeSize>-尺寸对象
orientationorientationOption<i32>旋转角度 (0/90/180/270)
colorcolorOption<String>-条码颜色 Hex,如 "#000000"
background_colorbackground_colorOption<String>-背景颜色 Hex
human_readable_texthuman_readable_textOption<HumanReadableText>-人眼可读文本配置
linelineOption<f32>mm条线宽度
quiet_zonequiet_zoneOption<u32>模块静区大小
gs1_formatgs1_formatOption<bool>-是否使用 GS1 格式
bearer_bar_shapebearer_bar_shapeOption<String>-承载条形状
bearer_bar_thicknessbearer_bar_thicknessOption<f32>mm承载条厚度

支持的码制 (format): Code128, Code39, Code93, EAN13, EAN8, UPCA, UPCE, ITF, Codabar


📱 TwoDParams(二维码)

字段名JSON 键名Rust 类型单位说明
two_d_content2d_contentOption<String>-编码内容
contentcontentOption<String>-编码内容(2d_content 别名)
formatformatOption<String>-码制类型
module_sizemodule_sizeOption<f32>mm单模块尺寸
xxOption<f32>mmX 坐标
yyOption<f32>mmY 坐标
colorcolorOption<String>-前景色 Hex
background_colorbackground_colorOption<String>-背景色 Hex
quiet_zonequiet_zoneOption<u32>模块静区大小
orientationorientationOption<i32>旋转角度
shapeshapeOption<String>-模块形状

支持的码制 (format): QRCode, DataMatrix, PDF417, Aztec, MaxiCode


📍 Position(位置)

字段名JSON 类型Rust 类型单位必填说明
xnumberf32mmX 坐标(左上角原点)
ynumberf32mmY 坐标(左上角原点)

📏 BarcodeSize(条码尺寸)

字段名JSON 类型Rust 类型单位必填说明
heightnumberf32mm条码高度
module_widthnumberOption<f32>mm单模块宽度(优先级高)
widthnumberOption<f32>mm整体宽度

🔤 HumanReadableText(条码附属文本)

字段名JSON 类型Rust 类型说明
enabledbooleanOption<bool>是否显示
contentstringOption<String>显示内容(覆盖条码数据)
font_sizenumberOption<f32>字号 (pt)
font_namestringOption<String>字体名称
colorstringOption<String>文字颜色 Hex
boldbooleanOption<bool>是否粗体
alignstringOption<String>对齐方式:Left, Center, Right
offset_ynumberOption<f32>Y 轴偏移量 (mm)
sidenumberOption<i32>显示位置:0=下方, 1=上方

🔤 TextElement(独立文本)

字段名JSON 类型Rust 类型单位说明
xnumberOption<f32>mmX 坐标
ynumberOption<f32>mmY 坐标
contentstringOption<String>-文本内容
labelstringOption<String>-标签标识
font_sizenumberOption<f32>pt字号
font_namestringOption<String>-字体名称
colorstringOption<String>-颜色 Hex
boldbooleanOption<bool>-粗体
line_spacingnumberOption<f32>pt行间距
widthnumberOption<f32>mm文本框宽度
heightnumberOption<f32>mm文本框高度
overflowstringOption<String>-溢出处理:clip, ellipsis
v_alignstringOption<String>-垂直对齐:Top, Middle, Bottom
directionnumberOption<i32>-文字方向 (0=水平)

➖ Line(线条)

字段名JSON 类型Rust 类型单位说明
x1numberOption<f32>mm起点 X
y1numberOption<f32>mm起点 Y
x2numberOption<f32>mm终点 X
y2numberOption<f32>mm终点 Y
thicknessnumberOption<f32>mm线条粗细
colorstringOption<String>-颜色 Hex

🖼️ ImageElement(图片)

字段名JSON 类型Rust 类型单位说明
xnumberOption<f32>mmX 坐标
ynumberOption<f32>mmY 坐标
widthnumberOption<f32>mm显示宽度
heightnumberOption<f32>mm显示高度
image_namestringOption<String>-预加载图片名称
image_pathstringOption<String>-服务端图片路径
base64stringOption<String>-Base64 编码图片数据

💡 三种图片来源优先级:base64 > image_path > image_name


⬜ Rectangle(矩形)

字段名JSON 类型Rust 类型单位说明
xnumberOption<f32>mmX 坐标
ynumberOption<f32>mmY 坐标
widthnumberOption<f32>mm宽度
heightnumberOption<f32>mm高度
thicknessnumberOption<f32>mm边框粗细
colorstringOption<String>-边框/填充颜色
fillbooleanOption<bool>-是否填充
radiusnumberOption<f32>mm圆角半径

⚠️ 错误码说明

错误码触发条件表现
E002pdf_profile 为不支持的非空值PDF 上覆盖红色 "E002" 层
E003严格模式下缺失必填 metadataPDF 上覆盖 "E003" 层并列出缺失字段

📝 完整示例

json
[
  {
    "pdf_params": {
      "width": 100,
      "height": 60,
      "pdf_profile": "pdfa-2b",
      "metadata_title": "Shipping Label",
      "metadata_language": "en"
    },
    "items": [
      {
        "1d_params": [
          {
            "1d_content": "1234567890",
            "format": "Code128",
            "position": { "x": 5, "y": 5 },
            "size": { "height": 15, "module_width": 0.3 },
            "human_readable_text": {
              "enabled": true,
              "font_size": 8,
              "align": "Center"
            }
          }
        ],
        "2d_params": [
          {
            "2d_content": "https://example.com",
            "format": "QRCode",
            "x": 70,
            "y": 5,
            "module_size": 1.2
          }
        ],
        "text_elements": [
          {
            "x": 5,
            "y": 45,
            "content": "Ship To: John Doe",
            "font_size": 10,
            "bold": true
          }
        ]
      }
    ]
  }
]

📌 文档版本: 2026-01-03
📌 生成者: Claude (Anthropic)