Class OFDDoc

java.lang.Object
org.ofdrw.layout.OFDDoc
All Implemented Interfaces:
Closeable, AutoCloseable

public class OFDDoc extends Object implements Closeable
Virtual Document 虚拟文档对象

Document 区别

使用API的方式构造OFD文档,并打包为OFD文件。

Since:
2020-3-17 20:13:51
Author:
权观宇
  • Constructor Details

    • OFDDoc

      public OFDDoc(Path outPath)
      在指定路径位置上创建一个OFD文件
      Parameters:
      outPath - OFD输出路径
    • OFDDoc

      public OFDDoc(OutputStream outStream)
      在指定路径位置上创建一个OFD文件
      Parameters:
      outStream - OFD输出流,由调用者负责关闭。
    • OFDDoc

      public OFDDoc(OFDReader reader, Path outPath) throws DocReadException
      修改一个OFD文档
      Parameters:
      reader - OFD解析器
      outPath - 修改后文档生成位置
      Throws:
      DocReadException - 文档读取异常
    • OFDDoc

      public OFDDoc(OFDReader reader, OutputStream outStream) throws DocReadException
      修改一个OFD文档
      Parameters:
      reader - OFD解析器
      outStream - 修改后文档输出流
      Throws:
      DocReadException - 文档读取异常
  • Method Details

    • setDefaultPageLayout

      public OFDDoc setDefaultPageLayout(PageLayout pageLayout)
      设置页面默认的样式
      Parameters:
      pageLayout - 页面默认样式
      Returns:
      this
    • add

      public OFDDoc add(Div item)
      向文档中加入元素

      适合于流式布局

      Parameters:
      item - 元素
      Returns:
      this
    • addVPage

      public OFDDoc addVPage(VirtualPage virtualPage)
      向文档中加入虚拟页面

      适合于固定布局

      Parameters:
      virtualPage - 虚拟页面
      Returns:
      this
    • addStreamCollect

      public OFDDoc addStreamCollect(StreamCollect streamCollect)
      向文档中加入虚拟页面

      适合编辑时,添加流式的内容

      Parameters:
      streamCollect - 流式页面
      Returns:
      this
    • getAVPage

      public AdditionVPage getAVPage(int pageNum)
      获取指定页面追加页面对象

      并且追加到虚拟页面列表中

      Parameters:
      pageNum - 页码,从1起。
      Returns:
      追加页面对象
    • addAnnotation

      public OFDDoc addAnnotation(int pageNum, Annotation annotation) throws IOException
      向页面中增加注释对象
      Parameters:
      pageNum - 页码
      annotation - 注释对象
      Returns:
      this
      Throws:
      IOException - 文件操作异常
      RenderException - 渲染异常
    • getPageLayout

      public PageLayout getPageLayout()
      获取页面样式(只读)

      如果需要重新设置默认的页面样式那么请使用 setDefaultPageLayout(PageLayout)

      Returns:
      页面样式(只读)
    • addAttachment

      public OFDDoc addAttachment(Attachment attachment) throws IOException
      向文档中添加附件文件

      如果名称相同原有附件将会被替换,附件文件将被放置于文档的默认资源目录下"/Doc_0/Res/"。

      Parameters:
      attachment - 附件文件对象
      Returns:
      this
      Throws:
      IOException - 文件操作异常
    • addAttachment

      public OFDDoc addAttachment(String absPath, Attachment attachment) throws IOException
      向文档中添加附件文件

      如果名称相同原有附件将会被替换,附件文件将被放置于指定目录下,若需要 创建同名文件请Attachment启用disableReplace参数。

      Parameters:
      absPath - 附件在OFD容器内的绝对位置,若不存在则创建,例如 "/Doc_0/Res/
      attachment - 附件文件对象
      Returns:
      this
      Throws:
      IOException - 文件操作异常
    • addWatermark

      public OFDDoc addWatermark(Watermark watermark) throws IOException
      给整个文档增加水印. 本方法会遍历整个文档,将水印添加到每个页面中。 按照OFD标准 GB/T 33190-2016 15.2 分页注释文件 的设计水印应该以一种特殊的注释类型写入。 如果要添加图片类型的水印,请使用 Annotation, 参考:addAnnotation(int, Annotation) 如果要为指定页码添加水印,请使用 addAnnotation(int, Annotation)
      Parameters:
      watermark - 水印信息
      Returns:
      this
      Throws:
      IOException - 文件操作异常
    • deleteAttachment

      public OFDDoc deleteAttachment(String name) throws IOException
      删除指定名称的附件
      Parameters:
      name - 附件名称,若附件不存在则忽略。
      Returns:
      this
      Throws:
      IOException - 文件操作异常
    • getOfdDir

      public OFDDir getOfdDir()
      获取 OFD虚拟容器

      通过虚拟容器API就可以直接操作XML文件和目录结构

      Returns:
      OFD虚拟容器
    • getOfdDocument

      public org.ofdrw.core.basicStructure.doc.Document getOfdDocument()
      获取 文档根节点

      根节点中包含了文档各类信息的入口

      Returns:
      文档根节点
    • onRenderFinish

      public OFDDoc onRenderFinish(RenderFinishHandler renderFinishHandler)
      当渲染结束时的回调函数
      Parameters:
      renderFinishHandler - OFD渲染结束时回调函数,可以为null,不调用
      Returns:
      this
    • getReader

      public OFDReader getReader()
      返回正在编辑文档的Reader对象

      若为新建文档那么该方法将会返回null

      Returns:
      正在编辑文档的Reader对象
    • getResManager

      public ResManager getResManager()
      获取 资源管理器对象

      通过资源管理器API就可以直接操作文档资源

      Returns:
      OFD虚拟容器
    • getOnPage

      public VPageHandler getOnPage()
      获取 当前解析页面的回调
      Returns:
      当前解析页面的回调,可能为 null 。
    • onPage

      public OFDDoc onPage(VPageHandler handler)
      设置 当前解析页面的回调函数

      通过回调函数可在页面变为OFD内容前向页面追加内容,例如:添加页头、添加页脚。

      Parameters:
      handler - 页面解析前处理器
      Returns:
      this
    • close

      public void close() throws IOException
      关闭文档,生成OFD

      注所有文档操作均在close方法执行完成后才会写入文件,打包生成OFD文档。 每个打开的文档都应该调用该方法。

      Specified by:
      close in interface AutoCloseable
      Specified by:
      close in interface Closeable
      Throws:
      IOException - 文档操作异常