3

我们通过获取本地 .html 文件并将它们转换为 .pdf 文件来使用 wkhtmltopdf(在 wkhtmltoxsharp 库中)。

在 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 回答