Labelary API 返回与 Google Apps 脚本一起使用的空白 pdf

问题描述 投票:0回答:1

我正在使用 Google Apps 脚本从我的 Google 表格创建标签。我正在向 Labelary API 发送请求,以便他们可以将我的 zpl 代码转换为 pdf。但不幸的是,当我打开它时,返回的 PDF 是空白的。

这是我当前的带有测试功能的实现:

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

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'},
    'Content-Type': 'application/x-www-form-urlencoded',
    'payload': JSON.stringify(label)};

  const response = UrlFetchApp.fetch(url, options);
  return response;
}

这只是为了测试,但它应该创建一个上面写有“Hello World”的标签,当我用curl尝试它时它可以工作。两个 pdf 的内容(curl 和 apps 脚本)几乎相同。

有人知道我做错了什么吗?

google-apps-script pdf pdf-generation zpl
1个回答
0
投票

我认为从你的脚本中,可以从

UrlFetchApp.fetch(url, options)
返回的对象中检索 blob。那么,下面的修改怎么样?

修改后的脚本:

在本次修改中,修改了功能

testPdfConversion()

function testPdfConversion() {
  var zpl = "^xa^cfa,50^fo100,100^fdHello World^fs^xz";
  var labelPdf = convertToPdf(zpl.toString());
  DriveApp.getFoldersByName("Labels").next().createFile(labelPdf.getBlob().setName("Test.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' },
    'Content-Type': 'application/x-www-form-urlencoded',
    'payload': JSON.stringify(label)
  };
  const response = UrlFetchApp.fetch(url, options);
  return response;
}

当我测试这个脚本时,似乎在

Labels
文件夹中创建了一个包含“Hello World”的PDF文件。

参考资料:

© www.soinside.com 2019 - 2024. All rights reserved.