word合并文档php,使用PHPWord合并Word文档,在文档指定页插入另一个文档的内容

本文介绍如何使用PHPWord将一个DOC1文档的内容插入到另一个DOC2文档的指定页面。通过逐级读取DOC1的内容并插入到新文档中,遇到分页符后插入DOC2内容,最后保存新文档。
摘要由CSDN通过智能技术生成

提示:不支持.doc文件的读取

有一个客户有这样的需求,需要在ThinkPHP里使用PHPWord组件,把一个文档(DOC1)的内容,插入另一个文档(DOC2)的指定页内。由于两个文档的内容都不是固定的,所以不能使用PHPWord的Template功能。

以前从来没有使用过PHPWord,所以前后也折腾了几天。从熟悉PHPWord的功能开始,看示例代码,还有源码,最终还是摸索出来解决方案,下面说下解决思路:

首先读取DOC1的内容,PHPWord把内容分成不同的节点和容器,最顶级的是Section,里面有TextRun(文本块),Table(表格)等容器。这些容器里又有Text(文本),Row(表格行),Cell(单元格)等,还有一些其他的TextBreak,PageBreak(分页符)等制表符。

逐级读取内容后,然后把读取出的内容插入到一个新的文档内。当读取到指定的分页符之后,再读取DOC2的内容,跟着前面的内容插入,最后保存新的文档。

贴一部分代码:

namespace Home\Logic;

Vendor('PhpOffice.autoload');

use PhpOffice\PhpWord\PhpWord;

use PhpOffice\PhpWord\IOFactory;

use PhpOffice\PhpWord\Style\Font;

use PhpOffice\PhpWord\Shared\ZipArchive;

use PhpOffice\PhpWord\Settings;

class MergeFile {

private $currentPage = 0; // 当前分页

private $page = 0; // 插入页数

private $args = null; // 文本段样式

private $tmpFiles = []; // 临时文件

/**

* 合并文件

*

* @param URI

* 文件1地址

* @param URI

* 文件2地址

* @param Numeric

* 指定插入的页数

*

* @return String

* 新文件的URI

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值