所以我有一个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);
答案 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()
。