なぜか質問を投稿すると反映されない。。 何かしら問題があってはじかれている??
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);
検索

コメントを残す