2012-01-04 11 views
7

Vi algunas preguntas similares en este foro, pero todas esas fueron para la plataforma .NET así que no lo cierren como duplicado. Tengo un sistema Linux y quiero convertir diapositivas en imágenes a través de php o script de shell (menos preferible). el comando convert puede convertir pdf a jpg pero no a ppt.Cómo convertir imágenes de ppt slide a jpeg en php

Cualquier ayuda sería genial.

+0

Usted puede tratar de secuencias de comandos de OpenOffice Impress, ya que puede leer (algunos) PPT y los renderiza, pero obtener resultados similares a lo que Powerpoint generará será un acierto. –

+0

Por favor, aclare: * .ppt (quizás factible) o * .pptx (casi imposible) –

Respuesta

1

No creo que eso sea posible. Usar .NET significa que el usuario está creando una instancia de una aplicación de PowerPoint y pidiéndole que imprima una diapositiva específica en un archivo JPG o PDF, pero en el caso de PHP, no creo que sea posible hacerlo desde un sistema Linux.

En caso de que pueda ir al servidor de Windows, puede usar la interfaz COM de PHP para crear una aplicación COM e iniciar una aplicación de PowerPoint instalada y hacer lo mismo siempre que el componente COM exponga los métodos necesarios (probablemente IMPRIMIR())

Buena suerte

+0

hmmm. Supongo que entonces debo pedirle a los usuarios de mi sitio que carguen un pdf pre-convertido. – prongs

2

http://code.google.com/p/jodconverter/ parece tener todos los bloques de construcción en el lugar, incluso hay una aplicación web muestra.

Utilizamos la versión anterior en http://sourceforge.net/projects/jodconverter/ con éxito hace algún tiempo, pero realmente no recuerdo los detalles.

+0

¿Dijiste que pptx era imposible? ¿Qué hace este proyecto? – prongs

+0

Utiliza [Open | Libre] Office, que no es realmente capaz de cargar archivos .pptx de manera confiable –

0

hi necesita habilitar COM en php.ini, entonces puede probar esto

<?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

Desde un script que puede utilizar Unoconv que es un simple envoltorio de línea de comandos para LibreOffice que le permitiría convertir a una calidad razonable.

Para una solución con salida de mayor calidad que se puede invocar directamente desde PHP (y en Linux) puede usar una API de conversión de archivos dedicada como Zamzar.

El código para enviar un archivo de PPT (o PPTX) para su conversión en JPEG sería el siguiente (más información en la documentation):

<?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); 
?> 
Cuestiones relacionadas