Skip to content

xPdf Label API - JSON 数据结构完整参考

端点: POST /api/v1/label | /api/v2/label | /api/v3/label
Content-Type: application/json
响应: application/pdf (二进制流)

三个接口的 请求体格式完全一致,均接收 LabelRequest 数组或单个对象。


请求格式

json
// 数组格式 (批量)
[ { "pdf_params": {...}, "items": [...] }, ... ]

// 或单对象格式
{ "pdf_params": {...}, "items": [...] }

LabelRequest (根对象)

字段类型必填默认值说明
tracking_numberstring-请求追踪编号,用于日志和调试
pdf_paramsPdfParams见下PDF 文档全局配置
itemsItem[]⚠️-页面内容数组,每个 Item 生成一页 (实际必填)

PdfParams (PDF 全局配置)

页面尺寸

字段类型必填默认值单位说明
widthnumber100mm页面宽度
heightnumber150mm页面高度

文件输出

字段类型必填默认值说明
save_filebooleanfalse是否在服务端保存 PDF 文件
output_dirstring"pdf_files"服务端保存目录路径
file_namestring"{timestamp}.pdf"文件名模板,支持 {timestamp}{tracking_number} 变量
global_fontstring系统默认全局默认字体名称
rust_logstring"close"日志级别: debug / info / warn / error / close

PDF 元数据 (Metadata)

字段类型必填说明
metadata_titlestring⚠️文档标题 (PDF/UA-1 必填,否则触发 E003)
metadata_authorsstring作者姓名
metadata_subjectstring主题/关键词
metadata_creatorstring创建软件名称
metadata_producerstring生成器名称
metadata_creation_datestring创建日期 (ISO 8601 格式)
metadata_modification_datestring修改日期 (ISO 8601 格式)
metadata_languagestringISO 639-1 语言代码 (如 "zh", "en"),自动检测

PDF/A 合规配置

字段类型必填默认值说明
pdf_profilestring""PDF 合规等级

支持的 pdf_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通用无障碍标准 (需 metadata_title)

⚠️ 填写不支持的值会触发 E002 错误层叠加。


Item (内容容器)

每个 Item 代表一个 PDF 页面上的元素分组。

字段类型必填说明
tracking_numberstring元素级追踪编号
1d_paramsOneDParams[]一维条码数组
2d_paramsTwoDParams[]二维码数组
text_elementsTextElement[]文本元素数组
linesLine[]线条数组
imagesImageElement[]图片数组
rectanglesRectangle[]矩形数组

OneDParams (一维条码)

此对象数组在 Item 中的 JSON Key 为 1d_params

字段类型必填单位说明
1d_contentstring-编码内容 (条码数据)
formatstring-码制类型 (见下表)
positionPosition-位置坐标对象 {x, y}
sizeBarcodeSize-尺寸对象 {height, module_width?, width?}
orientationinteger°旋转角度: 0 / 90 / 180 / 270
colorstring-条码颜色 (Hex: "#000000")
background_colorstring-背景颜色 (Hex)
linenumbermm条线宽度
quiet_zoneinteger模块静区大小 (条码周围空白)
gs1_formatboolean-是否使用 GS1 格式编码
bearer_bar_shapestring-承载条形状: "frame" / "top_bottom"
bearer_bar_thicknessnumbermm承载条厚度
human_readable_textHumanReadableText-条码附属文本配置

支持的 format: Code128, Code39, Code93, EAN13, EAN8, UPCA, UPCE, ITF, Codabar


TwoDParams (二维码)

此对象数组在 Item 中的 JSON Key 为 2d_params

字段类型必填单位说明
2d_contentstring-编码内容
contentstring-2d_content 的别名
formatstring-码制类型 (见下表)
module_sizenumbermm单模块尺寸 (一个"像素"的大小)
xnumbermmX 坐标 (左上角原点)
ynumbermmY 坐标 (左上角原点)
colorstring-前景色 (Hex: "#000000")
background_colorstring-背景色 (Hex)
quiet_zoneinteger模块静区大小
orientationinteger°旋转角度: 0 / 90 / 180 / 270
shapestring-模块形状: "square" / "circle"

支持的 format: QRCode, DataMatrix, PDF417, Aztec, MaxiCode


Position (位置)

字段类型必填单位说明
xnumbermmX 坐标 (左上角原点,向右为正)
ynumbermmY 坐标 (左上角原点,向下为正)

BarcodeSize (条码尺寸)

字段类型必填单位说明
heightnumbermm条码高度
module_widthnumbermm单模块宽度 (最细条的宽度),优先级高于 width
widthnumbermm条码整体宽度

HumanReadableText (条码附属文本)

字段类型必填单位说明
enabledboolean-是否显示附属文本,默认 true
contentstring-显示内容 (覆盖条码数据本身)
font_sizenumberpt字号
font_namestring-字体名称 (需预加载)
colorstring-文字颜色 (Hex)
boldboolean-是否粗体
alignstring-对齐方式: "Left" / "Center" / "Right"
offset_ynumbermmY 轴偏移量 (正值向下)
sideinteger-显示位置: 0 = 下方, 1 = 上方

TextElement (独立文本)

字段类型必填单位说明
xnumbermmX 坐标
ynumbermmY 坐标
contentstring-文本内容,支持 \n 换行和 [B]...[/B] 加粗
labelstring-标签标识 (仅用于调试,不显示在 PDF)
font_sizenumberpt字号,默认 12
font_namestring-字体名称 (需预加载)
colorstring-文字颜色 (Hex: "#000000")
boldboolean-是否粗体
line_spacingnumberpt行间距
widthnumbermm文本框宽度 (启用自动换行)
heightnumbermm文本框高度
overflowstring-溢出处理: "none" / "clip" / "ellipsis"
v_alignstring-垂直对齐: "Top" / "Middle" / "Bottom"
directioninteger-文字方向: 0 = 水平

Line (线条)

字段类型必填单位说明
x1numbermm起点 X 坐标
y1numbermm起点 Y 坐标
x2numbermm终点 X 坐标
y2numbermm终点 Y 坐标
thicknessnumbermm线条粗细,默认 1
colorstring-线条颜色 (Hex)

ImageElement (图片)

字段类型必填单位说明
xnumbermmX 坐标
ynumbermmY 坐标
widthnumbermm显示宽度
heightnumbermm显示高度
base64string-Base64 编码图片数据 (优先级 1)
image_pathstring-服务端图片路径 (优先级 2)
image_namestring-预加载图片名称 (优先级 3)

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


Rectangle (矩形)

字段类型必填单位说明
xnumbermm左上角 X 坐标
ynumbermm左上角 Y 坐标
widthnumbermm宽度
heightnumbermm高度
thicknessnumbermm边框粗细
colorstring-边框/填充颜色 (Hex)
fillboolean-是否填充 (true) 或仅描边 (false)
radiusnumbermm圆角半径

坐标系统

  • 原点: 页面左上角 (0, 0)
  • X 轴: 水平向右为正
  • Y 轴: 垂直向下为正
  • 单位: 所有坐标和尺寸均为 毫米 (mm)

错误码

错误码触发条件表现
E001文本包含当前字体无法渲染的字符 (缺失字形)PDF 上覆盖红色 "E001" 层
E002pdf_profile 为不支持的非空值PDF 上覆盖红色 "E002" 层
E003pdfa-ua1 模式下缺失 metadata_titlePDF 上覆盖 "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-04
📌 源文件: models.rs, api.rs