使用iText JAR生成PDF

在很多的場合,需要使用PDF文件,有時候也要設置PDF文件的表格和文字等。

如果讓一個PDF工具類非常靈活,那么這個工具類就會很復雜;一般根據實際情況,寫幾個合適的工具類來分別實現不同要求;

需要引入第三方jar包:iText-2.1.4.jar和iTextAsian.jar

package com.daily;

import java.awt.Color;

import java.io.File;

import java.io.FileOutputStream;

import java.io.OutputStream;

import java.util.ArrayList;

import java.util.Date;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

import com.daily.EasyExcel.Content;

import com.lowagie.text.Cell;

import com.lowagie.text.Document;

import com.lowagie.text.Element;

import com.lowagie.text.Font;

import com.lowagie.text.Paragraph;

import com.lowagie.text.Phrase;

import com.lowagie.text.Table;

import com.lowagie.text.pdf.BaseFont;

import com.lowagie.text.pdf.PdfWriter;

/**

*生成pdf文件,書寫普通文字,制作表格,設置文字顏色和簡單排版等

*@author范芳銘

*/

public class EasyPdf {

privatevoid createPdfFile(String outFilename,Map model,List table)    throws Exception{

try{

OutputStream file = newFileOutputStream(new File(outFilename));

Document document = newDocument();

PdfWriter.getInstance(document,file);

document.open();

document.add(newParagraph("Hello PDF"));  //簡單文字

document.add(new Paragraph(newDate().toString()));  //簡單日期

//設置字體,表格等內容

BaseFont bfComic =BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.NOT_EMBEDDED);

Font font = newFont(bfComic, 16,Font.NORMAL);//聲明字體對象

font = newFont(bfComic,16,1,new Color(255,0,0));//設置字體

String header =(String)model.get("header");//獲取標題

Paragraph headerParagraph =new Paragraph(header,font);

headerParagraph.setAlignment(Paragraph.ALIGN_CENTER);//設置格式

document.add(headerParagraph);//添加到Document對象中

font = new Font(bfComic,10, Font.NORMAL);//聲明字體樣式

//設置PDF中表格的表頭

String title[] = {"code","名稱"};

Table t = newTable(title.length);//聲明表格對象

t.normalize();

t.setAutoFillEmptyCells(true);

t.setAlignment(Table.ALIGN_CENTER);//居中

t.setWidth(108);//設置寬度

for(int i = 0 ; i

Cell celltitle = newCell();//聲明單元格

celltitle.add(newPhrase(title[i],font));//循環加入表頭信息

celltitle.setHorizontalAlignment(Element.ALIGN_CENTER);

t.addCell(celltitle);

}

t.endHeaders();

//加入表格內容

Content content = null;

for (int i = 0; i

//得到要寫入表格的記錄

content = table.get(i);

CelloneCell = new Cell();  //聲明單元格對象

Paragraphpgdata = new Paragraph(content.getCode(),font);

oneCell.setHorizontalAlignment(Element.ALIGN_CENTER);//對齊方式

oneCell.addElement(pgdata);

t.addCell(oneCell);

CelltwoCell = new Cell();  //聲明單元格對象

twoCell.setHorizontalAlignment(Element.ALIGN_CENTER);//對齊方式

twoCell.addElement(pgdata);

t.addCell(twoCell);

}

document.add(t);

String copyright =(String)model.get("copyright");

ParagraphcopyrightParagraph = new Paragraph(copyright,font);

copyrightParagraph.setAlignment(Paragraph.ALIGN_BOTTOM);

document.add(copyrightParagraph);

document.close();

file.close();

} catch (Exception e) {

e.printStackTrace();

}

}

publicstatic void main(String[] args) throws Exception{

//初始化數據

Mapmodel = new HashMap();

//文件標題頭

model.put("header","詳細信息");

//文件版權信息

model.put("copyright","版權所有:阿飯同學的博客 http://blog.csdn.net/ffm83");

//生成表格的內容,內部類的構造有點特殊

Listcontents = new ArrayList();

contents.add(newEasyPdf().new Content("100","name100"));

contents.add(newEasyPdf().new Content("101","name101"));

contents.add(newEasyPdf().new Content("102","name102"));

longstart = System.currentTimeMillis();

EasyPdfpdf = new EasyPdf();

pdf.createPdfFile("d:/ffm83/easy.pdf",model,contents);

longend = System.currentTimeMillis();

System.out.println("生成pdf文件耗時:"+ (end - start) + "(毫秒)");

}

//一個簡單的保存簡單信息的內部類

publicclass Content {

privateString code;

private String name;

public Content(String code,String name){

this.code= code;

this.name= name;

}

publicString getCode() {

returncode;

}

publicvoid setCode(String code) {

this.code= code;

}

publicString getName() {

returnname;

}

publicvoid setName(String name) {

this.name= name;

}

}

}

java生成不可修改的pdf_好記性不如爛筆頭4-JAVA生成PDF文件相关推荐

  1. java程序设计实用教程高飞pdf_普通高等教育“计算机类专业”规划教材:Java程序设计实用教程习题集 pdf epub mobi txt 下载...

    普通高等教育"计算机类专业"规划教材:Java程序设计实用教程习题集 pdf epub mobi txt 下载 图书介绍 ☆☆☆☆☆ 高飞,赵小敏,陆佳炜 等 著 下载链接在页面底 ...

  2. Java pdf文件传输_java中pdf文件的管理(pdf文件转png文件,base64传输文件以及删除)...

    org.apache.pdfbox pdfbox 2.0.12 影像文件转为base64编码使用java自带的BASE64Encoder类 代码部分: 前端上传文件的保存: @RequestMappi ...

  3. Itext生成pdf文件,itext+Freemarker生成pdf,(中文空白解决)

    来源:https://my.oschina.net/lujianing/blog/894365 1.背景 在某些业务场景中,需要提供相关的电子凭证,比如网银/支付宝中转账的电子回单,签约的电子合同等. ...

  4. Java中实现PDF文件转二进制流

    加入相关依赖 <!-- https://mvnrepository.com/artifact/pdfbox/pdfbox --> <dependency><groupId ...

  5. 如何编辑PDF文件,怎么修改PDF中的文字

    相信大家都使用过PDF文件,那么有没有编辑过PDF文件呢,PDF文件的编辑是需要借助PDF编辑器的,PDF文件中的文字要怎么修改呢,Word文档的文字就直接编辑,而PDF文件并非这样,想知道怎么编辑吗 ...

  6. PDF文件有修改权限如何取消

    PDF文件有修改权限,就不能编辑PDF文件.不能复制PDF文件里面的内容.不能打印PDF文件,另一种说法就是PDF文件设置了编辑限制.想要取消这种限制权限都是需要正确密码支持的.如果你不知道正确密码的 ...

  7. PDF文件可以修改吗?来看看这几种方法

    PDF文件可以修改吗?你知道PDF文件的修改方法吗?PDF文件对于现在工作的我们来说,无疑是比较头痛的一种文件,难编辑性让PDF文件充满着神秘感,我们想要编辑修改PDF文件就需要使用到转换的PDF编辑 ...

  8. java在主程序修改函数输出,Java通过JNI调用CUDA

    --NG 这段时间因为工作需要,要用到在java中调用cuda程序,但是令人蛋疼的是网上这方面的资料几乎没有,所以只好我自己摸索.我的想法是通过java的JNI接口调用cuda,但是很明显正常情况下是 ...

  9. java探针之修改类字节码文件

    java探针利用了javaAgent + ASM字节码注入工具实现了动态修改类文件的功能.像skywalking和arthas都使用到了这个技术. 具体原理为: jdk1.5以后引入了javaAgen ...

最新文章

  1. 切割图形_模型教程丨切割机使用——结合实例
  2. 每日一皮:看图猜一个数据库连接池!
  3. Hibernate持久化类与主键生成策略
  4. 日服巫术online过驱动保护分析(纯工具)(工具+自写驱动)
  5. Linux项目自动化构建工具 make/Makefile
  6. 学习ActiveMQ(五):activemq的五种消息类型和三种监听器类型
  7. C# 连接SQL 连接字符串
  8. C#使用正则表达式检测数字 char 和韩文
  9. 第13届景驰-埃森哲杯广东工业大学ACM程序设计大赛--K-密码
  10. JavaScript我学之七数组
  11. 齐杰文学CMS - 关关采集器2021可用19条采集规则
  12. lsb隐写的基本方法matlab,GitHub - RGNil/RG_LSB: 利用python实现LSB隐写算法(我自己改进了LSB算法),并进行了性能分析(psnr、错误率、鲁棒性)...
  13. java rgb yuv_RGB,CMY(K),YUV,YIQ,YCbCr顏色的轉換算法(java實現)
  14. 您的计算机配置已更改,你的硬件设置已更改请重启电脑怎么回事
  15. 李飞飞:我怎样走上 AI 研究之路的?
  16. vue 父组件与子组件直接的相互传值(愚见)
  17. Android 中英文切换的实现。
  18. 嵌入式硬件基础知识汇总<附带与硬件密切相关的软件介绍>
  19. 古今中外一切有大建树者,无一不惜时如金
  20. 舆情监测意思及监测工作流程详介

热门文章

  1. HDU4699 Editor
  2. asp.net mvc 连接sqlserver数据库
  3. uc打开html文件是空的,UC浏览器中打开不出现主页的解决方法
  4. 7-2 平面向量加法 (15 分)
  5. 作为一个才刚刚开始学习java的小白 居然显示码龄3年??每天吃饭点菜成为了一个难题 然后今天简单写了一个随机菜单
  6. matlab中用polyfit、regress、nlinfit等进行详细的回归分析
  7. 【2019CSP-J普及组】T4 加工零件
  8. 【翻译】揭开HTML5的神秘面纱
  9. 平衡树(splay)学习笔记(详细,从入门到精(bao)通(ling))(持续更新)
  10. qt5应用程序打包发布和qt5的mysql驱动编译