<?php
/****************************************************************/
/* CLASSE RESPONS�VEL PELA CRIA��O DE ARQUIVOS TEMPLATES EM PDF */
/* CRIADO POR: PATRICK ESPAKE ***********************************/
/* E-mail: patrickespake@gmail.com ******************************/
/****************************************************************/

class Doc2Pdf
{
	// Atributos.
	private $template_file;
	private $doc_file;
	private $pdf_file_name;
	private $pdf_file;
	private $dir_files;
	
	// M�todos sets e gets.
	function setTemplateFile($template_file) { $this->template_file = $template_file; }
	function getTemplateFile() { return $this->template_file; }
	
	function setDocFile($doc_file) { $this->doc_file = $doc_file; }
	function getDocFile() { return $this->doc_file; }
	
	function setPdfFileName($pdf_file_name) { $this->pdf_file_name = $pdf_file_name; }
	function getPdfFileName() { return $this->pdf_file_name; }
	
	function setPdfFile($pdf_file) { $this->pdf_file = $pdf_file; }
	function getPdfFile() { return $this->pdf_file; }
	
	function setDirFiles($dir_files) { $this->dir_files = $dir_files; }
	function getDirFiles() { return $this->dir_files; }
	
	// M�todo construtor.
	function Doc2Pdf()
	{
		set_time_limit(0);
	}
	
	// M�todo de cria��o do arquivo pdf.
	function makePdf()
	{
		if(file_exists($this->getDirFiles() . $this->getTemplateFile()))
		{
			$doc_file = "file:///" . $this->getDirFiles() . $this->getTemplateFile();
			$pdf_file = "file:///" . $this->getDirFiles() . $this->getPdfFileName();
			$this->setDocFile($doc_file);
			$this->setPdfFile($pdf_file);
			if($this->word2pdf())
				return array($this->getPdfFileName(), $this->getDirFiles(), $this->getTemplateFile());
			else
				die("<strong>N�o foi poss�vel geral o arquivo pdf, tente novamente.</strong>");
		}
		else
			die("<strong>O arquivo de template especificado n�o existe.</strong>");
	}
	
	// M�todo de cria��o das propriedades do OpenOffice.org
	function makePropertyValue($name, $value, $osm)
	{
		$oStruct = $osm->Bridge_GetStruct("com.sun.star.beans.PropertyValue");
		$oStruct->Name = $name;
		$oStruct->Value = $value;
		return $oStruct;
	}
	
	// M�todo de transforma��o do arquivo doc para arquivo pdf.
	function word2pdf()
	{
		$doc_url = $this->getDocFile();
		$output_url = $this->getPdfFile();
		$osm = new COM("com.sun.star.ServiceManager") or die("<strong>O OpenOffice.org n�o est� instalado.</strong>");
		$args = array($this->makePropertyValue("Hidden", true, $osm));
		$oDesktop = $osm->createInstance("com.sun.star.frame.Desktop");
		$oWriterDoc = $oDesktop->loadComponentFromURL($doc_url, "_blank", 0, $args);
		$export_args = array($this->makePropertyValue("FilterName", "writer_pdf_Export", $osm));
		$oWriterDoc->storeToURL($output_url,$export_args);
		$oWriterDoc->close(true);
		return true;
	}
}
?>

<?php
	/**************************************/
	/******* ARQUIVO CRIAR_PDF.PHP ********/
	/* CRIADO POR: PATRICK ESPAKE *********/
	/* E-mail: patrickespake@gmail.com ****/
	/**************************************/

	// Inclui o arquivo da classe.
	include("doc2pdf.class.php");
	
	// Cria o objeto.
	$doc2pdf = new Doc2Pdf();
	
	// Nome do arquivo do doc, odt ou rtf.
	$doc2pdf->setTemplateFile("meu_arquivo.doc");
	
	// Nome do arquivo do pdf que ser� gerado.
	$doc2pdf->setPdfFileName("meu_pdf.pdf");
	
	// Diret�rio onde os arquivos est�o localizados, � necess�rio usar o caminho completo.
	$doc2pdf->setDirFiles("C:/apache/www/pdf/");
	
	// Cria o arquivo pdf.
	$doc2pdf->makePdf();
?>