All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.ofdrw.layout.StreamCollect Maven / Gradle / Ivy

The newest version!
package org.ofdrw.layout;

import org.ofdrw.layout.element.Div;
import org.ofdrw.layout.engine.Segment;
import org.ofdrw.layout.engine.SegmentationEngine;
import org.ofdrw.layout.engine.StreamingLayoutAnalyzer;

import java.util.LinkedList;
import java.util.List;

/**
 * 流式布局的页面内容
 * 

* 用于编辑文档时插入文档内容 *

* 如果内容超过一页,那么分页并添加新的一页在原页面后面 * * @author 权观宇 * @since 2021-06-11 19:26:00 */ public class StreamCollect { /** * 开始页面位置 */ private Integer pageNum; /** * 流式页面内容 */ private final LinkedList

content; public StreamCollect() { pageNum = null; content = new LinkedList<>(); } /** * 创建插入页面流 * * @param pageNum 页码(从1开始) */ public StreamCollect(Integer pageNum) { this(); this.pageNum = pageNum; } /** * 获取内容队列 * * @return 内容队列 */ public LinkedList
getContent() { return content; } public StreamCollect add(Div element) { if (element != null) { this.content.add(element); } return this; } /** * 获取插入页码 * * @return 页码(从1开始) */ public Integer getPageNum() { return pageNum; } /** * 设置 插入页码 * * @param pageNum 页码(从1开始) * @return this */ public StreamCollect setPageNum(Integer pageNum) { this.pageNum = pageNum; return this; } /** * 分析流式内容 转换为 虚拟页面 * * @param pageLayout 页面布局信息 * @return 虚拟页面集合 */ public List analyze(PageLayout pageLayout) { SegmentationEngine sgmEngine = new SegmentationEngine(pageLayout); StreamingLayoutAnalyzer analyzer = new StreamingLayoutAnalyzer(pageLayout); // 流式布局队列经过分段引擎,获取分段队列 List sgmQueue = sgmEngine.process(this.content); // 段队列进入布局分析器,构造基于固定布局的虚拟页面。 List virtualPageList = analyzer.analyze(sgmQueue); if (this.pageNum != null) { int start = this.pageNum; for (VirtualPage vPage : virtualPageList) { vPage.setPageNum(start); start++; } } return virtualPageList; } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy