如何将HTML文件转换为PDF(带有颜色)


30

我有一个HTML文件,该文件使用style.css并具有颜色,例如:

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

如何将Ubuntu 12.04上的本地文件“导出”为PDF?(外观和颜色应保持不变)。我尝试了例如:Ctrl+ P->打印为PDF,但没有保留颜色。我尝试htmldoc了该--color选项..但这是同样的问题..

通过命令行执行此操作会很棒。


Answers:


36

在LibreOffice Writer中打开html文件,然后File在菜单下选择export to PDF。而已。

如果您更喜欢命令行,请查看使用开源工具-Linux / OS X / Windows将HTML页面转换为PDF

可以使用安装软件sudo apt-get install wkhtmltopdf


我认为这可以通过一些努力在命令行上自动执行。:)
gertvdijk

@gertvdijk,这超出了我的权限。我从未通过CLI使用LibO。

有了这个,wkhtmltopdf,以及但是我没有体会吧:cyberciti.biz/open-source/...

请将wkhtmltopdf作为ANSWER发布,它解决了该问题
gasko peter

@gaskopeter,通过编辑答案按要求完成。


10

WeasyPrint看起来很有希望。我试过了wkhtmltopdf,尽管它以可接受的方式呈现事物,但是它不能正确呈现所有事物,并且它会创建需要许多秒才能打开的pdf!

安装

pip install weasyprint

weasyprint mypage.html out.pdf

另外,如果要使浏览器视图和PDF看起来相同,则更改CSS可能会有所帮助。

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

我刚刚尝试安装,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
Pithikos

3
weasyprint效果很好,但比wkhtmltopdf我记得的慢了15倍,因此它不适合我们为客户生成按需报告。 wkhtmltopdf即使是复杂的报告,也可以说服您做得很好……付出了相当大的努力!
山姆·沃特金斯

真棒它保留了CSS和是真棒..
阿迪亚超


2

您可以尝试使用PhantomJS和一些代码,例如使用rasterize.js的示例:

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

或者按照注释中的建议使用NodeJS html-pdfnpm软件包(请参阅GitHub,通过:安装npm install -g html-pdf)。用法:

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

有一个随时可以使用的NodeJS npm软件包:html-pdf —使用phantomjs的HTML到PDF转换器。
ruvim

由于缺少phantomjs-prebuild(由于具有访问权限,即使使用root用户也无法正确安装),我无法使用npm进行安装
Martin Thoma

2

我尝试了WeasyPrint,正如其他人所建议的那样。它在许多页面中转换得不好,在某些页面中它只是失败并显示错误。

以下Firefox插件适用于我。Firefox55。它仅显示Windows,但可以在Ubuntu上运行。

射击


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");
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.