ローカルの .html ファイルを取得して .pdf ファイルに変換することにより、wkhtmltopdf (wkhtmltoxsharp lib 内) を使用しています。
HTML 内には、.gif 画像を含むネットワーク ドライブへの Web リンクがあります。.pdf を変換すると、画像なしで出力されます。
これを達成する方法について何か考えはありますか?
ローカルの .html ファイルを取得して .pdf ファイルに変換することにより、wkhtmltopdf (wkhtmltoxsharp lib 内) を使用しています。
HTML 内には、.gif 画像を含むネットワーク ドライブへの Web リンクがあります。.pdf を変換すると、画像なしで出力されます。
これを達成する方法について何か考えはありますか?
これはすでに回答されていることは知っていますが、誰かがこの情報も使用する可能性があると思います: バージョン1.1.4 0.10 で作業しており、GIF、JPG などを印刷できます。
しかし、私がうまくいかなかったのは、ローカルページ(で働いてhttp://localhost/
いる)に、ソースが相対パスで設定された画像を変換させることです。
したがって、これでは機能しませんでした:
<img src="../somepath/echoimage.php?params" >
例に示すように、動的画像を使用したため、上記のソリューションでいくつかの画像タイプにうんざりしましたが、それらのどれも役に立ちませんでした。
src
次のように、絶対パス
を持つことで最終的には機能しました。<img src="http://localhost/fullpath/echoimage.php?params" >
高さ/幅が指定されている場合、または動的画像でない場合、最初のシナリオが機能する可能性があるかどうかをテストする時間がありませんでした。この場合、絶対パスを設定しても問題ないので、そこでやめました。
wkhtmltopdf 0.11.0 rc1 の Windows バージョンは、gif 画像をサポートしていません。回避策: 受信 HTML 内のすべての画像を前処理し、それらを jpg に変換します。
記載されている問題: http://code.google.com/p/wkhtmltopdf/issues/detail?id=441
GIF は wkhtmltopdf 0.9.9 で動作します。
以下のコードを使用するだけで、マップされた 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 が得られます。