我正在使用 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 脚本)几乎相同。
有人知道我做错了什么吗?
我认为从你的脚本中,可以从
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文件。