-3
I need to generate a PDF with the MPDF class inside the PDF needs to contain some images, which will be sent through the form.html page, which sends the images to gera-pdf.php which processes and converts the content to PDF
html form.
<form method="post" enctype="multipart/form-data" action="gera-pdf.php">
Selecione uma imagem: <input name="arquivo" type="file" />
<br />
<input type="submit" value="Gerar PDF" />
</form>
gera-pdf.php
<?php
ob_start(); //inicia o buffer
?>
<!--COMEÇA CONTEUDO DO PDF-->
<!--TERMINA CONTEUDO DO PDF-->
<?php
$html = ob_get_clean();
// pega o conteudo do buffer, insere na variavel e limpa a memória
$html = utf8_encode($html);
// converte o conteudo para uft-8
include("mpdf60/mpdf.php");
// inclui a classe
$mpdf = new mPDF();
// cria o objeto
$mpdf->allow_charset_conversion=true;
// permite a conversao (opcional)
$mpdf->charset_in='UTF-8';
// converte todo o PDF para utf-8
$mpdf->WriteHTML($html);
// escreve definitivamente o conteudo no PDF
$mpdf->Output();
// imprime
exit();
// finaliza o codigo
?>
Code that receives the upload
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Upload de arquivos</title>
</head>
<body>
<?php
// verifica se foi enviado um arquivo
if(isset($_FILES['arquivo']['name']) && $_FILES["arquivo"]["error"] == 0)
{
echo "Você enviou o arquivo: <strong>" . $_FILES['arquivo']['name'] . " </strong><br />";
echo "Este arquivo é do tipo: <strong>" . $_FILES['arquivo']['type'] . "</strong><br />";
echo "Temporáriamente foi salvo em: <strong>" . $_FILES['arquivo']['tmp_name'] . "</strong><br />";
echo "Seu tamanho é: <strong>" . $_FILES['arquivo']['size'] . "</strong> Bytes<br /><br />";
$arquivo_tmp = $_FILES['arquivo']['tmp_name'];
$nome = $_FILES['arquivo']['name'];
// Pega a extensao
$extensao = strrchr($nome, '.');
// Converte a extensao para mimusculo
$extensao = strtolower($extensao);
// Somente imagens, .jpg;.jpeg;.gif;.png
// Aqui eu enfilero as extesões permitidas e separo por ';'
// Isso server apenas para eu poder pesquisar dentro desta String
if(strstr('.jpg;.jpeg;.gif;.png', $extensao))
{
// Cria um nome único para esta imagem
// Evita que duplique as imagens no servidor.
$novoNome = md5(microtime()) . $extensao;
// Concatena a pasta com o nome
$destino = 'imagens/' . $novoNome;
// tenta mover o arquivo para o destino
if( @move_uploaded_file( $arquivo_tmp, $destino ))
{
echo "Arquivo salvo com sucesso em : <strong>" . $destino . "</strong><br />";
echo "<img src=\"" . $destino . "\" />";
}
else
echo "Erro ao salvar o arquivo. Aparentemente você não tem permissão de escrita.<br />";
}
else
echo "Você poderá enviar apenas arquivos \"*.jpg;*.jpeg;*.gif;*.png\"<br />";
}
else
{
echo "Você não enviou nenhum arquivo!";
}
?>
</body>
</html>
Within "COMECA PDF CONTENT" of the generate-pdf.php code I placed the code that receives the upload (in this case the image) as shown below.
when I click GENERATE PDF on the form.html page it calls the page gera-pdf.php, which already opens a PDF with the image, however it is possible to send only one image, and I wanted to send more than one image
Follow the link with the files in Dropbox for more understanding https://www.dropbox.com/s/h7pfvgyl7v1xvug/gera-pdf.zip?dl=0
<?php
ob_start(); //inicia o buffer
?>
<!--COMEÇA CONTEUDO DO PDF-->
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>Upload de arquivos</title>
</head>
<body>
<?php
// verifica se foi enviado um arquivo
if(isset($_FILES['arquivo']['name']) && $_FILES["arquivo"]["error"] == 0)
{
echo "Você enviou o arquivo: <strong>" . $_FILES['arquivo']['name'] . " </strong><br />";
echo "Este arquivo é do tipo: <strong>" . $_FILES['arquivo']['type'] . "</strong><br />";
echo "Temporáriamente foi salvo em: <strong>" . $_FILES['arquivo']['tmp_name'] . "</strong><br />";
echo "Seu tamanho é: <strong>" . $_FILES['arquivo']['size'] . "</strong> Bytes<br /><br />";
$arquivo_tmp = $_FILES['arquivo']['tmp_name'];
$nome = $_FILES['arquivo']['name'];
// Pega a extensao
$extensao = strrchr($nome, '.');
// Converte a extensao para mimusculo
$extensao = strtolower($extensao);
// Somente imagens, .jpg;.jpeg;.gif;.png
// Aqui eu enfilero as extesões permitidas e separo por ';'
// Isso server apenas para eu poder pesquisar dentro desta String
if(strstr('.jpg;.jpeg;.gif;.png', $extensao))
{
// Cria um nome único para esta imagem
// Evita que duplique as imagens no servidor.
$novoNome = md5(microtime()) . $extensao;
// Concatena a pasta com o nome
$destino = 'imagens/' . $novoNome;
// tenta mover o arquivo para o destino
if( @move_uploaded_file( $arquivo_tmp, $destino ))
{
echo "Arquivo salvo com sucesso em : <strong>" . $destino . "</strong><br />";
echo "<img src=\"" . $destino . "\" />";
}
else
echo "Erro ao salvar o arquivo. Aparentemente você não tem permissão de escrita.<br />";
}
else
echo "Você poderá enviar apenas arquivos \"*.jpg;*.jpeg;*.gif;*.png\"<br />";
}
else
{
echo "Você não enviou nenhum arquivo!";
}
?>
</body>
</html>
<!--TERMINA CONTEUDO DO PDF-->
<?php
$html = ob_get_clean();
// pega o conteudo do buffer, insere na variavel e limpa a memória
$html = utf8_encode($html);
// converte o conteudo para uft-8
include("mpdf60/mpdf.php");
// inclui a classe
$mpdf = new mPDF();
// cria o objeto
$mpdf->allow_charset_conversion=true;
// permite a conversao (opcional)
$mpdf->charset_in='UTF-8';
// converte todo o PDF para utf-8
$mpdf->WriteHTML($html);
// escreve definitivamente o conteudo no PDF
$mpdf->Output();
// imprime
exit();
// finaliza o codigo
?>
Please avoid long discussions in the comments; your talk was moved to the chat
– bfavaretto