From 7b224943260ce8450174792ff6db60b8e96a9edc Mon Sep 17 00:00:00 2001 From: cmurialdo Date: Fri, 3 Feb 2023 11:55:20 -0300 Subject: [PATCH 1/3] Take into account output_file name for web pdf reports. --- java/src/main/java/com/genexus/webpanels/GXWebReport.java | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/java/src/main/java/com/genexus/webpanels/GXWebReport.java b/java/src/main/java/com/genexus/webpanels/GXWebReport.java index 3c96eb6e8..8b83f2e7f 100644 --- a/java/src/main/java/com/genexus/webpanels/GXWebReport.java +++ b/java/src/main/java/com/genexus/webpanels/GXWebReport.java @@ -24,6 +24,7 @@ public abstract class GXWebReport extends GXWebProcedure protected int gxYPage; protected int Gx_page; protected String Gx_out = ""; // Esto est� asi porque no me pude deshacer de una comparacion contra Gx_out antes del ask. + protected String filename; public GXWebReport(HttpContext httpContext) { @@ -45,7 +46,8 @@ protected void initState(ModelContext context, UserInformation ui) protected void preExecute() { httpContext.setContentType("application/pdf"); - httpContext.getResponse().addHeader("content-disposition", "inline; filename=" + getClass().getSimpleName() + ".pdf"); + String outputFileName = filename!=null ? filename : getClass().getSimpleName(); + httpContext.getResponse().addHeader("content-disposition", "inline; filename=" + outputFileName + ".pdf"); httpContext.setStream(); // Tiene que ir despues del setStream porque sino el getOutputStream apunta @@ -53,6 +55,9 @@ protected void preExecute() ((PDFReportItext) reportHandler).setOutputStream(httpContext.getOutputStream()); } + protected void setOutputFileName(String outputFileName){ + filename = outputFileName; + } private void initValues() { Gx_line = 0; From e3d71a1dd558210387275860edd32c8f6713c402 Mon Sep 17 00:00:00 2001 From: cmurialdo Date: Mon, 6 Feb 2023 18:05:44 -0300 Subject: [PATCH 2/3] Set content-disposition in initPrinter when filename is known. --- java/src/main/java/com/genexus/webpanels/GXWebReport.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/java/src/main/java/com/genexus/webpanels/GXWebReport.java b/java/src/main/java/com/genexus/webpanels/GXWebReport.java index 8b83f2e7f..8c6465f8b 100644 --- a/java/src/main/java/com/genexus/webpanels/GXWebReport.java +++ b/java/src/main/java/com/genexus/webpanels/GXWebReport.java @@ -46,8 +46,6 @@ protected void initState(ModelContext context, UserInformation ui) protected void preExecute() { httpContext.setContentType("application/pdf"); - String outputFileName = filename!=null ? filename : getClass().getSimpleName(); - httpContext.getResponse().addHeader("content-disposition", "inline; filename=" + outputFileName + ".pdf"); httpContext.setStream(); // Tiene que ir despues del setStream porque sino el getOutputStream apunta @@ -103,6 +101,8 @@ protected boolean initPrinter(String output, int gxXPage, int gxYPage, String in { int x[] = {gxXPage}; int y[] = {gxYPage}; + String outputFileName = filename!=null ? filename : getClass().getSimpleName(); + httpContext.getResponse().addHeader("content-disposition", "inline; filename=" + outputFileName + ".pdf"); getPrinter().GxRVSetLanguage(localUtil._language); boolean ret = getPrinter().GxPrintInit(output, x, y, iniFile, form, printer, mode, orientation, pageSize, pageLength, pageWidth, scale, copies, defSrc, quality, color, duplex); From 63203e997817bfbea0f09d72b001406d6eacd8db Mon Sep 17 00:00:00 2001 From: cmurialdo Date: Mon, 6 Feb 2023 19:00:25 -0300 Subject: [PATCH 3/3] Take into account output_file name for web pdf reports --- .../java/com/genexus/webpanels/GXWebReport.java | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/java/src/main/java/com/genexus/webpanels/GXWebReport.java b/java/src/main/java/com/genexus/webpanels/GXWebReport.java index 8c6465f8b..1978f2b51 100644 --- a/java/src/main/java/com/genexus/webpanels/GXWebReport.java +++ b/java/src/main/java/com/genexus/webpanels/GXWebReport.java @@ -25,6 +25,7 @@ public abstract class GXWebReport extends GXWebProcedure protected int Gx_page; protected String Gx_out = ""; // Esto est� asi porque no me pude deshacer de una comparacion contra Gx_out antes del ask. protected String filename; + protected String filetype; public GXWebReport(HttpContext httpContext) { @@ -56,6 +57,9 @@ protected void preExecute() protected void setOutputFileName(String outputFileName){ filename = outputFileName; } + protected void setOutputType(String outputType){ + filetype = outputType.toLowerCase(); + } private void initValues() { Gx_line = 0; @@ -101,8 +105,7 @@ protected boolean initPrinter(String output, int gxXPage, int gxYPage, String in { int x[] = {gxXPage}; int y[] = {gxYPage}; - String outputFileName = filename!=null ? filename : getClass().getSimpleName(); - httpContext.getResponse().addHeader("content-disposition", "inline; filename=" + outputFileName + ".pdf"); + setResponseOuputFileName(); getPrinter().GxRVSetLanguage(localUtil._language); boolean ret = getPrinter().GxPrintInit(output, x, y, iniFile, form, printer, mode, orientation, pageSize, pageLength, pageWidth, scale, copies, defSrc, quality, color, duplex); @@ -113,6 +116,12 @@ protected boolean initPrinter(String output, int gxXPage, int gxYPage, String in return ret; } + private void setResponseOuputFileName(){ + String outputFileName = filename!=null ? filename : getClass().getSimpleName(); + String outputFileType = filetype!=null ? "." + filetype.toLowerCase(): ".pdf"; + httpContext.getResponse().addHeader("content-disposition", "inline; filename=" + outputFileName + outputFileType); + } + protected void endPrinter() { getPrinter().GxEndPrinter();