将Blob从HTML转换为PDF时未复制的图像

时间:2012-11-26 17:41:16

标签: google-apps-script

我想将HTML电子邮件转换为PDF。我写了下面这段代码。

      var txt = msgs[i].getBody();
      /* We need two blob conversions - one from text to HTML and the other from HTML to PDF */
      var blob = Utilities.newBlob(txt, 'text/html',"Test PDF");
      Logger.log(txt);
      var tempDoc = DocsList.createFile(blob);
      var pdf = tempDoc.getAs('application/pdf');
      pdf.setName('Email As PDF');
      DocsList.createFile(pdf);

上面的代码首先从Gmail邮件中创建HTML中的Blob,然后使用getAs()函数将其转换为PDF。但是,HTML中的图像不能在PDF中找到。关于如何获得这些图像的任何想法将不胜感激。 关于如何将Gmail邮件转换为PDF的任何其他想法也是受欢迎的。

1 个答案:

答案 0 :(得分:5)

有趣的问题。理解为什么这不起作用 - PDF转换不会“渲染”HTML来获取图像src。

我做了一个快速测试并确认Data URI's(不需要单独的HTTP调用的内联图像)可以处理图像。

因此,一个hacky解决方案可能是获取图像,然后将它们转换为数据URI。这有一些缺点 - 很难找到这些图像(正则表达式将是脆弱的或不全面的),许多UrlFetch调用(即使有一些缓存,大多数自动电子邮件发件人添加跟踪器,以便您最终重新获取相同的图像)和慢。

转换 -

<img src="http://images.myserver.com/myimage.png..."/>

To(您也可以动态检查内容类型) -

<img src="data:image/png;base64,iVBORw0KGgoAAAANSUhE..."/>