<
id
>
jeesite-repos
</
id
>
<
name
>
Jeesite Repository
</
name
>
<
url
>
http://maven.aliyun.com/nexus/content/groups/public
</
url
>
</
repository
>
<
repository
>
<
id
>
itext
</
id
>
<
name
>
iText Repository - releases
</
name
>
<
url
>
https://repo.itextsupport.com/releases
</
url
>
</
repository
>
</
repositories
>
<
dependency
>
<
groupId
>
com.itextpdf
</
groupId
>
<
artifactId
>
itext7-core
</
artifactId
>
<
version
>
7.0.4
</
version
>
<
type
>
pom
</
type
>
</
dependency
>
<
dependency
>
<
groupId
>
com.itextpdf
</
groupId
>
<
artifactId
>
cleanup
</
artifactId
>
<
version
>
1.0.2
</
version
>
</
dependency
>
<
dependency
>
<
groupId
>
com.itextpdf
</
groupId
>
<
artifactId
>
typography
</
artifactId
>
<
version
>
1.0.2
</
version
>
</
dependency
>
<
dependency
>
<
groupId
>
com.itextpdf
</
groupId
>
<
artifactId
>
zugferd
</
artifactId
>
<
version
>
1.0.1
</
version
>
</
dependency
>
<
dependency
>
<
groupId
>
com.itextpdf
</
groupId
>
<
artifactId
>
html2pdf
</
artifactId
>
<
version
>
1.0.1
</
version
>
</
dependency
>
<
dependency
>
<
groupId
>
com.itextpdf
</
groupId
>
<
artifactId
>
pdfxfa
</
artifactId
>
<
version
>
1.0.1
</
version
>
</
dependency
>
<
dependency
>
<
groupId
>
com.itextpdf
</
groupId
>
<
artifactId
>
itext-licensekey
</
artifactId
>
<
version
>
2.0.4
</
version
>
</
dependency
>
2.代码部分:
直接上代码,不懂直接看注释就好,有问题可以留言讨论区,小树会在第一时间回复。
public void createPDF(Map<String,List<HomeAcidEvent>> cc,String batch) throws Exception {
String dest=ContextLoader.getCurrentWebApplicationContext().getServletContext().getRealPath("/static/images/")+"Report.pdf";
String coverImage=ContextLoader.getCurrentWebApplicationContext().getServletContext().getRealPath("/static/images/")+"cover.jpg";
String[] IMAGES = {
ContextLoader.getCurrentWebApplicationContext().getServletContext().getRealPath("/static/images/")+"image1.png",
ContextLoader.getCurrentWebApplicationContext().getServletContext().getRealPath("/static/images/")+"image2.png",
ContextLoader.getCurrentWebApplicationContext().getServletContext().getRealPath("/static/images/")+"image3.png",
ContextLoader.getCurrentWebApplicationContext().getServletContext().getRealPath("/static/images/")+"image4.png",
ContextLoader.getCurrentWebApplicationContext().getServletContext().getRealPath("/static/images/")+"image5.png",
ContextLoader.getCurrentWebApplicationContext().getServletContext().getRealPath("/static/images/")+"image6.png",
ContextLoader.getCurrentWebApplicationContext().getServletContext().getRealPath("/static/images/")+"image7.png",
ContextLoader.getCurrentWebApplicationContext().getServletContext().getRealPath("/static/images/")+"image8.png"
Image image = new Image(ImageDataFactory.create(IMAGES[0]));
PdfDocument pdfDoc = new PdfDocument(new PdfWriter(dest));
Document doc = new Document(pdfDoc, new PageSize(image.getImageWidth()+100, image.getImageHeight()+600));
Image cover = new Image(ImageDataFactory.create(coverImage));
pdfDoc.addNewPage(new PageSize(image.getImageWidth()+100, image.getImageHeight()+600));
image.setFixedPosition(1, 0, 0);
doc.add(cover);
doc.setMargins(70, 50, 0, 50);
PdfFont bold = PdfFontFactory.createFont("STSongStd-Light", "UniGB-UCS2-H", false);
SimpleDateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
String current = df.format(Calendar.getInstance().getTime());
Paragraph p1 =new Paragraph("报表生成时间:"+current);
p1.setFixedPosition(1, 130, 530, 500);
p1.setFont(bold);
p1.setFontSize(18);
doc.add(p1);
for (int i = 0; i < IMAGES.length; i++) {
image = new Image(ImageDataFactory.create(IMAGES[i]));
pdfDoc.addNewPage(new PageSize(image.getImageWidth()+100, image.getImageHeight()+600));
image.setFixedPosition(i + 2, 70, 550);
doc.add(image);
doc.setMargins(20, 50, 20, 50);
Table table = new Table(new float[]{1, 1, 1});
table.setWidthPercent(100);
table.setFixedPosition(i+2, 35, 50, table.getWidth());
List<HomeAcidEvent> list;
if(i==0) {
list=cc.get("ImJson");
createTable(list,table, bold, true);
createTable(list,table,bold, false);
if(i==1) {
list=cc.get("WeiboJson");
createTable(list,table, bold, true);
createTable(list,table,bold, false);
if(i==2) {
list=cc.get("DownloadJson");
createTable(list,table, bold, true);
createTable(list,table,bold, false);
if(i==3) {
list=cc.get("JobJson");
createTable(list,table, bold, true);
createTable(list,table,bold, false);
if(i==4) {
list=cc.get("VideoJson");
createTable(list,table, bold, true);
createTable(list,table,bold, false);
if(i==5) {
list=cc.get("ShoppingJson");
createTable(list,table, bold, true);
createTable(list,table,bold, false);
if(i==6) {
list=cc.get("GammingJson");
createTable(list,table, bold, true);
createTable(list,table,bold, false);
if(i==7) {
list=cc.get("StockJson");
createTable(list,table, bold, true);
createTable(list,table,bold, false);
doc.add(table);
doc.close();
private String getBatchTime(String batch) {
String batchTime=null;
if(batch!=null){
if(batch.equals("week")){
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, -7);
batchTime= new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
}else if(batch.equals("month")){
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -1);
batchTime= new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
}else if(batch.equals("quarter")){
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -3);
batchTime= new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
}else if(batch.equals("halfYear")){
Calendar c = Calendar.getInstance();
c.add(Calendar.MONTH, -6);
batchTime= new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
}else if(batch.equals("year")){
Calendar c = Calendar.getInstance();
c.add(Calendar.YEAR, -1);
batchTime= new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
}else{
Calendar c = Calendar.getInstance();
c.add(Calendar.DATE, -7);
batchTime= new SimpleDateFormat("yyyy-MM-dd").format(c.getTime());
return batchTime;
public void createTable(List<HomeAcidEvent> list,Table table,PdfFont font, boolean isHeader) {
if (isHeader) {
table.addHeaderCell(
new Cell().add(
new Paragraph("用户名").setFont(font)));
table.addHeaderCell(
new Cell().add(
new Paragraph("次数").setFont(font)));
table.addHeaderCell(
new Cell().add(
new Paragraph("比例 (%)").setFont(font)));
} else {
int countAll=0;
for(int j=0;j<list.size();j++) {
countAll+=list.get(j).getCount();
for(int i=0;i<list.size();i++) {
String username=list.get(i).getUsername();
if(list.get(i).getUsername()==null||list.get(i).getUsername()=="") {
username="未知";
table.addHeaderCell(
new Cell().add(
new Paragraph(username).setFont(font)));
table.addHeaderCell(
new Cell().add(
new Paragraph(String.valueOf(list.get(i).getCount())).setFont(font)));
float num= ((float)((float)list.get(i).getCount()/countAll)*100);
DecimalFormat df = new DecimalFormat("0.00");
String string = df.format(num);
table.addHeaderCell(
new Cell().add(
new Paragraph(string).setFont(font)));
参考资料链接:
iText框架官方网站
iText官方pom.xml配置
iText参考示例1
iText参考示例2
iText参考说明
在这一章中,我们通过添加BlockElement和Image对象添加到RootElement实例的方式来创建PDF文档。RootElement是拥有两个子类的抽象类:Document和Canvas:
Document是创建自定义PDF的时候默认的根元素。由它来管理很多高等级(high-level)的操作例如设置页面大小和旋转角度,添加元素和添加文本.........
iText 7 Core可以被Java或.NET(C#)对PDF文档进行编程。
iText是一个通用的、可编程的和企业级的PDF解决方案,允许你将其功能嵌入到你自己的软件中,以实现数字化转型。
iText 7 Core以开放源码(AGPL)以及商业许可的形式提供。
虽然是开源但是也不代表完全免费,详情可搜索“AGPL协议”。
iText 7 Core (open source)
pdf2Data* (closed source)
pdfCalligraph (closed so
我是itext中的新手,我使用的是7.1.4版,并获得了试用许可证密钥版本3.0.0和排版版本2.0.2 .public ByteArrayInputStream pdfReport()throws MalformedURLException, IOException, DocumentException, SurveyException {LicenseKey.loadLicenseFile("...
和将该文件转换为 PDF。当您查阅类 的 API 文档时,您会发现这些方法的更多变体。在下一章中,我们将选择其中一种方法来转换不同的 HTML 文件。这些 HTML 文件中的每一个都将以不同的方式使用 CSS。
这个问题我在网上搜了很久,没有找到什么解决方案,需求其实很简单,就是添加背景图片。
在解决这个问题之前,我们需要了解什么是背景图片?背景图片就是位于文档最底层的图片,文字和其他内容可以浮在它的上面。这又分为两种情况,一是局部的背景图片,一是全局的背景图片。局部的背景图片一般很少遇到,这里我要加的是整体上的一个背景图片。它往往是一些单纯的颜色图片,跟网页的背景图片一样。
所以怎么做?我突发奇想,...
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.ArrayList;
import java.util.L...
iText简介与前期准备:iText是著名的开放源码的站点sourceforge一个项目,是用于生成PDF文档的一个java类库。通过iText不仅可以生成PDF或rtf的文档,而且可以将XML、Html文件转化为PDF文件。相关网站: 链接说明iText的官方主页http://www.lowagie.com/iT
对PDF中敏感信息脱敏操作,比如将银行电子回执单内的收款账号、付款账号进行脱敏替换。
支持如下银行网商银行、平安银行、光大银行、招商银行、民生银行、天津金城银行、建设银行、广发网上银行、中国建设银行
......