前提・実現したいこと
PHPであるシステムを製造しています。
その中で多人数へ郵送するDMの作成をしています。
発生している問題・エラーメッセージ
各ページに同一画像を挿入していったところ、31ページ目・1700行付近から画像が正しい位置に挿入されなくなった。
該当のソースコード
PHP5.6.4
下記コードは新規Excelに行番号と画像をセットするのみの検証用コードだが1726行目付近から先が印字できない
$img = "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEgAAABICAMAAABiM0N1AAAAh1BMVEVHcEz/zE3/zE3/zE3/zE3/zE3/zE3/zE3/zE3/zE3/zE3/zE3/zE3/zE1mRQDPojXZqjqziSd5Vgr1xEhwTQWfeB2zooCMZxPZ0b/su0OMdED18++DXg6DaDDisz/i3M+Wf1CWbxjs6N/////GmTC8kSupgCK8ro/GuZ/Pxa9wURCfi2B5XCBjMO3CAAAADXRSTlMA36/PgFCPIJ/vQL9g4e8akwAAAkFJREFUeF7tmNmu4jAMhmlLSwK1uy/sy1mXef/nmyH0RCImTfDM4Wq+GyQj/fJSy7EnI8zSZBHAQLBI0tmEQSwCIAQivk9llkiwIBN/v+YhjBLO/bwR4ER4eDWV4IGcutyJwJNo1KlYgjcyHgkL7sIanoA7ET46fCUBDIQrP/w8xcDEqN1MAhN53XoRsIlIgrhMSWDs4CyV538Dc/hL5oNQCCZZiVhm4GsPhwxRHVRkvna4ZCkBg6pGRV057JpECZGSFThQOOwaebs5Njiwcdk18c3ao2bETr+AYERo6bBrAlUzjke0bum/EUpJ8XnJhmSyAGCUn7BQuWZ8kDTboGC3iEYJ8ZuWCvHhC/0X2uXgpspJ2xrNX20QsTwW2RIsLLPiWCJiV123v9EiDWo23WvxkiuW6ueleO02qGmMFklIg/tiNG16FRlbKJ3MiNCpbw9btPLr0PYnJWQMpMAMbbt++sO+f2vblWK7utC2b/3+/N96awoF5uAvz0pfTw6+zjqlOf5jUjXlkwXtDzbk3SbpUP7s7Tr9Jx3cko7sEi8cTrdlTgdEJJEl9BHxjN+s3kmA6/cVfvN8XTNFaI4KrdV+7L9F9h/toEIHSXjrobVDL3bmQ0shaHB2aGDC8hht0Elje2lP4S6lxr5FRGSkWqCDNhpbIbIardQZXSHsS011RAtHY17HrjUr75CCXe5eRwUZA40RYN3suCtkXnQlKsquyH9uqRU/s67zDwgPOGkwjiwPOPswDlHs09hDj3X88+FvXybnvMjgRHsAAAAASUVORK5CYII="; $book = new PHPExcel(); $sheet = $book->getActiveSheet(); $maxR = 30; for ($i = 1; $i <= 2000; $i++) { $r = $i; $cell1 = "A{$r}"; $cell2 = "C{$r}"; // セルに書込み $sheet->setCellValue($cell1, $i); // 画像の設定 $gdImage = imagecreatefrompng($img); imagesavealpha($gdImage, true); imagepng($gdImage); $objDrawing = new PHPExcel_Worksheet_MemoryDrawing(); $objDrawing ->setName('image') ->setDescription('image') ->setImageResource($gdImage) ->setRenderingFunction(PHPExcel_Worksheet_MemoryDrawing::RENDERING_PNG) ->setMimeType(PHPExcel_Worksheet_MemoryDrawing::MIMETYPE_PNG) ->setResizeProportional(false) ->setHeight(10) ->setWidth(10) ->setCoordinates($cell2) ->setWorksheet($sheet); if (($i % $maxR) === 0) { // 30行に1回改ページ $sheet->setBreak($cell1, PHPExcel_Worksheet::BREAK_ROW); } } // 保存 $writer = PHPExcel_IOFactory::createWriter($book, 'Excel2007'); $writer->save($filePath);
試したこと
上記の簡易コードを作成して検証、現象は変わらず
PhpSpreadseetでも検証したが同じ現象が発生。
他機能もPHPEXCELで作成しているので極力変更はしたくない
イメージ説明
回答2件
あなたの回答
tips
プレビュー