- PVSM.RU - https://www.pvsm.ru -
Не смотря на то, что пост предлагает заготовку, рецепт под ASP.NET, по аналогичным принципа вполне возможно реализовать решение и под другие платформы.
Задача:
Под катом — очень простое и короткое решение, примеры кода на C#. Не смотря на это, что пост предлагает заготовку-рецепт под ASP.NET, по аналогичным принципам вполне возможно реализовать решение и под другие платформы.
Решение:
string template = File.ReadAllText("template1.cshtml");
string result = Razor.Parse(template, new { Name = "Пользователь", ShowBlock1 = false, ShowBlock2 = true });
File.WriteAllText("C:/tests/input.html", result);
Содержимое template1.cshtml
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >
</head>
<body>
<h1>Просто текст.</h1>
<p>имя тебе - @Model.Name</p>
<p style="display:@( Model.ShowBlock1 ? "block" : "none")">Блок 1</p>
<p style="display:@( Model.ShowBlock2 ? "block" : "none")">Блок 2</p>
<table style="border:1px solid black" border="1" style="width:100%" width="100%">
<tr>
<td>111</td>
<td><img src="C:/tests/1.png"/></td>
<td>333</td>
</tr>
</table>
</body>
</html>
var process = new Process
{
StartInfo =
{
FileName = "C:/Program Files (x86)/wkhtmltopdf/wkhtmltopdf.exe",
Arguments = "C:/tests/input.html C:/tests/output.pdf"
}
};
process.Start();
File.Delete("C:/tests/input.html");
Получившийся PDF:
У wkhtmltopdf есть версии под различные ОС, есть исходники.
Шаблонизатор, конечно, можно использовать иной.
Минус идеи — используется внешняя утилита.
Автор: Newbilius
Источник [4]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/net/41305
Ссылки в тексте:
[1] RazorEngine: http://razorengine.codeplex.com/
[2] через NuGet: http://www.nuget.org/packages/RazorEngine
[3] можно тут: http://code.google.com/p/wkhtmltopdf/downloads/list
[4] Источник: http://habrahabr.ru/post/190658/
Нажмите здесь для печати.