Using HTML file to output a PDF

2019-02-19 11:23发布

So I've got a HTML file, that I am using to send emails, but in some instances I want it simply to use that file to create a PDF of the same template.

I've got it functioning for the most part - it creates the file, runs the evaluations and gets the content, but it doesn't actually render the html. It simply leaves all the html notation in place.

For example, it outputs a pdf but it reads:

Dear Martin, <br />

instead of:

Dear Martin

How do I make sure it renders the HTML so that the PDF is laid out correctly, and doesn't have the html code noted in the text?

Here's the code:

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条回答
你好瞎i
2楼-- · 2019-02-19 11:50

The best option when you want to create a PDF from a template is to use Google Docs directly so that no formatting is lost and also avoid the problem you are facing.

Why don't you just create your template directly in Google Docs. Have some placeholders such as {name} instead of the actual name. Instead of using template.evaluate(), you can do a find and replace in the doc.

查看更多
地球回转人心会变
3楼-- · 2019-02-19 11:58

You can use your existing HTML as a blob, and convert it to PDF like this:

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);
查看更多
登录 后发表回答