Importar .DOC pro PHP, inserir informações e salvar o .DOC ... tem jeito??

1,843 views
Skip to first unread message

Diogo Roldão

unread,
Mar 27, 2009, 5:18:35 PM3/27/09
to LISTA PHP
Boa noite lista!

to ha qusae 2 dias caçando uma forma de fazer o que o titulo sugere:
- impotar um .DOC para o sistema; (neste .DOC ja teriam umas palavras-
chave pra trocar)
- procurar as palavras-chave e trocar por informacoes do banco de
dados;
-salvar esse .DOC em algum lugar que eu possa manipular depois
(visualizar, baixar, etc);

até agora n achei nada satisfatorio e qdo cheguei perto usando a
classe COM() eu descobri que ela n funciona no linux/apache, que é
onde a aplicação esta hospedada.

usando o application/msword eu consegui facilmente criar umas tags de
<UL><LI>, aplicar uns etilos e mandar gerar o .DOC, mas o problema é
que o cliente precisa importar uns contratos enormes, e pra eu criar
isso na aplicação é inviavel de tempo/preço.

Alguem tem ideia de como fazer isso? Conhece algum how-to?

obrigado!
Diogo

Leonardo Aidar

unread,
Mar 30, 2009, 9:25:17 AM3/30/09
to list...@googlegroups.com
Cara criar um .doc com o fopen é simples dificil é formata-lo vc poderia fazer a importação
em outro formato e reformatar para o teu arquivo word.
 
Enfim só uma idéia
 
Att,
 
Leonardo Aidar

2009/3/27 Diogo Roldão <diogo...@gmail.com>

Eduardo Carvalho

unread,
Mar 30, 2009, 9:41:00 AM3/30/09
to list...@googlegroups.com
o que tenho comigo é exportar do html para doc....serve ?

2009/3/30 Leonardo Aidar <leo...@gmail.com>



--
Sem mais,

Eduardo Ferreira de Carvalho
------------------------------------------
Analista Programador WEB
19-9212-6148
msn: eduardof...@hotmail.com
skype: eduardo_contato

Diogo Roldão

unread,
Mar 30, 2009, 9:52:45 AM3/30/09
to list...@googlegroups.com
Eduardo, até serve, é uma alternativa, estou aceitando todas! :D
 
Leonardo, vou caçar sobre o fopen com .doc, mas se vc puder me mandar alguma coisa pra eu dar uma olhada eu ficaria mto grato!
 
obrigado pessoal,
[ ]'s...


 
2009/3/30 Eduardo Carvalho <eduardof...@gmail.com>

Diogo Roldão

unread,
Mar 30, 2009, 11:58:06 AM3/30/09
to list...@googlegroups.com
como eu tenho a opção de mudar a hospedagem do cliente pra um server windows, estou voltando pra ideia do COM(),
mas aqui na minha maquina qdo eu tento dar um "$this->handle->Documents->Open($File);" no endereço "C:\\teste.doc" e no componente que eu abri (new COM("word.application")), a aplicação fica parada pensando e n faz nada, se eu vou nos processos tem um processo do winword.exe la, e qtos F5 eu der na pagina surge um processo novo mas n faz nada sempre.
 
ta uma merda isso, to desde quinta e sempre empaco em um problema.
 
aguardo sugestoes!
obrigado galera!
 
 

Vinicius Rezende

unread,
Mar 30, 2009, 12:19:02 PM3/30/09
to list...@googlegroups.com
Classe doc>html e html>doc
http://www.phpclasses.org/browse/package/388.html

Espero que ajude

2009/3/30 Diogo Roldão <diogo...@gmail.com>

Fernando Almeida

unread,
Mar 30, 2009, 12:44:44 PM3/30/09
to list...@googlegroups.com
Seria mais interessante usar RTF, que o MS Word abre tranquilamente.


2009/3/30 Vinicius Rezende <crazy...@gmail.com>

Diogo Roldão

unread,
Mar 30, 2009, 12:57:20 PM3/30/09
to list...@googlegroups.com
nossa que raiva!
 
tudo que eu tento aqui da o mesmo problema:
o navegador fica pensando, o serviço do winword.exe é executado e boa, fica nisso, n vai pra lugar nenhum, n da erro, n da timeout, n da 100% de processamento, n faz porra nenhuma...
 
ta foda...


 
2009/3/30 Fernando Almeida <nando...@gmail.com>

felipe Nascimento de Moura

unread,
Mar 30, 2009, 1:25:39 PM3/30/09
to list...@googlegroups.com
Cara, ja tentou simplesmente alterar o header em php, dizendo que é do tipo :
header("Expires: Mon, 26 Jul 1997 05:00:00 GMT");
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
header("Cache-Control: no-store, no-cache, must-revalidate");
header("Cache-Control: post-check=0, pre-check=0", false);
header("Pragma: no-cache");
header("Content-type: application/msword");
header('Content-Disposition: attachment; filename="myFileName.doc";');

e coloca o conteúdo em html normal, mesmo (tenta usar o minimo de CSS possivel, conhece a MS, ne)



2009/3/30 Diogo Roldão <diogo...@gmail.com>



--
Felipe N. de Moura
Desenvolvimento Web

www.springerit.com
fel...@springerit.com
---------------------------------
Fazendo da web um lugar melhor pra se viver.
Making the web a better place to live

Diogo Roldão

unread,
Mar 30, 2009, 2:20:53 PM3/30/09
to list...@googlegroups.com
entao Felipe, essa opção eu quero deixar como ultima esperança pq os documentos que devem ser criados sao enormes, umas 30 ou 40 paginas, entao n é viavel criar isso na programacao.
 
Isso que vc sugeriu eu ja testei aqui e funciona, criar o .doc bonitinho do jeito que vc quer, mas pra isso funcionar eu teria que criar uma puta ferramente para criar documentos inteiros online, ao inves do mais simples que seria simplesmente importar o .doc pronto para o sistema, trocar uma meia duzia de palavrinhas e salvar denovo.
 
isso deve ter como funcionar pq eu achei varias classes e eventos, mas todos eles sao esse maldito problema de não fazer nada qdo se testa, ta foda...
 
obrigado de qqr forma.


 
2009/3/30 felipe Nascimento de Moura <felipe...@gmail.com>

Renato de Freitas Freire

unread,
Mar 30, 2009, 2:44:43 PM3/30/09
to list...@googlegroups.com
Vc quer fazer o template .doc, alterar meia duzia de palavras e salvar...
Faz o template em html, altera meia duzia de palavras e salva como .doc.

Nao precisa fazer nada diferente do que vc iria fazer com o .doc.
inclusive, vc pode deixar o arquivo template.doc (feito em html) no seu servidor e abri-lo na hora de "exportar" para o .doc.


--
Renato de Freitas Freire
ren...@morfer.org



2009/3/30 Diogo Roldão <diogo...@gmail.com>

Diogo Roldão

unread,
Mar 30, 2009, 2:49:06 PM3/30/09
to list...@googlegroups.com
isso seria otimo, mas meu cliente tem uns 40 documentos enormes prontos e precisa criar varios outros por semana derivando destes.
Ele tem 3 funcionarias só pra fazer isso e ele quer cortar gastos, deixar apenas uma controlando estes templates em .DOC e mandando pro sistema gerar os contrator preenchidos.
 
entendeu o tamanho do buraco agora?
 
 
obrigado!
Diogo


 
2009/3/30 Renato de Freitas Freire <rena...@gmail.com>

felipe Nascimento de Moura

unread,
Mar 30, 2009, 3:22:01 PM3/30/09
to list...@googlegroups.com
mto dificil tu criar uma ferramenta q importa rtf ou pdf, mesmo, e pedir a estas pessoas para passar estes documentos para rtf ou pdf?

2009/3/30 Diogo Roldão <diogo...@gmail.com>

Diogo Roldão

unread,
Mar 30, 2009, 3:33:10 PM3/30/09
to list...@googlegroups.com

passar pra RTF é só dar um "salva como" e criar um PDF é só mandar imprimir na impressora de PDF do Adobe, mas no que isso pode me ajudar?

felipe Nascimento de Moura

unread,
Mar 30, 2009, 3:45:58 PM3/30/09
to list...@googlegroups.com
exato, pede pra eles importatem em pdf ou rtf pro teu sistema, e o sistema interpreta os arquivos e trabalha como tu conseguir. Acredito que seja mais simples tu "interpretar" um rtf ou pdf do que um doc. Ei, tu usa as informações, altera o q tiver pra alterar, e escreve omo doc, ou pdf mesmo, de novo.

Indico o FPDF, q te ajuda a ler, mudar e escrever PDFs, da uma olhada na documentação deles: http://www.setasign.de/products/pdf-php-solutions/fpdi/

2009/3/30 Diogo Roldão <diogo...@gmail.com>

Diogo Roldão

unread,
Mar 30, 2009, 3:50:51 PM3/30/09
to list...@googlegroups.com
hmmm ... n sabia que o FPDF conseguia manipular informacoes dentro de um PDF ja criado, achei q ele só criava PDFs.
Vou dar uma olhada nisso agora.
 
Para facilitar meu problema, depois de horas parada, a aplicação volta esse erro:

Fatal error: Maximum execution time of 30 seconds exceeded
 
Estou pesquisando sobre isso e "Word.Application".

Diogo Roldão

unread,
Mar 30, 2009, 5:20:19 PM3/30/09
to list...@googlegroups.com
Felipe, o negocio do FPDI ta indo, mas ainda faltam 2 coisas que nao achei na fraca documentacao e na lentidao do site do fabricante:
  1. ainda nao achei como importar todo o documento .PDF, só vi como importar uma pagina de cada vez;
  2. nao achei como interpretar o texto importado para ler e trocar pelo que eu precisar;
se vc ja usou isso, da uma luz ae! :D
 
obrigado!
[ ]'s...
 
 
 

felipe Nascimento de Moura

unread,
Mar 31, 2009, 8:08:36 AM3/31/09
to list...@googlegroups.com
Bah cara, nao me lembro, faz tempo que usei isto tambem.
Mas quando usei, me baseei na documentação do site mesmo.
O google vai te ajudar tambem, devem ter outras pessoas que precisavam do mesmo.
Da uma pesquisada no phpclasses, la tem de tudo, tambem.

Abraço



2009/3/30 Diogo Roldão <diogo...@gmail.com>

Diogo Roldão

unread,
Mar 31, 2009, 10:15:20 AM3/31/09
to list...@googlegroups.com
Felipe, vc conseguiu editar um PDF? trocar palavras?


 
2009/3/31 felipe Nascimento de Moura <felipe...@gmail.com>

felipe Nascimento de Moura

unread,
Mar 31, 2009, 10:21:54 AM3/31/09
to list...@googlegroups.com
Minha necessidade nao era igual a esta tua. Mas ha uns 3 anos eu usei para ler um pdf q o cara mandava pro server, e salvar umas informações no db. E usei tambem para gerar relatorios...entao...tu pode pegar o arquivo, e tipo "regerar" ele...algo assim.

é so uma ideia, mesmo. Mas ve sobre rtf, ou entao, em docx, ja q docx é um xml q ele gera ;)


2009/3/31 Diogo Roldão <diogo...@gmail.com>

Esther Angelica Hinrichsen

unread,
Mar 31, 2009, 10:24:33 AM3/31/09
to list...@googlegroups.com
pode te ajudar: http://www.phpbuilder.com/columns/yunus20031124.php3

ou um exemplo que eu achei na net

Ele coloca o texto Hello.

<?
$numchamado = $HTTP_GET_VARS['numchamado'];
$word = new COM("word.application") or die("Não posso abrir o word!");
$word->Visible = 1;
$word->Documents->Open("c:\Temp\modelo.doc");
$word->Selection->TypeText("Hello");
$word->Documents[1]->SaveAs("c:\Temp\\$numchamado.doc") ;
$word->Documents->Close();
$word->Quit();
$word->null;
echo'<p>'.$numchamado.'</p>';
?>


2009/3/31 Diogo Roldão <diogo...@gmail.com>



--
Esther A. Hinrichsen
3º Período - Ciência da Computação - PUCPR (Campus Curitiba).
Cel.: (41) 8818-8560
Tel.: (41) 3035-5408
Email alternativo: teh...@hotmail.com

MEM

unread,
Mar 31, 2009, 10:25:26 AM3/31/09
to list...@googlegroups.com

Podemos ter:

 

class LigacaoBD extends PDO, PDOStatement {

 

}

 

Em vez de termos duas classes tipo isto:

 

<?php
class Database extends PDO {
    ...

    }
}
class
DBStatement extends PDOStatement {
    ...   

    }
}
?>

 

 

Existe alguma vantagem em separarmos as duas? A única vantagem que vejo é o possível evitar de erros, caso o PDO venha a ter nomes de métodos iguais para classes diferentes…

 

O que acham?

 

 

 

 

Obrigado,

Márcio

Diogo Roldão

unread,
Mar 31, 2009, 10:26:54 AM3/31/09
to list...@googlegroups.com
vc ainda conseguiu extrair um texto do PDF, eu ainda nem achei como fazer isso. Vc lembra como extraiu? por posicao da linha ou procurando palavras?
 
to vendo aqui na documentacao do FPDI e ele fala que importa um PDF existente pra vc brincar no FPDF.
Eu ja olhei todos métodos do FPDF e ainda n achei nada sobre encontrar um determinado texto ou linha, vou olhar denovo com mais calma.

Diogo Roldão

unread,
Mar 31, 2009, 10:50:27 AM3/31/09
to list...@googlegroups.com
acabei de achar aqui uma forma de extrair textos do PDF: http://www.foolabs.com/xpdf/
mas ainda n achei nada sobre substituir. :(
 
to começando a querer voltar pros .RTFs e .DOCs da vida... :(

Diogo Roldão

unread,
Mar 31, 2009, 10:56:44 AM3/31/09
to list...@googlegroups.com
entao Esther, eu só nao evolui em Word pq nai sei que raios que acontece que sempre eu tento rodar qualquer exemplo que seja para documentos do Word, a aplicação fica pensando, pensando, pensando, n da erro, na da resultado, n da 100% de processamento, n da nada! só depois de horas parada pensando ela da timeout no php, e isso só qdo eu mato o winword.exe da lista de processos.
 
ta foda, queria saber pq isso acontece.

2009/3/31 Esther Angelica Hinrichsen <hinric...@gmail.com>

felipe Nascimento de Moura

unread,
Mar 31, 2009, 10:57:04 AM3/31/09
to list...@googlegroups.com
cara, mas nao precisa substituir.
extrai pra uma variavel do php, nao vi o formato q ele extrai, mas deve mandar pra uma variavel, ou algo assim... dai tu usa essa variavel, substitui nela, algo assim. E depois, cria um documento novo usando ela.
faz esse documento substituir o outro, seria praticamente o mesmo resultado, nao?


2009/3/31 Diogo Roldão <diogo...@gmail.com>

Diogo Roldão

unread,
Mar 31, 2009, 11:01:53 AM3/31/09
to list...@googlegroups.com
até seria, mas os documentos sao contratos enomes cheios de formatacao,
esse procedimento de importar um RTF, trocar umas palavras e jogar ele de volta eu ja consegui fazer com ASP, em PHP tem tbm, mas minha maquina maldita da essa merda de problema de ficar pensando sem fim, queria pelo menos que ela lesse qualquer documento, só de ler eu ja ficava feliz, ou pelo menos descobrir que erro é esse e o pq ele acontece.

Esther Angelica Hinrichsen

unread,
Mar 31, 2009, 11:02:18 AM3/31/09
to list...@googlegroups.com
de uma lida em http://www.php.net/manual/pt_BR/class.com.php ele explica bem como usar e tem um exemplo... tente so executar o exemplo e tente modificar ele a sua necessidade

2009/3/31 Diogo Roldão <diogo...@gmail.com>

Edgar da Silva (Fly2k)

unread,
Mar 31, 2009, 12:30:52 PM3/31/09
to list...@googlegroups.com
Na realidade você não consiguirá herdar de duas classes.

Agora, juntar as duas classes? Você entendeu pra quê serve a statement
e pra que serve a PDO ?

2009/3/31 MEM <tal...@gmail.com>:
--
Abraços
Edgar Ferreira da Silva
Engenheiro de Software
Araras - SP
(19) 8110-0733
http://edgarfs.com.br
-----
Aprenda PHP, cole códigos, saiba das vagas de empregos:
http://www.manjaphp.com.br

MEM

unread,
Mar 31, 2009, 12:49:01 PM3/31/09
to list...@googlegroups.com
Pois... PDO e PDOStatement são duas classes distintas do Php Data Objects certo?

O problema é que estou tentando usar os métodos prepare e execute. Mas o prepare diz respeito à classe PDO, o execute diz respeito à classe PDOStatement.

Acho estranho o prepare fazer parte da PDO uma vez que é a PDOStatement que diz:
" Represents a prepared statement and, after the statement is executed, an associated result set." Mas esquecendo isto...


O meu problema é que não estou a ver como posso aceder ao método execute a partir de uma classe.

Já criei uma classe "class LigacaoBD extends PDO", e se eu instanciar esta classe, poderei usar o prepare() mas, não consigo usar o execute. (normal, pois este método não pertence a esta classe).

Tentei criar outra classe "class Querys extends PDOStatement" mas, os exemplos que tenho visto mostram-me algo assim:


class DBStatement extends PDOStatement
{
public $dbh;

protected function __construct($dbh)
{
$this->dbh = $dbh;
$this->setFetchMode(PDO::FETCH_OBJ);

}



Ora, isto não parece ser um bom método pois faz-nos aceder publicamente às propriedades de uma classe. Então, pensei em algo assim:


class DBStatement extends PDOStatement {
private $dbh;

protected function __construct() {
$this->setFetchMode(PDO::FETCH_OBJ);
}

public function getDbh () {
$this->dbh=$dbh;

}

Isto faz sentido??



Obrigado,
Márcio

Edgar da Silva (Fly2k)

unread,
Mar 31, 2009, 1:14:12 PM3/31/09
to list...@googlegroups.com
Não. Para mim não faz muito sentido. Talvez eu não tenha entendido a idéia.

Você quer deixar a instância do PDO privada? Mas você vai injetá-lo no
construtor ou não?

A PDOStatement é o objeto preparado. Então alguém cria ele. Quem faz
isso é a PDO. Então isso é correto.

Depois da query preparada, você pode executá-la:

$s1->execute();
$s2->execute();
$s1->execute();
$s2->execute();

MEM

unread,
Mar 31, 2009, 2:00:37 PM3/31/09
to list...@googlegroups.com
"Você quer deixar a instância do PDO privada?"
Não. Quero é deixar as propriedades das classes privadas, e aceder a essas propriedades apenas através de métodos. Isto não é uma boa prática de OOP? É que tenho lido tipo regra: "não devemos aceder de uma instância directamente às propriedades de sua classe" e eu repito, ainda que não compreenda bem porquê... mas...


Se tivermos uma classe assim:


class NkPDO extends PDO {
private $username;
private $password;
private $dsn;

public function __construct () {
$this->dsn="mysql:unix_socket=/tmp/mysql.sock;dbname=nometeste";
$this->username = "userteste";
$this->password = "pass12345";
try {
parent::__construct($this->dsn, $this->username, $this->password);
}
catch(PDOException $e) {
echo "Erro de Conexão: " .$e->getMessage();
}
}
}


Podemos instanciar a classe assim:
$conn = new NkPDO();

E obtemos logo uma ligacao à base de dados com os parametros definidos no construtor da classe.

Se eu fizer:
$conn->prepare('SELECT id_cliente, nome_cliente FROM cliente');

Funciona.

Se (depois) eu fizer:
$conn->execute();

Não funciona.


"Depois da query preparada, você pode executá-la:
$s1->execute();"

Está a dizer-me que, se eu fizer algo do tipo:
$query=$conn->prepare('SELECT id_cliente, nome_cliente FROM cliente');

E depois fizer:
$query->execute();

Isto vai funcionar e, isto é melhor do que ter uma classe adicionar definida da seguinte forma:

class NkPDOQuerys extends PDOStatement {

private $stmt;

public function __construct() {

//mete o fetchmode por omissão em fetch_obj.
$this->setFetchMode(PDO::FETCH_OBJ);
}

public function getStmt () {

return $this->stmt;

}
}

É isso?

Esta a minha primeira classe em PHP por isso, desculpem lá alguma barbaridade evidente.

Brigado,
Márcio

Diogo Roldão

unread,
Mar 31, 2009, 4:08:45 PM3/31/09
to list...@googlegroups.com
Com a grande ajuda do michelwilhelm, consegui resolver o misterioso problema de todos meus testes sempre ficarem pensando e nunca sairem do lugar. Era meu apache que nao estava entendendo mto bem a classe COM(), qdo mandei o IIS rodar, foi de boa!
 
agora ja nos testes avançados com o Word, cheguei num ponto aqui que nao consigo achar saida, era a ultima coisa que eu precisava para finalmente dar continuidade no desenvolvimento, o tal Find/Replace.
 
 
O seguinte método em VB eu portei quase todo para PHP:
 
======================================================
em VB:
With Selection.Find
    .Text = "minha"
    .ClearFormatting
    .Replacement.Text = "sua"
    .Replacement.ClearFormatting
    .Execute Replace:=wdReplaceOne, Forward:=True
End With
 
======================================================
 em PHP:
$find = $word->Selection->Find;
$find->Text = "minha";
//$find->ClearFormatting();
$find->Replacement->Text = "sua";
$find->Forward = true;
//$find->Replacement->ClearFormatting();
$find->Execute();
 
====================================================== 
 
o problema agora é que eu nao estou conseguindo portar o ultimo comando do VB, nao estou entendo como fazer ele:
Execute Replace:=wdReplaceOne, Forward:=True

 
alguem bom de VB ai poderia me explicar como portar isso?
 
aceito qualquer tipo de sugestão!
obrigado!
Diogo

 

Edgar da Silva (Fly2k)

unread,
Mar 31, 2009, 4:29:09 PM3/31/09
to list...@googlegroups.com
2009/3/31 MEM <tal...@gmail.com>:

>
> "Você quer deixar a instância do PDO privada?"
> Não. Quero é deixar as propriedades das classes privadas, e aceder a essas propriedades apenas através de métodos. Isto não é uma boa prática de OOP? É que tenho lido tipo regra: "não devemos aceder de uma instância directamente às propriedades de sua classe" e eu repito, ainda que não compreenda bem porquê... mas...
>

Primeiro: Isso é uma boa prática, altamente recomendável, mas não é uma regra.

O que você precisa primeiro é entender porquê você não deve deixar que
os atributos de uma classe sejam acessados diratamente: Porquê já que
você está agrupando os atributos de acordo com seu escopo, é
logicamente definido que sua classe saiba como seus atributos devem
ser definidos. Se deixar publico, qualquer um pode alterar, e sua
classe nem sequer saber dessa alteração. Imagine a situação:

class Calculator {
public $num;

public function __construct()
{
$this->num = 2;
}

public function divide($pNum)
{
return $pNum / $this->num;
}
}

O uso normal dessa classe poderia ser

$calc = new Calculator();
echo $calc->divide(10);

Ok? Só que como o atributo é público poderia acontecer o seguinte:

$calc = new Calculator();
$calc->num = 0;
echo $calc->divide(10);

Nesse caso, ocorre erro de divisão por zero. Entendeu o problema?
Sendo pública, acaba permitindo um erro de programação.

Levando em conta tudo isso, eu não vejo a necessidade de fazer com o
PDO o que você está pensando.

Diogo Roldão

unread,
Apr 1, 2009, 2:19:19 PM4/1/09
to list...@googlegroups.com
desisti... ja perdi 6 dias com isso e o meu cronograma tbm.
De tudo que ja caçei e ja pesquisei, a conclusão que cheguei foi que isso é uma limitação do componente com o PHP.
 
eu tenho que passar o comando wdReplaceAll para o atributo "Replace" do metodo Execute, assim:
 
Find->Execute($Replace = "wdReplaceAll");
 
mas se passar entre aspas (froçar uma string) o componente nao aceita, se vc tira as aspas da erro de objeto nao identificado e mesmo colocando um @ pra suprimir o erro nao vai. Em 6 dias nao achei nada disso em PHP e o unico exemplo que achei foi foi de 2001 qdo o php era versão 3 e aceitava esse tipo de declaração.
 
vou mandar um FCKEditor e gerar um DOC ou PDF depois mesmo e boa.


 
2009/3/31 Diogo Roldão <diogo...@gmail.com>

Applicata // Cabral

unread,
Apr 1, 2009, 2:26:12 PM4/1/09
to list...@googlegroups.com
amigo, vc nao pode extender duas classes, para isso vc tem q usar interfaces....
 
em relaçao as classes, vc extendendo pode sobrescrever os medotos da maneira q desejar caso nao sejam final, ou ter tudo em uma classe so extendendo alguma exception pra tratamento de erros...

Giovanni Donda

unread,
Apr 1, 2009, 3:30:57 PM4/1/09
to list...@googlegroups.com
eu dei uma pesquisa no php classes e achei algumas classes para trabalhar com ms word......
verifica se tem alguma função nessas classes que possa te ajudar.

Giovanni

MEM

unread,
Apr 1, 2009, 6:32:47 PM4/1/09
to list...@googlegroups.com

Obrigado. E de facto, eu não sabia que quando fazemos um prepare, era devolve um objecto da classe  PDOStatement, logo, para aquilo que pretendia, que era usar o comando prepare(), execute() a partir de uma classe criada, não faz sentido fazer extend do PDOStatement…

 

Vou agora ler mais sobre interfaces.

 

 

Obrigado,

Márcio

 

From: list...@googlegroups.com [mailto:list...@googlegroups.com] On Behalf Of Applicata // Cabral


Sent: quarta-feira, 1 de Abril de 2009 19:26
To: list...@googlegroups.com

<BR

Diogo Roldão

unread,
Apr 6, 2009, 12:59:55 PM4/6/09
to LISTA PHP
Fala Giovanni.

Acabei de terminar a ferramenta.
O fluxo agora ficou assim:

1. Cria o modelo com nome e escolhe os campos do banco de dados
previamente disponiveis que poderão ser adicionados ao documento;
2. Seleciona o modelo criado e atraves do TinyMCE o usuario cria o
documento, como se fosse o word, e os parametros previamente
selecionados ficam listados em uma toolbar do Tiny, ao clicar em
qualquer um dos botoes de parametro, o parametro é adicionado ao
texto;
3. O usuario seleciona o contrato que quer gerar um documento .DOC,
escolhe um dos modelos previamente configurados e manda emitir (via
jQuery/AJAX);
3.1. Aqui eu achei uma classe no phpclasses (com a ideias
sugeridas neste topico) que cria um .DOC a partir de um .HTML completo
(http://www.phpclasses.org/browse/package/2763.html);
3.2. O arquivo .DOC é salvo em uma pasta expecífica com um nome
expecífico e seu link para download é retornado pelo AJAX para eu
exibi-lo na tela;
3.3. Eu gravo no banco as emissões de modelo X contrato X caminho
do .DOC para futuras outras emissões, evitando processamento
desnecessario;
4. O usuario baixa o .DOC passivel de edição, prontinho para usar;
5. Todo mundo fica feliz e principalmente eu que terminei essa
porcaria e ficou bom ainda; :D


grande abraço a todos que me ajudaram!
Diogo


On 1 abr, 16:30, Giovanni Donda <giovannido...@gmail.com> wrote:
> eu dei uma pesquisa no php classes e achei algumas classes para
> trabalhar com ms word......
> verifica se tem alguma função nessas classes que possa te ajudar.
>
> Giovanni
>
>
>
> Diogo Roldão wrote:
> > desisti... ja perdi 6 dias com isso e o meu cronograma tbm.
> > De tudo que ja caçei e ja pesquisei, a conclusão que cheguei foi que
> > isso é uma limitação do componente com o PHP.
>
> > eu tenho que passar o comando wdReplaceAll para o atributo "Replace"
> > do metodo Execute, assim:
>
> > Find->Execute($Replace = "wdReplaceAll");
>
> > mas se passar entre aspas (froçar uma string) o componente nao aceita,
> > se vc tira as aspas da erro de objeto nao identificado e mesmo
> > colocando um @ pra suprimir o erro nao vai. Em 6 dias nao achei nada
> > disso em PHP e o unico exemplo que achei foi foi de 2001 qdo o php era
> > versão 3 e aceitava esse tipo de declaração.
>
> > vou mandar um FCKEditor e gerar um DOC ou PDF depois mesmo e boa.
>
> > 2009/3/31 Diogo Roldão <diogorol...@gmail.com
> > <mailto:diogorol...@gmail.com>>
>
> >     Com a grande ajuda do *michelwilhelm*, consegui resolver o
> >     misterioso problema de todos meus testes sempre ficarem pensando e
> >     nunca sairem do lugar. Era meu apache que nao estava entendendo
> >     mto bem a classe COM(), qdo mandei o IIS rodar, foi de boa!
>
> >     agora ja nos testes avançados com o Word, cheguei num ponto aqui
> >     que nao consigo achar saida, era a ultima coisa que eu precisava
> >     para finalmente dar continuidade no desenvolvimento, o tal
> >     *Find/Replace*.
> >     Diogo- Ocultar texto entre aspas -
>
> - Mostrar texto entre aspas -
Reply all
Reply to author
Forward
0 new messages