velocity制作pdf
velocity制作PDF
Velocity 是一个基于 java 的模板引擎(templateengine). 它可以让视图的设计者在 web 页面中引用 java 代码中定义的数据对象和命令。
1.Velocity
依赖
<dependency>
<groupId>org.apache.velocity</groupId>
<artifactId>velocity</artifactId>
<version>1.7</version>
</dependency>
1. VelocityEngine
2. Context模块
Context是一个数据中心,将数据传递给模板,以提供对模板渲染所需要的变量的封装管理,相当于一个Map。
public Object put(String key, Objectvalue);
public Object get(String key);
3. mergeTemplateVelocity生成html
public static voidmain(String[] args) {VelocityEngine ve =newVelocityEngine();ve.setProperty(RuntimeConstants.RESOURCE_LOADER,"classpath");ve.setProperty("classpath.resource.loader.class", ClasspathResourceLoader.class.getName());ve.setProperty("input.encoding","UTF8");ve.setProperty("output.encoding","UTF8");ve.init();Template t = ve.getTemplate("template/show.vm");VelocityContext ctx =newVelocityContext();ctx.put("data","velocity");StringWriter sw =newStringWriter();t.merge(ctx, sw);System.out.println(sw.toString());}
<!DOCTYPE html> <html> <head><meta charset="UTF-8"><title>Title</title> </head> <body>传递的信息为$data </body> </html>
4. 生成pdf
生成html还是没有问题的,有时候需要生成pdf,这个时候需要其他的工具,最常用的是itext。
<dependency><groupId>com.lowagie</groupId><artifactId>itext</artifactId><version>2.1.7</version> </dependency>
<dependency><groupId>org.xhtmlrenderer</groupId><artifactId>flying-saucer-pdf-itext5</artifactId><version>9.0.7</version> </dependency>
iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。
Document document =newDocument(); PdfWriter writer = PdfWriter.getInstance(document,newFileOutputStream("E:/log/1234.pdf")); document.open(); document.add(newParagraph("我的名字是jingke")); document.close();
Document定义了文档的参数,Document的构造参数:
publicdocument();publicdocument(Rectangle pageSize);publicdocument(Rectangle pageSize,intmarginLeft,intmarginRight,intmarginTop,intmarginBottom);pageSize是指文档页面大小,public document();页面大小为A4,效果等同于Document(PageSize.A4)。 marginLeft、marginRight、marginTop、marginBottom分别为左、右、上、下的页边距。
OutputStream os =newFileOutputStream(outputFile); ITextRenderer renderer =newITextRenderer(); ITextFontResolver fontResolver = renderer.getFontResolver(); fontResolver.addFont(PDF_FONT_PATH, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED); String content = VelocityUtils.mergeTemplateFileToString(ResourceLoader.FILE, vmTempName, map,"utf-8", baseDir); renderer.setDocumentFromString(content); renderer.layout(); renderer.createPDF(os); os.close();
5. 图片背景问题
Html转pdf的时候,html图片背景最好配置成绝对路径。
Html转pdf对html要求很严格,根据不同的版本有不同的要求,例如有时候不能添加<title>Title</title>这个属性。
6. 字体问题
通过html生成PDF汉字不显示,可以将用到的字体库单独拿出来,
private static finalString PDF_FONT_PATH= TemplateToPdfUtils.class.getClassLoader().getResource("font/simsun.ttc").getPath();
通过fontResolver.addFont(PDF_FONT_PATH, BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);进行配置,可以配置多个字体。
velocity制作pdf相关推荐
- 用C#制作PDF文件全攻略(转)
PDF文件是目前比较流行的电子文档格式,在办公自动化(OA)等软件的开发中,经常要用到该格式,但介绍如何制作PDF格式文件的资料非常少,在网上搜来搜去,都转贴的是同一段"暴力"破解 ...
- PDF 补丁丁 (修改PDF书签;拆分、合并、制作PDF;提取图片) 0.3.0.8 正式版
PDF 补丁丁 0.3.0.8 正式版 新版本已经发布,请到博客首页下载. 软件简介 PDF补丁丁是一个用于修改PDF文件信息的工具.它具有以下功能: ■ 修改文档(带"*"号部分 ...
- iTextSharp 使用详解用C#制作PDF文件全攻略
iTextSharp 使用详解&用C#制作PDF文件全攻略 http://blog.csdn.net/gatr/article/details/278173 转载于:https://www.c ...
- 用C# itextsharp.dll制作PDF文件全攻略
StreamWriter pPDF=new StreamWriter(filePath); ArrayList xRefs=new ArrayList(); float yPos =0f; long ...
- 用C#制作PDF文件全攻略 (专至csdn)
前 言 丽水市汽车运输集团有限公司信息中心 苟安廷 PDF文件是目前比较流行的电子文档格式,在办公自动化(OA)等软件的开发中,经常要用到该格式,但介绍如何制作PDF格式文件的资料非常少,在网上搜来搜 ...
- Java制作PDF转图片小工具
背景: 前几日一位朋友突然找我帮忙将PDF转换成图片,我仗义相助,建议他使用福昕阅读器,然而他说转换需要VIP会员,老贵了.我花了半天时间寻找免费会员,结果不出所料没有找到,我一怒之下,便决定亲自动手 ...
- 【Python办公自动化】使用reportlab制作pdf报告
原文作者:我辈李想 版权声明:文章原创,转载时请务必加上原文超链接.作者信息和本声明. Python使用folium制作地图并生成png图片 第一章 folium的方法和类的介绍(思维导图) 第二章 ...
- java 制作pdf模板,Java-pdf模板制作流程-使用pdf 模板生成pdf文件
Java 使用pdf 模板生成pdf文件 --制作流程 1. 使用工具 adobe acrobat dc.word 2015 2. 使用 word 繪制一個 3*5 的表格並保存, ...
- 用C#制作PDF文件全攻略 .
前 言 http://blog.csdn.net/gatr/article/details/278173 丽水市汽车运输集团有限公司信息中心 苟安廷 PDF文件是目前比较流行的电子文档格式,在办 ...
最新文章
- Java虚拟机JVM常用的几种回收算法和垃圾回收器
- 【云炬大学生创业基础笔记】第1章第3节 什么是创业的讨论
- 使用jquery在新窗口中打开外部链接
- 两个有序数组的中位数—leetcode4
- 工作54:对ref的理解
- Dijkstra算法 最短路径
- 档案盒正面标签制作_如何制作差异化的短视频内容?
- 测试压缩ASP.NET中的ViewState
- app源码 php,PHP大型B2B2C商城源码带APP源码
- linux系统鼠标主题下载,Ubuntu Linux鼠标主题:bCircle
- 6.5一些keil编程错误总结
- vmware workstation 16 安装centos7 全记录(文字版)
- 关于开会了一点点想法
- grafana-reporter安装及配置
- mysql 5.1 limit_mysql5 limit使用表达式的问题
- 检测前目标跟踪在雷达系统中的应用(一):DBT与TBD
- 使用Mininet创建Topo
- 《JavaScript高级编程》HTML中的JavaScript
- Java中的增强for循环和break continue的使用 以及流程控制训练
- 百度Site查询接口
热门文章
- 小米手机刷android one,别羡慕小米用户了!一加8Pro成功刷入MIUI 12,附简易步骤...
- JBookMaker免费下载(能把TXT文档转化为手机即时阅读的小工具)
- ASP.NET会员管理系统
- Qt 配置Android开发环境,及.apk软件发布方法
- 超酷的模态框效果 - Nifty
- array方法之from方法
- 西门子828D系统PLC轴控制伺服刀塔应用
- ArrayList的remove()方法解读
- 通往更便宜的义肢之路——关于义肢的综述
- js商场导航思路--ivx--canvas实现导航动画效果