Wie konvertiert man eine HTML-Datei in eine PDF-Datei (mit Farben)


30

Ich habe eine HTML-Datei, die eine style.css verwendet und Farben hat, z.

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

Wie kann ich diese lokale Datei auf meinem Ubuntu 12.04 in ein PDF "exportieren"? (das Aussehen und die Farbe sollten gleich bleiben). Ich habe zB versucht: Ctrl+ P-> als PDF zu drucken, aber es hat die Farben nicht erhalten. Ich habe es htmldocmit der --colorOption versucht .. aber es ist das gleiche Problem ..

Es wäre toll, dies über die Kommandozeile zu tun.


Antworten:


36

Öffnen Sie Ihre HTML-Datei in LibreOffice Writer und Filewählen Sie dann im Menü unter export to PDF. Das ist es.

Wenn Sie die Befehlszeile bevorzugen, werfen Sie einen Blick auf HTML-Seite mit dem Open Source Tool - Linux / OS X / Windows in eine PDF-Datei konvertieren .

Die Software kann mit installiert werden sudo apt-get install wkhtmltopdf.


Ich denke, dies kann mit einigem Aufwand auch auf der Kommandozeile automatisiert werden. :)
gertvdijk

@gertvdijk, das liegt außerhalb meiner Zuständigkeit. Ich habe LibO noch nie über CLI verwendet.

Es gibt dies auch, wkhtmltopdf, aber ich habe keine Erfahrung damit: cyberciti.biz/open-source/…

Bitte poste wkhtmltopdf als ANTWORT, es hat das Problem gelöst
gasko peter

@gaskopeter, erfolgt wie gewünscht durch Bearbeiten der Antwort.

16

Webkit HTML zu PDF:

sudo apt-get install wkhtmltopdf

http://wkhtmltopdf.org/

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

Die neueste Version ist kopflos (erfordert keinen X-Server).

Eine andere Möglichkeit: Phantomjs ist ein magischer, kopfloser Webbrowser, der ebenfalls auf dem HTML-Webkit basiert. Es kann unter anderem eine Seite als PDF exportieren.

http://phantomjs.org


4
Unter OS X: brew install Caskroom/cask/wkhtmltopdf.
Kenorb

10

WeasyPrint scheint vielversprechend. Ich habe es versucht wkhtmltopdfund obwohl es die Dinge auf akzeptable Weise wiedergibt, wird nicht alles richtig gerendert und es werden PDFs erstellt, deren Öffnen viele Sekunden dauert!

Installieren

pip install weasyprint

Lauf

weasyprint mypage.html out.pdf

Als Extra kann es hilfreich sein, das CSS zu ändern, wenn Sie möchten, dass Browseransicht und PDF identisch aussehen.

/* For converting to PDF */
body {
  width: 210mm; /* A4 dimension */
}
@page {
  margin:0;
  padding: 0;
}

Ich habe gerade versucht zu installieren, weasypeaseyaber es hat nicht funktioniert. Vielleicht könntest du helfen? :) Zuerst habe ich das gemacht: apt-get install python-dev python-pip python-lxml libcairo2 libpango1.0-0 libgdk-pixbuf2.0-0 libffi-dev shared-mime-infound dann Pip mit installiert, pip install weasypeasyaber dieser Fehler wird Could not find any downloads that satisfy the requirement weasypeasy
angezeigt

1
@ Clarkk mein schlechtes. Es ist tatsächlich so weasyprint. Alsopip install weasyprint
Pithikos

3
weasyprintist gut, aber ungefähr 15-mal langsamer als wkhtmltopdfich mich erinnere, daher war es nicht für uns geeignet, Berichte auf Anfrage für unsere Kunden zu erstellen. wkhtmltopdfman kann sich auch bei komplexen Berichten von einer guten Arbeit überzeugen lassen ... mit erheblichem Aufwand!
Sam Watkins

Genial, es bewahrt die CSS und ist genial ..
Aditya Ultra


2

Sie können versuchen, PhantomJS und Code zu verwenden, beispielsweise mit rasterize.js :

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

Oder verwenden Sie das NodeJS html-pdfnpm-Paket (siehe GitHub , Installation über :) , npm install -g html-pdfwie im Kommentar vorgeschlagen. Verwendung:

html-pdf http://example.com/ example.pdf

Es gibt ein gebrauchsfertiges NodeJS npm-Paket: html-pdf - HTML to PDF-Konverter, der Phantome verwendet.
Ruvim

Ich konnte es nicht mit npm installieren, da phantomjs-prebuild fehlte (was aufgrund von Zugriffsrechten auch mit root nicht ordnungsgemäß installiert werden konnte)
Martin Thoma

2

Ich habe WeasyPrint ausprobiert wie von anderen vorgeschlagen. Es lässt sich auf vielen Seiten nicht gut konvertieren, und auf einigen Seiten schlägt es nur mit einem Fehler fehl.

Das folgende Firefox-Addon funktioniert für mich. Firefox 55. Es sagt nur Windows, aber es funktioniert unter Ubuntu.

FireShot


1

Versuchen Sie es mit Dompdf (überprüfen Sie den Quellcode bei GitHub ), einem HTML-PDF-Konverter. Diese Bibliothek ist sehr einfach zu bedienen und auch sehr einfach zu installieren. Mit Komponisten können Sie es ziemlich schnell einrichten.

Anforderungen: PHP 5.0+ (5.3+ empfohlen), DOM-Erweiterung, GD-Erweiterung

Beispiel PHP Code:

<?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");
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.