我们通过获取本地 .html 文件并将它们转换为 .pdf 文件来使用 wkhtmltopdf(在 wkhtmltoxsharp 库中)。
在 HTML 中,我们有一个指向带有 .gif 图像的网络驱动器的 Web 链接。转换 .pdf 时没有图像。
关于如何实现这一目标的任何想法?
我们通过获取本地 .html 文件并将它们转换为 .pdf 文件来使用 wkhtmltopdf(在 wkhtmltoxsharp 库中)。
在 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。