From 192aa705585faaf23a0176420db750609dd07e76 Mon Sep 17 00:00:00 2001
From: juanf <juanf@public-docking-bs-0189.ethz.ch>
Date: Thu, 26 Apr 2018 15:18:52 +0200
Subject: [PATCH] SSDM-5725 : Images showing but sizing is not always correct,
 ongoing work.

---
 .../docxbuilder-source/DOCXBuilder.java       |   3 +--
 .../exports-api/exports-api.py                |  14 ++++++++++++++
 .../exports-api/lib/docxbuilder.jar           | Bin 5639 -> 2895 bytes
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/dss/reporting-plugins/exports-api/docxbuilder-source/DOCXBuilder.java b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/dss/reporting-plugins/exports-api/docxbuilder-source/DOCXBuilder.java
index 4d1175bd742..91a78b2e77b 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/dss/reporting-plugins/exports-api/docxbuilder-source/DOCXBuilder.java
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/dss/reporting-plugins/exports-api/docxbuilder-source/DOCXBuilder.java
@@ -21,8 +21,7 @@ public class DOCXBuilder
         docx.addHeader("MetaA");
         docx.addProperty("PropertyA", "ValueA");
         docx.addProperty("PropertyB", "ValueB");
-        docx.addProperty("PropertyC",
-                "<p>I am normal</p><p style=\"color:red;\">I am red</p><p style=\"color:blue;\">I am blue</p><p style=\"font-size:36px;\">I am big</p>");
+        docx.addProperty("PropertyC", "<p>I am normal</p><p style=\"color:red;\">I am red</p><p style=\"color:blue;\">I am blue</p><p style=\"font-size:36px;\">I am big</p>");
 
         FileOutputStream out = new FileOutputStream(new File("wordFromHTML.docx"));
         out.write(docx.getDocBytes());
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/dss/reporting-plugins/exports-api/exports-api.py b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/dss/reporting-plugins/exports-api/exports-api.py
index 28e199de7ec..967ac293879 100644
--- a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/dss/reporting-plugins/exports-api/exports-api.py
+++ b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/dss/reporting-plugins/exports-api/exports-api.py
@@ -72,6 +72,8 @@ from ch.ethz.sis.openbis.generic.asapi.v3.dto.sample.fetchoptions import SampleT
 from ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.search import DataSetTypeSearchCriteria;
 from ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset.fetchoptions import DataSetTypeFetchOptions;
 
+from ch.ethz.sis.openbis.generic.asapi.v3.dto.property import DataType
+
 #V3 API - Files
 from ch.ethz.sis.openbis.generic.dssapi.v3 import IDataStoreServerApi;
 from ch.ethz.sis.openbis.generic.dssapi.v3.dto.datasetfile.search import DataSetFileSearchCriteria;
@@ -103,6 +105,12 @@ from ch.ethz.sis.openbis.generic.asapi.v3.dto.dataset import DataSet
 #DOCX
 from ch.ethz.sis import DOCXBuilder
 
+#Images export for word
+from org.jsoup import Jsoup;
+from org.jsoup.nodes import Document;
+from org.jsoup.nodes import Element;
+from org.jsoup.select import Elements;
+
 class MLStripper(HTMLParser):
     def __init__(self):
         self.reset()
@@ -489,6 +497,12 @@ def getDOCX(entityObj, v3, sessionToken, isHTML):
             propertyType = propertyAssigment.getPropertyType();
             if propertyType.getCode() in properties:
                 propertyValue = properties[propertyType.getCode()];
+                if propertyType.getDataType() is DataType.MULTILINE_VARCHAR:
+                    doc = Jsoup.parse(propertyValue);
+                    imageElements = doc.select("img");
+                    for imageElement in imageElements:
+                        imageSrc = imageElement.attr("src");
+                        propertyValue = propertyValue.replace(imageSrc, DataStoreServer.getConfigParameters().getServerURL() + imageSrc + "?sessionID=" + sessionToken);
                 if propertyValue != u"\uFFFD(undefined)":
                     docxBuilder.addProperty(propertyType.getLabel(), propertyValue);
     
diff --git a/openbis_standard_technologies/dist/core-plugins/eln-lims/1/dss/reporting-plugins/exports-api/lib/docxbuilder.jar b/openbis_standard_technologies/dist/core-plugins/eln-lims/1/dss/reporting-plugins/exports-api/lib/docxbuilder.jar
index b266e3fbb5d15969c991e83503fe1f60a39c7198..1415afffeba2afa18eb612141f6610294b005062 100644
GIT binary patch
delta 2696
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
Clo>Yw

literal 5639
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

-- 
GitLab