HTML’den JPG Elde Etmek | C#

Merhaba, başlıktaki ihtiyaca ait senaryom şu şekilde:
Elimizde Amazon’a eklenecek ürünler vardı.
Bu ürünlerin uyumlu olduğu araçlar vardı ve sayıları bir hayli fazlaydı.
Bunları Bullet Point’lere eklemek mümkün değildi, karakter sayısı sınırlı çünkü.
Bunun yerine bu ürünlerin uyumlu olduğu araçları bir HTML tablo yapısında bir resme çevirsek ve bu şekilde eklesek diye düşündük.
Tabi ki de bunu manuel yapmadım.
corehtmltoimage paketini kullandım.

using CoreHtmlToImage;
using KonsolHtml2Jpg;
using System.Text;

string strHtmlBaslangic = @" <!DOCTYPE html>
                     <html>
                      <head>
                        <style>
                          html, body {
                            height: {SIZE};
                            width: {SIZE};
                          }
                          table {
                            font-family: verdana,arial,sans-serif;
                            font-size: {FONTSIZE};
                            border-collapse: collapse;
                            height: {SIZE};
                            width: {SIZE};
                          }
                          th {
                            background-color: #08c;
                            color: #fff;
                            border: 1px solid #ddd;
                            padding: 2px;
                            text-align: left;
                          }
                          td {
                           border: 1px solid #ddd;
                           padding: 2px;
                          }
                        </style>
                      </head>
                      <body>
                        <table>
                          <tr>
                            <th colspan=""5"" style=""text-align:center;"">Compatible Vehicles (";
string strHtmlBaslik = @")</th>
                          </tr>
                          <tr>
                            <th>Make</th>
                            <th>Model</th>
                            <th>Engine</th>
                            <th>Year</th>
                            <th>Power</th>
                          </tr>";
string strHtmlBitis = @"</table>
                      </body>
                     </html>";

HtmlConverter converter = new HtmlConverter();
UyumluAracIslemleri objUyumluAracIslem = new UyumluAracIslemleri();

string dizin = "c:\\AmazonCompatibleImages\\";
List<string> lstMalzeme = objUyumluAracIslem.GetirUyumluAracParcalar();
foreach (string malzemeNo in lstMalzeme)
{
    List<UyumluArac> lstUyumluArac = objUyumluAracIslem.GetirUyumluAraclar(malzemeNo);
    StringBuilder bfrUyumluAraclar = new StringBuilder();
    foreach (UyumluArac arac in lstUyumluArac)
    {
        bfrUyumluAraclar.Append("<tr>");
        bfrUyumluAraclar.Append("<td>");
        bfrUyumluAraclar.Append(arac.Marka);
        bfrUyumluAraclar.Append("</td>");
        bfrUyumluAraclar.Append("<td>");
        bfrUyumluAraclar.Append(arac.Model);
        bfrUyumluAraclar.Append("</td>");
        bfrUyumluAraclar.Append("<td>");
        bfrUyumluAraclar.Append(arac.Motor);
        bfrUyumluAraclar.Append("</td>");
        bfrUyumluAraclar.Append("<td>");
        bfrUyumluAraclar.Append(arac.Yil);
        bfrUyumluAraclar.Append("</td>");
        bfrUyumluAraclar.Append("<td>");
        bfrUyumluAraclar.Append(arac.Guc);
        bfrUyumluAraclar.Append("</td>");
        bfrUyumluAraclar.Append("<tr>");
    }
    string strHtmlUyumluAraclar = bfrUyumluAraclar.ToString();
    if (!string.IsNullOrEmpty(strHtmlUyumluAraclar))
    {
        int boyut = GenelIslemler.GetirBoyut(lstUyumluArac.Count);
        int yaziBoyutu = 10000 / boyut;
        string strHtml = strHtmlBaslangic.Replace("{SIZE}", boyut.ToString() + "px").Replace("{FONTSIZE}", yaziBoyutu.ToString() + "px") + malzemeNo + strHtmlBaslik + strHtmlUyumluAraclar + strHtmlBitis;
        byte[] bytes = converter.FromHtmlString(strHtml, boyut, ImageFormat.Jpg);
        File.WriteAllBytes(dizin + malzemeNo + "_Compatible.jpg", bytes);
    }
}

Selamlar.

Leave a Reply

Your email address will not be published. Required fields are marked *