ofd文件拆分合并思路探索 -- 附下载程序
前言 ofd文件拆分合并会在多个场合用到,但市面上此类工具并不多。拆分和合并虽然为两个功能,但从编程角度考虑,其处理思路有相同之处。文章就以合并为例,讲一下处理思路。作者也写了一个拆分合并小工具(加入qq群565438497 下载),欢迎使用。
程序界面如下:
具有的功能:ofd合并、ofd合并为pdf、ofd批量转pdf。

ofd合并就是将多个ofd合并到一个文件,方便阅读和归档。文档合并只考虑显示部分,非显示部分不考虑;如:大纲、元数据、附件;在合并后,就会丢失。ofd文件合并需要考虑的因素有:页,模板、签章、批注等,这些都会影响显示的内容。下面根据这几项逐步分析处理步骤。
1 ofd页处理
页中包含的id和资源均要做处理。需要处理的项如下:
- ID:ofd中的id是不允许重复的,所有的id均要重新赋值。
- Font: 指向的是字体名称
- ColorsSpace:颜色空间。
对所有表示id引用的值都要做替换,两个不同的文件可能会用到相同的id,但是其代表的含义是不同的,必须重新赋值,

2 模板处理
Page页中会有引用模板描述。

Document列出所有的模板列表

首先要对TemplateID重新编码,将模板文件信息写入新的Document中。
3 签章
SignedValue.dat值也要存入新的ofd文件中,在Seal.esl文件缺失的情况下,可以从此文件中读取印章图片。
Seal.esl为印章图片,需要写入新的ofd文件中。
StampAnnot:确定了印章在某页的位置。 PageRef需要重新赋值。

4 批注
在 Annotations文件中,PageID和FileLoc需要重新赋值。

Annotation文件内容与page内容有点类似。id需要重新赋值。

后记:ofd文件的拆分合并需要将所有的id重新编号,引用此编号的部分也要做相应调整。若完美的实现拆分合并,还是有很多逻辑需要处理。本人已初步编码实现了此功能,可以加QQ群565438497 下载程序试用。
ofd文件拆分合并思路探索 -- 附下载程序的更多相关文章
- c#实现ofd文件转图片功能 (附执行程序)
前言 ofd文件的作用就是保证信息能如实的存储.传递.显示.保证ofd文件的真实性靠的是签名:ofd 的显示需要专用软件.ofd标准是新的国家标准,应用范围远不如pdf:现有浏览器不能解析ofd.支持 ...
- php实现在线下载程序安装包功能
在线下载程序安装包可以很方便在服务器端下载各种程序安装包(Discuz!.phpwind.Dedecms.WordPress....等一些常用程序)并存储在服务器,大大减少站长上传程序安装包时间.默认 ...
- Microsemi Libero使用技巧——使用命令行模式下载程序
前言 在工程代码编译完成之后,如果需要给某个芯片下载程序时,或者是工厂量产烧录程序时,我们不需要把整个工程文件给别人,而只需要把生成的下载文件给别人,然后使用FlashPro就可以单独下载程序文件了. ...
- Microsemi Libero使用技巧——使用FlashPro单独下载程序
前言 在工程代码编译完成之后,如果需要给某个芯片下载程序时,或者是工厂量产烧录程序时,我们不需要把整个工程文件给别人,而只需要把生成的下载文件给别人,然后使用FlashPro就可以单独下载程序文件了. ...
- 大文件拆分问题的java实践(附源码)
引子 大文件拆分问题涉及到io处理.并发编程.生产者/消费者模式的理解,是一个很好的综合应用场景,为此,花点时间做一些实践,对相关的知识做一次梳理和集成,总结一些共性的处理方案和思路,以供后续工作中借 ...
- 大文件拆分方案的java实践(附源码)
引子 大文件拆分问题涉及到io处理.并发编程.生产者/消费者模式的理解,是一个很好的综合应用场景,为此,花点时间做一些实践,对相关的知识做一次梳理和集成,总结一些共性的处理方案和思路,以供后续工作中借 ...
- 一次下载多个文件的解决思路-JS
一次下载多个文件的解决思路(iframe) - Eric 真实经历 最近开发项目需要做文件下载,想想挺简单的,之前也做过,后台提供下载接口,前端使用window.location.href就行了呗.不 ...
- 用bcftools将多个vcf文件合并成一个vcf文件 或将多个vcf和合并成的vcf文件拆分成单个样本的vcf文件
1. 软件的安装 a. bcftools 的安装 b. bgzip的安装: https://blog.csdn.net/weixin_30471065/article/details/95108525 ...
- python 小程序大文件的拆分合并
1. 将大文件拆分为小文件 I 通过二进制的方式将大文件读取出来,将其拆分存,以不同的文件方式存放在一个目录下面 II 提供两种操作方式交互式和命令行模式 #! usr/bin/python # -* ...
- 网络加速手段之一,JS文件资源合并下载
有过ftp下载文件经验的人都有体验,单独下载一个100M的文件比分开下载100个1M的文件速度快很多,这是因为下载需要解析域名,建立连接等额外开销的时间,因此下载100个文件就要做100次这种额外的开 ...
随机推荐
- ubuntu16.04安装mmdetection库
一,前言 1.1,更新 pip 和 conda下载源 1.2,查看 conda 和 pip 版本 二,MMDetection 简介 三,MMDetection 安装 3.1,依赖环境 3.2,安装过程 ...
- 轻量级网络-CSPNet 论文解读
摘要 1,介绍 2,相关工作 3,改进方法 3.1,Cross Stage Partial Network 3.2,Exact Fusion Model 4,实验 4.1,实验细节 4.2,消融实验 ...
- Java常见面试真题之中级进阶
前言 本来想着给自己放松一下,刷刷博客,突然被几道面试题难倒!java反射的作用于原理?说说List,Set,Map三者的区别?Object 有哪些常用方法?大致说一下每个方法的含义?Java 创建对 ...
- NOIP2024模拟赛13:拆开未来
NOIP2024模拟赛13:拆开未来 写在前面:进制哈希的P不要用998244353会被卡!用131.注意取模为负数的情况! C-重复 一句话题意:给定字符串 \(S\), 问 \(S\) 的所有子串 ...
- 负载均衡在web系统中的应用
在日常的架构设计与开发中,常用的负载均衡算法主要分为静态和动态两类.静态负载算法以固定的频率分配任务不考虑服务器的状态信息,如轮询法.随机法等:动态负载均衡算法以服务器的实时负载状态信息来决定任务的分 ...
- 4-11.3 C++中的显式类转换
目录 static_cast 1.用来改变基本类型:一般是高精度转低精度 2.恢复void* 指针类型 const_cast 用来去除底层const(low-level const) reinterp ...
- 解决MindSpore-2.4-GPU版本的安装问题
问题背景 虽说在MindSpore-2.3之后的版本中不在正式的发行版中支持GPU硬件后端,但其实在开发分支版本中对GPU后端是有支持的: 但是在安装的过程中可能会遇到一些问题或者报错,这里复现一下我 ...
- Apache Log4j2远程命令执行漏洞复现
目录 漏洞原理 复现 漏洞修复 Apache Log4j2 是一个基于Java的日志记录工具,被广泛应用于业务系统开发,开发者可以利用该工具将程序的输入输出信息进行日志记录.Log4j2 远程代码执行 ...
- MPLS多协议标签交换
多协议标签交换 MPLS(Multiprotocol Label Switching)是一种网络协议,用于在数据包交换网络中高效地进行数据路由转发.MPLS通过引入标签(Label)来对数据包进行标识 ...
- 18号CSS学习
一.CSS简介 1.HTML局限性 只关注内容的语义. "丑" 2.CSS-网页的美容师 CSS是层叠样式表的简称,也称为CSS样式表或级联样式表. 主要用于设置HTML页面中的 ...