aboutsummaryrefslogtreecommitdiff
path: root/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/PDFData.java
diff options
context:
space:
mode:
Diffstat (limited to 'pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/PDFData.java')
-rw-r--r--pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/PDFData.java24
1 files changed, 20 insertions, 4 deletions
diff --git a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/PDFData.java b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/PDFData.java
index bf45745d..96d02f16 100644
--- a/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/PDFData.java
+++ b/pdf-as-web/src/main/java/at/gv/egiz/pdfas/web/servlets/PDFData.java
@@ -26,6 +26,8 @@ package at.gv.egiz.pdfas.web.servlets;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.OutputStream;
+import java.nio.charset.StandardCharsets;
+import java.util.Base64;
import java.util.Iterator;
import java.util.List;
import java.util.zip.Deflater;
@@ -37,6 +39,7 @@ import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
+import at.gv.egiz.pdfas.api.processing.PdfasSignResponse;
import at.gv.egiz.pdfas.api.processing.SignedDocument;
import at.gv.egiz.pdfas.api.ws.PDFASVerificationResponse;
import at.gv.egiz.pdfas.web.config.WebConfiguration;
@@ -85,7 +88,15 @@ public class PDFData extends HttpServlet {
protected void process(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
- if (PdfAsHelper.getPdfSigningResponse(request).getSignedPdfs().isEmpty()) {
+ PdfasSignResponse resultObject = PdfAsHelper.getPdfSigningResponse(request);
+
+ if (resultObject == null) {
+ log.warn("No data for session with Id: {}", request.getSession().getId());
+ PdfAsHelper.setSessionException(request, response,
+ "No signed pdf document available.", null);
+ PdfAsHelper.gotoError(getServletContext(), request, response);
+
+ } else if (resultObject.getSignedPdfs().isEmpty()) {
log.info("No signed pdf document available.");
PdfAsHelper.setSessionException(request, response,
"No signed pdf document available.", null);
@@ -136,7 +147,7 @@ public class PDFData extends HttpServlet {
}
// build response
- response.setHeader("Content-Disposition", "inline;filename=multiple_documents.zip");
+ response.setHeader("Content-Disposition", "inline;filename=\"multiple_documents.zip\"");
response.setContentType("application/zip");
final OutputStream os = response.getOutputStream();
@@ -225,8 +236,13 @@ public class PDFData extends HttpServlet {
return;
}
}
- response.setHeader("Content-Disposition", "inline;filename="
- + PdfAsHelper.getPDFFileName(request));
+ response.setHeader("Content-Disposition", "inline;filename=\""
+ + PdfAsHelper.getPDFFileName(request) + "\"");
+
+ response.setHeader("X-FILENAME-BASE64URL",
+ Base64.getUrlEncoder().encodeToString(
+ PdfAsHelper.getPDFFileName(request).getBytes(StandardCharsets.UTF_8)));
+
final String pdfCert = signedFile.getSignerCertificate();
if (pdfCert != null) {
response.setHeader("Signer-Certificate", pdfCert);