setsharing script google getblob getas contenttype attachments apps app google-apps-script

google apps script - script - Imágenes no reproducidas al convertir una Blob de HTML a PDF



google script file id (1)

Quiero convertir correos electrónicos HTML en PDF. He escrito el siguiente fragmento de código.

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);

La pieza de código anterior primero crea un Blob del HTML de un mensaje de Gmail y usa la función getAs () para convertirlo a PDF. Sin embargo, las imágenes en el HTML no se encuentran en el PDF. Cualquier idea sobre cómo obtener estas imágenes sería apreciada. También es bienvenido cualquier idea alternativa sobre cómo convertir un mensaje de Gmail a PDF.


Problema interesante. Tiene sentido en cuanto a por qué esto no funciona: la conversión de PDF no molesta a "renderizar" el HTML para ir a buscar la imagen de src.

Hice una prueba rápida y confirmé que los URI de datos (imágenes en línea sin necesidad de una llamada HTTP por separado) funcionaban con imágenes.

Entonces, una solución hacky podría ir a buscar las imágenes y luego convertirlas a URI de datos. Esto tiene algunas desventajas: estas imágenes son difíciles de encontrar (la expresión regular sería frágil o no exhaustiva), muchas llamadas a UrlFetch (incluso con algo de almacenamiento en caché, la mayoría de los remitentes de correo electrónico automatizados agregan seguidores para que pueda volver a buscar la misma imagen) y lento.

Convertir -

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

Para (también puedes verificar el tipo de contenido dinámicamente) -

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