From 2d91a83160639cc3f7d7158d6a1218f60bb5c049 Mon Sep 17 00:00:00 2001 From: rrowlands Date: Tue, 19 Jul 2022 14:07:37 -0600 Subject: [PATCH] Fix issue where PDF reports would generate empty files. --- .../report/KaleidoscopeReportController.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/DDMS/generated/client/stub/dss/vector/solutions/kaleidoscope/report/KaleidoscopeReportController.java b/DDMS/generated/client/stub/dss/vector/solutions/kaleidoscope/report/KaleidoscopeReportController.java index 0154b2f1e6..edd0169bf3 100644 --- a/DDMS/generated/client/stub/dss/vector/solutions/kaleidoscope/report/KaleidoscopeReportController.java +++ b/DDMS/generated/client/stub/dss/vector/solutions/kaleidoscope/report/KaleidoscopeReportController.java @@ -16,6 +16,9 @@ ******************************************************************************/ package dss.vector.solutions.kaleidoscope.report; +import java.io.BufferedInputStream; +import java.io.BufferedOutputStream; +import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.InputStream; @@ -30,6 +33,7 @@ import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; +import org.apache.commons.io.IOUtils; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; @@ -371,7 +375,8 @@ else if (name.equals("pageNumber")) * are sure the report has rendered. Therefore, first render the report to a temp byte array stream. Once that has rendered, copy the bytes * from the byte array to the servlet output stream. Note, this may cause memory problems if the report being rendered is too big. */ - ByteArrayOutputStream rStream = new ByteArrayOutputStream(); + ByteArrayOutputStream baos = new ByteArrayOutputStream(); + BufferedOutputStream rStream = new BufferedOutputStream(baos); try { @@ -382,7 +387,7 @@ else if (name.equals("pageNumber")) if (format == null || format.equalsIgnoreCase("html")) { - req.setAttribute("report", rStream.toString("UTF-8")); + req.setAttribute("report", baos.toString("UTF-8")); req.setAttribute("pageCount", pageCount); req.setAttribute("pageNumber", pageNumber); @@ -398,7 +403,8 @@ else if (name.equals("pageNumber")) try { - oStream.print(rStream.toString("UTF-8")); + InputStream is = new BufferedInputStream(new ByteArrayInputStream(baos.toByteArray())); + IOUtils.copy(is, oStream); } finally {