JAVA版本的OFD板式文件创建工具easyofd.
功能包含了图像、 图像、 文字、和模版页功能。同时也支持OFD文件的数字签名及验签,电子签章及验签。
本JAVA版本的easyofd使用原生方式创建板式文件,不依赖JAVA的SWT库。
代码地址:https://github.com/11627685/easyofd-java
项目地址:http://wiki.easyofd.cn/zh/JAVA
浏览器查看OFD文件控件地址: http://www.easyofd.cn/
本章节介绍OFD文件怎么添加图片。本文以全国统一发票监制章图片为例。
首先,需要将展示的图片在公共资源库进行注册,注册后返回资源ID。有了该资源ID,就可以在其他页面page进行展示了。
注意:本文中所有的单位除特殊说明外都MM。
通过OFDocument类的getOfdCommonData()就可以获取功OFD公共资源存储的管理类。该类除了图片功能外,还有其他指定该文档页面区域的默认大小和位置、模版页序列等功能,具体见OFD标准指南-7.5.1 文档公共数据结构
样例代码如下:
- // 创建一个OFD文档
- OFDocument ofDocument = new OFDocument();
- ofDocument.getOfdCommonData().addMultiMedia(....);
Copy
该类的图片资源的注册如下,需要多媒体的主类型Type, 资源的格式Format ,资源的名称(保存的名称)name和资源的字节流信息byte[]。
public int addMultiMedia(java.lang.String Type, java.lang.String Format, java.lang.String name, byte[] bytes)
一个多媒体对象,一般为图片
参数:
Type
- 多媒体的主类型。支持 Image, Video, Audio 三种多媒体类型,eg:Image
Format
- 资源的格式。图像主类型的文件格式支持 BMP、Jpeg、TIFF及PNG,其中 TIFF 格式不支持多页 eg:PNG
name
- 指向 OFD 包内的多媒体文件的位置 eg:image_14.png
bytes
- 文件的字节
返回:
ID
样例代码如下:
- //公共资源增加图片
- File file = new File("image/123.png");
- int picID=ofDocument.getOfdCommonData().addMultiMedia( "Image","PNG" ,file.getName(),this.getFileBytes(file));
Copy
- File file=new File("path/abc.png");
- FileInputStream fis = null;
- try {
- fis = new FileInputStream(file);
- byte[] fileBytes = new byte[(int) file.length()];
- fis.read(fileBytes);
- return fileBytes;
- } finally {
- if (fis != null) {
- fis.close();
- }
- }
Copy
有了图片的资源ID后,我们就可以在页面上确定图片的展示位置CTBoundary,最后通过PAGE的addImageObject方法添加到页面中
public CTPageBlock.ImageObject addImageObject(int resID, java.lang.String filename, java.lang.String Format, CTBoundary boundary)
在页面增加图片资源
参数:
resID
- 在功能资源中的ID
filename
- 资源的名称
Format
- 资源的格式。图像主类型的文件格式支持 BMP、Jpeg、TIFF及PNG,其中 TIFF 格式不支持多页 eg:PNG
boundary
- 图片资源的展示的矩形边界
返回:
ImageObject
另请参阅:
样例代码如下:
- int picID=ofDocument.getOfdCommonData().addMultiMedia( ...);
- CTBoundary boundary= new CTBoundary(40,40,40,30);
- page.addImageObject(picID,file.getName(),"PNG",boundary);
Copy
- // 1 创建一个OFD文档
- OFDocument ofDocument = new OFDocument();
- // 2 创建一页
- OFDPage page = new OFDPage(ofDocument);
- ofDocument.addPage(page);
-
- //3 在公共资源增加图片获取ID
- File file = new File("image/123.png");
- int picID=ofDocument.getOfdCommonData().addMultiMedia( "Image","PNG" ,file.getName(),this.getFileBytes(file));
-
- //4 设置图片的开始位置、宽度和高速在页面添加图片
- CTBoundary boundary= new CTBoundary(40,40,40,30);
- page.addImageObject(picID,file.getName(),"PNG",boundary);
-
- // page2.addImageObject(picID,file.getName(),"PNG",boundary); 不同页面复用图片
- //5 保存
- OutputStream os new FileOutputStream("path/image.ofd");
- ofDocument.save(os);
Copy
OFD软件展示结果如下图: