Istnieje mnóstwo tematów na ten temat, z których żaden nie ma rozwiązać mój problem. Co chciałbym zrobić, to proste - wygenerować wykres słupkowy, a następnie umieścić ten wykres do pliku PDF, który będę generującego z biblioteką o nazwie TCPDF.Generowanie wykresy w pliku PDF za pomocą TCPDF
mam żadnych problemów generowanie zawartości HTML przy użyciu TCPDF ale jeśli chodzi o generowanie wykresu i włączenie go w pliku pdf, mam wszystkie rodzaje problemów.
Generowanie wykresu
tworzę wykres przy użyciu biblioteki o nazwie svggraph. Generowanie wykresu jest bardzo proste, jedynym problemem jest to, że są nagłówki wysyłane przez włączenie głównego pliku klasy. Po wysłaniu nagłówków protokół TCPDF nie może wygenerować dokumentu PDF.
Moja konfiguracja teraz:
generatereport.php - TCPDF generuje dokument PDF na tej stronie graph.php - SVGGraph generuje wykres słupkowy na tej stronie
ja próbowałem:
file_get_contents('graph.php')
odgeneratereport.php
- nic nie jest wyprowadzane w raporcie pdf, gdy korzystam z wbudowanej funkcjiwriteHTML
, którą TCPDF oferuje- require_once ('graph.php') - nagłówki już wysłane błąd
echo file_get_contents('graph.php')
- nagłówki już wysłane, ale to było oczekiwane. Dobrą wiadomością jest to, że wykres był wyświetlany prawidłowo.
Gol (Co chciałbym się zdarzyć) TCPDF posiada wbudowany ImageSVG
funkcji, które jest używane do dokładnego tego celu. Pierwszy parametr może przyjmować ciąg znaków XML danych SVG; Problem polega na tym, że nie mogę wymyślić, jak zwrócić dane XML ze strony graph.php
(przeczytałem każdą stronę dokumentacji, którą mogłem znaleźć).
Czy ktoś ma jakieś doświadczenia z wykorzystaniem jednej z tych dwóch bibliotek?
Dzięki!
Edycja: Niektóre kodu
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);
}
@
symbol informuje, że dane XML funkcji jest wysyłane do niego, w przeciwieństwie do pliku SVG.
nie jestem dodanie go jako odpowiedź, ponieważ nie próbowałem go. http://www.goat1000.com/svggraph-using.php Sekcja 4 omawia dwie opcje wywołania Render() w celu powstrzymania pewnych wartości zwracanych. Co ważniejsze, istnieje funkcja $ Fetch, która ma generować wykres bez wysyłania go do przeglądarki. Może to pozwolić na zapisanie pliku SVG i odczytanie w komendzie ImageSVG. Również http://www.tcpdf.org/doc/code/classTCPDF.html#a56536508fb1b5aede7d2ed27f56c2353 sugeruje, że opcja @ wymaga rzeczywistego ciągu danych SVG. – VSOverFlow