Ir ao conteúdo

Posts recomendados

Postado

Olá, Como Posso Fazer o download automático de um arquivo, docx, ou melhor ainda Transforma-lo em Pdf e baixar, através de PHP, atualmente eu tenho um Projeto PHP em que eu envio um arquivo com Tags "Str_Replace" para ser substituído com Mysql. E Como estou fazendo por LocalHost Atualmente, eu acabei deixando ele só gerando o arquivo para uma Pasta, mas eu to querendo fazer ou ele gerar um Botão após a criação, ou o que seria melhor ainda, o download automático, ele acaba por Não ter um nome Fixo pois Seu nome tem uma geração de número aleatório. 

Segue Meu Código PHP abaixo.

 

<?$data = date("d/m/Y");
$template_file_name = "cartas dos promotores base/C.Ap - carta teste.docx";
$rand_no = rand(10000, 999999);
$fileName = "C.Ap - carta teste" . $rand_no . ".docx";
$folder   = "cartas dos promotores prontas";
$full_path = $folder . '/' . $fileName;

if (!file_exists($folder))
{
mkdir($folder);
}

//Copy the Template file to the Result Directory
copy($template_file_name, $full_path);

// add calss Zip Archive
$zip_val = new ZipArchive;

//Docx file is nothing but a zip file. Open this Zip File
if($zip_val->open($full_path) == true)
{
// In the Open XML Wordprocessing format content is stored.
// In the document.xml file located in the word directory.

$key_file_name = 'word/document.xml';
$message = $zip_val->getFromName($key_file_name);

// this data Replace the placeholders with actual values

$message = str_replace("Funcionario",               "$_POST[promotor]",             $message);
$message = str_replace("CPF1",                       "$_POST[pdv]",                 $message);
$message = str_replace("RG1",                        "$_POST[campanha]",                  $message);
$message = str_replace("Inicio",                    "$_POST[inicio]",    $message);
$message = str_replace("Final",                     "$_POST[fim]",     $message);
$message = str_replace("RazãoSocialPDV",            "$_POST[pdv]",             $message);
$message = str_replace("CNPJPDV",                   "12112223331",                  $message);
$message = str_replace("EndereçoPDV",               "Endereço do pdv",              $message);
$message = str_replace("RazãoSocialCliente",        "$_POST[campanha]",      $message);
$message = str_replace("data_de_hoje",              "$data",                        $message);
//Replace the content with the new content created above.
$zip_val->addFromString($key_file_name, $message);
$zip_val->close();
}

e o meu html.


<p id="missao"><strong> Gerador de Cartas Para Promotores</strong>.</p>

<p>use esse gerador para automatizar a criação da carta de apresentação para o PDV.</P>

<h2 id="titulo">Gerador de Cartas
    <ul>
        <form method="post" action="gerador_de_cartas.php" enctype="multipart/form-data">
            <li>Promotor
                <input type="search" id="texto" name="promotor">
            </li><br>
    
            <li>PDV 
                <input type="search" id="texto" name="pdv">
            </li><br>

            <li>Campanha 
                <input type="search" id="texto" name="campanha">
            </li><br>

            <li>Periodo da Carta <br> 
            
            <br> Inicio<input id="date" type="date" name="inicio" >
            
            Fim <input id="date" type="date" name="fim" ></li>
        
                <input type="submit">
            
                <input type="reset" value="Apagar">
            
                <input type="file" name="Arquivo" id="Arquivo">
        </form>
    </ul>

</h2><br>

</body>

</html>

 

  • Moderador
  • Solução
Postado

@João pedro chaves Você pode usar a biblioteca Fpdf  para gerar um pdf.  

para criar um  link de download..  você forçar o php a fazer o download do arquivo ao invés de abrir no navegador

 

algo como:

$file = "filename.ext";

// Quick check to verify that the file exists
if (!file_exists($file)) die("File not found");

// Force the download
header("Content-Disposition: attachment; filename="" . basename($file) . """);
header("Content-Length: " . filesize($file));
header("Content-Type: application/octet-stream;");
readfile($file);

 

Pesquisa no google para forçar a fazer download no php

Postado
21 horas atrás, DiF disse:

@João pedro chaves Você pode usar a biblioteca Fpdf  para gerar um pdf.  

para criar um  link de download..  você forçar o php a fazer o download do arquivo ao invés de abrir no navegador

 

algo como:

$file = "filename.ext";

// Quick check to verify that the file exists
if (!file_exists($file)) die("File not found");

// Force the download
header("Content-Disposition: attachment; filename="" . basename($file) . """);
header("Content-Length: " . filesize($file));
header("Content-Type: application/octet-stream;");
readfile($file);

 

Pesquisa no google para forçar a fazer download no php

Fala Mano, valeu isso Me ajudou Bastante, Mas tem um ligeiro Problema, o arquivo está vindo corrompido, o que eu poderia fazer quanto a isso?

Postado
2 horas atrás, João pedro chaves disse:

Fala Mano, valeu isso Me ajudou Bastante, Mas tem um ligeiro Problema, o arquivo está vindo corrompido, o que eu poderia fazer quanto a isso?

Já Resolvi, em parte. pois como eu queria que ele se alterasse para pdf achei que so trocar o tipo de arquivo iria resolver, mas me equivoquei, manter o arquivo em .docx continua funcionando mas o ideal era trocar para pdf, mas tudo bem, além disso como eu posso colocar uma formatação no texto do Str_replace, eu sei que se você colocar <b></b> entre a frase você coloca em negrito mas ao fazer isso o arquivo volta a dar como corrompido.

O que eu posso fazer quanto a isso? 

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...

LANÇAMENTO!

eletronica2025-popup.jpg


CLIQUE AQUI E BAIXE AGORA MESMO!