Ir ao conteúdo
  • Cadastre-se

PHP php que gera doc ou pdf


Ir à solução Resolvido por fredkissfree,

Posts recomendados

Bom dia, tenho um sistema de cadastro onde a pessoa preenche uns dados, e com um PHPMailer envia para meu e-mail, então lá chega Nome, Endereço, CPF, etc.

 

Esses dados eu pego e eu mesmo preencho em um documento do word, por exemplo:

 

Eu, (aqui vai o nome), CPF (coloco o cpf)... e assim por diante, tudo manualmente.

 

Lembro que onde eu trabalhava tinha um sistema de cadastro que ele preenchia esse documento automaticamente com php, alguem pode me ajuda de que maneira poderia fazer isso? se ele gerar um pdf tudo bem, se ele gerar um doc melhor ainda que ai eu posso editar caso a pessoa errar algum dado.

 

Detalhe: A pessoa entra no site, faz esse cadastro e se possível tem como quando a pessoa clicar em enviar, ele gerar esse doc e esse doc que a pessoa não terá acesso ser enviado para o meu e-mail automaticamente?

Então lá chega para mim o e-mail, FULADO.DOC ai eu abro e tem tudo preenchido com os dados que a pessoa colocou.

 

Lembro que eu já vi algo parecido e no word a pessoa usava na programação PHP aqueles códigos de mala direta do word «Nome», «CPF», «RG».

Link para o comentário
Compartilhar em outros sites

@Leonardo0308 Vi esse PHPWord, estou tentando achar uma maneira de implementar junto ao PHPMailer ou se vou ter que fazer de outra maneira, complicado, to tentando agilizar um sistema de cadastro que perco muito tempo fazendo, vou ver essa questão da classe COM também.

adicionado 0 minutos depois

Lembrando que não uso banco de dados no site, então não preciso colocar nada em MySQL, é mais a pessoa preencher e pronto gerar o DOC para meu e-mail.

adicionado 15 minutos depois

@Leonardo0308 Eu achei um post de um blog ensinando a criar doc de um html com php, talvez seja mais fácil implementar em meu phpmailer?

Não usa bibliotecas.

https://www.blogson.com.br/como-criar-um-arquivo-do-word-doc-com-php/

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Nada ainda, @DiF tem alguma ideia?

 

Já tentei algumas coisas como:

$mail->MsgHTML($msg); 

$mail->addStringAttachament(file_get_contets($msg),'Filename.pdf');

$mail->Send();
    

da erro 

HTTP ERROR 500

 

Tentei usar o código do https://www.blogson.com.br/como-criar-um-arquivo-do-word-doc-com-php/ mas talvez seja eu que não consigo implementar.

 

Não quero fazer banco de dados, não estou usando composer, por mim se precisar ser salvo no server antes, por exemplo, pasta cadastros2019 e depois seja enviado, não tem problema.

 

O importante é que quando a pessoa colocar os dados, nome, cpf, etc ele crie um pdf ou doc que chega para mim...

 

Eu, XXXXXXXXXXXXXXX, CPF Nº XXXXXXX, Idade XX...

Link para o comentário
Compartilhar em outros sites

  • Moderador

@fredkissfree Como o amigo ali já respondeu, existe uma classe que foi criada para gerar um arquivo de word (.doc) que pode ser encontrada aqui: https://github.com/PHPOffice/PHPWord

 

Porém, como você disse que pode ser em PDF, eu acredito ser melhor.  Então podes usar a classe Fpdf para gerar um arquivo PDF com os dados necessários.

 

Com isso,  o usuário preenche os campos e clica em enviar. Os dados serão enviados a um arquivo PHP. Lá você instancia um objeto da classe do Fpdf  e gera o arquivo a partir dos dados recebidos pelo formulário.

Depois de gerar o arquivo, é só incluir na função de anexo do phpmailer desta forma:

 

//gera o arquivo final do pdf
$pdf->output("aqui vai alguns parametros");
$mail->AddAttachment(coloca aqui o output);

Agora um exemplo mais "completo" mas sem dar o código completo:

//Recebe do formulario
$nome     = $_POST["nome"];
$email    = $_POST["email"];
$endereco = $_POST["endereco"];
$cep      = $_POST["cep"];
$cidade   = $_POST["cidade"];
$estado   = $_POST["estado"];
$cpf      = $_POST["cpf"];
 
//Carrega a classe fpdf
require_once("fpdf/fpdf.php");
 
//cria um objeto de instância
$pdf= new FPDF("P","pt","A4");
 
 
$pdf->AddPage();
$pdf->Image('logog8.jpg');
 
$pdf->SetFont('arial','B',18);
$pdf->Cell(0,5,"Ficha",0,1,'C');
$pdf->Cell(0,5,"","B",1,'C');
$pdf->Ln(8);
 
 
//nome
$pdf->SetFont('arial','B',12);
$pdf->Cell(70,20,"Nome:",0,0,'L');
$pdf->setFont('arial','',12);
$pdf->Cell(0,20,$nome,0,1,'L');
 
//email
$pdf->SetFont('arial','B',12);
$pdf->Cell(70,20,"E-mail:",0,0,'L');
$pdf->setFont('arial','',12);
$pdf->Cell(70,20,$email,0,1,'L');
 
//Endereço
$pdf->SetFont('arial','B',12);
$pdf->Cell(70,20,"Endereço:",0,0,'L');
$pdf->setFont('arial','',12);
$pdf->Cell(70,20,$endereco,0,1,'L');
 
//cep
$pdf->SetFont('arial','B',12);
$pdf->Cell(70,20,"CEP:",0,0,'L');
$pdf->setFont('arial','',12);
$pdf->Cell(70,20,$cep,0,1,'L');
 
//cidade
$pdf->SetFont('arial','B',12);
$pdf->Cell(70,20,"Cidade:",0,0,'L');
$pdf->setFont('arial','',12);
$pdf->Cell(70,20,$cidade,0,1,'L');
 
//Estado
$pdf->SetFont('arial','B',12);
$pdf->Cell(70,20,"Estado:",0,0,'L');
$pdf->setFont('arial','',12);
$pdf->Cell(70,20,$estado,0,1,'L');
 
//cpf
$pdf->SetFont('arial','B',12);
$pdf->Cell(70,20,"CPF:",0,1,'L');
$pdf->setFont('arial','',12);
$pdf->MultiCell(0,20,$cpf,0,'J');

//Quebra linha
$pdf->ln(10);
 
$pdf->Output("arquivo.pdf","D");

//opcional, podes criar uma nova variável para o output:
$pdf_gerado = $pdf->Output("arquivo.pdf","D");

//Linha de anexo no phpmailer
$mail->AddAttachment($pdf_gerado);

 

É por aí, dá uma estudada sobre a classe fpdf, podes criar funções boas com ela. No site deles tem alguns tutoriais.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Estou com problemas para enviar:

Se eu deixo

$pdf->Output("arquivo.pdf","D");

//opcional, podes criar uma nova variável para o output:
$pdf_gerado = $pdf->Output("arquivo.pdf","D");

Da erro ERR_INVALID_RESPONSE

 

Se fica

$pdf->Output("arquivo.pdf","D");

//opcional, podes criar uma nova variável para o output:
//$pdf_gerado = $pdf->Output("arquivo.pdf","D");

ele faz download do pdf

 

E se deixar

$pdf->Output();

//opcional, podes criar uma nova variável para o output:
//$pdf_gerado = $pdf->Output("arquivo.pdf","D");

ele abre para visualizar o pdf no browser.

 

 

Já troquei o D por F para ver, e ele salva o pdf no meu servidor.

Mas até o momento fiz vários teste e nenhum e-mail chegou para mim.

 

talvez meu erro esteja no 

//Linha de anexo no phpmailer
$mail->AddAttachment($pdf_gerado);

 

Link para o comentário
Compartilhar em outros sites

  • Moderador

@fredkissfree Sim, isso eu não sei direito como explicar. Eu nunca usei a classe em conjunto com o phpmailer.

Procurando outras informações, encontrei esse link:  https://www.webslesson.info/2018/08/create-dynamic-pdf-send-as-attachment-with-email-in-php.html

 

Dê uma lida, é uma outra classe diferente do Fpdf e tem exemplos justamente com o phpmailer.

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

  • Solução

@DiF @Leonardo0308 Resolvido,

Tive que alterar quase nada:

Em cima ficou:

$pdf->Output("arquivo.pdf","F");

Com o F, ele salva no servidor meu arquivo e com isso ele pode ser anexado ao e-mail.

 

E mudei:

$mail->AddAttachment(getcwd() . "/arquivo.pdf");

O addAttachment diz ao PhpMailer que um anexo será utilizado e nesse caso passa o caminho do arquivo onde ele vai pegar ele e anexar ao e-mail.

 

Obrigado pela ajuda.

  • Curtir 1
  • Amei 1
Link para o comentário
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...