2016-12-30 127 views
1

我有一個JSP頁面,我試圖開發新的功能來從該JSP頁面生成PDF以將其作爲附件發送給用戶。將XHTML文件中的PDF文件附加到電子郵件

我能夠將JSP轉換爲速度模板並將其作爲HTML文件發送給用戶,但是當我嘗試使用fly源lib發送PDF附件時,我得到了(無法加載PDF文檔)到該附件文件。

這裏就是我想要做的,

try { 
       MimeMessage mm = javaMailSender.createMimeMessage(); 
       MimeMessageHelper helper = new MimeMessageHelper(mm,true); 
       helper.setSentDate(new Date()); 
       helper.setSubject(subject); 
       helper.setFrom(from); 
       helper.setTo(to.trim()); 

       LOG.debug("**Getting here"); 
       Map<String, Object> model = new HashMap<>(); 
       model.put("date", new DateTool()); 

       //Get the report as html 
       String xmltoConvert = VelocityEngineUtils.mergeTemplateIntoString(velocityEngine, 
         "toConvert.xhtml", StandardCharsets.UTF_8.name(), model); 



// tring to convert xhtml to PDF 
        ByteArrayResource htmlBytes = new ByteArrayResource(xmltoConvert.getBytes(StandardCharsets.UTF_8)); 
        final ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 
        org.w3c.dom.Document document = XMLResource.load(new ByteArrayInputStream(xmltoConvert.getBytes())).getDocument(); 
        ITextRenderer renderer = new ITextRenderer(); 
        renderer.setDocument(document, null); 
        renderer.layout(); 
        renderer.createPDF(byteArrayOutputStream); 
        renderer.finishPDF(); 
        byteArrayOutputStream.close(); 
        helper.addAttachment(subject + ".pdf", htmlBytes); 
        javaMailSender.send(mm); 
       } 

能否請你幫在這裏,我在我缺少的是什麼?

回答

0

我不得不通過byteArrayOutputStream不是htmlBytes ..

helper.addAttachment(subject + ".pdf", 
           new ByteArrayResource(byteArrayOutputStream.toByteArray())); 
相關問題