BETA

PHPWordで、Docxファイルに編集履歴をつける

投稿日:2018-10-31
最終更新:2018-10-31

PHP Wordという、PHPでMS Wordが編集できる物があります。

それを使って、docxファイルに編集履歴を付けてみましょう。

composer install

composerでPHP Wordをインストールするのですが、

2018/03/06現在、肝心の編集履歴機能「track changed」の機能はmasterブランチにマージされていません。;

なので、以下のコマンドで無理くり取ってきます。

composer require phpoffice/phpword:dev-develop
composer update

PHP Wordで編集履歴をつける

<?php

require_once 'vendor/autoload.php';

use PhpOffice\PhpWord\Element\TrackChange;      // 編集履歴系のクラス

// PHP Wordのインスタンス化
$phpword = new PhpOffice\PhpWord\PhpWord();

// 編集履歴記録開始
$phpword->getSettings()->setTrackRevisions(true);

// 新規セクション(docxにデータを書き出す場所の定義)
$section = $phpword->addSection();

// セクションにテキストを書き込む
$section->addText('ボクはテキスト');

// コメント書き込みを行うインスタンス生成
$comment = new PhpOffice\PhpWord\Element\Comment('Nな人', new DateTime(), 'nnahito');

// コメント内容
$comment->addText('ボクはコメント', array('bold' => true));

// コメント追記
$phpword->addComment($comment);

// 様々な書体を設定できる、テキストエリア
$textrun = $section->addTextRun();

// テキストを追加
$text = $textrun->addText('ボクはコメントを持っている');

// テキストに対し、コメントを付与する
$text->setCommentRangeStart($comment);

// テキストの追加
$section->addText('ボクはテキスト');


// 編集履歴をつけてみる
$textRun2 = $section->addTextRun();
$text = $textRun2->addText('ボクはNな人によって追加されたテキストだよ。');
$text->setChangeInfo(TrackChange::INSERTED, 'Nな人', time() - 1800);

// 通常のテキストもできる
$text = $section->addText('ボクはnnahitoによって追加されたテキストだよ。');
$text->setTrackChange(new TrackChange(TrackChange::INSERTED, 'nnahito'));

// 消した履歴
$text = $section->addText('消された(´;ω;`)');
$text->setChangeInfo(TrackChange::DELETED, 'Nな人', new \DateTime('@' . (time() - 3600)));


// DOCXファイルに書き出し
$objWriter = PhpOffice\PhpWord\IOFactory::createWriter($phpword, 'Word2007');
$objWriter->save('helloWorld.docx');

こんな感じのコードになります。

関連リンク

https://www.bricoleur.co.jp/blog/archives/3643

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

@1bbJ84J4Sv4C90N6'の技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう
目次をみる
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
or 外部アカウントではじめる
10秒で技術ブログが作れます!