Отправка PDF по электронной почте из AbstractPdfView на Java - PullRequest
0 голосов
/ 30 апреля 2019

Я использую класс AbstractPdfView для создания PDF и загрузки в браузере, но мне также нужно отправить его по электронной почте.Я знаю, что решение очень очевидно, но я застрял на этом в течение дня и не могу увидеть его.Вот что у меня есть:

@GetMapping()
public PdfView generate(Model model, @RequestParam int event) {

  model.addAttribute("event", eventService.getEventById(event));

  return new PdfView();


}

Это класс PdfView:

public class PdfView extends AbstractPdfView {

   @Override
   protected void buildPdfDocument(Map<String, Object> model, Document document, PdfWriter writer, HttpServletRequest request, HttpServletResponse response) throws Exception {

        //add the iformation for the pdf
        document.add(getInvoiceInfo());

   }
}

И это класс AbstractPdfView:

public abstract class AbstractPdfView extends AbstractView {

   public AbstractPdfView() {
      setContentType("application/pdf");
   }

   @Override
   protected boolean generatesDownloadContent() {
      return true;
   }

   @Override
   protected final void renderMergedOutputModel(Map<String, Object> model, HttpServletRequest request, HttpServletResponse response) throws Exception {

  ByteArrayOutputStream out = createTemporaryOutputStream();

  Document document = new Document(PageSize.A4.rotate(), 35, 35, 50, 36);
  PdfWriter writer = PdfWriter.getInstance(document, out);
  prepareWriter(model, writer, request);
  buildPdfMetadata(model, document, request);

  document.open();
  buildPdfDocument(model, document, writer, request, response);
  document.close();

    //i know i has to happen before this bit here but not sure how
   writeToResponse(response, out);

}

   protected void prepareWriter(Map<String, Object> model, PdfWriter writer, HttpServletRequest request) throws DocumentException {
      writer.setViewerPreferences(getViewerPreferences());
   }

   protected int getViewerPreferences() {
      return PdfWriter.ALLOW_PRINTING | PdfWriter.PageLayoutSinglePage;
   }


   protected void buildPdfMetadata(Map<String, Object> model, Document document, HttpServletRequest request) {
   }

   protected abstract void buildPdfDocument(Map<String, Object> model, Document document, PdfWriter writer,
                                            HttpServletRequest request, HttpServletResponse response) throws Exception;
}

Любая помощьприветствуется!Спасибо, ребята.

1 Ответ

0 голосов
/ 02 мая 2019

Ну, я пошел вперед и сделал это. Размещение здесь, если кто-то когда-либо сталкивался с этим Я в основном автоматически связывал emailService в реализации AbstractPdfView, вызывая конструктор абстрактного класса вместе с ним. Также здесь есть хорошая статья на эту тему: https://www.baeldung.com/spring-autowired-abstract-class

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...