OFD开发系列(一) |
您所在的位置:网站首页 › ofd 文档 › OFD开发系列(一) |
一、OFD前言
OFD文档目前在国内如雨后春笋般出现,这要归功于OFD本身巧妙的版式设计、友好的国标文档《GBT_33190-2016_电子文件存储与交换格式版式文档》和各大开源作者的贡献。目前参与到该版式文档的,除了数科、福析等商业公司之外,还有很多个人开发者的项目值得学习研究,例如:ofdrw、iofd、ofd.js等。OFD应用广泛,目前在税局发票和电子合同应用较多。在可预见的未来,OFD将成为比肩PDF的文档标准。OFD基于xml语言描述,有一定的层级结构,最后打包成zip,扩展名为.ofd,可以直接使用7z进行解压缩,详细描述参考上文提到的国标文档。 二、功能特性 目前PDF支持的业务功能大体有如下几个部分:表单填充,水印填充,签章验章,文档生成,文档修改,文档阅读等。其中,OFD同样支持这些特性,另外,OFD支持附件,目录,大纲,模板,版本等更有意思的特性。本系列文章将对这些特性和功能进行解读和开发。文章基于ofdrw开源软件,git地址:https://github.com/Trisia/ofdrw。 三、本期看点 本期首先对水印填充进行介绍和开发。水印,在OFD里属于注释的一部分,注释有很多种类型,其中一种就是水印,该部分位于《GBT_33190-2016_电子文件存储与交换格式版式文档》第15.1章节,感兴趣的读者可以下载该标准文档进行更详细的了解和学习。 四、代码开发
4.1、引入ofdrw 首先引入ofdrw到maven项目,ofdrw只依赖commons-io包,如下: junit junit 4.12 provided commons-io commons-io 2.6 provided org.ofdrw ofdrw-full 1.6.44.2、编写代码 此处代码注意有输入路径和输出路径,我们使用try-with-resource的方式进行编码,使用OFDReader类对文档进行读取,使用OFDDoc类对文档进行修改,同时使用Annotation添加注释,通过OFDDoc把注释添加到对应的页面。代码如下: /** * 水印处理 */ @Test public void addWatermark() throws IOException { Path srcP = Paths.get("src/main/resources", "x.ofd"); Path outP = Paths.get("target/AddWatermarkAnnot.ofd"); Path imgPath = Paths.get("src/test/resources", "eg_tulip.jpg"); try (OFDReader reader = new OFDReader(srcP); OFDDoc ofdDoc = new OFDDoc(reader, outP)) { Double width = ofdDoc.getPageLayout().getWidth(); Double height = ofdDoc.getPageLayout().getHeight(); Annotation annotation = new Annotation(new ST_Box(0d, 0d, width, height), AnnotType.Watermark, ctx -> { FontSetting setting = new FontSetting(8, FontName.SimSun.font()); ctx.setFillColor(170, 160, 165) .setFont(setting) .setGlobalAlpha(0.4); //对ofd页面填充8行8列的水印,并顺时针旋转45° for (int i = 0; i |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |