利用itext导出PDF的小例子
我这边使用的jar包:
itext-2.1.7.jar
itextasian-1.5.2.jar
代码,简单的小例子,导出pdf:
PdfService.java:
package com.cy.service; import java.awt.Color;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import org.springframework.stereotype.Service;
import com.lowagie.text.Cell;
import com.lowagie.text.Chunk;
import com.lowagie.text.Document;
import com.lowagie.text.DocumentException;
import com.lowagie.text.Element;
import com.lowagie.text.Font;
import com.lowagie.text.PageSize;
import com.lowagie.text.Paragraph;
import com.lowagie.text.Phrase;
import com.lowagie.text.Rectangle;
import com.lowagie.text.pdf.BaseFont;
import com.lowagie.text.pdf.PdfPCell;
import com.lowagie.text.pdf.PdfPTable;
import com.lowagie.text.pdf.PdfWriter; @Service
public class PdfService { public static void main(String[] args) throws Exception {
//准备的参数
String specName = "基本VLAN基本VLAN基本VLAN基本VLAN基本VLAN基本VLAN基本VLAN基本VLAN基本VLAN基本VLAN基本VLAN基本VLAN基本VLAN";
String matureTitle = "成熟度:";
String matureWord = "成熟特性 受控特性 不可商用";
String descriptionTitle = "描述:";
String descriptionWord = "从便利性、渲染效果综合来看,还是用XmlWorker好些。虽然渲染效果没有达到极致,但十分有利于用户自定义模板";
String remarkTitle = "备注:";
String remarkWord = "对于美制裁中兴一事,商务部新闻发言人高峰19日在回答记者提问时再次强调";
String boardName = "CloudEngine 12800 V200R001C00";
String pathTitle = "路径";
String pathWord = "CloudEngine 12800 V200R001C00>CE12800";
String xiangqTitle = "详情";
String xiangqWord = "美方行径引起了市场对美国贸易和投资环境的普遍担忧,美方的行为表面针对中国,但最终伤害的是美国自身,不仅会使其丧失数以万计的就业机会,还会影响成百上千的美国关联企业";
String beizTitle = "备注";
String beizWord = "将会动摇国际社会对美国投资和营商环境稳定的信心。希望美方不要自作聪明,否则只会自食其果。也希望美方不要低估中方的决心,如果美方坚持通过单边主义的保护政策,不惜伤害中美两国企业利益"; String outPath = "test.pdf";
Rectangle rect = new Rectangle(PageSize.A4);
Document doc=new Document(rect);
//中文字体,解决中文不能显示问题
BaseFont bfChinese=BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED); //设置字体样式
Font textFont = new Font(bfChinese,11,Font.NORMAL); //正常
Font boldFont = new Font(bfChinese,11,Font.BOLD); //加粗
Font titleFont = new Font(bfChinese,15,Font.BOLD); //二级标题
Color grayColor = new Color(204,204,204); PdfWriter.getInstance(doc, new FileOutputStream(new File(outPath)));
doc.open();
doc.newPage(); //规格名称
// Paragraph p= new Paragraph(specName, titleFont);
// p.setAlignment(Element.ALIGN_CENTER);
// doc.add(p);
PdfPTable head = new PdfPTable(1);
head.setTotalWidth(new float[]{520}); //设置列宽
head.setLockedWidth(true); //锁定列宽
head.setSpacingBefore(10f); // 前间距
head.setSpacingAfter(10f); // 后间距
PdfPCell cell1 = new PdfPCell(new Phrase(specName, titleFont));
cell1.setBorderWidth(0);
cell1.setBackgroundColor(grayColor);
cell1.setMinimumHeight(20); //设置单元格高度
cell1.setHorizontalAlignment(Cell.ALIGN_CENTER); //设置水平居中
cell1.setVerticalAlignment(Cell.ALIGN_MIDDLE); //设置垂直居中
head.addCell(cell1);
doc.add(head); //成熟度、描述、备注
Paragraph p = new Paragraph();
Phrase ph = new Phrase();
Chunk c1 = new Chunk(matureTitle, boldFont) ;
Chunk c2 = new Chunk(matureWord, textFont) ;
ph.add(c1);
ph.add(c2);
p.add(ph);
p.setLeading(20);
doc.add(p); p = new Paragraph();
ph = new Phrase();
c1 = new Chunk(descriptionTitle, boldFont) ;
c2 = new Chunk(descriptionWord, textFont) ;
ph.add(c1);
ph.add(c2);
p.add(ph);
p.setLeading(20);
doc.add(p); p = new Paragraph();
ph = new Phrase();
c1 = new Chunk(remarkTitle, boldFont) ;
c2 = new Chunk(remarkWord, textFont) ;
ph.add(c1);
ph.add(c2);
p.add(ph);
p.setLeading(20);
doc.add(p); //创建2列的详情表格
PdfPTable table = new PdfPTable(2);
table.setSpacingBefore(20f); //table前间距
table.setTotalWidth(new float[]{ 100, 420}); //设置列宽
table.setLockedWidth(true); //锁定列宽
PdfPCell cell;
//第一行 实例名
cell = new PdfPCell(new Phrase(" ", textFont));
cell.setMinimumHeight(30); //设置单元格高度
cell.setBackgroundColor(grayColor);
table.addCell(cell);
cell = new PdfPCell(new Phrase(boardName, textFont));
cell.setBackgroundColor(grayColor);
cell.setUseAscender(true); //设置可以居中
cell.setHorizontalAlignment(Cell.ALIGN_CENTER); //设置水平居中
cell.setVerticalAlignment(Cell.ALIGN_MIDDLE); //设置垂直居中
table.addCell(cell);
//第二行 路径
cell = new PdfPCell(new Phrase(pathTitle, textFont));
cell.setMinimumHeight(40);
cell.setUseAscender(true);
cell.setHorizontalAlignment(Cell.ALIGN_CENTER);
table.addCell(cell);
cell = new PdfPCell(new Phrase(pathWord, textFont));
cell.setUseAscender(true);
cell.setHorizontalAlignment(Cell.ALIGN_CENTER);
table.addCell(cell);
//第三行 详情
cell = new PdfPCell(new Phrase(xiangqTitle, textFont));
cell.setMinimumHeight(80);
cell.setUseAscender(true);
cell.setHorizontalAlignment(Cell.ALIGN_CENTER);
table.addCell(cell);
cell = new PdfPCell(new Phrase(xiangqWord, textFont));
cell.setUseAscender(true);
cell.setHorizontalAlignment(Cell.ALIGN_CENTER);
table.addCell(cell);
//第四行 备注
cell = new PdfPCell(new Phrase(beizTitle, textFont));
cell.setMinimumHeight(120);
cell.setUseAscender(true);
cell.setHorizontalAlignment(Cell.ALIGN_CENTER);
table.addCell(cell);
cell = new PdfPCell(new Phrase(beizWord, textFont));
cell.setUseAscender(true);
cell.setHorizontalAlignment(Cell.ALIGN_CENTER);
table.addCell(cell); doc.add(table);
doc.close(); System.out.println("------------->>写出完毕");
} }
运行之后导出的效果:

利用itext导出PDF的小例子的更多相关文章
- java利用itext导出pdf
项目中有一功能是导出历史记录,可以导出pdf和excel,这里先说导出pdf.在网上查可以用那些方式导出pdf,用itext比较多广泛. 导出pdf可以使用两种方式,一是可以根据已有的pdf模板,进行 ...
- Java利用IText导出PDF(更新)
我很久以前写的还是上大学的时候写的:https://www.cnblogs.com/LUA123/p/5108007.html ,今天心血来潮决定更新一波. 看了下官网(https://itextpd ...
- 利用itext生成pdf的简单例子
一.itext简介 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文 ...
- Itext导出PDF,word,图片案例
iText导出pdf.word.图片 一.前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生 ...
- 利用FR导出PDF汉字乱码的处理
利用FR导出pdf,然后在unigui中显示,发现汉字乱码,改成gb2312,不乱码,但不自动折行,最后是改成DefaultCharSet搞定.FR版本:5.4.6 后记:有的浏览器中还是乱码,把字体 ...
- 新知识:Java 利用itext填写pdf模板并导出(昨天奋战到深夜四点,知道今天两点终于弄懂)
废话少说,不懂itext干啥用的直接去百度吧. ***************制作模板******************* 1.先用word做出界面 2.再转换成pdf格式 3.用Adobe Acr ...
- iText导出pdf、word、图片
一.前言 在企业的信息系统中,报表处理一直占比较重要的作用,本文将介绍一种生成PDF报表的Java组件--iText.通过在服务器端使用Jsp或JavaBean生成PDF报表,客户端采用超级连接显示或 ...
- (转)关于使用iText导出pdf
一.iText简介 iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库.通过iText不仅可以生成PDF或rtf的文档,而且可以将XML.Html文 ...
- iText导出PDF(图片,水印,页眉,页脚)
项目需要导出PDF,导出的内容包含图片和文本,而且图片的数量不确定,在网上百度发现大家都在用iText,在官网发现可以把html转换为PDF,但是需要收费,那就只能自己写了. 在开始之前先在网上百度了 ...
随机推荐
- P2467 [SDOI2010]地精部落 (dp+组合数)【扩展Lucas好难不会】
题目链接:传送门 题目: 题目描述 传说很久以前,大地上居住着一种神秘的生物:地精. 地精喜欢住在连绵不绝的山脉中.具体地说,一座长度为N的山脉H可分为从左到右的N段,每段有一个独一无二的高度Hi,其 ...
- Web四则混合运算
一.代码1: <%@ page language="java" contentType="text/html; charset=UTF-8" pageEn ...
- STM32F4的sct文件理解
原文地址http://blog.sina.com.cn/s/blog_898f36590100ya2l.html ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ...
- SQL Server 向数据库中创建表并添加数据
创建表,展开数据库中新建的数据库,下面有一个选项-表.在该选项上右键就可以选择-新建-表. 然后出现的界面上是需要自己填写列列名.数据类型和选择是否允许空值. 其中数据类型我是参考: http://w ...
- shell-dict-uniq-count
shell dict #!/bin/bash result_file="a" declare -A mydict :>${result_file} total=`cat $ ...
- Python——scapy模块实现tcp探测目标服务器路由轨迹
scapy模块的安装 484 yum install tcpdump graphviz ImageMagick -y 485 wget http://www.secdev.org/projects ...
- s3c2140 开发板笔记
文章目录 原理图补充说明 开机串口输出 开发板硬件配置 参考文档 工具下载 代码下载 安装交叉编译器 编译kernel 制作文件系统 配置nfs 配置smb Minimal client-only S ...
- HIDL学习笔记
一.HIDL简单介绍 HIDL是Android8.0新出的一个技能,以service和client的方式实现hal接口,目的是想使Android系统和BSP解绑,使系统升级更加方便.HIDL的使用方法 ...
- Jmeter分离登录事务的另一种方式
最近,遇到了一个困扰很多人的问题. 情景如下: 业务流程:登录一个网站,反复进行充值. 通常的做法是使用jmeter对登录和充值的接口进行反复的执行: 但是实现的方法却不能完美的贴合业务流程. 并且, ...
- amqp 和 exchange 详细解释
amqp 的 excange 字面意思是一个交换机.他的任务是吧 消息 分配给消息队列. amqp 的 exchange 有三种,分别是 Direct , fanout 和 toppic.三种. ...