使用itext创建PDF模板
1.在pom.xml文件中添加itextpdf依赖
<dependency> <groupId>com.itextpdf</groupId> <artifactId>itextpdf</artifactId> <version>5.5.10</version> </dependency> <dependency> <groupId>com.itextpdf</groupId> <artifactId>itext-asian</artifactId> <version>5.2.0</version> </dependency>
2.创建PDF模板类createPdfText
//在表格中,对单元格的边框进行隐藏和设置颜色,PdfPCell中有一个属性:Border 边框属性 (文本模式下,对于内容的对齐方式、间距、缩进使用的是单元格来属性进行控制,在组合模式下,使用对象自身的属性进行控制。) // cell = CreateCell("默认对齐", useAscender, useDescender, null, null); // cell.Border = Rectangle.RIGHT_BORDER | Rectangle.TOP_BORDER | Rectangle.BOTTOM_BORDER; //cell.UseBorderPadding = false; // cell.BorderWidthLeft = 0; //cell.BorderColorTop = BaseColor.BLUE; //cell.BorderWidthTop = 1;
public class createPdfText {
public static void main(String[] args) throws Exception
{//创建Document对象Document doc=new Document(PageSize.A4,0,0,50,0);//获得PdfWriter实例,将文档放到输出流上PdfWriter.getInstance(doc, new FileOutputStream("f:\\健康体检表模板1.pdf"));//字体设置/** 由于itext不支持中文,所以需要进行字体的设置,我这里让itext调用windows系统的中文字体,* 找到文件后,打开属性,将文件名及所在路径作为字体名即可。*///创建BaseFont对象,指明字体,编码方式,是否嵌入BaseFont bf=BaseFont.createFont("C:\\Windows\\Fonts\\simkai.ttf", BaseFont.IDENTITY_H, false);//创建Font对象,将基础字体对象,字体大小,字体风格Font font = new Font(bf,13,Font.NORMAL);Font font1 = new Font(bf,15,Font.BOLD);/** 添加7列的表格*///创建PdfTable对象PdfPTable table = new PdfPTable(50);//设置各列的列宽table.setTotalWidth(new float[]{100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100,100});//添加表格内容/* table.addCell(getPDFCell("姓名",font));table.addCell("");table.addCell(getPDFCell("性别",font));table.addCell("");table.addCell(getPDFCell("出生年月",font));table.addCell("");*/PdfPCell t1 = getPDFCell("体检日期", font);t1.setColspan(8);table.addCell(t1);PdfPCell t2 = getPDFCell(" 年 月 日", font);t2.setColspan(14);table.addCell(t2);PdfPCell t3 = getPDFCell("责任医生", font);t3.setColspan(8);table.addCell(t3);PdfPCell t4 = getPDFCell("",font);t4.setColspan(20);table.addCell(t4);PdfPCell t5 = getPDFCell("内容", font);t5.setColspan(2);table.addCell(t5);PdfPCell t6 = getPDFCell("检查项目", font);t6.setColspan(42);table.addCell(t6);PdfPCell t7 = getPDFCell("医师签名", font);t7.setColspan(6);table.addCell(t7);//添加图片/* Image img=Image.getInstance("C:\\Users\\BLT\\Pictures\\Saved Pictures\\科比\\c74dcae702ed3c6a3fce2659c7926261.jpeg",true);img.scaleAbsolute(57, 75);*//* PdfPCell cell = new PdfPCell(img);cell.setRowspan(3);table.addCell(cell);*///合并列//cell.setColspan(2);//合并行//cell.setRowspan(2);//设置文本模式和组合模式作比较,使用那个属性更加方便//设置文本模式//PdfPCell cell1 = new PdfPCell(new Paragraph("some text"));//设置组合模式//PdfPCell cell2 = new PdfPCell();//cell2.addElement(new Paragraph("some text"));//文档写入内容doc.open();Paragraph title=new Paragraph("健康体检表\n\n\n",font1);title.setAlignment(Paragraph.ALIGN_CENTER);doc.add(title);doc.add(table);doc.close();}//合并行的静态函数
public static PdfPCell mergeRow(String str,Font font,int i) {//创建单元格对象,将内容及字体传入PdfPCell cell=new PdfPCell(new Paragraph(str,font));//设置单元格内容居中cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setVerticalAlignment(Element.ALIGN_MIDDLE);//将该单元格所在列包括该单元格在内的i行单元格合并为一个单元格cell.setRowspan(i);return cell;
}//合并列的静态函数
public static PdfPCell mergeCol(String str,Font font,int i) {PdfPCell cell=new PdfPCell(new Paragraph(str,font));cell.setMinimumHeight(25);cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setVerticalAlignment(Element.ALIGN_MIDDLE);//将该单元格所在行包括该单元格在内的i列单元格合并为一个单元格cell.setColspan(i);return cell;
}//获取指定内容与字体的单元格
public static PdfPCell getPDFCell(String string, Font font)
{//创建单元格对象,将内容与字体放入段落中作为单元格内容PdfPCell cell=new PdfPCell(new Paragraph(string,font));cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setVerticalAlignment(Element.ALIGN_MIDDLE);//设置最小单元格高度cell.setMinimumHeight(25);return cell;
}
}
设置表格边框隐藏属性
//新建单元格对象 PdfPCell cell = new PdfPCell(new Phrase("test")); //隐藏上边框 // cell.disableBorderSide(1); //隐藏下边框 // cell.disableBorderSide(2); //隐藏上、下边框 //cell.disableBorderSide(3); //隐藏左边框 //cell.disableBorderSide(4); //隐藏左、上边框 //cell.disableBorderSide(5); //隐藏左、下边框 //cell.disableBorderSide(6); //隐藏左、上、下边框 //cell.disableBorderSide(7); //隐藏右边框 //cell.disableBorderSide(8); //隐藏右、上边框 // cell.disableBorderSide(9); //隐藏右、下边框 //cell.disableBorderSide(10); //隐藏右、上、下边框 //cell.disableBorderSide(11); //隐藏左、右边框 //cell.disableBorderSide(12);//左右没了 //隐藏上、左、右边框 //cell.disableBorderSide(13);//只剩下 //隐藏下、左、右边框 //cell.disableBorderSide(14);//只剩上 //隐藏全部 //cell.disableBorderSide(15);//全没了
pdf结合Adobe Acrobat DC标注显示远程图片
1.编写远程图片地址转换base64方法
public static String encodeImgageToBase64(String remark) {
ByteArrayOutputStream outputStream = null;
try {
URL url = new URL(remark);
BufferedImage bufferedImage = (BufferedImage)ImageIO.read(url);
outputStream = new ByteArrayOutputStream();
ImageIO.write(bufferedImage,“png”,outputStream);
} catch (IOException e) {
e.printStackTrace();
}
BASE64Encoder encoder = new BASE64Encoder();
String s = encoder.encode(outputStream.toByteArray());
String ss = “”;
try {
ss = new String(Base64.getMimeDecoder().decode(s.replaceAll("\r\n", “”)), “UTF-8”);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
}
return ss;
}
2.给将base64值赋值给pdf模板
String familySignImg = pdArchives.getFamilySignImg();
if(familySignImg != null && familySignImg != “”){
String familySignImgImage = encodeImgageToBase64(familySignImg);
pdArchivesPdfDto.setFamilySignImg(familySignImgImage);
}
转载:
利用itext创建PDF表格 https://www.itdaan.com/blog/2015/02/20/ef6961aa770dc89eb5034ac5641fac2a.html pdf边框隐藏 https://blog.csdn.net/cfup_less/article/details/82686426?spm=1001.2101.3001.6650.5&utm_medium=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~default-5.highlightwordscore&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2~default~CTRLIST~default-5.highlightwordscore
编写远程图片地址转换base64方法出现的问题:
1.Base64 解码decode遇到IllegalArgumentException: Illegal base64 character 20
解决:
转换base65有个别符号
new String(Base64.getMimeDecoder().decode(s.replaceAll("\r\n", “”)), “UTF-8”)
使用itext创建PDF模板相关推荐
- java使用itext填充pdf模板,超简单教学,有手就行
java使用itext填充pdf模板 1.先去建一个Word文件,设置好想要填充的地方,留好位置,设置好下划线 2.将Word另存为pdf 3.打开电脑中的Adobe Acrobat pro DC(这 ...
- Java生成PDF文档 iText使用PDF模板一
最近在弄这个java生成pdf,哎,在网上查找了各种各样的学习资料,弄了几天,今天终于把这个效果简单的弄出来,所以,也把这个,我所走过的坑,作一个记录,提供接下来需要学习的人. 参考文献文档:http ...
- iText编辑Pdf模板
本文讲述JAVA如何操作PDF模板生成PDF文件. 1.由Word 文档生成PDF模板 工具:Microsoft Office Word , AdobeAcrobat_2015.exe(安装好后是 A ...
- java 填写pdf_新知识:Java 利用itext填写pdf模板并导出(昨天奋战到深夜四点,知道今天两点终于弄懂)...
标签: 废话少说,不懂itext干啥用的直接去百度吧. ***************制作模板******************* 1.先用word做出界面 2.再转换成pdf格式 3.用Adobe ...
- java 写数据到pdf模板_java利用itext填写pdf模板并导出
1.先用word做出界面 2.再转换成pdf格式 3.用Adobe Acrobat 打开你刚刚用word转换成的pdf 会出现如下界面 下一步 点击浏览,选择刚才你转换好的pdf 下一步 4.打开后它 ...
- (三)、IText通过pdf模板生成pdf文件(可用做回执单等功能)
一.首先制作一个pdf模板 先用word做出个模板界面, 文件另存为pdf格式文件 通过Adobe Acrobat DC软件打开刚刚用word转换成的pdf文件步骤:文件->创建->创建表 ...
- itext通过pdf模板填充数据并调用打印机打印
使用itext5对生成的pdf模板进行编辑填充数据,一种是通过绝对定位去做,简单的可以,通用性太差,第二种是通过pdf域来填充字段,通用性很强 在使用过程中遇到的问题: 网上都是通过这种字体设置中文的 ...
- java使用itext填充pdf模板文字和图片,并使填充后的模板内容垂直水平居中
一.背景 由于业务需求,我需要将程序的部分数据生成PDF报告以供下载浏览 二.实现方式 设计一个pdf模板,可以通过pdf编辑工具编辑模板.市面上支持编辑表单的pdf编辑都可以,如Adobe Acro ...
- Android iText向pdf模板插入数据和图片
需求 这些日志在写App程序,有这么一个需求,就是需要生成格式统一的一个pdf文件,并向固定表格中填充数据,并且再在pdf中追加两页图片. 方案 手工设计一个pdf模板,这个具体步骤就不再赘述,可以网 ...
最新文章
- 2021全球抗体亲和力预测大赛来了!
- 独家 | 6种让Python程序变慢的坏习惯
- 豆瓣评分9.7,Github 9.9K Star的中文版《神经网络与深度学习》分享(附PDFPPT下载)...
- vue + webpack 模拟后台数据
- (0067)iOS开发之iOS新增类UILayoutGuide的用途
- Linux 增加对外开放的端口
- python如何统计字典里面健的数量_Python中使用Counter进行字典创建以及key数量统计的方法...
- AtCoder Beginner Contest 096 题解
- JS常用的设计模式(7)—— 外观模式
- python中分支结构包括哪些_Python分支结构(switch)操作简介
- 带你搞明白什么是缓存穿透、缓存击穿、缓存雪崩
- Vs2010删除空白行
- 移动应用ios和网页应用_如何在iOS上一次移动多个应用
- python读取oracle数据库性能_用python对oracle进行简单性能测试
- 987. 二叉树的垂序遍历
- GBT19056精要
- 常见图片格式:PNG,JPG/JPEG,BMP
- nginx是否存在文件类型解析漏洞(转)
- 机械制图与计算机绘图学习,机械制图与电脑绘图结合教学
- 从IT技术面试官的角度说说技术人的简历
热门文章
- 城市中计算机控制系统的应用,城市污水处理厂计算机控制系统
- DDos攻击解析(附现状和案例)
- 完美解决移动端video视频层级问题
- spring mybatis 多数据源配置 jeesite 多数据源配置
- 单片机程序烧录方式有几种?
- the storage of information of web app
- 身份证input输入框限制,只能输入纯数字及限制长度
- 树莓派python实现http请求控制海康威视摄像头转动
- 文献阅读笔记 # Bitcoin: A Peer-to-Peer Electronic Cash System
- 计算机启动bios设置程序,电脑怎样进入BIOS设置