diff --git a/lib/itextpdf-5.5.13.4.jar b/lib/itextpdf-5.5.13.4.jar
new file mode 100644
index 0000000..2846692
Binary files /dev/null and b/lib/itextpdf-5.5.13.4.jar differ
diff --git a/resources/WEB-INF/jsp/profile.jsp b/resources/WEB-INF/jsp/profile.jsp
index c86abfb..f3a1f0f 100644
--- a/resources/WEB-INF/jsp/profile.jsp
+++ b/resources/WEB-INF/jsp/profile.jsp
@@ -45,10 +45,10 @@
${wordBundle.getWord("photo")} |
-
+
+
-
-
+
|
@@ -56,10 +56,13 @@
diff --git a/src/ru/charm/back/controller/ProfileController.java b/src/ru/charm/back/controller/ProfileController.java
index 9999bb6..f6f2bed 100644
--- a/src/ru/charm/back/controller/ProfileController.java
+++ b/src/ru/charm/back/controller/ProfileController.java
@@ -1,5 +1,9 @@
package ru.charm.back.controller;
+import com.itextpdf.text.Document;
+import com.itextpdf.text.DocumentException;
+import com.itextpdf.text.pdf.PdfPTable;
+import com.itextpdf.text.pdf.PdfWriter;
import jakarta.servlet.ServletException;
import jakarta.servlet.annotation.MultipartConfig;
import jakarta.servlet.annotation.WebServlet;
@@ -12,11 +16,12 @@ import ru.charm.back.mapper.RequestToProfileUpdateDtoMapper;
import ru.charm.back.service.ProfileService;
import java.io.IOException;
+import java.io.OutputStream;
import java.util.Optional;
import static jakarta.servlet.http.HttpServletResponse.SC_NOT_FOUND;
-@WebServlet("/profile")
+@WebServlet("/profile/*")
@MultipartConfig
public class ProfileController extends HttpServlet {
private final ProfileService service = ProfileService.getInstance();
@@ -26,22 +31,43 @@ public class ProfileController extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
String sId = req.getParameter("id");
- String forwardUri = null;
if (sId != null) {
Optional optProfileDto = service.findById(Long.parseLong(sId));
- System.out.println("Optional profile" + optProfileDto.toString());
if (optProfileDto.isPresent()) {
- req.setAttribute("profile", optProfileDto.get());
- forwardUri = "/WEB-INF/jsp/profile.jsp";
+ ProfileGetDto profileGetDto = optProfileDto.get();
+ if (req.getRequestURI().equals("/profile/pdf")) {
+ resp.setHeader("Content-Disposition", "attachment; filename=\"profile.pdf\"");
+ resp.setContentType("application/pdf");
+ resp.setCharacterEncoding("UTF-8");
+
+ try(OutputStream os = resp.getOutputStream()) {
+ Document document = new Document();
+ PdfWriter.getInstance(document, os);
+
+ document.open();
+ PdfPTable table = new PdfPTable(2);
+ table.addCell("Email");
+ table.addCell(profileGetDto.getEmail());
+ table.addCell("Name");
+ table.addCell(profileGetDto.getName());
+ table.addCell("Surname");
+ table.addCell(profileGetDto.getSurname());
+ document.add(table);
+ document.close();
+
+ } catch (DocumentException e) {
+ throw new IOException(e);
+ }
+ } else {
+ req.setAttribute("profile", profileGetDto);
+ req.getRequestDispatcher("/WEB-INF/jsp/profile.jsp").forward(req, resp);
+ }
+ } else {
+ resp.sendError(SC_NOT_FOUND);
}
} else {
req.setAttribute("profiles", service.findAll());
- forwardUri = "/WEB-INF/jsp/profiles.jsp";
- }
- if (forwardUri == null) {
- resp.sendError(SC_NOT_FOUND);
- } else {
- req.getRequestDispatcher(forwardUri).forward(req, resp);
+ req.getRequestDispatcher("/WEB-INF/jsp/profiles.jsp").forward(req, resp);
}
}