コメントありがとうございます。 サービス終了した今なら、安く中古が手に入りそ…
DocxMergeで改行されない時の対処法
phpで複数のdocxを結合する時、
DocxMergeでうまく結合出来ない事があった。
症状としてはA,B,Cと言うファイルが3ページのdocxを期待していたが、
1ページにABCが重なっていた。
なので、ソースをいじってみました。
docx-merge/src/DocxMerge.php
[-]public function merge( $docxFilesArray, $outDocxFilePath) { [+]public function merge( $docxFilesArray, $outDocxFilePath, $addPageBreak = false) { for( $i=1; $i<count( $docxFilesArray ); $i++ ) { [-] $docx->addFile( $docxFilesArray[$i], "part".$i.".docx", "rId10".$i); [+] $docx->addFile( $docxFilesArray[$i], "part".$i.".docx", "rId10".$i, $addPageBreak ); }
docx-merge/src/DocxMerge/Docx.php
[-]public function addFile( $filePath, $zipName, $refID ) { [+]public function addFile( $filePath, $zipName, $refID, $addPageBreak = false ) { [-]$this->addAltChunk( $refID ); [+]$this->addAltChunk( $refID, $addPageBreak ); [-]private function addAltChunk( $refID ) { [+]private function addAltChunk( $refID, $addPageBreak ) { [-]$xmlItem = '<w:altChunk r:id="'.$refID.'"/>'; [+]$pagebreak = $addPageBreak ? '<w:p><w:r><w:br w:type="page" /></w:r></w:p>' : ''; [+]$xmlItem = $pagebreak.'<w:altChunk r:id="'.$refID.'"/>';
呼び出し方法は
$DM = new DocxMerge(); $DM->merge([ FILES ], SAVE_FILE, true);
検索
コメントを残す