Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

gilbertofjr

Gerar arquivos .doc

Recommended Posts

Pessoal, beleza?

É o seguinte, tenho uma tabela que foi criada utilizando variáveis de sessão.

Queria transformar essa tabela em um arquivo .doc e enviá-la por email. Só que a única coisa que eu consegui foi achar uma classe que converte html pra doc

<?php	/**	 * Convert HTML to MS Word file	 * @author Harish Chauhan	 * @version 1.0.0	 * @name HTML_TO_DOC	 */		class HTML_TO_DOC	{		var $docFile="";		var $title="";		var $htmlHead="";		var $htmlBody="";						/**		 * Constructor		 *		 * @return void		 */		function HTML_TO_DOC()		{			$this->title="Untitled Document";			$this->htmlHead="";			$this->htmlBody="";		}				/**		 * Set the document file name		 *		 * @param String $docfile 		 */				function setDocFileName($docfile)		{			$this->docFile=$docfile;			if(!preg_match("/\.doc$/i",$this->docFile))				$this->docFile.=".doc";			return;				}				function setTitle($title)		{			$this->title=$title;		}				/**		 * Return header of MS Doc		 *		 * @return String		 */		function getHeader()		{			$return  = <<<EOH			 <html xmlns:v="urn:schemas-microsoft-com:vml"			xmlns:o="urn:schemas-microsoft-com:office:office"			xmlns:w="urn:schemas-microsoft-com:office:word"			xmlns="http://www.w3.org/TR/REC-html40">						<head>			<meta http-equiv=Content-Type content="text/html; charset=utf-8">			<meta name=ProgId content=Word.Document>			<meta name=Generator content="Microsoft Word 9">			<meta name=Originator content="Microsoft Word 9">			<!--[if !mso]>			<style>			v\:* {behavior:url(#default#VML);}			o\:* {behavior:url(#default#VML);}			w\:* {behavior:url(#default#VML);}			.shape {behavior:url(#default#VML);}			</style>			<![endif]-->			<title>$this->title</title>			<!--[if gte mso 9]><xml>			 <w:WordDocument>			  <w:View>Print</w:View>			  <w:DoNotHyphenateCaps/>			  <w:PunctuationKerning/>			  <w:DrawingGridHorizontalSpacing>9.35 pt</w:DrawingGridHorizontalSpacing>			  <w:DrawingGridVerticalSpacing>9.35 pt</w:DrawingGridVerticalSpacing>			 </w:WordDocument>			</xml><![endif]-->			<style>			<!--			 /* Font Definitions */			@font-face				{font-family:Verdana;				panose-1:2 11 6 4 3 5 4 4 2 4;				mso-font-charset:0;				mso-generic-font-family:swiss;				mso-font-pitch:variable;				mso-font-signature:536871559 0 0 0 415 0;}			 /* Style Definitions */			p.MsoNormal, li.MsoNormal, div.MsoNormal				{mso-style-parent:"";				margin:0in;				margin-bottom:.0001pt;				mso-pagination:widow-orphan;				font-size:7.5pt;					mso-bidi-font-size:8.0pt;				font-family:"Verdana";				mso-fareast-font-family:"Verdana";}			p.small				{mso-style-parent:"";				margin:0in;				margin-bottom:.0001pt;				mso-pagination:widow-orphan;				font-size:1.0pt;					mso-bidi-font-size:1.0pt;				font-family:"Verdana";				mso-fareast-font-family:"Verdana";}			@page Section1				{size:8.5in 11.0in;				margin:1.0in 1.25in 1.0in 1.25in;				mso-header-margin:.5in;				mso-footer-margin:.5in;				mso-paper-source:0;}			div.Section1				{page:Section1;}			-->			</style>			<!--[if gte mso 9]><xml>			 <o:shapedefaults v:ext="edit" spidmax="1032">			  <o:colormenu v:ext="edit" strokecolor="none"/>			 </o:shapedefaults></xml><![endif]--><!--[if gte mso 9]><xml>			 <o:shapelayout v:ext="edit">			  <o:idmap v:ext="edit" data="1"/>			 </o:shapelayout></xml><![endif]-->			 $this->htmlHead			</head>			<body>EOH;		return $return;		}				/**		 * Return Document footer		 *		 * @return String		 */		function getFotter()		{			return "</body></html>";		}				/**		 * Create The MS Word Document from given HTML		 *		 * @param String $html :: URL Name like http://www.example.com		 * @param String $file :: Document File Name		 * @param Boolean $download :: Wheather to download the file or save the file		 * @return boolean 		 */				function createDocFromURL($url,$file,$download=false)		{			if(!preg_match("/^http:/",$url))				$url="http://".$url;			$html=@file_get_contents($url);			return $this->createDoc($html,$file,$download);			}		/**		 * Create The MS Word Document from given HTML		 *		 * @param String $html :: HTML Content or HTML File Name like path/to/html/file.html		 * @param String $file :: Document File Name		 * @param Boolean $download :: Wheather to download the file or save the file		 * @return boolean 		 */				function createDoc($html,$file,$download=false)		{			if(is_file($html))				$html=@file_get_contents($html);						$this->_parseHtml($html);			$this->setDocFileName($file);			$doc=$this->getHeader();			$doc.=$this->htmlBody;			$doc.=$this->getFotter();										if($download)			{				@header("Cache-Control: ");// leave blank to avoid IE errors				@header("Pragma: ");// leave blank to avoid IE errors				@header("Content-type: application/octet-stream");				@header("Content-Disposition: attachment; filename=\"$this->docFile\"");				echo $doc;				return true;			}			else 			{				return $this->write_file($this->docFile,$doc);			}		}				/**		 * Parse the html and remove <head></head> part if present into html		 *		 * @param String $html		 * @return void		 * @access Private		 */				function _parseHtml($html)		{			$html=preg_replace("/<!DOCTYPE((.|\n)*?)>/ims","",$html);			$html=preg_replace("/<script((.|\n)*?)>((.|\n)*?)<\/script>/ims","",$html);			preg_match("/<head>((.|\n)*?)<\/head>/ims",$html,$matches);			$head=$matches[1];			preg_match("/<title>((.|\n)*?)<\/title>/ims",$head,$matches);			$this->title = $matches[1];			$html=preg_replace("/<head>((.|\n)*?)<\/head>/ims","",$html);			$head=preg_replace("/<title>((.|\n)*?)<\/title>/ims","",$head);			$head=preg_replace("/<\/?head>/ims","",$head);			$html=preg_replace("/<\/?body((.|\n)*?)>/ims","",$html);			$this->htmlHead=$head;			$this->htmlBody=$html;			return;		}				/**		 * Write the content int file		 *		 * @param String $file :: File name to be save		 * @param String $content :: Content to be write		 * @param [Optional] String $mode :: Write Mode		 * @return void		 * @access boolean True on success else false		 */				function write_file($file,$content,$mode="w")		{			$fp=@fopen($file,$mode);			if(!is_resource($fp))				return false;			fwrite($fp,$content);			fclose($fp);			return true;		}	}?>

////////FINISH.PHP///////

<?php	session_start();	include("html_to_doc.inc.php");		$htmltodoc= new HTML_TO_DOC();		$htmltodoc->createDoc("ok.php","arq");?>

O arquivo é criado, a estrutura da tabela é criada, mas como as variáveis são em php, não aparecem. Alguma idéia?

Compartilhar este post


Link para o post
Compartilhar em outros sites

ué....eu uso essa classe...e gero páginas dinâmicas e depois converto pra doc, com essa classe

daí se usa do tipo:

 

$htmltodoc->createDoc("ok.php?p=aaaa&a=ttttttt&bla=blee","arq");
usa assim para consultar com get..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crucifier, desculpe minha ignorância, mas eu não entendi o que você quis dizer. Estou aprendendo ainda hehe.E aqui eu estou testando localmente, não aparece esse ?p=aaaa&a=ttttttt&bla=bleevocê quis dizer pra mim colocar a sessão aberta direto no código?

Compartilhar este post


Link para o post
Compartilhar em outros sites

o que eu quero dizer é o seguinte, porque não da pra criar doc de um arquivo porq as variáveis são php?são php mas retornam html...

se por exemplo, a página que voce quer criar um doc a partir dela, precisar de um dado enviado via get...por exemplo, o id do usuário:

pagina.php?id=5

então voce vai passar o id assim:

 

$htmltodoc->createDoc("pagina.php?id=5","arq");

pode ser q isso q eu teja falando pra voce seja inutil...mas eu não entendo porque não da pra criar um doc com essa classe se a página for php

faz o seguinte, de teste, crie uma pagina: teste.php com o conteúdo: <?='Hello World!';?>

e faça outra página para rodar essa função de transformar em doc...e transforme essa página pra ver como funciona..

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu fiz assim

/////Teste.php////////

<form name="form1" method="post" action="finish.php">  <input type="submit" name="Submit" value="Submit"></form><?='Hello World!';?>

//////finish.php////////

<?php	//session_start();	include("html_to_doc.inc.php");		$htmltodoc= new HTML_TO_DOC();		$htmltodoc->createDoc("teste.php","teste");?>

Mas só apareceu no .doc o botão de submit. 'hello world' não apareceu.

:(

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá quase saindo.

O que eu fiz dessa vez foi gerar um arquivo html dentro de uma variável $arq e criar o arquivo a partir dessa variável. Está quase tudo perfeito, só estou tendo problemas com acentuação, Ç, ª e º, enfim, pontuação em geral. às vezes aparecem até uns caracteres estranhos, parecidos com chinês.

Alguma idéia de como modificar essa codificação?

 

PS: Vou mandar o código, pois apesar de estar gerando o arquivo, está gerando tb esse erro

Warning: is_file() [function.is-file]: Stat failed for <html><head><title>Untitled Document</title> <style type='text/css'> <!-- .style1 { color: #FF0000; font-weight: bold; } .style2 {color: #FF0000} .style3 { color: #0000FF; font-weight: bold; } --> </style></head> <body> <table width='580' border='1' align='center' cellpadding='0' cellspacing=0> <tr> <td width='628' height='67' valign='top'><p><img width='400' height='57' src='http://i44.photobucket.com/albums/f1/gilbertofjr/form_clip_image002.jpg' /></p></td> </tr> <tr> <td width='628' valign='top'><p><span class='style1'>Ensino Médio </span> </p></td> </tr> <tr> <td width='628' valign='top'><p><span class='style1'>TEMA:</span> çlkjh. </p></td> </tr> <tr> <td width='62 in c:\arquivos de programas\apache group\apache\htdocs\formularios\html_to_doc.inc.php on line 175

 

 

///////finish.php//////

<?php	include("html_to_doc.inc.php");	session_start();	//Variaveis de atalho	$assunto = $_SESSION['assunto'];	$segmento = $_SESSION['segmento'];	$tema = $_SESSION['tema'];	$serie = $_SESSION['serie'];	$justificativa = $_SESSION['justificativa'];	$objetivos = $_SESSION['objetivos'];	$planejamento = $_SESSION['planejamento'];	$recursos = $_SESSION['recursos'];	$duracao = $_SESSION['duracao'];	$avaliacao = $_SESSION['avaliacao'];	$coor_area = $_SESSION['coor_area'];	$professor = $_SESSION['professor'];	//variaveis para coordenadores	if ($_SESSION['segmento'] == 'Ensino Fundamental I')	{		$coor_uni = $_SESSION['coor_uni'] = 'Kássia Neves de Farias';	}		if ($_SESSION['segmento'] == 'Ensino Fundamental II')	{		$coor_uni = $_SESSION['coor_uni'] = 'Rosimeiry C. O. Nascimento';	}		if ($_SESSION['segmento'] == 'Ensino Médio')	{		$coor_uni = $_SESSION['coor_uni'] = 'Jorge Fernando Barroso';	}		if ($_SESSION['segmento'] == 'Educação Infantil')	{		$coor_uni = $_SESSION['coor_uni'] = 'Sueli Silva de Almeida';	}		$arq = "<html><head><title>Untitled Document</title>	<style type='text/css'><!--.style1 {	color: #FF0000;	font-weight: bold;}.style2 {color: #FF0000}.style3 {	color: #0000FF;	font-weight: bold;}--></style></head>	<body>	<table width='580' border='1' align='center' cellpadding='0' cellspacing=0>  <tr>	<td width='628' height='67' valign='top'><p><img width='400' height='57' src='http://i44.photobucket.com/albums/f1/gilbertofjr/form_clip_image002.jpg' /></p></td>  </tr>  <tr>	<td width='628' valign='top'><p><span class='style1'>$segmento </span> </p></td>  </tr>  <tr>	<td width='628' valign='top'><p><span class='style1'>TEMA:</span> $tema. </p></td>  </tr>  <tr>	<td width='628' valign='top'><p><span class='style1'>SÉRIE:</span> $serie. </p></td>  </tr>  <tr>	<td width='628' valign='top'><p><strong><span class='style2'>JUSTIFICATIVA:  </span><br> $justificativa</strong> </p></td>  </tr>  <tr>	<td width='628' valign='top'><p><span class='style2'><strong>OBJETIVOS DO   PROJETO:</strong></span><br>		   $objetivos <strong> </strong><br />			<br />	</td>  </tr>  <tr>	<td width='628' height='195' valign='top'><p><span class='style2'><strong>PLANEJAMENTO,	DESENVOLVIMENTO E ETAPAS DO PROJETO:</strong></span><br>$planejamento <strong> </strong> </p></td>  </tr>  <tr>	<td width='628' height='66' valign='top'><p><span class='style2'><strong>RECURSOS	A SEREM UTILIZADOS:</strong></span><br>  $objetivos<strong> </strong> </p></td>  </tr>  <tr>	<td width='628' height='27' valign='top'><p><span class='style2'><strong>DURAÇÃO: </strong></span> <strong> </strong> $duracao aulas</p></td>  </tr>  <tr>	<td width='628' height='32' valign='top'><p><span class='style2'><strong>AVALIAÇÃO: </strong></span> $avaliacao </p></td>  </tr>  <tr>	<td width='628' valign='top'><p><span class='style2'><strong>Coordenação de área:</strong></span> $coor_area;  <br />			<span class='style2'><strong>Coordenação do Segmento: </strong></span> $coor_uni;  <br />			<span class='style2'><strong>Coordenação de Informática Educacional: </strong></span><strong>Lucilene	Lopes Campanholo</strong> <br />			<span class='style2'><strong>Professor(a): </strong> </span> $professor;  </p></td>  </tr></table></body></html>";?><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>Check</title><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><style type="text/css"><!--.style1 {	color: #FF0000;	font-weight: bold;}.style2 {color: #FF0000}.style3 {	color: #0000FF;	font-weight: bold;}--></style></head><body><?php	echo $arq;?>	<?php	$htmltodoc = new HTML_TO_DOC();		$htmltodoc->createDoc("$arq","teste")?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.