Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Dúvida em fazer download de um documento pdf em react

Estou querendo adicionar uma funcionalidade de download para projeto de portfolio ao clicar em um botão. No entanto, quando clico no primeiro link(caminho para o arquivo pdf), que deveria baixar o PDF, ele baixa um documento em branco. Já o segundo link é do Google Drive, mas sei que ele apenas exibe o currículo em vez de baixá-lo diretamente. Como posso fazer o download desses pdf?

Aqui está meu código atual:

export default function PaginaInicial() {
    return (
        <main>
            <div>
                <ul className={styles.card_ul}>
                    {card.map((card) => (
                        <li key={card.id}><Card card={card} /></li>
                    ))}
                </ul>
            </div>

            <div className={styles.curriculo}>
                <h2>Currículo</h2>
                <ul className={styles.curriculo_ul}>
                    <div className={styles.card_descricao}>
                        <img src={`/assets/curriculo/curriculo-pt.png`} alt="Currículo Portugês"></img>
                        <h3>Currículo Português</h3>
                        <button>
                            <a href="public/curriculos-pdf/curriculo-pt.pdf" download>Download PDF</a>
                        </button>
                    </div>

                    <div className={styles.card_descricao}>
                        <img src={`/assets/curriculo/curriculo-en.png`} alt="Currículo Inglês"></img>
                        <h3>Currículo Inglês</h3>
                        <button>
                        <a href="https://drive.google.com/file/d/16zIIsxQgqC_PFUqLRW-xCWTEEoLopl2k/view?usp=sharing" download>Download PDF</a>
                        </button>
                    </div>
                </ul>
            </div>
        </main>
    )
}
2 respostas
solução!

Oi, Leonardo, tudo bem?

Primeiro, para o link que está baixando um documento em branco, o problema pode estar relacionado ao caminho do arquivo. Em React, especialmente quando você está usando o Create React App, os arquivos na pasta public devem ser referenciados sem o prefixo public. Então, você deve ajustar o caminho do seu arquivo PDF.

Aqui está uma versão ajustada do seu código:

export default function PaginaInicial() {
    return (
        <main>
            <div>
                <ul className={styles.card_ul}>
                    {card.map((card) => (
                        <li key={card.id}><Card card={card} /></li>
                    ))}
                </ul>
            </div>

            <div className={styles.curriculo}>
                <h2>Currículo</h2>
                <ul className={styles.curriculo_ul}>
                    <div className={styles.card_descricao}>
                        <img src={`/assets/curriculo/curriculo-pt.png`} alt="Currículo Português"></img>
                        <h3>Currículo Português</h3>
                        <button>
                            <a href="/curriculos-pdf/curriculo-pt.pdf" download>Download PDF</a>
                        </button>
                    </div>

                    <div className={styles.card_descricao}>
                        <img src={`/assets/curriculo/curriculo-en.png`} alt="Currículo Inglês"></img>
                        <h3>Currículo Inglês</h3>
                        <button>
                            <a href="https://drive.google.com/uc?export=download&id=16zIIsxQgqC_PFUqLRW-xCWTEEoLopl2k" download>Download PDF</a>
                        </button>
                    </div>
                </ul>
            </div>
        </main>
    )
}

No código acima, foi feito duas coisas principais:

  • Para o primeiro link: removi o prefixo public do caminho do arquivo PDF. Agora, ele deve ser referenciado como /curriculos-pdf/curriculo-pt.pdf.
  • Para o segundo link: ajustei o link do Google Drive para forçar o download. A URL foi modificada para https://drive.google.com/uc?export=download&id=16zIIsxQgqC_PFUqLRW-xCWTEEoLopl2k. Note que você precisa usar o id do arquivo no Google Drive.

Todavia, vale ressaltar que como não tenho acesso ao cenário completo do projeto, outros testes terão de ser feitos a fim de obter o resultado esperado, mas espero que esta resposta seja um bom ponto de partida para a resolução do seu problema.

Espero que dê tudo certo. Abraços!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!

Boa tarde Rodrigo. Funcionou das duas maneiras. Obrigado.