web-dev-qa-db-ja.com

HTMLファイルをPDFに変換するためのコマンドラインツールはありますか?

* htmlファイルを* pdfファイルにすばやく変換するために、Dockerイメージ内にコマンドラインツールをインストールしたいと思います。

このようなことを行うUnixツールがないことに驚いています。

20
EB2127

pandoc は、ファイル形式を変換するための優れたコマンドラインツールです。

デメリットはPDF出力の場合、LaTeXが必要になります。使用法は

pandoc test.html -t latex -o test.pdf

LaTeXをインストールしていない場合は、 htmldoc をお勧めします。


PDFの作成 から引用

デフォルトでは、pandocはLaTeXを使用してPDFを作成します。これには、LaTeXエンジンがインストールされている必要があります。

または、pandocはConTeXt、pdfroff、または次のHTML/CSS-to-PDF-enginesのいずれかを使用してPDFを作成できます:wkhtmltopdf、weasyprint、またはprince。これを行うには、以前と同様に.pdf拡張子の付いた出力ファイルを指定しますが、コマンドラインに--pdf-engineオプションまたは-t context、-t html、または-t msを追加します(-t htmlデフォルトは- -pdf-engine = wkhtmltopdf)。

27

wkhtmltopdf を試すこともできます。使用とインストールは非常に簡単です。

15
guitarman

weasyprint はオプションです。考えられる欠点は、マシンにpythonが必要になることです。

インストール:

pip install weasyprint

変換:

weasyprint in.html out.pdf
6
shiftas

HTMLDOCの1.8ブランチを何年も使用してきました。 2003年以降、数十万のレポートを生成している商用システムに入れました。

万能ではありませんが、非常に効率的で信頼性があります。ポストスクリプトフォントの基本セットに限定されます。

CSSはサポートしていませんが、代わりに特別なHTMLコメントディレクティブセットを使用してPDF特定の側面を制御します。

Cに慣れていれば、カスタム機能を追加する必要がある場合でも、ソースコードを読んで編集するのはそれほど難しくありません。ターゲットプラットフォームに応じて、GCCまたはVisual Studioでコンパイルされます。

HTMLはファイル内にある必要はありません。 URL、php、aspxなどから動的に生成できます。Webサーバーに接続して、PDFファイルを動的に生成することもできます。

私の使用例では、HTMLをプリンターとレタースタッフィングマシンに送信するのではなく、ASPページからPDFファイルを生成して電子メールに添付します。これは一種の印刷スプーラーです。 。

1
birdwes

Html2psプログラムもあり、PostScriptファイルを簡単にPDFに変換できます。私はこれを数年前に使用しましたが、IIRCは大きなマニュアルでかなりうまくいきました。

1
jamesqf

PhantomJS はあなたのために仕事をすることができます。コマンドライン機能があり、そのまま使用できます。何をすべきかを伝える簡単なJavaScript関数を書く必要があります。このサイトにはクイックスタートガイドがあり、オンラインで役立つ記事がたくさんあります。使用法は一般的に次のとおりです。

phantomjs configFile.js htmlFile.html output.pdf

A4ポートレートを生成するサンプルスクリプトを次に示しますPDF here から取得、configFile.jsとして保存)

var page = require('webpage').create(),
    system = require('system'),
    fs = require('fs');

page.paperSize = {
    format: 'A4',
    orientation: 'portrait',
    margin: {
        top: "1.5cm",
        bottom: "1cm"
    },
    footer: {
        height: "1cm",
        contents: phantom.callback(function (pageNum, numPages) {
            return '' +
                '<div style="margin: 0 1cm 0 1cm; font-size: 0.65em">' +
                '   <div style="color: #888; padding:20px 20px 0 10px; border-top: 1px solid #ccc;">' +
                '       <span>REPORT FOOTER</span> ' +
                '       <span style="float:right">' + pageNum + ' / ' + numPages + '</span>' +
                '   </div>' +
                '</div>';
        })
    }
};

page.settings.dpi = "96";

page.content = fs.read(system.args[1]);

var output = system.args[2];

window.setTimeout(function () {
    page.render(output, {format: 'pdf'});
    phantom.exit(0);
}, 2000);
1
The Betpet