Nueva pregunta

Pregunta:

Fecha: 27-08-2015 18:20:54 (En Español)

Convertir un archivo DOCX a PDF con PHP[Resuelta]

hola amigos quisiera saber si es posible convertir un archivo docx a pdf con php y si es posible me podrian ayudar como le prodria hacer gracias.

docx to pdf con php? me podrian ayudar gracias
Etiquetas: DOC - PDF - PHP - Pregunta - Word Votos: 0 - Respuestas: 1 - Vistas: 13 Compartir en: Google Facebook Twitter LinkedIn Link
 

Respuestas:

  • Fecha: 28-08-2015 04:04:39 Hola Gabriel, lo que puedes hacer es leer el archivo Word (.docx) con PHP y llevar su contenido a una variable, luego crear un pdf con la librería fpdf volcando ahí el contenido de la variable.

    Para leer con PHP un Word puedes utilizar una clase externa llamada "Doc2Txt" creada por "Gourav Mehta", la cual es "GNU General Public License (GPL)".

    Aquí el código de la clase:
    <?php
    /* 
    this class is used to convert any doc,docx file to simple text format.
    
    author: Gourav Mehta
    author's email: gouravmehta@gmail.com
    author's phone: +91-9888316141
    */ 
    
    class Doc2Txt {
    	private $filename;
    	
    	public function __construct($filePath) {
    		$this->filename = $filePath;
    	}
    	
    	private function read_doc()	{
    		$fileHandle = fopen($this->filename, "r");
    		$line = @fread($fileHandle, filesize($this->filename));   
    		$lines = explode(chr(0x0D),$line);
    		$outtext = "";
    		foreach($lines as $thisline)
    		  {
    			$pos = strpos($thisline, chr(0x00));
    			if (($pos !== FALSE)||(strlen($thisline)==0))
    			  {
    			  } else {
    				$outtext .= $thisline." ";
    			  }
    		  }
    		 $outtext = preg_replace("/[^a-zA-Z0-9\s\,\.\-\n\r\t@\/\_\(\)]/","",$outtext);
    		return $outtext;
    	}
    
    	private function read_docx(){
    
    		$striped_content = '';
    		$content = '';
    
    		$zip = zip_open($this->filename);
    
    		if (!$zip || is_numeric($zip)) return false;
    
    		while ($zip_entry = zip_read($zip)) {
    
    			if (zip_entry_open($zip, $zip_entry) == FALSE) continue;
    
    			if (zip_entry_name($zip_entry) != "word/document.xml") continue;
    
    			$content .= zip_entry_read($zip_entry, zip_entry_filesize($zip_entry));
    
    			zip_entry_close($zip_entry);
    		}// end while
    
    		zip_close($zip);
    
    		$content = str_replace('</w:r></w:p></w:tc><w:tc>', " ", $content);
    		$content = str_replace('</w:r></w:p>', "\r\n", $content);
    		$striped_content = strip_tags($content);
    
    		return $striped_content;
    	}
    	
    	public function convertToText() {
    	
    		if(isset($this->filename) && !file_exists($this->filename)) {
    			return "File Not exists";
    		}
    		
    		$fileArray = pathinfo($this->filename);
    		$file_ext  = $fileArray['extension'];
    		if($file_ext == "doc" || $file_ext == "docx")
    		{
    			if($file_ext == "doc") {
    				return $this->read_doc();
    			} else {
    				return $this->read_docx();
    			}
    		} else {
    			return "Invalid File Type";
    		}
    	}
    }
    ?>
    


    El modo de uso es muy simple, puedes hacer algo como lo siguiente:
    <?php
    require_once 'doc2txt.class.php';
    
    $objetoDocumento = new Doc2Txt("archivo.docx");
    
    $textoString = $objetoDocumento->convertToText();
    
    //imprimo en pantalla el resultado (indicando al HTML que el contenido esta preformateado)
    echo '<pre>';
    echo $textoString;
    echo '</pre>';
    ?>
    


    En cuanto a la creación del PDF con fpdf, aquí te dejo un video tutorial introductorio (hay miles de estos en youtube, pero este es bastante simple y completo para comenzar)

    Crear archivo PDF con la librería FPDF




    Espero que mi respuesta te sea de ayuda.

    Saludos,
    Fernando
      Votos: 1 - Link respuesta
     
Para participar activamente de la comunidad primero debes autenticarte, ingresa al sistema.Iniciar Sesión