【a-blog cms】アップロードしたPDFのサムネイルを作成する

<!-- BEGIN pdffile@path:veil --> <input type="hidden" name="pdffile@old" value="{pdffile@path}" /> <input type="hidden" name="pdffile@secret" value="{pdffile@secret}" /> <input type="hidden" name="pdffile@baseName" value="{pdffile@baseName}" /> <input type="hidden" name="pdffile@fileSize" value="{pdffile@fileSize}" /> <label for="input-checkbox-pdffile@edit"> <input type="checkbox" name="pdffile@edit" value="delete" id="input-checkbox-pdffile@edit" /> 削除 </label> <a href="%{HTTP_ARCHIVES_DIR}{pdffile@path}"><img src="%{HTTP_ARCHIVES_DIR}{pdfthumbnail}" width="100%" /></a><!-- END pdffile@path:veil --> <input type="file" name="pdffile" /> <input type="hidden" name="field[]" value="pdffile" /> <input type="hidden" name="pdffile:extension" value="file" /> <input type="hidden" name="pdffile@extension" value="pdf" />
define('HOOK_ENABLE', 1);
/** * POSTモジュール処理前 * $thisModuleのプロパティを参照・操作するなど * * @param ACMS_POST $thisModule */ public function beforePostFire($thisModule) { if ( !sessionWithContribution() ) return false; // 権限チェック $class = get_class($thisModule); // モジュールのクラス名取得 $destDir = 'thumbnail/'; // サムネイルを保存するディレクトリ名 $fieldName = 'pdffile'; // アップロードするPDFのフィールド名 $thumbnailFieldName = 'pdfthumbnail'; // サムネイル画像の変数名 // エントリーの作成or更新のみ if ( !in_array($class, array( 'ACMS_POST_Entry_Insert', 'ACMS_POST_Entry_Update' )) ) { return false; } $Post =& $thisModule->Post; // POSTデータを取得 $bid = $Post->get('bid'); $cid = $Post->get('cid'); if ( !isset($_FILES[$fieldName]['tmp_name']) ) return false; $source = $_FILES[$fieldName]['tmp_name']; if ( !is_readable($source) ) return false; $myurl = $source.'[0]'; // PDFの1ページを指定 try { $image = new Imagick(); $image->setResolution(140, 140); // 解像度を指定 $image->readimage($myurl); // PDFの読み込み $image->setImageFormat('png'); ACMS_POST::setupDir(ARCHIVES_DIR.$destDir, intval(config('permission_dir'))); // 保存先ディレクトリの作成 $file = uniqueString().'.png'; // 保存ファイル名 $dest = ARCHIVES_DIR.$destDir.$file; // 保存先 $image->writeImage($dest); $image->destroy(); // カスタムフィールドに登録する為、POSTデータにサムネイル画像のパスを登録 $Post->add('field', $thumbnailFieldName); $Post->add($thumbnailFieldName, $destDir.$file); } catch(Exception $e) { echo $e->getMessage(); } }
