freemark与flying saucer生成PDF
1.导入flying saucer与freemark的包。
2.利用freemark生成html文件。
3.利用flying saucer进行pdf文件的生成。
具体方案:
参考javaeye中的大牛文章:
http://www.iteye.com/topic/509417
参考方法:
public String generateHtml() throws IOException, Exception {
String meetingId = getRequest().getParameter("meetingId");
// TODO 生成HTML
// 得到配置对象
Configuration configuration = new Configuration();
configuration.setDefaultEncoding("utf-8");
configuration.setOutputEncoding("utf-8");
// 设置生成模板加载方式(由servletcontext生成)
configuration.setServletContextForTemplateLoading(
ServletActionContext.getServletContext(), "WEB-INF/ftl");
// 生成数据模型
Map<Object, Object> root = new HashMap<Object, Object>();
// 把信息带回
getNeedMeetingInfo(root, meetingId);
// 得到模板
Template template = configuration.getTemplate("meeting.ftl");
// 创建文件夹
String uploadFoldPathStr = fileSystemService.getDocumentRoot()
+ "download" + File.separator + "pdf" + File.separator
+ this.HTML_FOLD_SUFIX + meetingId;
File uploadFoldPath = new File(uploadFoldPathStr);
if (!uploadFoldPath.exists()) {
uploadFoldPath.mkdirs();
}
// 文件保存名
Date dt = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");
String fileSaveName = sdf.format(dt) + ".html";
File afile = new File(uploadFoldPathStr + File.separator + fileSaveName);
Writer out = new BufferedWriter(new OutputStreamWriter(
new FileOutputStream(afile), "utf-8"));
try {
// 输出模板
// template.process(root, this.getResponse().getWriter());
template.process(root, out);
} catch (TemplateException e) {
e.printStackTrace();
}
// TODO生成PDF
String inputFile = uploadFoldPathStr + File.separator + fileSaveName;
String url = new File(inputFile).toURI().toURL().toString();
// 生成PDF路径
String generatorFilePath = fileSystemService.getDocumentRoot()
+ "download" + File.separator + "pdf" + File.separator
+ this.PDF_FOLD_SUFIX + meetingId;
File generatorFoldPath = new File(generatorFilePath);
if (!generatorFoldPath.exists()) {
generatorFoldPath.mkdirs();
}
fileSaveName= sdf.format(dt)+ ".pdf";
String outputFile = generatorFilePath + File.separator +fileSaveName;
OutputStream os = new FileOutputStream(outputFile);
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(url);
// 解决中文支持问题
ITextFontResolver fontResolver = renderer.getFontResolver();
fontResolver.addFont("C:/Windows/Fonts/simsun.ttc",
BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
// 解决图片的相对路径问题
renderer.getSharedContext()
.setBaseURL(
"file:/D:/Work/Demo2do/Yoda/branch/Yoda%20-%20All/conf/template/");
renderer.layout();
renderer.createPDF(os);
os.close();
// 现在开始进行下载操作
MeetingFiles meetingFiles = new MeetingFiles();
meetingFiles.setFilePath("download" + File.separator + "pdf" + File.separator
+ this.PDF_FOLD_SUFIX+ meetingId);
meetingFiles.setFileName(fileSaveName);
meetingFiles.setFileSaveName(fileSaveName);
this.getRequest().setAttribute("meetingFiles", meetingFiles);
String from = "WEB";
String documentRoot = fileSystemService.getDocumentRoot();
getRequest().setAttribute("documentRoot", documentRoot);
getRequest().setAttribute("from", from);
return SUCCESS;
}
分享到:
相关推荐
基于iText和flying saucer结合freemark生成pdf 范例 1. 使用maven构建,不含jar包,可以自行使用maven下载依赖包, 2. 使用前需要将C:/Windows/Fonts/ARIALUNI.TTF 复制到doc-render/src/test/resources/config/fonts...
基于iText 和 flying saucer结合freemark java 生成 pdf
Flying-Saucer通过html生成pdf。。。项目中已经附带了jar包,放到项目中就可以运行了。亲测了,解决了中文不显示或者样式的问题,感觉蛮实用的。网上找了很久和下载其他资源用了好多积分,如果有需要的就下载吧!!...
基于iText 和 flying saucer 结合 freemark java 生成 pdf
1.html模板+model数据,通过freemarker进行渲染,便于维护和修改 2.渲染后的html流,可通过Flying Saucer组件生成pdf文件流,或者生成pdf后再转成jpg文件流
Freemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+javaFreemarker模板生成pdf+java
itext-pdf使用freemarker模板生成pdf时,样式错乱,乱折行问题解决,重写源码
1. itextpdf(CreatePdf) 不太推荐需要在代码内部编写PDF格式,如果要使用,建议写个基类,将同一版本 或者同一类型的公共方法写入,差异化的抽象,一个模板一个子类,子类使用@Component命名,使用反射的方式获取...
freemark生成静态页面,直接导入该项目 使用JDK1.6。直接运行代码中的CreateHtmlWebSite.java, 即可在webroot下面生成MyWebSite.html静态页面。
java语言动态生成html串,通过flying saucer动态生成PDF文件;处理图片大小及坐标等信息...
Java使用freemark生成word,http://blog.csdn.net/op635915376/article/details/51644527源码
freemarker生成pdf
使用freemark模板导出pdf
2、由上述生成的html模板通过java代码生成pdf...适合人群:需要通过法务提供的word类型的合同模板,填充数据生成pdf的人。 阅读建议:按照上述操作步骤,先看README.md文档,再看other/生成html操作步骤目录下的图片。
NULL 博文链接:https://yizhaorong.iteye.com/blog/2157848
freemark与ibatis动态运用与说明,程序,源代码,文档
freemark 模板引擎 概述 教程 5分钟入门 pdf
java利用freemarker生成[参照].pdf
Freemark+struts2 Freemark Java项目Freemark生成静态页面及语法
实现FreeMark读取到json数据绑定到特定的模板