3

ローカルの .html ファイルを取得して .pdf ファイルに変換することにより、wkhtmltopdf (wkhtmltoxsharp lib 内) を使用しています。

HTML 内には、.gif 画像を含むネットワーク ドライブへの Web リンクがあります。.pdf を変換すると、画像なしで出力されます。

これを達成する方法について何か考えはありますか?

これについては、Google Code でさらに議論してください

4

4 に答える 4

7

これはすでに回答されていることは知っていますが、誰かがこの情報も使用する可能性があると思います: バージョン1.1.4 0.10 で作業しており、GIF、JPG などを印刷できます。

しかし、私がうまくいかなかったのは、ローカルページ(で働いてhttp://localhost/いる)に、ソースが相対パスで設定された画像を変換させることです。

したがって、これでは機能しませんでした: <img src="../somepath/echoimage.php?params" >

例に示すように、動的画像を使用したため、上記のソリューションでいくつかの画像タイプにうんざりしましたが、それらのどれも役に立ちませんでした。

src次のように、絶対パス を持つことで最終的には機能しました。<img src="http://localhost/fullpath/echoimage.php?params" >

高さ/幅が指定されている場合、または動的画像でない場合、最初のシナリオが機能する可能性があるかどうかをテストする時間がありませんでした。この場合、絶対パスを設定しても問題ないので、そこでやめました。

于 2013-03-08T22:01:12.407 に答える
5

wkhtmltopdf 0.11.0 rc1 の Windows バージョンは、gif 画像をサポートしていません。回避策: 受信 HTML 内のすべての画像を前処理し、それらを jpg に変換します。

記載されている問題: http://code.google.com/p/wkhtmltopdf/issues/detail?id=441

GIF は wkhtmltopdf 0.9.9 で動作します。

于 2012-07-12T10:23:50.543 に答える
1

以下のコードを使用するだけで、マップされた 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
于 2011-12-23T21:50:03.637 に答える
0

画像コードを css に定義している場合は、それらのコードを削除すると、画像付きの PDF が得られます。

于 2016-03-09T11:00:45.793 に答える