使用HTML文件输出PDF

时间:2013-09-23 21:41:06

标签: google-apps-script

所以我有一个HTML文件,我用来发送电子邮件,但在某些情况下,我希望它只是使用该文件来创建相同模板的PDF。

我在大多数情况下都运行它 - 它创建文件,运行评估并获取内容,但它实际上并不呈现html。它只是留下了所有的html表示法。

例如,它输出一个pdf,但它显示为:

Dear Martin, <br />

而不是:

  亲爱的马丁

如何确保呈现HTML以便正确布局PDF,并且文本中没有注明html代码?

以下是代码:

var docName = "test";
var htmlBody = HtmlService.createHtmlOutput(template.evaluate().getContent()).getContent()
var doc = DocumentApp.create(docName);
  doc.appendParagraph(htmlBody);
doc.saveAndClose();
DocsList.createFile(doc.getAs('application/pdf')).rename(docName);

2 个答案:

答案 0 :(得分:5)

您可以将现有HTML用作blob,并将其转换为PDF,如下所示:

var htmlBody = HtmlService.createHtmlOutputFromFile('my_file_within_script_project.html').getContent();
var blob = Utilities.newBlob(htmlBody, 'text/html').getAs('application/pdf').setName('my_output_in_drive.pdf');
DriveApp.createFile(blob);

答案 1 :(得分:1)

当您想要从模板创建PDF时,最好的选择是直接使用Google文档,这样就不会丢失格式,也可以避免您遇到的问题。

为什么不直接在Google文档中创建模板。有一些占位符,如{name}而不是实际名称。您可以在文档中进行查找和替换,而不是使用template.evaluate()