java aspose对指定页指定位置进行图片/段落插入

1. 通过FreeMarker构建Word

自行查找通过FreeMarker ftl构建生成word(通过xml进行word模板构建)

2. Word Docment Image Insert(page)

主要思路:通过DocmentBuilder获取到当前段落所处页数,并在换页处进行图片添加从而达到在不同页添加图片,insertImage时通过指定属性达到图片展示位置(是否悬浮文字上等)

// 1.构建Docment
Document doc = new Document(docInputStream)
DocumentBuilder builder = new DocumentBuilder(doc);
try{
	// 2.构建页面布局
    int pageCount = doc.getPageCount(); // 获取总页数
    LayoutCollector layoutCollector = new LayoutCollector(doc);
    doc.updatePageLayout();
    // 3.通过段落进行遍历(NodeType中包含各种类型可通过官网API对照)
    // https://apireference.aspose.com/words/java/com.aspose.words/NodeType
    NodeCollection runs = doc.getChildNodes(NodeType.PARAGRAPH, true);
    int tempPage = 0;
    for (int i = 0; i < runs.getCount(); i++) {
            Node r = runs.get(i);
            // 4.找到当前段落所对应的页数
            int numPage = layoutCollector.getStartPageIndex(r);
            // 5.进行图片插入
            if (numPage != tempPage) {
            	// 锁定到当前段落即实现页面变换
                builder.moveTo(r);
                // insertImage中参数含义自行查询
                builder.insertImage(imgPath, RelativeHorizontalPosition.PAGE, 0, RelativeVerticalPosition.PAGE, 0, 100, 100, WrapType.NONE);
            }
            tempPage = numPage;
    }
    // 6.更新操作是将builder中修改数据更新到doc中(save方法中也会触发)
    doc.updateFields();
    //doc.save(outOs, saveOptions);
 } catch (Exception e) {}

说明:如果在bulider中进行数据修改后,直接进行word转pdf,通过save时会丢失builder中修改的内容,此时需要将docment中数据进行更新!

你可能感兴趣的:(java)