java 操作pdf模板(向指定域添加文本内容和图片)
来源:互联网 发布:linux怎么发送arp请求 编辑:程序博客网 时间:2024/05/17 01:08
项目需求涉及到操作pdf模板,根据生成好的模板向里面填充数据
用到的jar包是iText-5.0.6.jar 和iTextAsian.jar
上代码:
public static void main(String[] args){try{String TemplatePDF = "e:/F-3.pdf"; //魔板路径String outFile = "e:/test.pdf"; //生成新的pdf的路径PdfReader reader = new PdfReader(TemplatePDF);PdfStamper ps = new PdfStamper(reader, new FileOutputStream(outFile)); // 生成的输出流AcroFields s = ps.getAcroFields();// 插入文字insertText(ps, s);// 插入图片insertImage(ps, s);ps.close();reader.close();}catch (Exception e){e.printStackTrace();} }/*** 插入图片* * @param ps* @param s* @author WangMeng* @date 2016年6月16日*/public static void insertImage(PdfStamper ps, AcroFields s){try{List<AcroFields.FieldPosition> list = s.getFieldPositions("QR_CODE");Rectangle signRect = list.get(0).position;Image image = Image.getInstance("e:/pdf.jpg");PdfContentByte under = ps.getOverContent(2);float x = signRect.getLeft();float y = signRect.getBottom();System.out.println(x);System.out.println(y);image.setAbsolutePosition(x, y);image.scaleToFit(signRect.getWidth(), signRect.getHeight());under.addImage(image);}catch (Exception e){// TODO Auto-generated catch blocke.printStackTrace();}}/*** 创建Chunk* * @return* @author WangMeng* @date 2016年6月16日*/public static Chunk CreateChunk(){BaseFont bfChinese;Chunk chunk = null;try{bfChinese = BaseFont.createFont("STSong-Light", "UniGB-UCS2-H", BaseFont.EMBEDDED);Font fontChinese = new Font(bfChinese, 10 * 4 / 3);chunk = new Chunk("张三", fontChinese);}catch (Exception e){e.printStackTrace();}return chunk;}/*** 插入文本* * @return* @author WangMeng* @date 2016年6月16日*/public static void insertText(PdfStamper ps, AcroFields s){List<AcroFields.FieldPosition> list = s.getFieldPositions("CONNECT_NAME");Rectangle rect = list.get(0).position;PdfContentByte cb = ps.getOverContent(1);PdfPTable table = new PdfPTable(1);float tatalWidth = rect.getRight() - rect.getLeft() - 1;table.setTotalWidth(tatalWidth);PdfPCell cell = new PdfPCell(new Phrase(CreateChunk()));cell.setFixedHeight(rect.getTop() - rect.getBottom() - 1);cell.setBorderWidth(0);cell.setVerticalAlignment(Element.ALIGN_MIDDLE);cell.setHorizontalAlignment(Element.ALIGN_CENTER);cell.setLeading(0, (float) 1.1);table.addCell(cell);table.writeSelectedRows(0, -1, rect.getLeft(), rect.getTop(), cb);}
注意:主要思路是:因为直接向域中插入文本和图片没有直接的方法(也许有,但是我可能没有找到),采用的是获取域的位置,在指定位置上插入表格或者图片
0 1
- java 操作pdf模板(向指定域添加文本内容和图片)
- 创建PDF模板,java添加内容、导出下载PDF
- 创建PDF模板,java添加内容、导出下载PDF
- 创建PDF模板,java添加内容、导出下载PDF
- java导出word、pdf之添加页眉----页眉(指定格式,包括图片和文字)
- java在pdf模板的指定位置插入图片
- java/poi读取word,并替换word中的文本内容,向word中插入图片的操作
- java/poi读取word,并替换word中的文本内容,向word中插入图片的操作
- C#操作Word总结(二)——设置文档格式并添加文本内容、超链接、添加图片
- [Java] 利用xpdf库获取pdf文件的指定范围文本内容
- [Java] 利用xpdf库获取pdf文件的指定范围文本内容
- [Java] 利用xpdf库获取pdf文件的指定范围文本内容
- [Java] 利用xpdf库获取pdf文件的指定范围文本内容
- java读取pdf文件的图片和文字内容
- Java向文本指定行插入值
- 使用免费组件给PDF文档添加文本和图片页眉
- 如何编辑pdf文件并添加文本内容
- java操作office和pdf文件:读取word,excel和pdf文档内容
- size_t和size_type
- mysql中修改表字段名/字段长度/字段类型详解
- MyBatis进阶(一)—映射
- SIP初步
- spring学习之@ModelAttribute运用详解
- java 操作pdf模板(向指定域添加文本内容和图片)
- Android Guide
- MYSQL中常用数据类型介绍
- Dutch national flag problem
- ButterKnife详解
- 19. Remove Nth Node From End of List [easy] (Python)
- ssh环境搭建(2)-config篇(spring4.2.6+struts2.5+hibernate5.1 )
- Fragment中setUserVisibleHint 方法调用问题
- Apache和Tomcat之间请求处理