8
votes

Comment convertir la diapositive PPT en images JPEG en PHP

J'ai vu des questions similaires sur ce forum, mais toutes celles-ci étaient pour .NET Plate-forme, veuillez donc ne pas le fermer comme dupliquer. J'ai un système Linux et je veux convertir la diapositive en images via PHP ou Script Shell (moins préférable). La commande convert peut convertir pdf en jpg mais pas un ppt.

Toute aide serait formidable.


2 commentaires

Vous pouvez essayer de scripter OpenOffice Impress, comme il peut être lu (certains) les ppts et les rendant, mais obtenir des résultats similaires à ce que PowerPoint lui-même produira va être frappé / manquant.


S'il vous plaît clarifier: * .ppt (peut-être faisable) ou * .pptx (proche de l'impossible)


6 Réponses :


1
votes

Je ne pense pas que c'est possible. Utilisation de .NET signifie que l'utilisateur crée une instance d'une application PowerPoint et lui demandant d'imprimer une diapositive spécifique à un JPG ou PDF, mais dans le cas de PHP, je ne pense pas que cela puisse être possible d'un système Linux. < / p>

Dans l'événement Vous pouvez aller sur Windows Server, vous pouvez utiliser l'interface COM de PHP pour créer une application COM et démarrer une application PowerPoint installée et faire la même chose que la composante COM supposant les méthodes nécessaires ( probablement imprimer ())

bonne chance


1 commentaires

Hmmm. Je suppose que je dois alors demander aux utilisateurs de mon site de télécharger un PDF pré-converti.



2
votes

http://code.google.com/p/jodconverter/ semble avoir Tous les blocs de construction en place, il y a même un exemple de webapp.

Nous avons utilisé l'ancienne version chez http://sourceforge.net/projects/jodconverter/ avec succès Il y a quelque temps il y a quelque temps, mais je ne me souviens vraiment pas des détails.


2 commentaires

Vous avez dit PPTX impossible? Que fait ce projet?


Il utilise un bureau [Open | Libre], qui n'est pas vraiment capable de charger de manière fiable des fichiers .pptx.



0
votes

Salut, vous devez activer COM dans php.ini, puis vous pouvez essayer cela

<?php

$ppApp = new COM("PowerPoint.Application");
$ppApp->Visible = True;
$strPath = realpath(basename(getenv($_SERVER["SCRIPT_NAME"]))); // C:/AppServ/www/myphp
$ppName = "MySlides.ppt";
$FileName = "MyPP";
//*** Open Document ***//
$ppApp->Presentations->Open(realpath($ppName));
//*** Save Document ***//
$ppApp->ActivePresentation->SaveAs($strPath."/".$FileName,17);  //'*** 18=PNG, 19=BMP **'
//$ppApp->ActivePresentation->SaveAs(realpath($FileName),17);
$ppApp->Quit;
$ppApp = null;


0 commentaires

0
votes

à partir d'un script shell que vous pouvez utiliser Unoconv qui est une simple emballeuse de ligne de commande à libreoffice qui vous permettrait de convertir une qualité raisonnable.

Pour une solution avec une sortie de qualité supérieure qui peut être appelée Directement de PHP (et sur Linux), vous pouvez utiliser une API de conversion de fichier dédiée telle que Zamzar . P>

Le code pour soumettre un fichier PPT (ou PPTX) pour la conversion en JPEG serait la suivante (plus d'informations dans Documentation ): P>

<?php
// Build request
$endpoint = "https://api.zamzar.com/v1/jobs";
$apiKey = "YOUR_KEY";
$sourceFilePath = "/tmp/my.ppt"; // Or PPTX
$targetFormat = "jpg";

$sourceFile = curl_file_create($sourceFilePath);    
$postData = array(
  "source_file" => $sourceFile,
  "target_format" => $targetFormat
);

// Send request
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $endpoint);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'POST');
curl_setopt($ch, CURLOPT_POSTFIELDS, $postData);
curl_setopt($ch, CURLOPT_SAFE_UPLOAD, false);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERPWD, $apiKey . ":");
$body = curl_exec($ch);
curl_close($ch);

// Process response (with link to converted files)
$response = json_decode($body, true);
print_r($response);
?>


0 commentaires

3
votes

J'ai pu accomplir cela en convertissant d'abord le fichier PowerPoint en PDF. Cela m'a demandé d'installer Libre Office sur mon serveur. Ensuite, la conversion du PDF en images est facilement effectuée à l'aide de la magie de l'image. Voici une partie de mon code. Il utilise https://github.com/ncjoes/office-converter (pour le PPT à Conversion PDF) et https://github.com/spatie/pdf-a-image (pour la conversion PDF à l'image)

  //now convert file to pdf
            $converter = new OfficeConverter($newFile);
            $result = $converter->convertTo('output.pdf');

            $pdfFile = BASE_PATH.'/output.pdf';
            //now convert pdf file to images
            chdir(BASE_PATH); 

            //get total number of pages in pdf file
            $pdf = new \Spatie\PdfToImage\Pdf($pdfFile);
            $pdf->setCompressionQuality(80);
            $pages = $pdf->getNumberOfPages();

            for($i=1;$i<=$pages;$i++){
                $pdf->setPage($i)->saveImage(BASE_PATH."/image$i.jpg");

            }


0 commentaires

0
votes

Un fichier .pptx est juste un fichier zippé. Donc, tout ce que vous avez à faire pour obtenir les fichiers .jpeg est de décompresser le fichier, puis utilisez les fichiers .jpeg:

Ensuite, le dossier avec les fichiers image est dans \ PPT \ Media \ Dossier.

https://www.php.net/manual/fr/ziparchive .extracto.php donne le code PHP pour extraire le fichier zippé.


0 commentaires