私は最近wkhtmltopdfに出くわし、ブラウザでhtmlからpdfにオンザフライで変換するための優れたツールであることがわかりました。
(Windowsでの)一般的な使用法は次のようになります。
wkhtmltopdf.exe --some-option "<div>Some html <b>formatted</b> text</div>" www.Host.com/page_to_print.html file.pdf
私の質問は、<html><head></head><body><h1>This is a header</h1></body></html>
の代わりにwww.Host.com/page_to_print.html
を使用するオプションはありますか?
助けてくれてありがとう。
はいといいえ。
ネイティブサポートはありませんが、Windowsコマンドのプロンプトパイプを使用してコンテンツをwkhtmltopdfにパイプできます。次のコマンドを試してください。
echo "<h3>magical ponies</h3>" | wkhtmltopdf.exe - test.pdf
これは、「このテキストをエコーし、stdout(標準出力ストリーム)をwkhtmltopdf stdin(標準入力ストリーム)に出力する」のようになります。ダッシュ-
wkhtmltopdfコマンドは、ファイルではなくstdinからの入力を受け取ることを意味します。
HTMLをファイルにエコーし、そのファイルをwkhtmltopdfにフィードして、スクリプト内でそのファイルを削除することもできます。
現在、ドキュメントに最適なリソースは http://wkhtmltopdf.org/usage/wkhtmltopdf.txt および http://madalgo.au.dk/~jakobt/wkhtmltoxdoc/wkhtmltopdf_0.10.0 _rc2-doc.html -それらを読んだ場合、そのようなHTMLの文字列を入力することについての言及はありません。
Nenotlepによって提供された答えに対する単なる修正。 Jigarが(Nenotlepの回答へのコメントで)指摘したように、Nenotlepのコマンドは、実際のテキストの前後に引用符を付けます。私のシステム(Windows 10)では、このコマンドが正しい解決策です。
echo ^<h3^>magical ponies^</h3^> | "C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe" - test.pdf
echo
コマンドには引用符は必要ありませんが、テキストを引用符で囲まない場合は、<
文字と>
文字を(^
で)エスケープする必要があります。 )。
試してみるもう1つの方法は、テキストを一時ファイルに書き込むことです。これは、Windowsでは、一部のソースが述べているように、さらに高速になる可能性があります。
echo ^<h3^>magical ponies^</h3^> > temp.txt
"C:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe" - test.pdf < temp.txt
(これは1行で記述することもできます。2つのコマンドの間に&
を置くだけです。)
PowerShellを使用すると、次のように実行できます。
$html = "<h1>Magical Ponies</h1><p>Once upon a time in Horseland, there was a band of miniat
ure creatures..."
$html | .\wkhtmltopdf.exe - C:\temp\test.pdf
wkhtmltopdf
の\bin\
ディレクトリ内からコードを実行していることを確認してください。そうでない場合は、実行可能ファイルへのフルパスを指定する必要があります。
生のhtmlをPDFに変換するためにwkhtmltopdf
を動作させることができませんでしたが、数分の作業でそれを実行できる単純なマイクロサービスを見つけました bantam.io =。
仕組みは次のとおりです。
bantam
.run('@images/html', {
html: `
<h1 style='width: 400px; text-align: center'>TEST</h1>
<br/>
<img src='https://images.unsplash.com/photo-1507146426996-ef05306b995a?ixlib=rb-1.2.1&ixid=eyJhcHBfaWQiOjEyMDd9&auto=format&fit=crop&w=1950&q=80' />
`,
imageType: 'pdf',
})
.then(pdfUrl => {
// pdf is temporarily hosted on AWS S3 via a secure link at `pdfUrl`
});
また、生のHTMLではなくURLを取り込むためのオプションがあり、PDFだけでなく画像も作成できます。ドキュメントは次のとおりです。 https://bantam.io/functions/@images/html?link=docs&subLink=
Pp。によって提供された回答に加えて、<
>
文字をエスケープしたくない場合は、次のこともできます。
echo | set /p="<h3>Magical ponies</h3>" | wkhtmltopdf - test.pdf