wkhtmltopdfは、HTMLファイル内の画像を取得しません
-
28-10-2019 - |
質問
ローカル.htmlファイルを使用して.pdfファイルに変換することにより、wkhtmltopdf(wkhtmltoxsharp lib)を使用しています。
HTML内には、.gif画像を備えたネットワークドライブへのWebリンクがあります。 .pdfを変換するときは、画像なしで出てきます。
これを達成する方法について何か考えはありますか?
解決
WKHTMLTOPDF 0.11.0 RC1のWindowsバージョンはGIF画像をサポートしていません。 回避策:入力HTMLのすべての画像を前処理し、それらをJPGに変換します。
記述されている問題: http://code.google.com/p/wkhtmltopdf/issues/detail?id=441
GIFはwkhtmltopdf 0.9.9で動作します。
他のヒント
私はこれがすでに答えられていることを知っていますが、誰かがこの情報を使用するかもしれないと思います:私はバージョンで作業しています 1.1.4 0.10およびi できる GIF、JPGなどを印刷します。
しかし、私ができること いいえ 仕事に取り掛かることはローカルページを持っています(で作業しています http://localhost/
)ソースが相対パスでセットアップされた画像を変換します。
だからそれはこれで動作しませんでした:<img src="../somepath/echoimage.php?params" >
上記のソリューションでいくつかの画像タイプを疲れたのは、例に示されているように、動的画像を使用したからですが、それらのどれも助けにはなりませんでした。
最終的には機能しました src
ここのような絶対的なパスを持っている:<img src="http://localhost/fullpath/echoimage.php?params" >
高さ/幅が与えられた場合、またはそれが動的な画像ではなかった場合、最初のシナリオ作業をテストする時間がありませんでした。この場合、絶対パスを設定することは受け入れられたので、私はそこで停止しました。
以下のコードを使用するだけで、MappedからAbsolute PathにHTML SRCを変更すると、画像が表示されます。 wkhtmltopdfは、JPEGとGIFの両方のタイプの画像を取得します
Public Function getImage(ByVal input As String) As String
If input Is Nothing Then
Return String.Empty
End If
Dim tempInput As String = input
Dim pattern As String = "<IMG(.|)+?>"
Dim src As String = String.Empty
Dim context As HttpContext = HttpContext.Current
'Change the relative URL's to absolute URL's for an image, if any in the HTML code.
For Each m As Match In Regex.Matches(input, pattern, RegexOptions.IgnoreCase Or RegexOptions.Multiline Or RegexOptions.RightToLeft)
If m.Success Then
Dim tempM As String = m.Value
Dim pattern1 As String = "src=['|""](.+?)['|""]"
Dim reImg As New Regex(pattern1, RegexOptions.IgnoreCase Or RegexOptions.Multiline)
Dim mImg As Match = reImg.Match(m.Value)
If mImg.Success Then
src = mImg.Value.ToLower().Replace("src=", "").Replace("""", "")
If src.ToLower().Contains("http://") = False Then
'IIf you want to access through you can use commented src line below
' src = "src=\"" + context.Request.Url.Scheme + "://" + context.Request.Url.Authority + "/" + src + "\"";
src = "src=""" & Server.MapPath("~") & "\" & src & """"
Try
tempM = tempM.Remove(mImg.Index, mImg.Length)
tempM = tempM.Insert(mImg.Index, src)
'insert new url img tag in whole html code
tempInput = tempInput.Remove(m.Index, m.Length)
tempInput = tempInput.Insert(m.Index, tempM)
Catch e As Exception
End Try
End If
End If
End If
Next
Return tempInput
End Function
画像コードをCSSに定義した場合、それらのコードを削除すると、画像でPDFが取得されます。