SVF账票的PDF文件生成
时间:2020-07-15
本文章向大家介绍SVF账票的PDF文件生成,主要包括SVF账票的PDF文件生成使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
在对日项目中,有种要把FORM内容生成PDF文件的业务。原理就是首先制作frm文件,然后动态设置值到表单对应项,最后打印成PDF。
使用SVF.jar包来开发。
1.frm文件的绘制,如下图:
每个部分类似控件,每个控件都有属性,类型于可视化编程的意思。蓝色字体是label,静态的,不可改变。红色字体的是动态的,运行时从外部读取的,程序就是要实现从其他地方读取数据显示到FORM上。
2.Java代码:首先导入SVF.JAR包。JavaBean部分,对文件路径SvfBean.java
public class SvfBean { private String frmFilePath; private String pdfFilePath; private int formMode; public String getFrmFilePath() { return frmFilePath; } public void setFrmFilePath(String frmFilePath) { this.frmFilePath = frmFilePath; } public String getPdfFilePath() { return pdfFilePath; } public void setPdfFilePath(String pdfFilePath) { this.pdfFilePath = pdfFilePath; } public int getFormMode() { return formMode; } public void setFormMode(int formMode) { this.formMode = formMode; } }
生成PDF模块SvfPDFMake.java
import java.util.*; import jp.co.fit.vfreport.Svf; import jp.co.fit.vfreport.Vrw32; public class SvfPDFMake { Vrw32 vrw = new Vrw32(); public int pdfPrint(SvfBean svfbean) { int ret = 0; vrw.VrInit(); vrw.VrSetPrinter("", "PDF"); vrw.VrSetSpoolFileName2(svfbean.getPdfFilePath()); vrw.VrSetForm(svfbean.getFrmFilePath(), svfbean.getFormMode()); HashMap<String,String> headMap = new HashMap<String,String>(); headMap.put("会社名", "xxxxxxxxx株式会社"); headMap.put("住所", "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"); headMap.put("電話番号", "xxxxxxxxxxxxxxx"); headMap.put("支払条件", "xxxxxxxxxxxxxxx"); headMap.put("納品場所", "南京"); ArrayList listList = new ArrayList(); for(int i=0;i<10;i++) { for(int j=0;j<2;j++) { HashMap listMap = new HashMap(); listMap.put("商品コード", "IPHONE"+i); listMap.put("品番", "I"+i); listMap.put("数量", i); listMap.put("単価", j); listMap.put("明細番号", "1110"+i); listMap.put("備考", "備考"+i); listList.add(listMap); } } doheadDataPrint(headMap); dolistDataPrint(listList); ret = vrw.VrPrint(); ret = vrw.VrQuit(); return ret; } public void doheadDataPrint(HashMap headMap) { Iterator iterator = headMap.keySet().iterator(); while(iterator.hasNext()) { String fieldKey = (String)iterator.next(); String fieldValue = headMap.get(fieldKey).toString(); vrw.VrsOut(fieldKey, fieldValue); } } public void dolistDataPrint(ArrayList listList) { for(int i = 0; i < listList.size(); i++) { HashMap record = (HashMap)listList.get(i); Iterator iterator = record.keySet().iterator(); while(iterator.hasNext()) { String fieldKey = (String)iterator.next(); String fieldValue = record.get(fieldKey).toString(); vrw.VrsOut(fieldKey, fieldValue); } vrw.VrEndRecord(); } } }
主函数SvfMain.java
public class SvfMain { public static void main(String[] args) { // TODO Auto-generated method stub SvfBean sBean = new SvfBean(); sBean.setFrmFilePath("e:\\test.frm"); sBean.setFormMode(5); sBean.setPdfFilePath("e:\\test.pdf"); SvfPDFMake spMake = new SvfPDFMake(); int ret = spMake.pdfPrint(sBean); System.out.println("ret value is:"+ret); } }
当ret返回一个正整数的时候,就表示PDF文件test.pdf生成成功了,可以到对应目录下面查看。
原文地址:https://www.cnblogs.com/mandy3651/p/13308492.html
- 程序员的噩梦有哪些?除了改需求,还有这些…
- UC Berkeley提出新型分布式执行框架Ray:有望取代Spark
- 卡奇话爬虫使用方法以及下载地址
- flash读取XML 背景自动适应大小
- 记录一个发邮件的cs文件
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(56)-插件---单文件上传与easyui使用fancybox
- xml-rpc(2)-first demo_v2
- xml-rpc(1)-first demo
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(55)-工作流设计-表单布局
- 网站源文件被注入了iframe代码—ARP欺骗的木马病毒攻击
- ASP.NET MVC5+EF6+EasyUI 后台管理系统--工作流演示截图
- 基于CPPN与GAN+VAE生成高分辨率图像
- ASP.NET MVC5+EF6+EasyUI 后台管理系统(54)-工作流设计-所有流程监控
- (收藏)搭建.NET Framework 3.0开发环境 及SharePoint 2007/WSS 3环境
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- keras 指定程序在某块卡上训练实例
- Python3 requests模块如何模仿浏览器及代理
- PHP中的empty、isset、isnull的区别与使用实例
- Laravel学习笔记之Artisan命令生成自定义模板的方法
- php微信扫码支付 php公众号支付
- PHP析构函数destruct与垃圾回收机制的讲解
- 关于php unset对json_encode的影响详解
- python实现二分类和多分类的ROC曲线教程
- PHP随机数函数rand()与mt_rand()的讲解
- PHP实现小程序批量通知推送
- Keras loss函数剖析
- Laravel使用scout集成elasticsearch做全文搜索的实现方法
- python3.4中清屏的处理方法
- TensorFlow Autodiff自动微分详解
- python interpolate插值实例