/ Criação dinâmica de um documento doc / docx na área de trabalho do usuário - php, javascript, desktop, docx, doc

Criação dinâmica de um documento doc / docx na área de trabalho do usuário - php, javascript, desktop, docx, doc

Meu site é HTML / Javascript com o AJAX chamando o PHP do lado do servidor. Eu quero permitir que o usuário clique em um ícone e criar um relatório de dados do MySQL e, em seguida, salve isso no desktop do cliente sem fazendo uma recarga de página.

Opções para criar um documento, como eu posso reunir,parece ser o seguinte. (Eu entendo que precisa ser feito no lado do servidor, ao invés de com JavaScript.) Eu não tenho certeza onde o arquivo termina em cada caso. Por favor, sinta-se livre para corrigir meus mal-entendidos :)

Método 1 - isso aparece apenas para criar um arquivo .doc. Eu não tenho certeza onde o arquivo é colocado.

$fp = fopen("method1.doc", "w+");
$str = "<B>This is the text for the word file created through php programming</B>";
fwrite($fp, $str);
fclose($fp);

Método 2 - isso também parece criar um arquivo .doc.

$word = new COM("word.application") or die ("couldnt create an instance of word");
echo "loaded , word version{$word->version}";
$word->visible = 1;
$word->Documents->Add();
$word->Selection->TypeText("Sample text.");
$word->Documents[1]->SaveAs("method2.doc");
$word->Quit();
$word->Release();
$word = null;

Método 3 - também um arquivo .doc, eu acho.

header("Content-type: application/vnd.ms-word");
header("Content-Disposition: attachment;Filename=method3.doc");

echo "<html>";
echo "<body>";
echo "<b>My first document</b>";
echo "</body>";
echo "</html>";

Método 4 - PHPWord

Método 5 - PHPDocx

Eu testei 1 e 2 no meu ambiente de desenvolvimento, mas não consigo encontrar os arquivos! Qual é o melhor caminho a seguir, por favor?

Obrigado :)

BTW, eu sei que existem posts relevantes Aqui, Aqui e Aqui, mas nenhum realmente responde a pergunta.

Respostas:

1 para resposta № 1

Os métodos 1 e 2 criam o documento no lado do servidor em algum lugar no sistema de arquivos (depois disso você precisa transferi-lo para o cliente).

O método 3 cria um documento como uma resposta à solicitação do cliente - dependendo do navegador de configurações, você pode salvá-lo ou abrir na janela (ou perguntar "Salvar / Abrir / Cancelar?").

Eu pessoalmente teria feito o applet java ou o aplicativo flash que terá acesso ao seu sistema de arquivos local. Ele pode carregar o documento do servidor e salvar no sistema de arquivos local sem recarregar a página.


2 para resposta № 2

Se você quiser ter um ícone e quando o ícone estiverclicado faz um download sem recarregar a página, então você só tem que fazer um link para o ícone que traz para um script que iniciar um download usando os cabeçalhos apropriados.

Exemplo:

header ("Pragma: no-cache");
header("Content-Disposition: attachment; filename="".$File.""");
header("Expires: 0");
header("Cache-Control: must-revalidate, post-check=0, pre-check=0");
header("Cache-Control: public");
header("Content-Description: File Transfer");
header("Content-Transfer-Encoding: binary");
header("Content-Length: ".$Len);

Fazendo isso, o download será iniciado, mas a página em que o usuário clicou não será alterada nem recarregada.

Se você deseja gerar arquivos DOCX dinâmicos para download, eu recomendo usar OpenTBS. Esta biblioteca pode gerar um DOCX (e XLSX,PPTX, ODT, ODS, ...) usando modelos. Tem uma função que permite enviar o resultado diretamente como um download, sem arquivos temporários, ou deixá-lo salvar no lado do servidor.