Как преобразовать файл HTML в PDF (с цветами)

30

У меня есть HTML-файл, который использует style.css и имеет цвета, например:

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

Как я могу "экспортировать" этот локальный файл на моем Ubuntu 12.04 в PDF? (внешний вид и цвет должны оставаться такими же). Я попытался напр .: Ctrl+ P-> распечатать в PDF, но он не сохранил цвета. Я пытался htmldocс --colorопцией .. но это та же проблема ..

Было бы здорово сделать это через командную строку.

Гаско Питер
источник

Ответы:

36

Откройте html-файл в LibreOffice Writer, а затем Fileв меню выберите export to PDF. Вот и все.

Если вы предпочитаете командную строку, взгляните на « Преобразование HTML-страницы в PDF-файл с помощью инструмента с открытым исходным кодом - Linux / OS X / Windows» .

Программное обеспечение может быть установлено с помощью sudo apt-get install wkhtmltopdf.


источник
Я думаю, что это может быть автоматизировано в командной строке, а также с некоторыми усилиями. :)
gertvdijk
@gertvdijk, это выходит за рамки моей компетенции. Я никогда не использовал LibO через CLI.
Существует это, wkhtmltopdf, как хорошо , но у меня нет опыта его: cyberciti.biz/open-source/...
Пожалуйста, опубликуйте wkhtmltopdf как ОТВЕТ, это решило проблему
Гаско Питер
@gaskopeter, сделано в соответствии с просьбой, отредактировав ответ.
16

Webkit HTML в PDF:

sudo apt-get install wkhtmltopdf

http://wkhtmltopdf.org/

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

Последняя версия без заголовка (не требует X-сервера).

Другая возможность: phantomjs - это волшебный безголовый веб-браузер, также основанный на html webkit. Он может экспортировать страницу как PDF среди прочего.

http://phantomjs.org

Сэм Уоткинс
источник
4
На OS X: brew install Caskroom/cask/wkhtmltopdf.
Кенорб
10

WeasyPrint кажется многообещающим. Я попытался, wkhtmltopdfи хотя он отображает вещи приемлемым образом, он не отображает все должным образом и создает PDF-файлы, которые открываются много секунд!

устанавливать

pip install weasyprint

Бег

weasyprint mypage.html out.pdf

В качестве дополнения может быть полезно изменить CSS, если вы хотите, чтобы браузер и PDF выглядели одинаково.

/* For converting to PDF */
body {
  width: 210mm; /* A4 dimension */
}
@page {
  margin:0;
  padding: 0;
}
Pithikos
источник
Я только что попытался установить, weasypeaseyно не работал .. Может быть, вы могли бы помочь? :) Сначала я сделал это: apt-get install python-dev python-pip python-lxml libcairo2 libpango1.0-0 libgdk-pixbuf2.0-0 libffi-dev shared-mime-infoа затем установил pip с помощью, pip install weasypeasyно получил эту ошибку: Could not find any downloads that satisfy the requirement weasypeasy
clarkk
1
@ clarkk мой плохой. Это на самом деле weasyprint. Итакpip install weasyprint
Питикос
3
weasyprintЭто хорошо, но примерно в 15 раз медленнее, чем wkhtmltopdfя помню, поэтому мы не могли генерировать отчеты по требованию для наших клиентов. wkhtmltopdfможно убедить сделать хорошую работу даже для сложных отчетов ... с некоторыми значительными усилиями!
Сэм Уоткинс
Круто, это сохраняет CSS и это здорово ..
Адитья ультра
3

Расширение Web2PDFConverter для Chromium или Chrome конвертирует любую веб-страницу в PDF.

Или вы можете использовать только этот сайт: http://pdfcrowd.com/ . Для локальных файлов: http://pdfcrowd.com/#convert_by_upload

Раду Рэдяну
источник
лучше использовать Firefox + cmd line: P
gasko peter
@gaskopeter pdfcrowd.com/#convert_by_upload - откройте его в Firefox
Раду Радеану
математические уравнения не преобразуются, нужно использовать версию для печати
Адам
2

Вы можете попробовать использовать PhantomJS и некоторый код, например, используя rasterize.js :

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

Или используйте html-pdfпакет NodeJS npm (см. GitHub , установите через :), npm install -g html-pdfкак предлагается в комментарии. Использование:

html-pdf http://example.com/ example.pdf
kenorb
источник
Существует готовый к использованию пакет NodeJS npm: html-pdf - конвертер HTML в PDF, который использует phantomjs.
ruvim
Я не смог установить его с помощью npm из-за отсутствия phantomjs-prebuild (который невозможно установить из-за прав доступа, даже с правами root)
Martin Thoma
2

Я попробовал WeasyPrint, как было предложено другими. На многих страницах он не очень хорошо конвертируется, а на некоторых страницах просто выдает ошибку.

Следующий аддон Firefox работает для меня. Firefox 55. Он говорит только для Windows, но работает на Ubuntu.

FireShot

восхищенный
источник
1

Попробуйте Dompdf (проверьте исходный код на GitHub ), который является конвертером HTML в PDF. Эта библиотека очень проста в использовании, а также очень проста в установке. Используя composer, вы можете настроить его довольно быстро.

Требования: PHP 5.0+ (рекомендуется 5.3+), расширение DOM, расширение GD

Пример кода 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");
Джефф
источник