多年来,我一直使用 Google Cloud Print 在我们的校园实验室中使用 Google Apps Script 自定义 HtmlService 表单打印标签(以实现标准化)。
现在 GCP 正在贬值,我正在寻找解决方案。我找到了一些选项,但正在努力将文件转换为其他供应商所需的 pdf。
目前,当您在 GAS 中向 GCP 服务器提交 text/html blob 时,后端会将 blob 转换为 application/pdf(通过查看 Chrome 上 GCP 面板中“内容类型”下的作业详细信息可以证明这一点)。
也就是说,因为这些其他云打印服务需要 pdf 打印,我已经尝试了一段时间让 GAS 在发送到 GCP 之前将文件更改为 pdf 格式,但我总是得到一个奇怪的结果。下面,我将展示一些我使用过的策略,并包含我们使用不同功能生成的一个简单标签的图片。
以下是使用 GCP 多年的票证和有效负载的基本代码
//BUILD PRINT JOB FOR NARROW TAPES
var ticket = {
version: "1.0",
print: {
color: {
type: "STANDARD_COLOR",
vendor_id: "Color"
},
duplex: {
type: "NO_DUPLEX"
},
copies: {copies: parseFloat(quantity)},
media_size: {
width_microns: 27940,
height_microns:40960
},
page_orientation: {
type: "LANDSCAPE"
},
margins: {
top_microns:0,
bottom_microns:0,
left_microns:0,
right_microns:0
},
page_range: {
interval:
[{start:1,
end:1}]
},
}
};
var payload = {
"printerid" : QL710,
"title" : "Blank Template Label",
"content" : HtmlService.createHtmlOutput(html).getBlob(),
"contentType": 'text/html',
"ticket" : JSON.stringify(ticket)
};
尝试使用以下代码转换为 pdf 时:以下是用于转换为 pdf 的代码:
var blob = HtmlService.createTemplate(html).evaluate().getContent();
var newBlob = Utilities.newBlob(html, "text/html", "text.html");
var pdf = newBlob.getAs("application/pdf").setName('tempfile');
var file = DriveApp.getFolderById("FOLDER ID").createFile(pdf);
var payload = {
"printerid" : QL710,
"title" : "Blank Template Label",
"content" : pdf,//HtmlService.createHtmlOutput(html).getBlob(),
"contentType": 'text/html',
"ticket" : JSON.stringify(ticket)
};
出现意想不到的结果:
这与使用和不使用 .getBlob() 在“内容”字段中直接编码的方式相同:
"content" : HtmlService.createHtmlOutput(html).getAs('application/pdf'),
注意上面代码中用于测试 pdf 的 createFile 行。此文件按预期创建,当然标签打印尺寸错误(不确定如何转换为具有适当边距和页面大小的 pdf?):见下文
我现在尝试采纳尤里的想法;但是,从 html 到文档的转换会丢失格式。
var blob = HtmlService.createHtmlOutput(html).getBlob();
var docID = Drive.Files.insert({title: 'temp-label'}, blob, {convert: true}).id
var file = DocumentApp.openById(docID);
file.getBody().setMarginBottom(0).setMarginLeft(0).setMarginRight(0).setMarginTop(0).setPageHeight(79.2).setPageWidth(172.8);
这会产生一个看起来像这样的文档(图片也显示了我手中的预期输出)。
有没有人有见解:
- 如何格式化转换后的 pdf 以包含适当的高度、宽度和边距。
- 如何以可以正确打印的方式转换为 pdf。
这是一个最小的代码,可以更好地了解上下文https://script.google.com/d/1yP3Jyr_r_FIlt6_aGj_zIf7HnVGEOPBKI0MpjEGHRFAWztGzcWKCJrD0/edit?usp=sharing







