* htmlファイルを* pdfファイルにすばやく変換するために、Dockerイメージ内にコマンドラインツールをインストールしたいと思います。
このようなことを行うUnixツールがないことに驚いています。
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)。
wkhtmltopdf を試すこともできます。使用とインストールは非常に簡単です。
weasyprint はオプションです。考えられる欠点は、マシンにpythonが必要になることです。
インストール:
pip install weasyprint
変換:
weasyprint in.html out.pdf
HTMLDOCの1.8ブランチを何年も使用してきました。 2003年以降、数十万のレポートを生成している商用システムに入れました。
万能ではありませんが、非常に効率的で信頼性があります。ポストスクリプトフォントの基本セットに限定されます。
CSSはサポートしていませんが、代わりに特別なHTMLコメントディレクティブセットを使用してPDF特定の側面を制御します。
Cに慣れていれば、カスタム機能を追加する必要がある場合でも、ソースコードを読んで編集するのはそれほど難しくありません。ターゲットプラットフォームに応じて、GCCまたはVisual Studioでコンパイルされます。
HTMLはファイル内にある必要はありません。 URL、php、aspxなどから動的に生成できます。Webサーバーに接続して、PDFファイルを動的に生成することもできます。
私の使用例では、HTMLをプリンターとレタースタッフィングマシンに送信するのではなく、ASPページからPDFファイルを生成して電子メールに添付します。これは一種の印刷スプーラーです。 。
Html2psプログラムもあり、PostScriptファイルを簡単にPDFに変換できます。私はこれを数年前に使用しましたが、IIRCは大きなマニュアルでかなりうまくいきました。
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);