You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Google Apps Script调用Labelary API返回空白PDF问题排查

问题原因及修复方案

你的代码存在三个关键错误,导致生成空白PDF:

1. Payload格式错误

Labelary API接收的POST请求体是纯ZPL文本,但你用JSON.stringify(label)把ZPL转成了JSON字符串,API解析后拿到的是带引号的无效ZPL内容,自然生成空白标签。

2. Content-Type设置错误

因为要传递纯文本ZPL,请求头的Content-Type应该设为text/plain,而不是application/x-www-form-urlencoded。

3. 文件写入方式错误

getDataAsString()会把二进制PDF数据转换成字符串,再写入文件时会破坏二进制结构,导致PDF无法正常渲染。应该直接使用HTTP响应的Blob对象来创建文件。


修正后的完整代码

function testPdfConversion() {
  var zpl = "^xa^cfa,50^fo100,100^fdHello World^fs^xz";
  var labelPdf = convertToPdf(zpl);
  DriveApp.getFoldersByName("Labels").next().createFile("Test.pdf", labelPdf.getBlob(), "application/pdf");
}

function convertToPdf(label) {
  const url = "http://api.labelary.com/v1/printers/8dpmm/labels/4x6/0/";

  const options = {
    method: 'POST',
    headers: { 
      'Accept': 'application/pdf', 
      'X-Linter': 'On'
    },
    contentType: 'text/plain', // 修正Content-Type
    payload: label // 直接传递ZPL文本,无需JSON转换
  };

  return UrlFetchApp.fetch(url, options);
}

验证说明

修正后:

  • API能正确解析ZPL代码生成带"Hello World"的PDF标签
  • 直接用Blob写入文件,保留了PDF的二进制结构,打开后能正常显示内容

内容的提问来源于stack exchange,提问作者Thimo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 20:57:06