wkhtmltopdf не будет снимать изображения в HTML-файлах - PullRequest
3 голосов
/ 23 марта 2011

Мы используем wkhtmltopdf (из библиотеки wkhtmltoxsharp), беря локальные файлы .html и преобразуя их в файлы .pdf.

Внутри HTML у нас есть веб-ссылка на сетевой диск с изображением .gif. при конвертации .pdf выходит без изображения.

Есть мысли о том, как этого добиться?

Подробнее об этом можно узнать в Google Code .

Ответы [ 4 ]

7 голосов
/ 09 марта 2013

Я знаю, что на этот вопрос уже есть ответ, но я думаю, что кто-то также может использовать эту информацию: я работаю с версией 1.1.4 0.10, и я могу печатать GIF-файлы,JPG и т. Д.

Но то, что я мог бы не заставить работать, это иметь локальную страницу (работающую на http://localhost/), конвертирующую изображения, для которых их источник настроен с относительным путем.

Так что с этим не сработало: <img src="../somepath/echoimage.php?params" >

Я устал от нескольких типов изображений с этим решением, поскольку, как показано в примере, я использовал динамические изображения, но ни один из них не помог.

В конце концов это сработало, когда src имел абсолютный путь, как здесь: <img src="http://localhost/fullpath/echoimage.php?params" >

У меня не было времени для тестирования, возможно, первый сценарий сработал бы, если бы высота / ширина былидано или если это не было динамическое изображение.Установка абсолютного пути была приемлемой в этом случае, поэтому я остановился на этом.

5 голосов
/ 12 июля 2012

Windows-версия wkhtmltopdf 0.11.0 rc1 не поддерживает изображения gif. Обход проблемы: предварительно обработайте все изображения во входящем HTML и преобразуйте их в jpgs.

Проблема описана в: http://code.google.com/p/wkhtmltopdf/issues/detail?id=441

GIF-файлы работают в wkhtmltopdf 0,9,9.

1 голос
/ 24 декабря 2011

Просто используйте приведенный ниже код, он изменит ваш 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
0 голосов
/ 09 марта 2016

Если вы определили код изображений в css, удалите этот код, и вы получите PDF с изображениями.

...