Skip to content

Commit f4d5dd8

Browse files
authored
KB images were not beeing printed in PDF Reports using Sprin Boot (#773)
* KB images were not beeing printed in PDF Reports using Sprin Boot Issue: 104856 * KB images were not beeing printed in PDF Reports using Sprin Boot Issue: 104856
1 parent 9050bcd commit f4d5dd8

File tree

4 files changed

+54
-22
lines changed

4 files changed

+54
-22
lines changed

common/src/main/java/com/genexus/util/GXFileInfo.java

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
11
package com.genexus.util;
22
import java.io.*;
33
import java.util.Vector;
4+
5+
import com.genexus.ApplicationContext;
46
import com.genexus.CommonUtil;
57
import com.genexus.common.interfaces.SpecificImplementation;
68
import com.genexus.db.driver.ResourceAccessControlList;
79
import org.apache.commons.io.filefilter.WildcardFileFilter;
810
import org.apache.commons.io.IOCase;
11+
import org.springframework.core.io.ClassPathResource;
912

1013
import java.util.Date;
1114

@@ -33,6 +36,12 @@ public String getPath(){
3336
}
3437
}
3538
public boolean exists(){
39+
if (ApplicationContext.getInstance().isSpringBootApp() && !isDirectory) {
40+
if (!fileSource.exists() && !new ClassPathResource(fileSource.getPath()).exists())
41+
return false;
42+
return true;
43+
}
44+
3645
if ((isDirectory && fileSource.isDirectory()) || (!isDirectory && fileSource.isFile())) {
3746
return fileSource.exists();
3847
}
@@ -130,8 +139,12 @@ public GXDirectoryCollection listDirectories(){
130139

131140
public InputStream getStream(){
132141
try {
142+
if (ApplicationContext.getInstance().isSpringBootApp()) {
143+
return new ClassPathResource(fileSource.getPath()).getInputStream();
144+
}
145+
133146
return new FileInputStream(fileSource);
134-
} catch (FileNotFoundException ex) {
147+
} catch (Exception ex) {
135148
return null;
136149
}
137150
}

java/src/main/java/com/genexus/reports/PDFReportItext2.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
import java.util.*;
88
import java.util.concurrent.ConcurrentHashMap;
99

10+
import com.genexus.ApplicationContext;
1011
import com.genexus.CommonUtil;
1112
import com.genexus.ModelContext;
1213
import com.genexus.platform.NativeFunctions;
@@ -36,6 +37,7 @@
3637
import com.genexus.reports.fonts.PDFFont;
3738
import com.genexus.reports.fonts.PDFFontDescriptor;
3839
import com.genexus.reports.fonts.Type1FontMetrics;
40+
import org.springframework.core.io.ClassPathResource;
3941

4042
public class PDFReportItext2 extends GXReportPDFCommons
4143
{
@@ -377,13 +379,16 @@ public void GxDrawBitMap(String bitmap, int left, int top, int right, int bottom
377379
}
378380
// Si la ruta a la imagen NO es absoluta, en aplicaciones Web le agregamos al comienzo la ruta al root de la aplicación
379381
// más la staticContentBaseURL si ésta es relativa.
380-
image = com.lowagie.text.Image.getInstance(defaultRelativePrepend + bitmap);
381-
if(image == null) { // Si all\uFFFDEno se encuentra la imagen, entonces la buscamos bajo el webAppDir (para mantener compatibilidad)
382-
bitmap = webAppDir + bitmap;
383-
image = com.lowagie.text.Image.getInstance(bitmap);
382+
bitmap = defaultRelativePrepend + bitmap;
383+
if (ApplicationContext.getInstance().isSpringBootApp() && !new File(bitmap).exists()) {
384+
image = com.lowagie.text.Image.getInstance(new ClassPathResource(bitmap).getContentAsByteArray());
384385
}
385386
else {
386-
bitmap = defaultRelativePrepend + bitmap;
387+
image = com.lowagie.text.Image.getInstance(bitmap);
388+
if (image == null) { // Si all\uFFFDEno se encuentra la imagen, entonces la buscamos bajo el webAppDir (para mantener compatibilidad)
389+
bitmap = webAppDir + bitmap;
390+
image = com.lowagie.text.Image.getInstance(bitmap);
391+
}
387392
}
388393
}
389394
else {

java/src/main/java/com/genexus/reports/PDFReportItext8.java

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
package com.genexus.reports;
22

3+
import com.genexus.ApplicationContext;
34
import com.genexus.CommonUtil;
45
import com.genexus.ModelContext;
56
import com.genexus.platform.NativeFunctions;
@@ -41,6 +42,7 @@
4142
import com.itextpdf.kernel.pdf.PdfDocument;
4243
import com.itextpdf.layout.splitting.DefaultSplitCharacters;
4344
import com.itextpdf.layout.Canvas;
45+
import org.springframework.core.io.ClassPathResource;
4446

4547
import java.awt.*;
4648
import java.io.File;
@@ -402,13 +404,16 @@ public void GxDrawBitMap(String bitmap, int left, int top, int right, int bottom
402404
if (bitmap.startsWith(httpContext.getStaticContentBase())) {
403405
bitmap = bitmap.replace(httpContext.getStaticContentBase(), "");
404406
}
405-
imageData = ImageDataFactory.create(defaultRelativePrepend + bitmap);
406-
if(imageData == null) {
407-
bitmap = webAppDir + bitmap;
408-
imageData = ImageDataFactory.create(bitmap);
407+
bitmap = defaultRelativePrepend + bitmap;
408+
if (ApplicationContext.getInstance().isSpringBootApp() && !new File(bitmap).exists()) {
409+
imageData = ImageDataFactory.create(new ClassPathResource(bitmap).getContentAsByteArray());
409410
}
410411
else {
411-
bitmap = defaultRelativePrepend + bitmap;
412+
imageData = ImageDataFactory.create(bitmap);
413+
if (imageData == null) {
414+
bitmap = webAppDir + bitmap;
415+
imageData = ImageDataFactory.create(bitmap);
416+
}
412417
}
413418
}
414419
else {

java/src/main/java/com/genexus/reports/PDFReportPDFBox.java

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
import java.util.Set;
1111
import java.util.concurrent.ConcurrentHashMap;
1212

13+
import com.genexus.ApplicationContext;
1314
import com.genexus.CommonUtil;
1415
import com.genexus.ModelContext;
1516
import com.genexus.platform.NativeFunctions;
@@ -40,6 +41,7 @@
4041
import org.jsoup.nodes.Element;
4142
import org.jsoup.nodes.Node;
4243
import org.jsoup.select.Elements;
44+
import org.springframework.core.io.ClassPathResource;
4345

4446
import javax.imageio.IIOException;
4547

@@ -362,13 +364,16 @@ public void GxDrawBitMap(String bitmap, int left, int top, int right, int bottom
362364
{
363365
bitmap = bitmap.replace(httpContext.getStaticContentBase(), "");
364366
}
365-
image = PDImageXObject.createFromFile(defaultRelativePrepend + bitmap,document);
366-
if(image == null) {
367-
bitmap = webAppDir + bitmap;
368-
image = PDImageXObject.createFromFile(bitmap,document);
367+
bitmap = defaultRelativePrepend + bitmap;
368+
if (ApplicationContext.getInstance().isSpringBootApp() && !new File(bitmap).exists()) {
369+
image = PDImageXObject.createFromByteArray(document, new ClassPathResource(bitmap).getContentAsByteArray(), bitmap);
369370
}
370371
else {
371-
bitmap = defaultRelativePrepend + bitmap;
372+
image = PDImageXObject.createFromFile(bitmap, document);
373+
if (image == null) {
374+
bitmap = webAppDir + bitmap;
375+
image = PDImageXObject.createFromFile(bitmap, document);
376+
}
372377
}
373378
}
374379
else {
@@ -947,13 +952,17 @@ private void processHTMLElement(PDPageContentStream cb, PDRectangle htmlRectangl
947952
if (!new File(bitmap).isAbsolute() && !bitmap.toLowerCase().startsWith("http:") && !bitmap.toLowerCase().startsWith("https:")) {
948953
if (bitmap.startsWith(httpContext.getStaticContentBase()))
949954
bitmap = bitmap.replace(httpContext.getStaticContentBase(), "");
950-
image = PDImageXObject.createFromFile(defaultRelativePrepend + bitmap,document);
951-
if(image == null) {
952-
bitmap = webAppDir + bitmap;
953-
image = PDImageXObject.createFromFile(bitmap,document);
955+
bitmap = defaultRelativePrepend + bitmap;
956+
if (ApplicationContext.getInstance().isSpringBootApp() && !new File(bitmap).exists()) {
957+
image = PDImageXObject.createFromByteArray(document, new ClassPathResource(bitmap).getContentAsByteArray(), bitmap);
958+
}
959+
else {
960+
image = PDImageXObject.createFromFile(bitmap, document);
961+
if (image == null) {
962+
bitmap = webAppDir + bitmap;
963+
image = PDImageXObject.createFromFile(bitmap, document);
964+
}
954965
}
955-
else
956-
bitmap = defaultRelativePrepend + bitmap;
957966
}
958967
else
959968
image = PDImageXObject.createFromFile(bitmap,document);

0 commit comments

Comments
 (0)