рдЗрд╕ рддрдереНрдп рдХреЗ рдмрд╛рд╡рдЬреВрдж рдХрд┐ рдкреЛрд╕реНрдЯ ASP.NET рдХреЗ рд▓рд┐рдП рдПрдХ рд░рд┐рдХреНрдд, рдПрдХ рдиреБрд╕реНрдЦрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рдЙрд╕реА рд╕рд┐рджреНрдзрд╛рдВрдд рджреНрд╡рд╛рд░рд╛ рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рдВрднрд╡ рд╣реИред
рдЙрджреНрджреЗрд╢реНрдп:
- рдореВрд▓реНрдпреЛрдВ рдХреЗ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рдХреЗ рд╕рд╛рде рдлрд╝рд╛рдЗрд▓ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╕реЗ рдбреАрдУрд╕реА рдпрд╛ рдкреАрдбреАрдПрдл рдЙрддреНрдкрдиреНрди рдХрд░реЗрдВ
- рдХрдо рдХреЛрдб рд▓рд┐рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдЯреЗрдореНрдкрд▓реЗрдЯ рдореЗрдВ рдиреНрдпреВрдирддрдо рддрд░реНрдХ рдХреЛ рд╢рд╛рдорд┐рд▓ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдХреЗрд╡рд▓ рдмрд╛рд╣рд░реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ
- рдЕрджреНрдпрддрди рдХрд░реЗрдВ ред рдХрд╛рд░реНрдп рдХреЗ рдкрд░рд┐рдгрд╛рдо рдХреЛ рдЖрдЧреЗ рдХреА рд╣реЗрд░рдлреЗрд░ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝рд╛рдЗрд▓ рдореЗрдВ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
рдХрдЯреМрддреА рдХреЗ рддрд╣рдд рдПрдХ рдмрд╣реБрдд рд╣реА рд╕рд░рд▓ рдФрд░ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╕рдорд╛рдзрд╛рди рд╣реИ, C # рдХреЛрдб рдЙрджрд╛рд╣рд░рдгред рдЗрд╕рдХреЗ рдмрд╛рд╡рдЬреВрдж, рдХрд┐ рдкреЛрд╕реНрдЯ ASP.NET рдХреЗ рд▓рд┐рдП рдПрдХ рдиреБрд╕реНрдЦрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИ, рд╕рдорд╛рди рд╕рд┐рджреНрдзрд╛рдВрддреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЕрдиреНрдп рдкреНрд▓реЗрдЯрдлрд╛рд░реНрдореЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдорд╛рдзрд╛рди рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдирд╛ рдХрд╛рдлреА рд╕рдВрднрд╡ рд╣реИред
рд╕рдорд╛рдзрд╛рди:
- рд╣рдо рдПрдХ рдЕрд╕реНрдерд╛рдпреА HTML рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рддреЗ рд╣реИрдВред рдлрд╝рд╛рдЗрд▓ RazorEngine рдЗрдВрдЬрди ( NuGet рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ) рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрдиреНрди рдХреА рдЬрд╛рдПрдЧреА ред рдХреЛрдб рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:
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>
- рдЕрдм рд╣рдо рдПрдХреНрд╕рдЯрд░реНрдирд▓ рдпреВрдЯрд┐рд▓рд┐рдЯреА - wttmltopdf рдХреЛ рдХреЙрд▓ рдХрд░рдХреЗ рдлрд╛рдЗрд▓ рдЬреЗрдирд░реЗрдЯ рдХрд░рддреЗ рд╣реИрдВ, рдЖрдк рдЗрд╕реЗ рдпрд╣рд╛рдБ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ ред
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");
рдкрд░рд┐рдгрд╛рдореА рдкреАрдбреАрдПрдл:
Wkhtmltopdf рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди OS рдХреЗ рд▓рд┐рдП рд╕рдВрд╕реНрдХрд░рдг рд╣реИрдВ, рд╕реНрд░реЛрдд рдХреЛрдб рд╣реИрдВред
рдЯреЗрдореНрдкрд▓реЗрдЯ рдЗрдВрдЬрди, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЕрд▓рдЧ рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдорд╛рдЗрдирд╕ рд╡рд┐рдЪрд╛рд░ - рдПрдХ рдмрд╛рд╣рд░реА рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред