public function actionDownloadLayouts() { $this->layout = 'json'; $ref = Yii::$app->request->get('ref'); $id = Yii::$app->request->get('id'); $cmds = []; if (!empty($ref) && !empty($id)) { $model = new PhotobookForm(); $user_id = AlphaId::id($ref, true); $pb_id = AlphaId::id($id, true); // Yii::getLogger()->log('post:'.print_r(Yii::$app->request->post(), true), YII_DEBUG); if ($model->loadById($pb_id)) { $pages = $model->data['pages']; $path_layouts = []; foreach ($pages as $key => $page) { if ($page['action'] == 'print') { $svg = $model->getPageSvgWithOriginalPhotos($page); $svg_path = UserUrl::photobookLayouts(false, $pb_id, $user_id) . DIRECTORY_SEPARATOR . 'layout_' . (intval($key) + 1) . '.svg'; $jpg_path = UserUrl::photobookLayouts(false, $pb_id, $user_id) . DIRECTORY_SEPARATOR . 'layout_' . (intval($key) + 1) . '.jpg'; $svg = str_replace('fill: transparent;', 'fill-opacity:0;', $svg); file_put_contents($svg_path, $svg); unset($svg); /* $image = new \Imagick(); $image->readImageBlob($svg); $image->setImageFormat("jpeg"); $image->setImageCompressionQuality(100); $image->resizeImage(8571, 4286, \imagick::FILTER_LANCZOS, 1); $image->writeImage(UserUrl::photobookLayouts(false, $pb_id, $user_id).DIRECTORY_SEPARATOR.'layout_'.$key.'.jpg');*/ /* * java -jar batik-rasterizer.jar -w 9000 -h 4500 -q 0.99 -dpi 300 layout_0.svg */ $batik_path = Yii::getAlias('@app') . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'batik' . DIRECTORY_SEPARATOR; $cmds[] = "java -d64 -Xms512m -Xmx4g -jar " . $batik_path . "batik-rasterizer-1.8.jar -m image/jpeg -w 8572 -h 4286 -q 0.99 -dpi 300 -d " . $jpg_path . " " . $svg_path; exec("java -d64 -Xms512m -Xmx4g -jar " . $batik_path . "batik-rasterizer-1.8.jar -m image/jpeg -w 8572 -h 4286 -q 0.99 -dpi 300 -d " . $jpg_path . " " . $svg_path); if (file_exists($svg_path)) { unlink($svg_path); } if (file_exists($jpg_path)) { $path_layouts[] = $jpg_path; } } } $zip_file_path = UserUrl::photobookLayouts(false, $pb_id, $user_id) . DIRECTORY_SEPARATOR . 'layouts_' . $pb_id . '.zip'; $zip_file_url = UserUrl::photobookLayouts(true, $pb_id, $user_id) . '/' . 'layouts_' . $pb_id . '.zip'; if (Utils::create_zip($path_layouts, $zip_file_path, true, '.jpg')) { foreach ($path_layouts as $key => $path_layout) { unlink($path_layout); } } $batik_path = Yii::getAlias('@app') . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'batik' . DIRECTORY_SEPARATOR; $result = ['response' => ['status' => true, 'batik_path' => $batik_path, 'url' => $zip_file_url, 'cmds' => $cmds]]; } else { $result = ['error' => ['msg' => Yii::t('app', 'Фотокнига не найдена')]]; } } else { $result = ['error' => ['msg' => Yii::t('app', 'Данные не получены')]]; } return $this->render('json', ['result' => $result]); }