从Google App脚本创建正确编码/解码的pdf文件

时间:2019-06-17 13:44:17

标签: google-apps-script google-sheets

我正在建立一个电子表格,该电子表格将创建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文件中添加密码,那将是多余的,但这是一种额外的努力

1 个答案:

答案 0 :(得分:1)

  • 您要将text/html的文件创建为PDF文件。
  • content的{​​{1}}的MimeType是var content = getMessage(X,Y,Z, etc)

如果我的理解是正确的,那么该修改如何?

修改点:

  • 不幸的是,text/html的文件无法使用text/html直接转换为PDF格式。运行脚本时,将创建一个内容和mimeType为HTML且createFile(EmployeeID, content, MimeType.PDF)的文件。这样,当打开文件时,会发生错误。因为内容不是PDF格式。
  • 为了避免出现此问题,我使用了application/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);

注意:

  • 如果HTML包含从URL检索的图像,请将图像作为base64数据放入HTML。您可以在here上查看示例脚本。

参考文献: