2012-03-17 16 views
6

Mam stronę internetową, w której sporo treści jest dynamicznie zabudowany (jquery ajax itp) i mają wymóg przedstawienia wydruku wersję.

Wracam we wszystkich typowych problemów ponownie html/drukowanie, które prawdopodobnie mogą (określonym czasie) obejść, ale to dało mi do myślenia - czy istnieje sposób podejmowania DOM i generowania PDF z niego za pomocą javascript. To chyba trochę głupie pytanie - brzmi to nieco skomplikowanie i nie jestem zbyt pewny, nawet gdybym mógł zbudować plik PDF za pomocą javascript, w jaki sposób bym wtedy zaprezentował go użytkownikowi.

Co ludzie myślą?Tworzenie wydruku PDF z HTML DOM

Odpowiedz

2
var doc = new jsPDF(); 
doc.text(20, 20, 'Hello world!'); 
doc.text(20, 30, 'This is client-side Javascript, pumping out a PDF.'); 
doc.addPage(); 
doc.text(20, 20, 'Do you like that?'); 
// Output as Data URI 
doc.output('datauri'); 

https://parall.ax/products/jspdf, myślę, że to pomoże Ci

+0

Cześć, dzięki - wygląda naprawdę dobrze. Miałem nadzieję, że uda mi się uciec, biorąc w zasadzie to, co już zostało zbudowane w DOM i podając tylko kilka szczegółów (rozmiar strony i tym podobne). – Jonny

+0

@Moo Zobacz, czy to ci pomaga, [link] http://code.google.com/p/dompdf/ –

+0

@Moo [link] http://stackoverflow.com/questions/1686280/convert-html-having -javascript-to-pdf-using-java-javascript –

0

This to pytanie zadałem kilka dni temu w sprawie podobnego rodzaju siedziby/problemu.

Moje rozwiązanie zostało: (1) w JavaScript, aby ustawić plik cookie, a następnie wywołać skrypt PHP za pomocą location.href = ...; (nie AJAX), a następnie (2) mieć skrypt PHP dostęp do cookie w celu ustalenia rodzaju raportu wymagane , a następnie echo formularza, które monituje użytkownika o pobranie pliku przy użyciu poprawnych nagłówków. PHP było coś jak następuje:

header("Content-type: application/vnd.ms-word"); 
header("Content-Disposition: attachment;Filename=test.doc"); 

echo "<html>"; 
echo "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=Windows-1252\">"; 
echo "<body>"; 
echo "Testing-2-3!"; 
echo "</body>"; 
echo "</html>"; 

okazało się niemożliwe, aby dostać to, czego chciałem się dziać za pomocą AJAX AJAX bo nigdy nie pozwala, aby skłonić użytkownika.

Można użyć tej metody, zrobić coś podobnego, ale w twoim przypadku chcesz wygenerować PDF zamiast pliku .doc (lub pobrać jeden, który jest wstępnie przygotowane).

Jedną z zalet tej metody, oczywiście, jest to, że nie wiąże się załadunków stron.

+0

Hmm, ciekawe. Będę bawić się z tym pomysłem. Mam problem z tym, że mam kilka wykresów na stronie, które są zbudowane w javascript (zingcharts), więc musiałbym jakoś zabrać zdjęcia z powrotem na serwer, aby zbudować PDF (lub zregenerować wykresy w php). Ostatecznie staram się być leniwy - mam ładną reprezentację tego, co chcę na ekranie (html) u klienta. Po prostu nie można uzyskać wszystkich przeglądarek do gry w piłkę, jeśli chodzi o drukowanie. – Jonny

+0

Będę używał obu sugerowanych odpowiedzi. Dzięki za pomoc. – Jonny