Ejemplo n.º 1
0
 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]);
 }