PDF generato da elementi html e salvato su server

di il
3 risposte

PDF generato da elementi html e salvato su server

Magari è una cosa banalissima eh, eppure mi sto incartando per mettere le mani dentro PHP nel modo più indolore possibile.
Premetto che solitamente js mi basta e avanza per quel poco di interazione che devo fare. In questo caso specifico:
- un modal con un pulsante che ricorda all'utente di scaricarsi il file pdf
- in fondo alla pagina altro pulsante nel caso l'utente se ne fosse dimenticato

Il pdf in questione viene creato (pescando dei div il cui contenuto è generato dinamicamente) dopo che l'utente ha risposto a qualche domanda (e le risposte generano risultati diversi ovviamente).
Fin qui tutto ok se non fosse che mi è stato chiesto di implementare un salvataggio automatico del suddetto pdf anche nel server.

Suggerimenti? Di seguito il mio amabile e tranquillo js lato client:

document.addEventListener("DOMContentLoaded", function() {
    
    function generateAndDownloadPDF() {
        var intestazione = document.getElementById('intestazione').innerHTML;
        var datiAzienda = document.getElementById('dati_azienda').innerHTML;
        var ratingGenerale = document.getElementById('rating_generale').innerHTML;
        var progressBar = document.getElementById('progress_bar').innerHTML;
        var footer = document.getElementById('footer').innerHTML;

        var content = `
            <div>${intestazione}</div>            
            <div>${datiAzienda}</div>
            <div>${footer}</div>
            <div style="page-break-after: always;"></div>
            <div>${ratingGenerale}</div>   
            <div>${progressBar}</div>
            <div>${footer}</div>
        `;

        // pdf
        html2pdf()
            .from(content)
            .set({
                margin: 10,
                filename: '<?php echo $row_azienda['piva'] . "_" . str_replace(" ", "_", $row_azienda['ragione_sociale']) . "_" . date("Ymd_His"); ?>.pdf',
                html2canvas: { scale: 2 },
                jsPDF: { unit: 'mm', format: 'a4', orientation: 'portrait' }
            })
            .save();
    }

    // listener evento onclick
    document.getElementById('save-pdf').addEventListener('click', generateAndDownloadPDF);

    // listener pulsante modal
    document.getElementById('download-pdf').addEventListener('click', function() {

        generateAndDownloadPDF();

        $('#pdfModal').modal('hide');
    });

    $('#pdfModal').modal('show');
});

3 Risposte

  • Re: PDF generato da elementi html e salvato su server

    15/04/2024 - MrsGray ha scritto:


    Fin qui tutto ok se non fosse che mi è stato chiesto di implementare un salvataggio automatico del suddetto pdf anche nel server.

    Suggerimenti?

    Se usi PHP lato server, allora

    • genera il PDF con qualche libreria per PHP,
    • salva il documento PDF ottenuto sul server nel quale viene generato, o altrove,
    • restituisci come download dalla pagina il documento.

    Posta in modo così generico la domanda e non potendo analizzare il codice nel dettaglio, non mi sovvengono personalmente altre risposte.

  • Re: PDF generato da elementi html e salvato su server

    Grazie, sto provando una libreria proprio ora (FPDF). Ne hai per caso qualcuna da consigliare?

    Da quel che ho potuto vedere però dovrei impostare tutte le caratteristiche come font, dimensioni, colori, ecc giusto? Mentre con js gli passavo i div e me li scriveva nel pdf così come appaiono sulla pagina web.

  • Re: PDF generato da elementi html e salvato su server

    16/04/2024 - MrsGray ha scritto:


    Grazie, sto provando una libreria proprio ora (FPDF). Ne hai per caso qualcuna da consigliare?

    Ammetto che non uso abitualmente PHP, quindi non sono esperto di tutte le librerie che si possono trovare per questo linguaggio.

    16/04/2024 - MrsGray ha scritto:


    Da quel che ho potuto vedere però dovrei impostare tutte le caratteristiche come font, dimensioni, colori, ecc giusto? Mentre con js gli passavo i div e me li scriveva nel pdf così come appaiono sulla pagina web.

    Quello che si sta cercando sembra un “rendering” di un PDF, ovvero la conversione in formato PDF di qualcosa che proviene da un'altra fonte, tipo una pagina HTML, ed effettivamente il discorso è un pochino diverso.

    Facendo una ricerca io comunque ho trovato questo articolo che ne elenca alcune.
    Bisognerebbe provarle e vedere se fanno al caso… :)

Devi accedere o registrarti per scrivere nel forum
3 risposte