4

我想将 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。但是,在 PDF 中找不到 HTML 中的图像。任何有关如何获取这些图像的想法将不胜感激。也欢迎任何关于如何将 gmail 消息转换为 PDF 的替代想法。

4

1 回答 1

5

有趣的问题。关于为什么这不起作用是有道理的 - PDF 转换不会打扰“渲染”HTML 去获取图像 src。

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

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

兑换 -

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

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

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

于 2012-11-29T15:11:13.083 回答