java-pdf-itext7、itextpdf 生成pdf 文档 定制票据打印
1、如果是收据或者其他不是A4大小的票据,首先将票据用打印机扫描成图片格式,用ps等工具裁剪成实际票据的大小备用。
2、设计一张实际票据大小的空白pdf模板,备用。
3、用Adobe 等pdf编辑工具打开上面制作的空白模板,点击编辑,在更多->背景->添加->选文件->浏览,选中步骤1制作的票据点击确定。
4、在菜单栏中选择准备表单,点击开始,保存到相应的文件夹。
5、在需要填入值的地方添加文本域,设置域名称,需要注意的一点
- 设置外观->文字大小选项中,一定设置文字大小和
字体(实际操作中,如果填入值只涉及数字不需要,如果有汉字最好设置一下,后期赋值很可能页面不显示汉字)
6、添加完文本域,选择工具,编辑->更多->背景->删除,删除背景,只留下文本域,保存成模板。
至此,itextpdf模板制作完成。下来就是往里面进行赋值,将生成的临时文件按文件流返回给前端,进行打印即可。
代码如下:
//预缴款收据@Overridepublic String queryByPdfPrint(PdfPrintVo pdfPrintVo, String templateName, String type) {//服务器地址String upFiles = uploadpath;String files = "files";String temp = "pdfPrint";//查询模板的位置 File.separator 表示路径中的\或者/String templatePath = upFiles + File.separator + files + File.separator + temp + File.separator + templateName ;if (templatePath.contains("\\")) {templatePath = templatePath.replace("\\", "/");}ElderInfo elderInfo = elderInfoService.getOne(new QueryWrapper<ElderInfo>().eq("elder_number",pdfPrintVo.getElderNumber()).orderByAsc("create_time").last("limit 1"));File file = new File(upFiles + File.separator + files + File.separator + elderInfo.getId());if (!file.exists()) {file.mkdirs();// 不存在则创建根目录}String newPDFPath = file.getPath() + File.separator + templateName;if (newPDFPath.contains("\\")) {newPDFPath = newPDFPath.replace("\\", "/");}PdfReader reader;FileOutputStream out;ByteArrayOutputStream bos;PdfStamper stamper;try {out = new FileOutputStream(newPDFPath);//输出流reader = new PdfReader(templatePath);//读取pdf模板bos = new ByteArrayOutputStream();stamper = new PdfStamper(reader, bos);//方法二:使用iTextAsian.jar中的字体BaseFont baseFont = BaseFont.createFont("STSong-Light",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);Font font = new Font(baseFont);AcroFields form = stamper.getAcroFields();java.util.Iterator<String> it = form.getFields().keySet().iterator();if (type.equals(PdfPrintConstant.TYPE1)){while (it.hasNext()) {String name = it.next().toString();String sex = it.next().toString();(StringUtils.isBlank(String.valueOf(pdfPrintVo.getEName())) ? "":String.valueOf(pdfPrintVo.getEName())));form.setField(sex, (StringUtils.isBlank(String.valueOf(pdfPrintVo.getSex())) ? "":String.valueOf(pdfPrintVo.getSex())));}}stamper.setFormFlattening(true);//如果为false那么生成的PDF文件还能编辑,一定要设为truestamper.close();Document doc = new Document();PdfCopy copy = new PdfCopy(doc, out);doc.open();doc.add(new Paragraph("解决中文问题了!",font));PdfImportedPage importPage = copy.getImportedPage(new PdfReader(bos.toByteArray()), 1);copy.addPage(importPage);doc.close();} catch (IOException e) {System.out.println(1);} catch (DocumentException e) {System.out.println(2);} catch (Exception e) {e.printStackTrace();}return newPDFPath;}
@AutoLog(value = "根据id和type,获取PDF流")@ApiOperation(value="根据id和type,获取PDF流", notes="根据id和type,获取PDF流")@RequestMapping(value = "/preview", method = RequestMethod.GET)public void getTicketPDF(@RequestParam(name="id",required=true) @ApiParam(value = "费用结算传老人id,预缴传id") String id, @RequestParam(name="type",required=true) @ApiParam(value = "1 预缴 2费用结算") String type,HttpServletRequest request, HttpServletResponse response){//获取模板数据String templateFile = null;PdfPrintVo pdfPrintVo = new PdfPrintVo();if (type.equals(PdfPrintConstant.TYPE1)){//查询预缴收款pdfPrintVo = costPayAdvanceService.listQueryByType1(id);}else {pdfPrintVo = costRetreatSettleService.queryPdfInfo(id);}if (pdfPrintVo!=null){if (type.equals(PdfPrintConstant.TYPE1)){templateFile = costPayAdvanceService.queryByPdfPrint(pdfPrintVo, PdfPrintConstant.YJSJ,type);}else if (type.equals(PdfPrintConstant.TYPE2)){templateFile = costPayAdvanceService.queryByPdfPrint(pdfPrintVo, PdfPrintConstant.JSPJ,type);}File file = new File(templateFile);if (file.exists()) {byte[] data = null;FileInputStream input=null;try {input= new FileInputStream(file);data = new byte[input.available()];input.read(data);response.getOutputStream().write(data);} catch (Exception e) {System.out.println("pdf文件处理异常:" + e);}finally{try {if(input!=null){input.close();}} catch (IOException e) {e.printStackTrace();}}}}}
java-pdf-itext7、itextpdf 生成pdf 文档 定制票据打印相关推荐
- JAVA实现模板word文档导入,Java依据word模板生成word文档之后台解析和实现及部分代码(一)...
Java根据word模板生成word文档之后台解析和实现及部分代码(一) 后台主要工作是解析XML定义的标签文件,并获取到数据集,放入到Map中,然后调用Jacob.jar中提供的相关方法来实现替换. ...
- Java使用FreeMarker自动生成Word文档(带图片和表单)
Java使用FreeMarker自动生成Word文档(带图片和表单) 1 背景 2 目标效果 3 创建Word模板 3.1 创建模板文档 3.2 转换模板文档 3.3 处理模板文档中的占位符 3.4 ...
- Java根据word模板生成word文档并转成PDF文件
1. 处理word模板 1.1 定义word模版 1.2 定义完我们的模板之后,我们要将文档保存为xml的格式 定义完我们的模板之后,我们要将文档保存为xml的格式 1.3 xml格式化 生成的xml ...
- java利用freemarker动态生成word文档及动态表格
这里写自定义目录标题 目标 准备 实现 处理模板 java实现 验证 目标 根据给定word模板,动态填充指定内容,并输出为新的word文档. 准备 1.模板: 准备一份目标格式的word文档,如:w ...
- java根据模板动态生成word文档
模板文档 首先,需要创建一个word模板,我的模板例子如下: 动态生成的文档 根据java代码动态的修改模板生成自己想要的文档,结果如下: 具体代码 代码操作如下:其中进行了文本的替换,图片的插入,以 ...
- java后台利用模板生成Word文档提供前台下载
2016.12.06更新,java后台利用Apache poi生成Excel文档提供前台下载,博客链接http://blog.csdn.net/u010251278/article/details/5 ...
- 【Java】命令行生成JavaDoc文档
编写简单的文档注释 安利 → JavaDoc文档注释详解 /*** @author BlankSpace* @version 1.0*/ public class JavaDocTest {/*** ...
- JAVA通过xml模板生成DOCX文档
准备工作: 1.xml模版,获取方式为docx文件winrar方式打开,取出document.xml 2.将内容格式化后修改需要替换的内容为freemarker标签,如下: 3.文件准备好后存放到某个 ...
- 【Java】使用模板生成word文档到服务器,并下载
前台js只需要一个方法, 1.Action:说明:dataMap是需要展示的数据, String rootPath = SaveFileUtil.FILE_PATH;此处是为了判断盘符的,win系统和 ...
- JAVA Freemarker + Word 模板 生成 Word 文档 (变量替换,数据的循环,表格数据的循环,以及图片的东替换)...
1,最近有个需求,动态生成 Word 文当并供前端下载,网上找了一下,发现基本都是用 word 生成 xml 然后用模板替换变量的方式 1.1,这种方式虽然可行,但是生成的 xml 是在是太乱了,整理 ...
最新文章
- gdoi2017总结
- 03_运算符、键盘录入、流程控制
- .NET 6 新特性 Parallel ForEachAsync
- python 数据分析找到老外最喜欢的中国美食【完整代码】
- 《SAS编程与数据挖掘商业案例》学习笔记之九
- GridView控件RowDataBound事件中获取列字段的几种途径
- 如何建立最初的三层架构[转]
- 使用Idea 配置maven
- jquery name选择器_jQuery学习(1)
- atiny_log | LiteOS 物联网操作系统中的日志打印组件使用分享
- atom n270 cpu linux,英特尔Atom Z530和Intel Pentium-M 733 那个处理能力强_intel atom z530
- kubernetes更换IP地址重新初始化master节点
- 电脑有网,microsoft edge浏览器无法上网
- JavaScript execCommand函数
- Dalvik虚拟机简介
- Linux上使用ZFS
- 面渣逆袭:Spring三十五问,四万字+五十图详解,建议收藏。
- VC++按F5出现No matching symbolic info found程序运行完直接退出
- Qt中使用Doxygen注释生成总结
- 阿尔法ct_同济CT “阿尔法狗” 5秒读结果 阅片水平已接近主治医师!
热门文章
- 由一篇作文《一件有意义的事》展开的
- php调用声卡,图文讲解美国ART USB Dual Pre声卡多种使用方法!
- 文献解读|DPP-4i治疗诱导的肠道微生物群的改变可改善葡萄糖稳态
- linux下载tftpd服务,Linux tftpd服务安装与配置
- 2021年度中国商业地产100强揭晓,排名前十位变化不大
- adb shell 命令
- SAP Script教程:SE71、SE78、SCC1、VF03、SO10-013
- 大数据可视化实验六、七:大数据可视化工具—Processing(一)(二)
- 华为光猫上线流程、注册失败、常见语音故障处理
- 【杭电5053】the Sum of Cube