我使用 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) { }歡迎任何幫助!感謝你們。
1 回答

飲歌長嘯
TA貢獻1951條經驗 獲得超3個贊
好吧,我已經完成了。如果有人遇到此問題,請在此處發布。我基本上在 AbstractPdfView 的實現中自動連接 emailService,用它調用抽象類的構造函數。這里也是一個很好的閱讀主題:https ://www.baeldung.com/spring-autowired-abstract-class
添加回答
舉報
0/150
提交
取消