2016-12-30 1 views
1

У меня есть страница JSP, и я пытаюсь разработать новые функции для создания PDF-страницы с этой страницы JSP, чтобы отправить ее как приложение для пользователей.Приложите файл PDF из файла XHTML на адрес электронной почты

Я смог скрыть JSP до шаблона скорости и отправить его в виде HTML-файла пользователям, но когда я пытаюсь использовать источник fly fly для отправки вложения 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()));