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

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

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

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

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

1
задан 15 July 2013 в 12:10

7 ответов

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

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

Программное обеспечение может быть установлено с помощью [ f3].

30
ответ дан 24 May 2018 в 19:59
  • 1
    Я думаю, что это может быть автоматизировано и в командной строке с некоторыми усилиями. :) – gertvdijk 15 July 2013 в 12:08
  • 2
    @gertvdijk, Это выходит за рамки моей компетенции. Я никогда не использовал LibO через CLI. – user 15 July 2013 в 12:14
  • 3
    Есть и это, wkhtmltopdf, но у меня нет опыта: cyberciti.biz/open-source/… – user 15 July 2013 в 12:16
  • 4
    Пожалуйста, напишите wkhtmltopdf как ANSWER, он решил проблему – gasko peter 15 July 2013 в 12:28
  • 5
    @gaskopeter, сделанный в соответствии с запросом, отредактировав ответ. – user 15 July 2013 в 12:36

Webkit HTML to PDF:

sudo apt-get install wkhtmltopdf

http://wkhtmltopdf.org/

http://wkhtmltopdf.org/

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

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

http://phantomjs.org

13
ответ дан 24 May 2018 в 19:59

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

Установите

pip install weasyprint
[d3 ] Запуск

weasyprint mypage.html out.pdf

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

/* For converting to PDF */
body {
  width: 210mm; /* A4 dimension */
}
@page {
  margin:0;
  padding: 0;
}
7
ответ дан 24 May 2018 в 19:59
  • 1
    Я просто пытался установить 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 28 November 2015 в 18:43
  • 2
    @clarkk мой плохой. Это на самом деле weasyprint. Итак, pip install weasyprint – Pithikos 30 November 2015 в 00:04
  • 3
    weasyprint хорош, но примерно в 15 раз медленнее, чем wkhtmltopdf, как я помню, поэтому нам не подходит генерировать отчеты по требованию для наших клиентов. wkhtmltopdf можно убедить сделать хорошую работу даже для сложных отчетов ... с некоторыми значительными усилиями! – Sam Watkins 17 February 2016 в 17:36
  • 4
    Удивительно, что он сохраняет css и потрясающий. – Aditya ultra 17 July 2016 в 16:41

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

Или вы можете просто использовать этот сайт только: Web2PDFConverter . Для локальных файлов: Web2PDFConverter

3
ответ дан 24 May 2018 в 19:59

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

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

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

html-pdf http://example.com/ example.pdf
1
ответ дан 24 May 2018 в 19:59
  • 1
    Существует готовый к использованию пакет NodeJS npm: html-pdf - конвертер HTML в PDF, который использует phantomjs. – ruvim 24 August 2017 в 14:24
  • 2
    Я не смог установить его с помощью npm из-за отсутствия предварительно созданных phantomjs (которые не могли быть правильно установлены из-за прав доступа, даже с помощью root) – Martin Thoma 20 September 2017 в 19:41

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

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

Пример кода PHP:

1
ответ дан 24 May 2018 в 19:59

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

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

WeasyPrint

0
ответ дан 24 May 2018 в 19:59

Другие вопросы по тегам:

Похожие вопросы: