Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 将XHTML文件中的PDF文件附加到电子邮件_Java_Pdf - Fatal编程技术网

Java 将XHTML文件中的PDF文件附加到电子邮件

Java 将XHTML文件中的PDF文件附加到电子邮件,java,pdf,Java,Pdf,我有一个JSP页面,我正在尝试开发新的功能,从该JSP页面生成PDF,并将其作为附件发送给用户 我能够将JSP转换为velocity模板,并将其作为HTML文件发送给用户,但当我尝试使用fly source lib发送PDF附件时,我得到(无法加载PDF文档)该附件文件 这就是我想做的 try { MimeMessage mm = javaMailSender.createMimeMessage(); MimeMessageHelp

我有一个JSP页面,我正在尝试开发新的功能,从该JSP页面生成PDF,并将其作为附件发送给用户

我能够将JSP转换为velocity模板,并将其作为HTML文件发送给用户,但当我尝试使用fly source 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);
                } 
试试看{
MimeMessage mm=javamailssender.createMimeMessage();
mimessagehelper=新的mimessagehelper(mm,true);
setEntDate(新日期());
helper.setSubject(subject);
helper.setFrom(from);
setTo(to.trim());
LOG.debug(“**到达这里”);
映射模型=新的HashMap();
model.put(“date”,new DateTool());
//以html格式获取报告
字符串xmltoConvert=VelocityEngineUtils.mergeTemplateIntoString(velocityEngine,
“toConvert.xhtml”,标准字符集.UTF_8.name(),模型);
//尝试将xhtml转换为PDF
ByteArrayResource htmlBytes=新的ByteArrayResource(xmltoConvert.getBytes(StandardCharsets.UTF_8));
final ByteArrayOutputStream ByteArrayOutputStream=新建ByteArrayOutputStream();
org.w3c.dom.Document Document=XMLResource.load(新的ByteArrayInputStream(xmltoConvert.getBytes()).getDocument();
ITextRenderer=newitextrenderer();
renderer.setDocument(document,null);
layout();
createPDF(byteArrayOutputStream);
finishPDF();
byteArrayOutputStream.close();
helper.addAttachment(主题+“.pdf”,HTML字节);
javamailssender.send(mm);
} 

你能帮我一下吗,我错过了什么?

我必须通过byteArrayOutputStream而不是htmlBytes

 helper.addAttachment(subject + ".pdf",
                                new ByteArrayResource(byteArrayOutputStream.toByteArray()));

我必须通过byteArrayOutputStream而不是htmlBytes

 helper.addAttachment(subject + ".pdf",
                                new ByteArrayResource(byteArrayOutputStream.toByteArray()));