Ci sono un sacco di argomenti su questo, nessuno dei quali ha risolto il mio problema. Quello che mi piacerebbe fare è semplice: generare un grafico a barre e quindi incorporare questo grafico in un file pdf che genererò con una libreria denominata TCPDF.Generare grafici in file PDF usando TCPDF
Non ho problemi a generare contenuto HTML tramite TCPDF, ma quando si tratta di generare il grafico e includerlo nel file pdf, sto avendo tutti i tipi di problemi.
Generazione grafico
Sto creando il grafico utilizzando una libreria chiamata svggraph. Generare il grafico è molto semplice, l'unico problema è che ci sono intestazioni inviate attraverso l'inclusione del file di classe principale. Quando vengono inviate le intestazioni, TCPDF non può generare il documento PDF.
La mia configurazione ora:
generatereport.php - TCPDF genera il documento PDF in questa pagina graph.php - SVGGraph genera il grafico a barre in questa pagina
ho provato:
file_get_contents('graph.php')
dageneratereport.php
- non viene prodotto nulla nel report in formato PDF quando utilizzo la funzionewriteHTML
10 integrata che TCPDF offre- require_once ('graph.php') - le intestazioni hanno già inviato l'errore
echo file_get_contents('graph.php')
- Le intestazioni già inviate, ma era previsto. La buona notizia è che il grafico è stato visualizzato correttamente.
Goal (Quello che mi piacerebbe che accada) TCPDF è dotato di un ImageSVG
funzione che viene utilizzato per questo scopo esatto. Il primo parametro può prendere una stringa XML di dati SVG; il problema qui è che non riesco a capire come restituire i dati XML dalla pagina graph.php
(ho letto ogni pagina di documentazione che ho trovato).
Qualcuno ha esperienza con l'una o l'altra di queste due librerie?
Grazie!
Edit: Alcuni codice
Graph.php:
<?php
require_once 'svggraph/SVGGraph.php';
$graph = new SVGGraph(500, 400);
$graph->Values(1, 4, 8, 9, 16, 25, 27);
$graph->Render('LineGraph', true, true)
?>
generatereport.php
$html = file_get_contents('http://localhost:8080/vu/graph.php');
if(!empty($file)){
//$pdf->Write(0, $html, '', 0, 'L', true, 0, false, false, 0);
//$pdf->writeHTML($html, true, false, true, false, '');
$pdf->ImageSVG('@' . $html, $x=15, $y=30, $w='', $h='', $link='http://www.tcpdf.org', $align='', $palign='', $border=1, $fitonpage=false);
}
Il simbolo @
indica alla funzione che i dati XML vengono inviati ad esso, al contrario di un file SVG.
io non sono l'aggiunta di come una risposta visto che non ho provato. http://www.goat1000.com/svggraph-using.php La sezione 4 parla di due opzioni della chiamata a Render() per sopprimere determinati valori di ritorno. Ancora più importante, c'è una funzione $ Fetch che dovrebbe generare il grafico senza inviarlo al browzer. Questo potrebbe consentire di salvare il file SVG e leggere il comando ImageSVG. Anche http://www.tcpdf.org/doc/code/classTCPDF.html#a56536508fb1b5aede7d2ed27f56c2353 suggerisce che l'opzione @ richiede la stringa di dati SVG effettiva. – VSOverFlow