• ofd文件拆分合并思路探索 -- 附下载程序


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

    程序界面如下:

    具有的功能: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群618168615下载程序试用。

    专注C#、C++。擅长WPF、WinForm、QT等技术。 研究ofd多年,开发了一些列产品。 技术交流QQ群:618168615。
  • 相关阅读:
    Redhat6 —— Yum详解
    jQuery——bind绑定多事件用法
    织梦之路——织梦自由列表页分页链接绝对路径化(SEO)
    PHP算法——等宽等像素值截取字符串
    PHP算法——文件大小排序(KB、MB、GB、TB)
    HDU 3647 Tetris
    HDU 2442 Bricks
    ZOJ 2112 Dynamic Rankings
    HDU 3001 Travelling
    HDU 3559 Frost Chain
  • 原文地址:https://www.cnblogs.com/yuanchenhui/p/15402579.html
Copyright © 2020-2023  润新知