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模板相关推荐

  1. java使用itext填充pdf模板,超简单教学,有手就行

    java使用itext填充pdf模板 1.先去建一个Word文件,设置好想要填充的地方,留好位置,设置好下划线 2.将Word另存为pdf 3.打开电脑中的Adobe Acrobat pro DC(这 ...

  2. Java生成PDF文档 iText使用PDF模板一

    最近在弄这个java生成pdf,哎,在网上查找了各种各样的学习资料,弄了几天,今天终于把这个效果简单的弄出来,所以,也把这个,我所走过的坑,作一个记录,提供接下来需要学习的人. 参考文献文档:http ...

  3. iText编辑Pdf模板

    本文讲述JAVA如何操作PDF模板生成PDF文件. 1.由Word 文档生成PDF模板 工具:Microsoft Office Word , AdobeAcrobat_2015.exe(安装好后是 A ...

  4. java 填写pdf_新知识:Java 利用itext填写pdf模板并导出(昨天奋战到深夜四点,知道今天两点终于弄懂)...

    标签: 废话少说,不懂itext干啥用的直接去百度吧. ***************制作模板******************* 1.先用word做出界面 2.再转换成pdf格式 3.用Adobe ...

  5. java 写数据到pdf模板_java利用itext填写pdf模板并导出

    1.先用word做出界面 2.再转换成pdf格式 3.用Adobe Acrobat 打开你刚刚用word转换成的pdf 会出现如下界面 下一步 点击浏览,选择刚才你转换好的pdf 下一步 4.打开后它 ...

  6. (三)、IText通过pdf模板生成pdf文件(可用做回执单等功能)

    一.首先制作一个pdf模板 先用word做出个模板界面, 文件另存为pdf格式文件 通过Adobe Acrobat DC软件打开刚刚用word转换成的pdf文件步骤:文件->创建->创建表 ...

  7. itext通过pdf模板填充数据并调用打印机打印

    使用itext5对生成的pdf模板进行编辑填充数据,一种是通过绝对定位去做,简单的可以,通用性太差,第二种是通过pdf域来填充字段,通用性很强 在使用过程中遇到的问题: 网上都是通过这种字体设置中文的 ...

  8. java使用itext填充pdf模板文字和图片,并使填充后的模板内容垂直水平居中

    一.背景 由于业务需求,我需要将程序的部分数据生成PDF报告以供下载浏览 二.实现方式 设计一个pdf模板,可以通过pdf编辑工具编辑模板.市面上支持编辑表单的pdf编辑都可以,如Adobe Acro ...

  9. Android iText向pdf模板插入数据和图片

    需求 这些日志在写App程序,有这么一个需求,就是需要生成格式统一的一个pdf文件,并向固定表格中填充数据,并且再在pdf中追加两页图片. 方案 手工设计一个pdf模板,这个具体步骤就不再赘述,可以网 ...

最新文章

  1. 2021全球抗体亲和力预测大赛来了!
  2. 独家 | 6种让Python程序变慢的坏习惯
  3. 豆瓣评分9.7,Github 9.9K Star的中文版《神经网络与深度学习》分享(附PDFPPT下载)...
  4. vue + webpack 模拟后台数据
  5. (0067)iOS开发之iOS新增类UILayoutGuide的用途
  6. Linux 增加对外开放的端口
  7. python如何统计字典里面健的数量_Python中使用Counter进行字典创建以及key数量统计的方法...
  8. AtCoder Beginner Contest 096 题解
  9. JS常用的设计模式(7)—— 外观模式
  10. python中分支结构包括哪些_Python分支结构(switch)操作简介
  11. 带你搞明白什么是缓存穿透、缓存击穿、缓存雪崩
  12. Vs2010删除空白行
  13. 移动应用ios和网页应用_如何在iOS上一次移动多个应用
  14. python读取oracle数据库性能_用python对oracle进行简单性能测试
  15. 987. 二叉树的垂序遍历
  16. GBT19056精要
  17. 常见图片格式:PNG,JPG/JPEG,BMP
  18. nginx是否存在文件类型解析漏洞(转)
  19. 机械制图与计算机绘图学习,机械制图与电脑绘图结合教学
  20. 从IT技术面试官的角度说说技术人的简历

热门文章

  1. 城市中计算机控制系统的应用,城市污水处理厂计算机控制系统
  2. DDos攻击解析(附现状和案例)
  3. 完美解决移动端video视频层级问题
  4. spring mybatis 多数据源配置 jeesite 多数据源配置
  5. 单片机程序烧录方式有几种?
  6. the storage of information of web app
  7. 身份证input输入框限制,只能输入纯数字及限制长度
  8. 树莓派python实现http请求控制海康威视摄像头转动
  9. 文献阅读笔记 # Bitcoin: A Peer-to-Peer Electronic Cash System
  10. 计算机启动bios设置程序,电脑怎样进入BIOS设置