New question

Question:

Date: 27-08-2015 18:20:54 (In Spanish)

Convertir un archivo DOCX a PDF con PHP[Resolved]

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
Tags: DOC - PDF - PHP - Question - Word Votes: 0 - Answers: 1 - Views: 13 Share on: Google Facebook Twitter LinkedIn Link
 

Answers:

  • Date: 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
      Votes: 1 - Link answer
     
To actively participate in the community first must authenticate, enter the system.Sign In