HTML do PDF z węzłem.js
Szukam do wydruku pdf
wersji mojej strony internetowej. Coś w stylu express.render()
renderuje tylko stronę jako pdf
Czy ktoś zna moduł node, który tak robi ?
Jeśli nie, to jak byś je wdrożył ? Widziałem kilka metod mówiących o używaniu przeglądarki bez głowy, jakphantom.js
, ale nie wiem, co to za przepływ. 8 answers
Rozszerzające się na odpowiedź Mustafy.
A) Install http://phantomjs.org / a następnie
B) zainstaluj moduł phantom node https://github.com/amir20/phantomjs-node
C) oto przykład renderowania pliku pdf
var phantom = require('phantom');
phantom.create().then(function(ph) {
ph.createPage().then(function(page) {
page.open("http://www.google.com").then(function(status) {
page.render('google.pdf').then(function() {
console.log('Page Rendered');
ph.exit();
});
});
});
});
Wyjście pliku PDF:
Edytuj: Silent printing that PDF
java -jar pdfbox-app-2.0.2.jar PrintPDF -silentPrint C:\print_mypdf.pdf
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-07-04 10:22:55
Fantom.js jest bezgłowym serwerem webkit i załaduje dowolną stronę internetową i wyrenderuje ją w pamięci, chociaż możesz jej nie zobaczyć, istnieje funkcja przechwytywania ekranu, w której możesz wyeksportować bieżący widok jako PNG, PDF, JPEG i GIF. Spójrz na ten Przykład z phantom.js documentation
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-10-30 08:37:11
Jeśli chcesz wyeksportować HTML do PDF. Masz wiele opcji. bez węzła nawet
Opcja 1: mieć przycisk na stronie html, który wywołuje okno.funkcja print (). użyj natywnego html przeglądarki do pdf. użyj zapytań o media, aby strona html wyglądała dobrze na pliku pdf. masz również wydruk przed i po zdarzeniach, których możesz użyć do wprowadzania zmian na stronie przed wydrukowaniem.
Opcja 2. htmltocanvas lub rasterizeHTML. Konwertuj html na canvas , a następnie wywołaj toDataURL () na obiekcie canvas, aby uzyskać obraz . i użyj biblioteki JavaScript, takiej jak jsPDF , aby dodać ten obraz do pliku PDF. Wadą tego podejścia jest to, że plik pdf nie staje się edytowalny. Jeśli chcesz wyodrębnić dane z pliku PDF, istnieją na to różne sposoby.
Opcja 3. @ Jozzhard odpowiedz
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-08-09 21:12:58
Najlepsze rozwiązanie jakie znalazłem to html-pdf. To proste i działa z dużym html.
Https://www.npmjs.com/package/html-pdf
Its as simple as that:
pdf.create(htm, options).toFile('./pdfname.pdf', function(err, res) {
if (err) {
console.log(err);
}
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-01-18 18:35:33
Utwórz plik PDF z zewnętrznego adresu URL
Oto adaptacja poprzednich odpowiedzi, która wykorzystuje html-pdf
, ale również łączy ją z requestify
, więc działa z zewnętrznym adresem URL:
Zainstaluj swoje zależności
npm i -S html-pdf requestify
Następnie Utwórz skrypt:
//MakePDF.js
var pdf = require('html-pdf');
var requestify = require('requestify');
var externalURL= 'http://www.google.com';
requestify.get(externalURL).then(function (response) {
// Get the raw HTML response body
var html = response.body;
var config = {format: 'A4'}; // or format: 'letter' - see https://github.com/marcbachmann/node-html-pdf#options
// Create the PDF
pdf.create(html, config).toFile('pathtooutput/generated.pdf', function (err, res) {
if (err) return console.log(err);
console.log(res); // { filename: '/pathtooutput/generated.pdf' }
});
});
Następnie uruchom z linii poleceń:
node MakePDF.js
Zobacz, jak Twój piękny pixel perfect PDF zostanie stworzony dla Ciebie (za darmo!)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-11-10 15:45:55
Użycie html-pdf
var fs = require('fs');
var pdf = require('html-pdf');
var html = fs.readFileSync('./test/businesscard.html', 'utf8');
var options = { format: 'Letter' };
pdf.create(html, options).toFile('./businesscard.pdf', function(err, res) {
if (err) return console.log(err);
console.log(res); // { filename: '/app/businesscard.pdf' }
});
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-10 05:38:14
Pakiet
Użyłem html-pdf
Łatwy w użyciu i pozwala nie tylko zapisać pdf jako plik, ale także przesyłać zawartość pdf do strumienia WriteStream (dzięki czemu mogłem przesyłać ją bezpośrednio do pamięci Google, aby zapisać tam Moje raporty).
Używanie css + images
Uwzględnia css. Jedyny problem, z jakim się borykałem-zignorował moje obrazy. Rozwiązanie, które znalazłem, polegało na zastąpieniu adresu url w src
attrribute przez base64, np.
<img src="data:image/png;base64,iVBOR...kSuQmCC">
Ty można to zrobić za pomocą kodu lub użyć jednego z konwerterów online, np. https://www.base64-image.de/
Skompiluj poprawny kod html z fragmentu html + css
- musiałem dostać fragment mojego
html
dokumentu (właśnie się przypiąłem .metoda html () w selektorze jQuery). - W takim razie przeczytałem zawartość odpowiedniego pliku
css
.
Używając tych dwóch wartości (przechowywanych odpowiednio w zmiennych html
i css
) skompilowałem poprawny kod html używając ciąg szablonów
var htmlContent = `
<!DOCTYPE html>
<html>
<head>
<style>
${css}
</style>
</head>
<body id=direct-sellers-bill>
${html}
</body>
</html>`
I przekazałem go do create
metody html-pdf.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-10-02 11:04:26
Spróbuj użyć Puppeteer do utworzenia pliku PDF z HTML
Przykład stąd https://github.com/chuongtrh/html_to_pdf
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-10-03 11:55:52