2016-05-12 11 views
8

Widziałem wiele stanowisk opisujący w jaki sposób można wykorzystać chart.js stworzyć wykres używając canvas i następnie zapisać canvas do PNG, a następnie zaimportować je do pdf. To dobrze, ale co jeśli chcesz ominąć część ekranu i przejść od razu do dokumentu PDF i dołączyć obraz?Wykres z chart.js do pdf

Na przykład mogę mieć dwa przyciski, jeden, który otwiera wykres na ekranie przy użyciu canvas. Ta strona może następnie obsługiwać zapisywanie i importowanie wykresów do pliku PDF bez problemu. Drugi przycisk otwiera bezpośrednio pdf. Czy możliwe jest umieszczenie wykresu w tym dokumencie, czy w ogóle go zapisuje na serwerze?

Podejrzewam, że mogę zostać przeniesiony do d3, ale zastanawiałem się, czy jest to możliwe w chart.js?

enter image description here

Odpowiedz

2

To jest w porządku, ale co zrobić, jeśli chcesz ominąć na części ekranu i idź prosto do dokumentu PDF i zawierać obraz

można nadal korzystać chart.js eksportu jako PDF z PhantomJs (bezgłową przeglądarką, która otworzy stronę html z twoimi wykresami i zapisze ją przez PDF). Jeśli pracujesz z nodejs, jest dobra biblioteka, która streszcza PhantomJs i sprawia, że ​​plik PDF jest łatwy: https://github.com/sindresorhus/pageres. Wydaje się, że jest to obejście problemu, ale zazwyczaj te obrazy w formacie PDF nie są wyświetlane poprawnie, a zwłaszcza wykresy!

Tak, trzeba jeszcze stworzyć stronę HTML, aby wydrukować plik PDF, jednak masz 2 opcje:

+0

Ah ... genialny. Czy byłoby to uznane za prawidłowe podejście, czy jest to obejście? – RGriffiths

+0

PhantomJS to najlepszy sposób renderowania strony HTML w formacie PDF, szczególnie wykresów. Te elementy canvas-PDF nie wyświetlają się dokładnie tak, jak widzimy w przeglądarce. –

+0

OK, ale nie chcę renderować całej strony html, ani włączać tylko tego obrazu do pliku pdf, ponieważ jest mnóstwo innych rzeczy w pdf z innych miejsc. Czy poprawnie rozumiem, że mogę używać phantom js do otwierania strony html, która generuje płótno, a następnie zapisuje je na serwerze, a następnie otwiera dokument pdf, który importuje zapisany obraz? – RGriffiths

0

Choć nie bezpośrednio odpowiedzieć na pytanie, jak ja nie mógł dostać chart.js robić to, co chciałem być po stronie klienta, znalazłem dobre rozwiązanie przy użyciu pChart. W trakcie generowania pliku PDF tworzony jest wykres, który jest tymczasowo zapisywany na serwerze do czasu ukończenia pliku PDF. Wykres jest wstawiany do pliku pdf, a następnie usuwany z serwera. Istnieje trochę manipulacji, aby poprawnie powiększyć obraz.

$myPicture->render("path/imagename.png"); 

if (file_exists("path/imagename.png")) { 
    $ycurrent = $pdf->GetY(); 
    list($width, $height) = getimagesize("path/imagename.png"); 
    $imageWidth = 160; 
    $ratio = $imageWidth/$width; 
    $xpos = 25; 
    $pdf->Image("path/imagename.png", $xpos, $ycurrent, $width * $ratio, $height * $ratio, "png", ''); 
    unlink ("path/imagename.png"); 
} 
Powiązane problemy