public static function ExternalPackageController::convertPptSlidesToImages in Opigno module 3.x
Same name and namespace in other branches
- 8 src/Controller/ExternalPackageController.php \Drupal\opigno_module\Controller\ExternalPackageController::convertPptSlidesToImages()
Converts PowerPoint files to images per slide.
Parameters
\Drupal\File\entity\File $file: PowerPoint file (ppt/pptx).
string $ppt_dir_real_path: Ppt conversion directory real path.
Return value
array Array of image files links.
1 call to ExternalPackageController::convertPptSlidesToImages()
- AddExternalPackageForm::validateForm in src/
Form/ AddExternalPackageForm.php - Form validation handler.
File
- src/
Controller/ ExternalPackageController.php, line 376
Class
- ExternalPackageController
- Class ActivitiesBrowserController.
Namespace
Drupal\opigno_module\ControllerCode
public static function convertPptSlidesToImages(File $file, $ppt_dir_real_path) {
$current_dir = getcwd();
\Drupal::logger('ppt_converter')
->notice('Current dir: ' . $current_dir);
if (chdir($ppt_dir_real_path)) {
$path_info = pathinfo($file
->getFilename());
\Drupal::logger('ppt_converter')
->notice('Changed dir: ' . getcwd());
\Drupal::logger('ppt_converter')
->notice('File $path_info: <pre><code>' . print_r($path_info, TRUE) . '</code></pre>');
\Drupal::logger('ppt_converter')
->notice('Starting convert to PDF.');
// Convert to pdf.
$libreoffice_configs_path = self::getLibreofficeConfigsDir();
$libreoffice_bin_path = self::getLibreOfficeBinPath();
$a1 = microtime(TRUE);
$result = exec($libreoffice_bin_path . ' -env:UserInstallation=file://' . $libreoffice_configs_path . ' --headless --invisible --convert-to pdf ' . $path_info['basename']);
$a2 = microtime(TRUE);
$converting_time = $a2 - $a1;
\Drupal::logger('ppt_converter')
->notice('Convert to pdf finished. Time of converting: ' . $converting_time);
if ($result) {
\Drupal::logger('ppt_converter')
->notice('Starting convert to jpg.');
// Convert to images.
$imagemagick_bin_path = self::getImagemagickBinPath();
exec($imagemagick_bin_path . " " . $path_info['filename'] . ".pdf -geometry x720 -gravity Center " . $path_info['filename'] . ".jpg");
\Drupal::logger('ppt_converter')
->notice('Convert to jpg finished.');
/** @var \Drupal\Core\File\FileSystemInterface $file_system */
$file_system = \Drupal::service('file_system');
$files = $file_system
->scanDirectory($ppt_dir_real_path, '/.*\\.(jpg)$/');
// Sort images by slides order.
foreach ($files as &$f) {
$filename_exploded = explode('-', $f->name);
$f->weight = end($filename_exploded);
}
usort($files, 'self::opignoH5pSlidesSortByWeight');
chdir($current_dir);
\Drupal::logger('ppt_converter')
->notice('Return to dir: ' . getcwd());
return $files;
}
}
chdir($current_dir);
\Drupal::logger('ppt_converter')
->notice('Return to dir: ' . getcwd());
return [];
}