52

これと非常によく似た質問を複数見たので、最初は投稿するのをためらっていました。しかし、私の問題を解決したことを示唆するものは何もなく、自分で何が問題なのかを理解できないようです。

あるクライアントのために私が作成したプロジェクトでは、顧客の見積もり (オンライン フォームを使用して生成) を PDF に変換できるようにしたいと考えていました。十分に単純です。プロジェクト全体が PHP であったため、次の簡単なプロセスを使用しました。

  1. 見積もりを一時 HTML ファイルとして保存する
  2. WkHTMLtoPDF を使用して HTML ファイルを PDF に変換します
  3. このPDFファイルを出力
  4. クリーンアップ (一時ファイルの削除)

これは、サーバーを変更するまで機能しました。新しいサーバーにはファイアウォールがあります。

最初の PDF 変換ステップは、サーバーがアウトバウンド接続を確立できないことを示すファイアウォール ページを返していました。これを解決するために、HTML ファイルにリンクするのではなく、HTML ファイルを直接フィードしました (www.example.com/temp/18382.html ではなく、/var/www/mysite/temp/18382.html)。これにより HTML が変換されましたが、ファイアウォールによって CSS と画像の読み込みが妨げられました

CSS にリンクする (タグを使用する) のではなく、サイトに直接埋め込むだけで CSS を克服できます<style>が、これは画像には機能しません。

最初に相対リンクを使用してみました。に変更<img src="http://www.example.com/temp/image.jpg" />しました<img src="./image.jpg" />。これはうまくいきませんでした。

次に試してみ<img src="file:///var/www/mysite/temp/image.jpg" />ましたが、これもうまくいきませんでした

私は WkHTMLtoPDF マニュアルを読んで調べ、いくつかの異なるコマンド ライン引数を試しまし--enable-local-file-accessた。--enable /var/www/mysite/temp/--images

4

16 に答える 16

47

私の場合 - wkhtmltopdf バージョン 0.12.2.1 (パッチを適用した qt を使用) - 絶対パスを使用して head セクションに base タグを追加すると、画像と css が確実に読み込まれました。

<html>
<head>
...
<base href="http://www.example.com/">
<link href="/assets/css/style.css" rel="stylesheet">
...
</head>
于 2016-04-18T13:45:27.483 に答える
18

Windows では、マークアップで絶対ファイル システム パスを使用する必要があります。例えば:

<link href='C:\Projects\Hello\Hello.Web\Content\custom\home.css' rel='stylesheet' type='text/css' />

! いいえhttp://localhost/Hello.Web/Content/custom/home.css

于 2013-12-03T17:28:52.380 に答える
3

ここやネットの皆さんの親切な支援を受けて、自分に合うものを見つけました - asp.net (c#) でのコーディングです。

元のソース html にアクセスする必要があるため、(ファイル パスではなく) URL で画像にアクセスする必要がありました。トラブルシューティングを通じて、これらの点を発見しました。

  1. これらのフラグをコマンド ライン プロセスに渡す必要がありました: "-q -n --disable-smart-shrinking --images --page-size A4"

  2. URL は依然として絶対でなければなりません。

  3. 画像はjpgでなければなりません!私はもともとgifをやろうとしていましたが、役に立ちませんでした。

  4. 「--enable-local-file-access」を追加しても、画像パスに「/」スラッシュの代わりに「\」スラッシュが必要なため、役に立たないことがわかりました。これは、ソースも使用したい場合には役に立ちませんhtml (一部のブラウザー)。また、ローカル ファイル システムにアクセスする必要がある場合は、絶対パスを指定する必要があります。これは、ルートから直接読み取り、そこから移動するためです。

これが他の人に役立つことを願っています。

乾杯

-y

于 2014-05-19T00:49:51.167 に答える
3

私にとってそれを修正したのは、CSSファイルへの参照を削除することでした。img { max-height: 100%; }それ以外の場合は空の divに設定していたため、max-height: 0 として解釈されていたことが判明しました。

そのため、CSS を確認してください。そこに問題がある可能性があります。これはうまくいきました:

<div><img src="image.png"/></div>

そして、image.png を含むディレクトリでコマンド ラインを実行します。

wkhtmltopdf example.html example.pdf

しかし、これはしません:

<div><img src="image.png" style = "max-height: 100%; "/></div>

画像が高さ 0 に押しつぶされるためです。Firefox はこれを修正しているようで、明らかではありませんでした。

于 2019-11-20T21:15:01.980 に答える