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 PhpOfficePhpWordElementTrackChange; // 編集履歴系のクラス
// PHP Wordのインスタンス化
$phpword = new PhpOfficePhpWordPhpWord();
// 編集履歴記録開始
$phpword->getSettings()->setTrackRevisions(true);
// 新規セクション(docxにデータを書き出す場所の定義)
$section = $phpword->addSection();
// セクションにテキストを書き込む
$section->addText('ボクはテキスト');
// コメント書き込みを行うインスタンス生成
$comment = new PhpOfficePhpWordElementComment('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 = PhpOfficePhpWordIOFactory::createWriter($phpword, 'Word2007');
$objWriter->save('helloWorld.docx');
こんな感じのコードになります。
関連リンク
https://www.bricoleur.co.jp/blog/archives/3643
この記事を書いた人
Nな人(えぬなひと)。
Nは本名から取っています。
Laravelが大好きなPHPerで、WEBを作るときはLaravelを技術スタックに絶対推すマン。
PHP、Pythonと、昔はperlを書いていたP言語エンジニア。
最近はNimを書いたりしています。
Nは本名から取っています。
Laravelが大好きなPHPerで、WEBを作るときはLaravelを技術スタックに絶対推すマン。
PHP、Pythonと、昔はperlを書いていたP言語エンジニア。
最近はNimを書いたりしています。