Jak przekonwertować plik HTML na PDF (z kolorami)

30

Mam plik HTML, który używa style.css i ma kolory, np .:

<font style=BACKGROUND-COLOR:red; color=white>FOO</font>

Jak mogę „wyeksportować” ten lokalny plik na moim Ubuntu 12.04 do pliku PDF? (wygląd i kolor powinny pozostać takie same). Próbowałem np .: Ctrl+ P-> wydrukować do pliku PDF, ale nie zachowało kolorów. Próbowałem htmldocz --coloropcją .. ale to ten sam problem ..

Byłoby wspaniale to zrobić za pomocą wiersza polecenia.

Gasko Peter
źródło

Odpowiedzi:

36

Otwórz plik HTML w programie LibreOffice Writer, a następnie Filew menu wybierz export to PDF. to jest to!

Jeśli wolisz wiersz poleceń, spójrz na Konwertuj stronę HTML na plik PDF za pomocą narzędzia Open Source - Linux / OS X / Windows .

Oprogramowanie można zainstalować za pomocą sudo apt-get install wkhtmltopdf.


źródło
Myślę, że można to zautomatyzować również w wierszu poleceń, przy pewnym wysiłku. :)
gertvdijk
@gertvdijk, To jest poza moją kompetencją. Nigdy nie korzystałem z LibO przez CLI.
Jest też, wkhtmltopdf, ale nie mam na to doświadczenia: cyberciti.biz/open-source/…
Prześlij wkhtmltopdf jako ODPOWIEDŹ, to rozwiązało problem
gasko peter
@gaskopeter, wykonane zgodnie z żądaniem przez edycję odpowiedzi.
16

Webkit HTML do PDF:

sudo apt-get install wkhtmltopdf

http://wkhtmltopdf.org/

http://www.cyberciti.biz/open-source/html-to-pdf-freeware-linux-osx-windows-software/

Najnowsza wersja jest bezgłowa (nie wymaga serwera X).

Inna możliwość: phantomjs to magiczna, bezgłowa przeglądarka internetowa, również oparta na html webkit. Może między innymi wyeksportować stronę jako plik PDF.

http://phantomjs.org

Sam Watkins
źródło
4
Na OS X: brew install Caskroom/cask/wkhtmltopdf.
kenorb
10

WeasyPrint wydaje się obiecujące. Próbowałem wkhtmltopdfi chociaż renderuje to w akceptowalny sposób, nie renderuje wszystkiego poprawnie i tworzy pliki PDF, których otwarcie zajmuje wiele sekund!

zainstalować

pip install weasyprint

Biegać

weasyprint mypage.html out.pdf

Dodatkowo może być pomocna zmiana CSS, jeśli chcesz, aby widok przeglądarki i PDF wyglądały identycznie.

/* For converting to PDF */
body {
  width: 210mm; /* A4 dimension */
}
@page {
  margin:0;
  padding: 0;
}
Pithikos
źródło
Właśnie próbowałem zainstalować, weasypeaseyale nie działało .. Może mógłbyś pomóc? :) Najpierw zrobiłem to: apt-get install python-dev python-pip python-lxml libcairo2 libpango1.0-0 libgdk-pixbuf2.0-0 libffi-dev shared-mime-infoa następnie instalowałem pip z, pip install weasypeasyale Could not find any downloads that satisfy the requirement weasypeasy
pojawia
1
@clarkk my bad. To rzeczywiście weasyprint. Tak więcpip install weasyprint
Pithikos
3
weasyprintjest dobry, ale około 15 razy wolniejszy niż wkhtmltopdfpamiętam, więc nie było dla nas odpowiednie generowanie raportów na żądanie dla naszych klientów. wkhtmltopdfmożna przekonać do wykonania dobrej pracy nawet przy skomplikowanych raportach ... przy znacznym wysiłku!
Sam Watkins,
Wspaniale, zachowuje css i jest niesamowity ..
Aditya ultra
3

Rozszerzenie Web2PDFConverter dla Chromium lub Chrome konwertuje dowolną stronę na PDF.

Lub możesz po prostu korzystać tylko z tej strony: http://pdfcrowd.com/ . W przypadku plików lokalnych: http://pdfcrowd.com/#convert_by_upload

Radu Rădeanu
źródło
użycie Firefox + cmd byłoby lepsze: P
gasko peter
@gaskopeter pdfcrowd.com/#convert_by_upload - otwórz w Firefoksie
Radu Rădeanu
równania matematyczne nie są konwertowane, należy użyć wersji do wydruku
Adam
2

Możesz spróbować użyć PhantomJS i jakiegoś kodu, na przykład używając rasterize.js :

phantomjs rasterize.js http://example.com/

Lub użyj html-pdfpakietu npm NodeJS (zobacz GitHub , zainstaluj przez :) , npm install -g html-pdfjak sugeruje komentarz. Stosowanie:

html-pdf http://example.com/ example.pdf
kenorb
źródło
Istnieje gotowy do użycia pakiet NodeJS npm: html-pdf - konwerter HTML na PDF, który wykorzystuje phantomjs.
ruvim
Nie mogłem zainstalować go z npm z powodu braku phantomjs-prebuild (który nie mógł być poprawnie zainstalowany z powodu praw dostępu, nawet z rootem)
Martin Thoma,
2

Próbowałem WeasyPrint, jak sugerowali inni. Na wielu stronach nie konwertuje się dobrze, a na niektórych stronach po prostu kończy się błędem.

Poniższy dodatek do Firefoksa działa dla mnie. Firefox 55. Mówi tylko Windows, ale działa na Ubuntu.

FireShot

skupiony
źródło
1

Wypróbuj Dompdf (sprawdź kod źródłowy na GitHub ), który jest konwerterem HTML na PDF. Ta biblioteka jest bardzo łatwa w użyciu, a także bardzo łatwa w instalacji. Za pomocą kompozytora możesz ustawić go dość szybko.

Wymagania: PHP 5.0+ (zalecane 5.3+), rozszerzenie DOM, rozszerzenie GD

Przykładowy kod PHP:

<?php
// somewhere early in your project's loading, require the Composer autoloader
// see: http://getcomposer.org/doc/00-intro.md
require 'vendor/autoload.php';

// disable DOMPDF's internal autoloader if you are using Composer
define('DOMPDF_ENABLE_AUTOLOAD', false);

// include DOMPDF's default configuration
require_once 'vendor/dompdf/dompdf/dompdf_config.inc.php';


$htmlString = '';
ob_start();
include('html_to_dpf.html');
$htmlString .= ob_get_clean();


$dompdf = new DOMPDF();
$dompdf->load_html($htmlString);
$dompdf->render();
$dompdf->stream("sample.pdf");
Jeff
źródło