Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [PhpOffice\PhpPresentation] Inserire testo in formato HTML

    ciao!

    sto creando un powerpoint prendendo i dati da db.
    ho una campo in cui vengono salvati i dati in formato HTML.

    il problema è che nel ppt si vedono i tag html, in pratica non vengono tradotti.
    come posso fare secondo voi??

    avevo pensato di rimuoverli, e non avrei problemi con paragrafi o cose del genere.
    ma se mettono un elenco, li devo rimettere ad elenco anche nel ppt.

    consigli??

  2. #2
    ma li "prendi" a mano (copia & incolla) o hai un processo automatizzato?

  3. #3
    no no, eseguo una query, e in loop creo le slide.

    ti posto il codice:
    codice:
                $day = 1;
                foreach ($queryRighe as $row) {
                    $rServizio = $row['prer_servizio'];
                    $queryServizio = $this->connessione->execQueryPrepare('CALL get_servizio_by_nome(?)', array($rServizio));
    
                    $note = $queryServizio[0]['serv_note']; // TESTO IN HTML
    
                    $testo = "DAY $day";
                    $testo .= "\r\n$rServizio";
                    $testo .= "\r\n\r\n\r\n";
    
                    $newSlide = $phpPresentation->createSlide();
    
                    // LOGO
                    $this->pptLogo($newSlide, $pathLogo);
    
                    // SERVIZIO
                    $shape = $newSlide->createRichTextShape()
                        ->setHeight(300)
                        ->setWidth(600)
                        ->setOffsetX(20)
                        ->setOffsetY(100);
                    $shape->createParagraph();
    
                    $textRun = $shape->createTextRun($testo);
                    $textRun->getFont()
                        ->setBold(true)
                        ->setSize(18);
    
                    $noteRun = $shape->createTextRun($note);
                    $noteRun->getFont()
                        ->setSize(15);
    
                    $day++;
                }

  4. #4

  5. #5
    ciao!

    grazie per il link, ma non mi sembra di trovare nulla che faccia al caso mio!
    in sostanza io avrei la necessità, se esiste, di fare un pò come fa dompdf:
    codice:
    $html = '<p>CIAO</p>';
    $dompdf = new Dompdf();
    $dompdf->loadHtml($html);
    e se non fosse possibile, cosa che inizio a credere, avere un qualche suggerimento per fare il parsing dell'HTML.

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2011
    Messaggi
    192
    Se la risposta è cambia? Nel senso al posto di .ppt usi .pptx (anche più compatibili tra diversi sistemi) inoltre secondo i documenti forniti da html.it copiando il testo del download inserendo sul sito Microsoft è possibile aggiungere tale possibilità https://www.html.it/magazine/27-mb-s...-2007-da-2003/
    Panoramica pptx e opzione gratuita https://www.aranzulla.it/come-aprire-pptx-484968.html

    Libreria php con supporto .pptx e file html (solo con codifica UTF-8) https://github.com/PHPOffice/PhpSpreadsheet

    Un po di codice https://phpspreadsheet.readthedocs.i...iting-to-file/ non ho visto la purificazione dei tag html (chiedi nel loro supporto github per dettagli)

    Ho letto dopo che PHPPresentation supporta .pptx (tu crei tale estensione)
    Altrimenti ti crei una regex e fai il parsing
    Ultima modifica di darbula; 24-11-2022 a 19:50

  7. #7
    scusate, ma forse a questo punto sono io che non sto capendo.

    anche nei link che mi hai mandato te non c'è traccia di quello che mi serve.

    ------------------------

    in pratica nel loop creo una slide ad ogni giro, e visualizzo i dati che trovo nella riga corrente.
    di tutti i campi che devo visualizzare, uno ha il testo in formato HTML, gli altri no.
    quindi solo per quel campo devo caricare l'HTML.

    - non devo analizzare il traffico di rete (mi riferisco ad http toolkit)
    - non posso installare un plugin per office, perchè il file devo generarlo in automatico da php, e deve uscire già pronto con tutti i dati
    - non devo leggere un documento pptx, ma crearlo
    - il file pptx io già lo creo, solo che mi escono fuori i tag HTML di quel campo, invece io vorrei che ne venga fatto il parsing (come in dompdf per intenderci)
    - quello su dompdf era solo un esempio per far capire meglio cosa mi servirebbe

    ------------------------

    alternativamente ho pensato di fare il parsing con domdocument, e poi eseguire un ciclo su eventuali liste o paragrafi.

  8. #8
    da testare un pò ovviamente, ma in parte ho risolto così:
    codice:
    $dom = new DOMDocument();
    $dom->loadHTML($note);
    
    $listP = $dom->getElementsByTagName('p');
    if (count($listP) > 0) {
        foreach ($listP as $l) {
            $textRunP = $shape->createTextRun($l->nodeValue . "\r\n");
            $textRunP->getFont()
                ->setSize(15);
        }
    }
    
    $listsUl = $dom->getElementsByTagName('ul');
    if ($listsUl->length > 0) {
        $listLi = $listsUl->item(0)->getElementsByTagName('li');
        foreach ($listLi as $li) {
            $textRunLi = $shape->createTextRun(" - " . $li->nodeValue . "\r\n");
            $textRunLi->getFont()
                ->setSize(15);
        }
    }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.