Рендеринг локальных изображений с использованием ВтПечкин?

Я пытаюсь сгенерировать документы с использованием службы "ВайтПечкин", и до сих пор она работает безупречно, когда дело касается изображений URL. Однако, когда дело доходит до локальных изображений, кажется, что они вообще не генерируют изображение, как показано здесь:

http://imgur.com/O5wYqYh

Генерация документов:

public static void ConvertDoc(String html)
    {         
        var document = new HtmlToPdfDocument
        {
            GlobalSettings =
            {
                ProduceOutline = true,
                DocumentTitle = "Form documents",                    
                Margins =
                {
                    Top = 1.8,
                    Left = 2.5,
                    Right = 2.5,
                    Bottom = 2.5,
                    Unit = Unit.Centimeters
                }
            },
            Objects =
            {
                new ObjectSettings { HtmlText = html, 
                    WebSettings = new WebSettings() {
                        LoadImages = true
                }
                }

            }
        };

        IConverter converter =  new ThreadSafeConverter(
            new PdfToolset(
                new Win32EmbeddedDeployment(
                    new TempFolderDeployment())));

        byte[] result = converter.Convert(document);

        File.WriteAllBytes("C:/Users/jmann_000/Desktop/Test/program-test-2015.pdf", result);
    }
}
}

Как видно из вышеизложенного, я также попытался установить для загрузки изображения значение true, которое не сработало. HTML в вопросе:

    <td>
         <table border="0" cellpadding="0" cellspacing="0" class="doc-header">
                    <tr>
                        <td width="300" align="left"><img src="img/logo.gif" width="240" alt="AeroCare"></td>
                        <td width="375"></td>
                    </tr>
         </table>
    </td>

Есть ли правильный способ создания изображения, если оно локальное?

1 ответ

Решение

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

Это создает проблемы с относительными изображениями, а также таблицами стилей CSS. В любом случае вам нужно указать полный путь к файлу.

Решение 1

Для MVC и Razor

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

@String root = http://localhost:port/
<img src="@String.Format("{0}img/logo.gif",root)" width="240" alt="AeroCare">

Решение 2

Получите файл, используя путь к файловой системе.

@String root = @HostingEnvironment.MapPath("~");

Если вы используете консольное приложение, замените его на

String root = AppDomain.CurrentDomain.BaseDirectory;

Но тогда вам нужен механизм для замены всех ссылок в файле HTML на полные пути.

Решение 3

Узнайте, из какого каталога запущен wkhtmltopdf, и попробуйте предоставить ссылки относительно этого каталога.

Другие вопросы по тегам