Ir para conteúdo

Arquivado

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

zeke

Problema com acentuação ao gerar .doc no php

Recommended Posts

Oi Galera,

 

Tenho um sistema em php que gera um arquivo em formato .doc. Ao gerar esse arquivo eu percebi que a acantuação não aparece no arquivo.

Eu ja coloquei isso aqui no arquivo .php mas não funcionou

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>

 

Se alguém puder me ajudar, obrigado.

Compartilhar este post


Link para o post
Compartilhar em outros sites

por favor poste o codigo pra gnt analisar.

 

e uma pergunta. a acentuacao simplesmente nao aparece ou no lugar dela aparecem caracteres estranhos substituindo?

Compartilhar este post


Link para o post
Compartilhar em outros sites

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>

 

tente isso e poste dpois c deu certo...

 

mude o código de cima para isso

 

<meta http-equiv="Content-Type" content="text/html; charset=ANSI"/>

 

abra os arquivos no bloco de notas(notepad) e depois clica em salvar como

na codificação coloque ANSI

 

;)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Para gerar o arquivo em .doc ele chama uma página que tem esse código aqui

 

 

 

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

}

?>

 

A página em php

 

<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>

 

tente isso e poste dpois c deu certo...

 

mude o código de cima para isso

 

<meta http-equiv="Content-Type" content="text/html; charset=ANSI"/>

 

abra os arquivos no bloco de notas(notepad) e depois clica em salvar como

na codificação coloque ANSI

 

;)/>

 

 

Não Funcionou

Compartilhar este post


Link para o post
Compartilhar em outros sites

tente utilizar um dos charset no início do código

 

<?php header("Content-Type: text/html; charset=ISO-8859-1",true) ?>

<?php header("Content-Type: text/html; charset=UTF-8",true) ?>

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.