google-apps-script - 从谷歌应用脚本创建正确编码/解码的 pdf 文件
问题描述
我正在设置一个电子表格,它创建一个 pdf 文件并与某人共享以打印并签名。
var content = getMessage(X,Y,Z, etc);
var FolderFile = DriveApp.getFoldersByName('CreatingFolderTest').next();
var FileCreation = FolderFile.createFile(EmployeeID, content, MimeType.PDF).addViewer(Email);
问题是,当我尝试下载文件时,它给了我一个错误,即 pdf 文件未正确解码。
试图搜索解决方案,发现它可能是我正在使用的元数据标签
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<meta name="viewport" content="width=device-width"/>
我希望我可以从代码中已有的 HTML 文件创建一个 PDF 格式的文件,然后将其发送给员工打印出来!如果我可以在 pdf 文件中添加密码,那将是额外的,但这是一种额外的努力
解决方案
- 您想将文件创建
text/html
为 PDF 文件。 - 的MimeType
content
是.var content = getMessage(X,Y,Z, etc)
text/html
如果我的理解是正确的,那么这个修改呢?
修改点:
- 遗憾的是,
text/html
无法使用createFile(EmployeeID, content, MimeType.PDF)
. 运行脚本时,会创建一个内容和 mimeType 为 HTML 的文件application/pdf
。这样,当打开文件时,就会发生错误。因为内容不是PDF格式。 - 为了避免这个问题,我使用了
HtmlService.createHtmlOutput()
.
请认为这只是几个答案之一。
修改后的脚本:
从:var content = getMessage(X,Y,Z, etc);
var FolderFile = DriveApp.getFoldersByName('CreatingFolderTest').next();
var FileCreation = FolderFile.createFile(EmployeeID, content, MimeType.PDF).addViewer(Email);
到:
var content = getMessage(X,Y,Z, etc);
var FolderFile = DriveApp.getFoldersByName('CreatingFolderTest').next();
var html = HtmlService.createHtmlOutput(content); // Added
var FileCreation = FolderFile.createFile(html.getAs(MimeType.PDF)).setName(EmployeeID); // Modified
笔记:
- 如果 HTML 包含从 URL 检索的图像,请将图像作为 base64 数据放入 HTML。您可以在此处查看示例脚本。