Register Register Member Login Member Login Member Login Forgot Password ??
PHP , ASP , ASP.NET, VB.NET, C#, Java , jQuery , Android , iOS , Windows Phone
 

Registered : 108,878

HOME > PHP > PHP Forum > การนำภาพที่เป็น base64 มาใส่ใน TCPDF ใส่เท่าไรก็ไม่ได้สักที



 

การนำภาพที่เป็น base64 มาใส่ใน TCPDF ใส่เท่าไรก็ไม่ได้สักที

 



Topic : 133029



โพสกระทู้ ( 25 )
บทความ ( 0 )



สถานะออฟไลน์




ตอนนี้พยายามเท่าไร ก็ไม่มีรูปใน pdf ซักที ใครพอมีวิธีแก้ไหมคะ

Code (PHP)
<?php
require_once('tcpdf/tcpdf.php');

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);	


// remove default header/footer
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);

// set font
$pdf->SetFont('thsarabun', '', 13);

// add a page
$pdf->AddPage();

// -----------------------------------------------------------------------------
		mysql_connect("localhost", "root", "") or die("Error connecting to database: ".mysql_error());
		mysql_select_db("TDASampleY") or die(mysql_error());
        mysql_query("SET NAMES UTF8");
$tbl = '
<table cellpadding="2" cellspacing="2" >
	<tr style="background-color:#666666;color:#FFFFFF;font-size:1.5em;" align = "center">
		<th colspan="9" >ข้อมูลบัตรประชาชน</th>
	</tr>
	<tr style="background-color:#999999;color:#ffffff;font-size:1em; font-weight: bold;" align = "center">
        <td>ID</td>
        <td>NID</td>
		<td>Name</td>
		<td>surname</td>
	</tr>';
		
    $aar = $_POST["chk"];
    $com_id = implode(",", $aar);
    for($i=0;$i<count($_POST["chk"]);$i++)
    {
        if(trim($_POST["chk"][$i]) != "")
        {
            $sql = "SELECT * from ThaiIDCard Where id IN ($com_id) order by id";
            
        }
        else {
            $sql = "SELECT * from ThaiIDCard order by id";
           
        }
    }
    if ($sql==""){
        $sql = "SELECT * from ThaiIDCard order by id";
        
    }
    
    $sqlQ = mysql_query($sql) or die ("Error Query [".$sql."]"); 
    while($result = mysql_fetch_array($sqlQ)){		
				$tbl.='		<tr style="background-color:#ffffcc;color:#000000;font-size:1em;">
                            <td>'.$result["id"].'</td>
							<td>'.$result["idnum"].'</td>
							<td>'.$result["nameT"].'</td>
                            <td>'.$result["surnameT"].'</td>
                            <td>'.'<img height="100" src="data:image/;base64,' . $result["photo"] . '"/>'.'</td>
                            </tr>';
    	}
           
$tbl.='</table>';

// output the HTML content
$pdf->writeHTML($tbl, true, false, true, false, '');

//Close and output PDF document
$pdf->Output('ThaiIDCloud.pdf', 'I');
	
// -----------------------------------------------------------------------------




Tag : PHP







Move To Hilight (Stock) 
Send To Friend.Bookmark.
Date : 2019-01-31 10:14:55 By : yanikanaja View : 2401 Reply : 27
 

 

No. 1



โพสกระทู้ ( 2,303 )
บทความ ( 1 )



สถานะออฟไลน์


Copy เค้ามา ลองดูละกันครับ
You cannot use base64 stream in src rather first save the stream to a file then use it
$img_base64_encoded = 'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA0gA...';
$imageContent = file_get_contents($img_base64_encoded);
$path = tempnam(sys_get_temp_dir(), 'prefix');

file_put_contents ($path, $imageContent);

$img = '<img src="' . $path . '">';
$pdf->writeHTML($img, true, false, true, false, '');







แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-01-31 10:51:23 By : arm8957
 


 

No. 2



โพสกระทู้ ( 5,104 )
บทความ ( 4 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


ถ้าเปลี่ยนใจทัน เก็บ path ชื่อไฟล์ เก็บรูปในโฟลเดอร์ ใช้ก็ดึงมาง่ายกว่าครับ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-01-31 13:00:25 By : apisitp
 

 

No. 3



โพสกระทู้ ( 25 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 2 เขียนโดย : apisitp เมื่อวันที่ 2019-01-31 13:00:25
รายละเอียดของการตอบ ::
รูปมาจากการดึงข้อมูลจากบัตรอ่าค่ะ แล้วเก็บลงฐานข้อมูลเลย ถ้าจะเปลี่ยน ต้องเริ่มแก้ที่แอปพลิเคชั่นเลยค่ะ แหะๆ


แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-01-31 13:10:52 By : yanikanaja
 


 

No. 4



โพสกระทู้ ( 5,104 )
บทความ ( 4 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


ตอบความคิดเห็นที่ : 3 เขียนโดย : yanikanaja เมื่อวันที่ 2019-01-31 13:10:52
รายละเอียดของการตอบ ::
... แปลงข้อมูลมาเป็นภาพก่อน เก็บชื่อ เก็บ path เก็บภาพ ....แบบนี้พอได้ไหม

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-04 11:39:14 By : apisitp
 


 

No. 5



โพสกระทู้ ( 9,228 )
บทความ ( 2 )



สถานะออฟไลน์


ไม่ต้องแก้หรอกครับ แบบนั้น น่ะดีแล้่ว security ดีกว่าทำเป็น ไฟล์ ถ้าพนักงานไว้ใจไม่ได้ แย่เลย เอารูปเขาไปทำอะไรก็ไม่รู้ได้

แล้ว แสดงภาพหรือยัง ก็ตาม 1 เลยครับ เพราะที่ขาดไป คือ image/typeimage;

และ $result["photo"] เป็น base64 หรือเปล่า viewsource ดูข้อมูล จาก browser ว่าถูกต้องไหม
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-04 13:01:53 By : Chaidhanan
 


 

No. 6



โพสกระทู้ ( 5,104 )
บทความ ( 4 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


ตอบความคิดเห็นที่ : 5 เขียนโดย : Chaidhanan เมื่อวันที่ 2019-02-04 13:01:53
รายละเอียดของการตอบ ::
... อะเคร รับทราบ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-05 09:18:55 By : apisitp
 


 

No. 7



โพสกระทู้ ( 25 )
บทความ ( 0 )



สถานะออฟไลน์


Code (PHP)
    $sqlQ = mysql_query($sql) or die ("Error Query [".$sql."]"); 
    while($result = mysql_fetch_array($sqlQ)){

        //$imgdata = base64_decode("'".$result["photo"]."'");	
        $img_base64_encoded = 'data:image/typeimage;base64,'.$result["photo"];
        $imageContent = file_get_contents($img_base64_encoded);
        $path = tempnam(sys_get_temp_dir(), 'prefix');  
        file_put_contents ($path, $imageContent);
        $img = '<img src="' . $path . '">';

				$tbl.='		<tr style="background-color:#ffffcc;color:#000000;font-size:1em;">
                            <td>'.$result["id"].'</td>
							<td>'.$result["idnum"].'</td>
							<td>'.$result["nameT"].'</td>
                            <td>'.$result["surnameT"].'</td>
                            <td>'.$img.'</td>
                            </tr>';

                            //$pdf->Image('@'.$imgdata);            
                            
                        }
           
$tbl.='</table>';


ลองทำแบบนี้แล้วค่ะ ภาพก็ยังไม่ขึ้นอยู่ดี

ส่วนCode (PHP)
$imgdata = base64_decode("'".$result["photo"]."'");	
$pdf->Image('@'.$imgdata); 


ถ้าใช้โค้ดนี้ภาพขึ้นค่ะ แต่เอามาวนลูปไม่ได้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-05 17:21:30 By : yanikanaja
 


 

No. 8



โพสกระทู้ ( 9,228 )
บทความ ( 2 )



สถานะออฟไลน์


typeimage = jpg หรือ bmp หรือ png หรือ gif

โอ้ยกลั้นหัวเราะแทบไม่ไหว อุตส่าห์มาร์คสีแดง ก็ยังไม่เข้าใจ

ตอนนี้เข้าใจแจ่มชัดเลย ทำไม พวก ป.เอก ถีงสอน เด็กประถม ไม่ค่อยรู้เรื่อง

ปล. กรรม แก้โค๊ดหลายรอบ เลย
อัลกอลิธึม ไม่ถูกเลย วาง code ไม่ถูกต้อง

อันนี้ควรจะได้
Code (PHP)
$imgdata = base64_decode("'".$result["photo"]."'");	
$src = 'data:image/png;base64,'.$imgdata;
$img = '<img src="' . $src . '">';



ประวัติการแก้ไข
2019-02-05 17:47:05
2019-02-05 17:47:37
2019-02-05 17:50:07
2019-02-05 17:51:22
2019-02-05 17:54:01
2019-02-05 17:56:28
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-05 17:45:24 By : Chaidhanan
 


 

No. 9



โพสกระทู้ ( 25 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 8 เขียนโดย : Chaidhanan เมื่อวันที่ 2019-02-05 17:45:24
รายละเอียดของการตอบ ::
แหะๆ หนูคนซื่อค่าาาา (ซื่อหรือโง่ก็ไม่รู้)

ลองแล้วไม่ได้เลยอ่าค่ะ

tcpdf1
ได้มาเป็นแบบนี้

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-05 18:01:06 By : yanikanaja
 


 

No. 10



โพสกระทู้ ( 25 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 8 เขียนโดย : Chaidhanan เมื่อวันที่ 2019-02-05 17:45:24
รายละเอียดของการตอบ ::
ยังไม่ได้เลยค่ะ คราวนี้ pdf ขาวหมดเลย เลยแต่ หัว-ท้ายกระดาษ

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-05 18:15:31 By : yanikanaja
 


 

No. 11



โพสกระทู้ ( 9,228 )
บทความ ( 2 )



สถานะออฟไลน์


เอาโค๊ดที่แก้ไขแล้วมาดูด้วยครับ จะได้รู้ว่าผิดตรงไหน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-06 00:01:49 By : Chaidhanan
 


 

No. 12



โพสกระทู้ ( 4,538 )
บทความ ( 8 )



สถานะออฟไลน์


https://stackoverflow.com/a/54520065/128761

ลองดู อันนี้ได้ไหม?


อีกไอเดียนึงคือ <img src="image.php?id=xxx"> ให้มัน src ไปยังไฟล์ image.php แล้วไฟล์นี้ไปดึงข้อมูลภาพมาแสดงพร้อมทั้ง content-type ให้ถูกต้อง มันก็จะเหมือนลิ้งค์ไปยังไฟล์ภาพตรงๆ แต่ใช้ดึงข้อมูลภาพจาก db แทน.
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-06 00:30:42 By : mr.v
 


 

No. 13



โพสกระทู้ ( 25 )
บทความ ( 0 )



สถานะออฟไลน์


ลองใส่โค้ด แบบนี้ค่ะ
Code (PHP)
$sqlQ = mysql_query($sql) or die ("Error Query [".$sql."]"); 
    while($result = mysql_fetch_array($sqlQ)){

        //$imgdata = base64_decode("'".$result["photo"]."'");	
        $imgdata = base64_decode("'".$result["photo"]."'");	
        $src = 'data:image/png;base64,'.$result["photo"];
        $img = '<img src="' . $src . '">';

				$tbl.='		<tr style="background-color:#ffffcc;color:#000000;font-size:1em;">
                            <td>'.$result["id"].'</td>
							<td>'.$result["idnum"].'</td>
							<td>'.$result["nameT"].'</td>
                            <td>'.$result["surnameT"].'</td>
                            <td>'.$img.'</td>
                            </tr>';
                            $pdf->Image('@'.$imgdata);            
                            
                        }
                     
                        
$tbl.='</table>';



ผลลัพธ์ที่ได้ออกมาเป็นแบบนี้ค่ะ
tcpdf2

ลองทำมา 3 วันยังไม่ได้ อยากจะร้องไห้ TT^TT

คำสั่ง
Code (PHP)
<td>'.$img.'</td>


ไม่มีรูปภาพออกมาเลย

ส่วนคำสั่ง
Code (PHP)
$pdf->Image('@'.$imgdata); 


เอามาลองภาพขึ้นนะคะ แต่ขึ้นมาภาพแล้ว แล้วไม่ได้วนลูปในตารางที่ต้องการด้วย


ประวัติการแก้ไข
2019-02-06 14:57:56
2019-02-06 14:58:07
2019-02-06 14:58:15
2019-02-06 14:58:24
2019-02-06 14:58:32
2019-02-06 14:58:40
2019-02-06 14:58:49
2019-02-06 14:59:00
2019-02-06 14:59:08
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-06 14:55:32 By : yanikanaja
 


 

No. 14



โพสกระทู้ ( 419 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ลองอันนี้หรือยังครับ

Code (PHP)
$pdf->writeHTMLCell(0, 0, 0, 0, '<img src="'.$src.'" height="30mm" />');

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-06 16:06:18 By : nobetaking
 


 

No. 15



โพสกระทู้ ( 9,228 )
บทความ ( 2 )



สถานะออฟไลน์


Code (PHP)
$sqlQ = mysql_query($sql) or die ("Error Query [".$sql."]"); 
    while($result = mysql_fetch_array($sqlQ)){

        //$imgdata = base64_decode("'".$result["photo"]."'");	
        $imgdata = base64_decode("'".$result["photo"]."'"); // ตัวแปร $imgdata ประกาศ แล้วทำไมไม่เอามาใช้
        $src = 'data:image/png;base64,'.$result["photo"]; // เอา $imgdata มาใช้บันทัดนี้สิครับ $result['photo'] มันเป็น binary ไม่ใช่เหรอ
        $img = '<img src="' . $src . '">';

				$tbl.='		<tr style="background-color:#ffffcc;color:#000000;font-size:1em;">
                            <td>'.$result["id"].'</td>
							<td>'.$result["idnum"].'</td>
							<td>'.$result["nameT"].'</td>
                            <td>'.$result["surnameT"].'</td>
                            <td>'.$img.'</td>
                            </tr>';
                            $pdf->Image('@'.$imgdata);            
                            
                        }
                     
                        
$tbl.='</table>';


คงไม่ต้องแก้ให้นะครับ บอกที่ผิดแล้ว เอาตัวแปรไปใช้ให้ถูกที่ถูกทาง มันก็ควรจะได้แล้ว

$pdf->Image('@'.$imgdata); คำสั่งนี้ script มันไม่ได้ใช้ร่วมกับ html เลิกสนใจมันไปได้เลย
เมื่อไหร่ที่อยากเขียนด้วยคำสั่ง pdf ล้วนๆ ค่อยมาสนใจมัน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-06 16:39:53 By : Chaidhanan
 


 

No. 16



โพสกระทู้ ( 25 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 14 เขียนโดย : nobetaking เมื่อวันที่ 2019-02-06 16:06:18
รายละเอียดของการตอบ ::
ได้เป็นแบบนี้ค่ะ
Code (PHP)
    $sqlQ = mysql_query($sql) or die ("Error Query [".$sql."]"); 
    while($result = mysql_fetch_array($sqlQ)){

        //$imgdata = base64_decode("'".$result["photo"]."'");	
        $imgdata = base64_decode("'".$result["photo"]."'");	
        $src = 'data:image/png;base64,@'.$result["photo"];
        $img = '<img src="' . $src . '">';

				$tbl.='		<tr style="background-color:#ffffcc;color:#000000;font-size:1em;">
                            <td>'.$result["id"].'</td>
							<td>'.$result["idnum"].'</td>
							<td>'.$result["nameT"].'</td>
                            <td>'.$result["surnameT"].'</td>
                           
                            </tr>';
                                      
                            
                        }
$pdf->writeHTMLCell(0, 0, 0, 0, '<img src="'.$src.'"  />');           
$tbl.='</table>';

// output the HTML content
$pdf->writeHTML($tbl, true, false, true, false, '');


//Close and output PDF document
$pdf->Output('ThaiIDCloud.pdf', 'I');
	


tcpdf3

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-06 16:40:58 By : yanikanaja
 


 

No. 17



โพสกระทู้ ( 9,228 )
บทความ ( 2 )



สถานะออฟไลน์


แก้ให้ครั้งสุดท้ายนะครับ ถ้ายังเอาอย่างอื่นผสมก็ลองต่อเอาเองนะครับ

Code (PHP)
$sqlQ = mysql_query($sql) or die ("Error Query [".$sql."]"); 
while($result = mysql_fetch_array($sqlQ)){
		$tbl.='<tr style="background-color:#ffffcc;color:#000000;font-size:1em;">
			<td>'.$result["id"].'</td><td>'.$result["idnum"].'</td>
			<td>'.$result["nameT"].'</td><td>'.$result["surnameT"].'</td>
			<td><img src="data:image/png;base64,' . base64_decode($result['photo']) . '" ></td>
		</tr>';
}                       
$tbl.='</table>';


จุดที่ผิด 1 สีแดงใส่เข้าไปทำไม
$imgdata = base64_decode("'".$result["photo"]."'");

จุดที่ผิด 2 สีแดง ตัวแปรที่แปลงแล้วทำไมไม่นำมาใช้ แล้วมันจะได้อะไร
$src = 'data:image/png;base64,@'.$result["photo"];

จุดที่ผิด 3 สีแดง เป็นคำสั่ง ของ PDF ไม่เหมาะที่จะใส่ร่วมกับ tag html (ใส่ได้ แต่ โครงสร้างจะเพี้ยน หรือ เกิด error หรือจัด layout ยาก)
$pdf->writeHTMLCell(0, 0, 0, 0, '<img src="'.$src.'" />');
$tbl.='</table>';
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-06 17:14:06 By : Chaidhanan
 


 

No. 18



โพสกระทู้ ( 25 )
บทความ ( 0 )



สถานะออฟไลน์


ตอบความคิดเห็นที่ : 17 เขียนโดย : Chaidhanan เมื่อวันที่ 2019-02-06 17:14:06
รายละเอียดของการตอบ ::
จุดที่ 1 คือลองพยายามเขียนตาม ไฟล์ PHP ทีสามารถดึงรูปมาโชว์ได้ปกติอ่าค่ะ ตัวอย่างดังนี้
Code (PHP)
        <td>$data[tambon]</td>
        <td>$data[amphur]</td>
        <td>$data[province]</td>
        <td>$data[gendername]</td>
        <td>$data[birthdate]</td>
        <td>$data[issuedate]</td>
	<td>$data[issueplace]</td>
        <td>$data[expirydate]</td>".
        "<td>".'<img height="100" src="data:image/;base64,' . $data[photo] . '"/>'."</td>
        <td>$data[app]</td> ";
    }
    echo "</tr>";
}
echo '</table>';


หรือ อีกแบบที่ใช้
Code (PHP)
 <div class="container">
        <div class="row">
        <?php $i=1; while ($result = mysqli_fetch_assoc($query)) { ?>
         <div class="col-md-4">
            <div class="media d-md-inline-flex ">                    
                    <img class="mr-3 rounded-circle align-self-center mr-3" src="data:image/jpg;base64,<?php echo $result['photo'];?>" alt="Generic placeholder image" width="80" hight="80">
                    
                    <div class="media-body">
                        <p class="mb-0">
                         <h5> <?php echo $result['titleT']."   ".$result['nameT']?></h6>
                         <?php echo $result['surnameT']?><br />
                         <?php echo $result['idnum']?><br />
                         <?php echo $result['birthdate']?><br />
                         <?php echo $result['province']?><br />
                      </p>
                    </div> 
                    <form method="post" name="form3" id="form3" target="_blank" ;>
                    <input name="chk[]" type="checkbox"  value="<?php echo $result['id'];?>">
                    
                     </div>
                        </div> <?php $i++; } ?>                    
                 </div>
         </div>
    </div>
   </div>

อันนี้ก็โชว์ได้ปกติในหน้าเว็บ

แต่พอเอามาลงใน TCPDF ไม่สามารถแสดงรูปภาพได้เลย TT^TT


และจุดที่ สองที่มี @ น่าจะเกิดจากการ ก็อปไปก็อปมาแล้วลืมลบ

ส่วนจุดที่สาม นี่ลองเอามาใช้ดูค่ะเผื่อทำได้ แหะะ


ขอบคุณมากเลยนะคะที่ช่วยขนาดนี้
ตอนนี้ตึ้บมากเลยค่ะ TT/ \TT



ประวัติการแก้ไข
2019-02-06 17:58:20
2019-02-06 17:58:28
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-06 17:57:07 By : yanikanaja
 


 

No. 19



โพสกระทู้ ( 5,104 )
บทความ ( 4 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


ตอนนี้เหมือนใครแนะนำอะไรไป แต่ผู้ถามไปคนละทางกับผู้แนะนำ แถมตอบมาคนละเรื่อง
ผมว่าผู้ถามยังแยกไม่ออกว่า PHP HTML ทำงานออกมาแบบไหน
แล้วจะแปลงเป็น PDF เลยเอา code มาปนกันไปหมด แนะนำแบบนี้
ลองสร้างหน้าเพจ ที่ต้องการนี้ ให้ออก มาเป็นรูปแบบ HTML จัดเรียงข้อมูลตามต้องการ
ถ้าสามารถทำเป็น HTML แล้วมันได้ตามต้องการ
ค่อยกลับมาว่ากันใหม่เรื่องทำเป็น PDF ดีกว่าครับ
แต่ถ้ามั่นใจก็แยกให้ออกว่า จะใส่ค่าที่ได้จากการดึงข้อมูลด้วยภาษา PHP ลงไปใน้ HTML อย่างไร
แล้วจะแปลง HTML ทั้งหมดไปเป็น PDF ได้อย่างไร...

ผมก็เคยติดปัญหา สั่ง writeHTML ตามด้วย tbl มันไม่ตอบโจทย์
ผมเลยใช้ EOD ยัดทุกอย่างลงไป เวลาใช้งาน มันตอบโจทย์และง่ายกว่าครับ
แค่แนะนำทางเลือกใหม่


ตย.เขียนโดยใช้ CI
<?php
  $this->load->library('Tcpdfx');
// echo $get_teacher_name->id_teacher;

// $datafromdb = $this->sidebar_model->get_teacher_name($get_teacher_name->id_teacher);
// print_r($get_store);

class MYPDF extends TCPDF {

    public $datafromdb;//<-- to save your data

    function __construct( $datafromdb , $orientation, $unit, $format )
    {
        parent::__construct( $orientation, $unit, $format, true, 'UTF-8', false);
        // echo $datafromdb;
        // print_r($datafromdb);
        // echo "<hr>";
        $this->datafromdb = $datafromdb->teacherName;
        //...
    }

    public function Header() {
        // print_r($datafromdb);

        // $image_file = 'http://council.buu.ac.th/image/LogoBuuThai.jpg';
        $image_file = K_PATH_IMAGES.'buu.png';
        $this->Image($image_file, 'C', 5, 25, '', 'PNG', false, 'C', false, 300, 'C', false, false, 0, false, false, false);
        $this->SetFont('thsarabun', 'B', 18);
        $this->Ln(33);
        $this->Cell(0, 10, 'รายชื่อนิสิตที่ '.$this->datafromdb.' เป็นอาจารย์ที่ปรึกษาหลักควบคุมวิทยานิพันธ์', 0, false, 'C', 0, '', 0, false, 'M', 'M');
    }
}


$pdf = new MYPDF($get_teacher_name,PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true,
 'UTF-8', false);
$pdf->SetCreator(PDF_CREATOR);
$pdf->SetHeaderData(PDF_HEADER_LOGO, PDF_HEADER_LOGO_WIDTH, PDF_HEADER_TITLE, PDF_HEADER_STRING);
$pdf->setHeaderFont(Array(PDF_FONT_NAME_MAIN, '', PDF_FONT_SIZE_MAIN));
$pdf->setFooterFont(Array(PDF_FONT_NAME_DATA, '', PDF_FONT_SIZE_DATA));
$pdf->SetDefaultMonospacedFont(PDF_FONT_MONOSPACED);
// $pdf->SetMargins(PDF_MARGIN_LEFT, PDF_MARGIN_TOP, PDF_MARGIN_RIGHT);
$pdf->SetMargins(15, 45, 10, true);
$pdf->SetHeaderMargin(PDF_MARGIN_HEADER);
$pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
$pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
$pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);
$pdf->SetFont('thsarabun', '', 14, '', true);
$pdf->AddPage('L', 'A4');

$tbl = <<<EOD
<style>
td{
        border:1px solid #CCC;
}
</style>
                    <table cellspacing="0" cellpadding="1" border="0" style="width:950px;">
                        <thead>
                          <tr>
                            <td align="center" bgcolor="#F2F2F2" width="30">#</td>
                            <td align="center" bgcolor="#F2F2F2" width="180">ชื่อ-นามสกุล</td>
                            <td align="center" bgcolor="#F2F2F2" width="370">ภาษาไทย</td>
                            <td align="center" bgcolor="#F2F2F2" width="370">ภาษาอังกฤษ</td>
                          </tr>
                        </thead>
                        <tbody>
EOD;

foreach ($get_store as $key => $value) {
  $num = $key+1;
  $name = $value->arrTitle[0]->titleName.$value->arrNisitName[0]->nisitName;
  if (empty($value->arrThesisName)) {
    $thai = '-';
    $eng = '-';
  }else{
    $thai = $value->arrThesisName[0]->thesisNameThai;
    $eng = $value->arrThesisName[0]->thesisNameEng;
  }

$tbl .= <<<EOD
<tr>
    <td align="center" width="30">$num</td>
    <td align="left" width="180">&nbsp;$name</td>
    <td align="left" width="370">&nbsp;$thai</td>
    <td align="left" width="370">&nbsp;$eng</td>
</tr>
EOD;

if($num==6){
$tbl .= <<<EOD
</tbody></table>
EOD;

$pdf->writeHTML($tbl, true, false, false, false, '');
$pdf->lastPage();
$pdf->AddPage('L', 'A4');

$tbl = <<<EOD
<style>
td{
        border:1px solid #CCC;
}
</style>
EOD;

$tbl .= <<<EOD
                    <table cellspacing="0" cellpadding="1" border="1" style="width:950px;">
                        <thead>
                          <tr>
                            <td align="center" bgcolor="#F2F2F2" width="30">#</td>
                            <td align="center" bgcolor="#F2F2F2" width="180">ชื่อ-นามสกุล</td>
                            <td align="center" bgcolor="#F2F2F2" width="370">ภาษาไทย</td>
                            <td align="center" bgcolor="#F2F2F2" width="370">ภาษาอังกฤษ</td>
                          </tr>
                        </thead>
                        <tbody>
EOD;

}

// 

}

$tbl .= <<<EOD
</tbody></table>
EOD;


$pdf->writeHTML($tbl, true, false, false, false, '');

  $pdf->Output('example_001.pdf', 'I');
?>


สุดท้าย
1.ลองทำเพจดึงค่า แสดงรูปแบบ html ปกติ ให้มันโ๙ว์รูปตามที่ต้องการให้ได้ก่อน
2.ค่อย ๆ มอง code ว่าจะจับ html จาก ข้อ 1 มายัด แปลง ประยุกต์ อย่างไรให้เข้ากับปลั๊กอิน PDF ที่ใช้
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-07 08:44:41 By : apisitp
 


 

No. 20



โพสกระทู้ ( 419 )
บทความ ( 0 )



สถานะออฟไลน์
Facebook

ถือว่าเป็นโพสที่พวกพี่ ๆและอาจารย์ให้ความสนใจและความช่วยเหลืออย่างมาก

อันนี้ผมลองทำครับ เผื่อเอาไปปรับเล่นดูอีกที

Code (PHP)
<?php
require_once('tcpdf.php');

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8');
$pdf->setPrintHeader(false);
// เพิ่มฟ้อนต์ภาษาไทยเข้ามา ตัวธรรมดา กำหนด ชื่อ เป็น angsana
$pdf->AddFont('thsarabun','','thsarabun.php');

// กำหนดฟ้อนต์ที่จะใช้  อังสนา ตัวธรรมดา ขนาด 16
$pdf->SetFont('thsarabun','',16);
// เพิ่มหน้าเอกสาร
$pdf->AddPage();
$img = '<img src="img/kud.png" width="50">';
$data_array = array("พงศักษ", "สุนทร", "ประชะรียา", "ปะรมชัย"); 

$html = '<table width="400" border="1">';
foreach($data_array as $key ) {
    $html .= '<tr>
        <td>' . $img.$key . '</td>
    </tr>';
}

$html .= '</table>';
//ระยะห่างด้านหลัง,ระยะห่างด้านล่าง,ระยะห่างด้านซ้าย,ระยะห่างด้านบน
$pdf->writeHTMLCell(0, 0, 0, 0,$html);

$pdf->Output('test.pdf', 'I');
?>


ผลลัพธ์

รูปภาพผลลัพธ์

ปล.ผมแค่อยากทำให้มัน loop ภาพออกมาเฉย ๆนะครับ ตรงอื่นๆ ต้องปรับให้เหมาะสมอีกที


ประวัติการแก้ไข
2019-02-07 10:55:12
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-07 10:51:27 By : nobetaking
 


 

No. 21



โพสกระทู้ ( 5,104 )
บทความ ( 4 )

สมาชิกที่ใส่เสื้อไทยครีเอท Hall of Fame 2012

สถานะออฟไลน์


ตอบความคิดเห็นที่ : 20 เขียนโดย : nobetaking เมื่อวันที่ 2019-02-07 10:51:27
รายละเอียดของการตอบ ::
ต้องประมาณนี้ล่ะครับ รูปจะเป็นแบบไหน ชนิดไหน จะแปลงก่อน หรือ ไม่แปลงก่อน ไม่ต้องสนใจ
เอาแค่ว่านำรูปรูปไปใส่ใน HTML ให้ถูก ให้มันแสดงตามหลัก HTML ให้ได้
แล้วค่อยจัดการทั้งหมด ให้มันสร้างเป็น PDF ทีเดียว

แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-07 12:01:32 By : apisitp
 


 

No. 22



โพสกระทู้ ( 4,538 )
บทความ ( 8 )



สถานะออฟไลน์


อย่างแรกเลยนะ html คุณไม่ถูก.
ตรงหัวตารางจะมี ID, NID, Name, Surname แต่ไม่มีคอลัมน์ของภาพ.
แต่ตรงภายใน loop ดันมีคอลัมน์ของภาพ.
แล้วตรงหัว ถ้าคอลัมน์ครบ ควรจะเป็น colspan="5" ไม่ใช่ยัดไปตั้ง 9.
แก้ตรงนี้ก่อนเลย.

แล้วนี่คือตัวอย่างที่ทดลองทำแล้วแสดงภาพนะครับ

Code (PHP)
<?php

// my data ---------------------------------------------------------
// ข้อมูลสมมุติ
$names = [
 0 => [
    'id' => '1',
    'idnum' => '12345',
    'nameT' => 'สมชาย',
    'surnameT' => 'พวงหาย',
 ],
 1 => [
    'id' => '2',
    'idnum' => '12346',
    'nameT' => 'สมหวัง',
    'surnameT' => 'ดังแน่มึง',
 ],
 2 => [
    'id' => '3',
    'idnum' => '12347',
    'nameT' => 'สมศรี',
    'surnameT' => 'มีหู',
 ],
 3 => [
    'id' => '4',
    'idnum' => '12348',
    'nameT' => 'สมน้ำหน้า',
    'surnameT' => 'ปากพาจน',
 ],
];
// ภาพสมมุติ
$images = [
    'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAXf0lEQVR4nO3dabS1d12Y4TvzBCQkgEEgUhRRscwuFZSIOASQWJW1ZDUKFWRQqhYpKJNVbIHKEMRWKwJWbYWgQKDIFAJBExIBGYORICAg1lAkBDKQ6bUfNpKQnPPuMzz7/M8++7rWuj/xBfg/+/fb7z57P08BAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAsJscXB1VHVkdWh0w9r8OALBRh1S3re5VPah6ZPXU6oXVadUZ1TnV+6oLq09XF1dXVf+8Rld++T//VHV+dXZ1evV71TOqx1QPqL6p2ZsGAGBBDm22cE+unlD9bvXW6u+rfa29yHeia6uPVq+rnlX9ePX1C/r/AAD2tCOq76x+vvqj6oLqmsYt+a30/5p9avD46i750wIA3Mitq4dVL6reW13d+AU+dZ/+8v++BzT7kwUArJwjqpOq5zf7G/vo5bzTfbb6782+swAAe9qx1aOqN1dfavwS3i29q/rJfCoAwB5yk+qUZl+QW+8b95r1iepn8qsCAJbYidXLq8sbv1iXrY9WP7b5/8sBYIwjqp+u3t/4JboXemP1dZs6AQDYQbet/mv1T41fmnutL1YP3/hRAMDi3ar6zXyhbyd6aXXYxo4FABbjmOq/VJc2fjGuUudUx23gfABgUodUT2p2j/zRy3BVO7/6mnkHBQBT+e7qQ41fgKoPNPsUBgAW5tjqJY192I5u3JnNHmMMAJP78eozjV92Wrvnrn90ALB5RzR77v3oBaf9t6/63nXOEAA25ZurDzZ+uWljfaQ6fM2TBIANenh+2reMXV69s9mnNj9X3bc6OgCY44DqOY1fZJq2v65OrX4wnxIAcAOHVS9r/LLSYru8ekOzTwhuEQAr7ZjqrMYvJ+1sV1avaPbJwIEBsFKOb3ZXudHLSGP7u+pp+c4AwEq4RZa/vrrPVU+pbhIAe9Ix1Xsav3C0O/tM9YR8aRBgT7lJdW7jl4x2fx+u7hMAS++QZvePH71YtDxdW72wOioAltZvN36haDn7WD4NAFhKj278EtFyd2X1yABYGt9VXdX4BaK90W9WBwXArnbr6qLGLw3trd5c3TQAdq3XN35ZaG/2F/lyIMCu5O/+WnRnVUcGwK5xh+qLjV8Q2vudWR0RAMMd2Ozj2dGLQavTaQEw3E83fiFo9XpSAAxzs3zrX2O6tvqBABjiuY1fBFrdPlfdPgB21Dfmhj8a3xkBsKNOb/zwl/652fdQANgBd2v80Jf+pc9XtwmAhXtF44e+dP1eHQALdadm38AePfClG/bdAbAwv9/4QS+t1TkBsBC3qa5u/KCX1uvkAJjcrzR+wEv76/zqgACYzIHVJxo/4KV5PSgAJvPAxg92aSO9KQAm48Y/Wqa+OQC27Vb58p+Wq98JgG17dOMHurSZvlAdEQDb8qbGD3Rpsz0kALbsmDz1T8vZnwbAlv1k4we5tJWuqG4WAFvyqsYPcmmr/UQAbNpB1SWNH+LSVvvfAbBp39b4AS5tp4tya2CATXtS4we4tN3uFgCb8obGD29puz0pADbs4OqLjR/e0nZ7QwBs2D0bP7ilKfpsAGzYoxo/uKWpukMAbMjvNH5oS1P10ADYkPMaP7SlqXpeAMx1UHV544e2NFVnBsBcd278wJam7FMBMNdDGj+wpSnbVx0VAPv1S40f2NLU3T0A9utFjR/W0tT9eADs11sbP6ylqXtyAOzXJxo/rKWp+60AWNeh1bWNH9bS1L0yANZ1QuMHtbSIzg2Add2r8YNaWkSfDIB1Pajxg1paRFcEwLp+qvGDWlpUhwTAmn658UNaWlTHBcCantf4IS0tqjsEwJp+r/FDWlpUdwuANf1x44e0tKjuHQBrOr3xQ1paVCcGwJrOaPyQlhbV/QNgTe9o/JCWFtVJAbCm9zZ+SEuL6ocCYE3nN35IS4vq5ABYkzcA2ss9IADW5A2A9nLfFwBr+mDjh7S0qO4bAGvyBkB7ue8MgDV5A6C93D0DYE1+Bqi93DcGwJrcCEh7ueMDYE1vafyQlhbVUQGwptc2fkhLi+iaAFjXyxs/qKVFdHEArOuljR/U0iK6MADW9VuNH9TSIjonANb1jMYPamkRvToA1vULjR/U0iJ6UQCs65TGD2ppEf16AKzrpMYPamkRPTYA1vVtjR/U0iL6oQBY179q/KCWFtFdA2BdRzV+UEuL6LgA2K/PN35YS1N2WQDMdX7jB7Y0ZR8MgLne2PiBLU3Z6QEw14sbP7ClKXteAMz1q40f2NKU/WwAzPXIxg9sacp+IADmun/jB7Y0ZbcLgLm+rvEDW5qqLwbAhhxYfanxg1uaoncFwIb9deMHtzRFfxAAG/baxg9uaYqeFAAb9vzGD25pin4wADbsZxo/uKUpOj4ANux7Gj+4pe32jwGwKbdo/PCWttubAmDTLmr8AJe20zMDYNPObPwAl7bTjwbApr2w8QNc2k5uAQywBY9u/ACXtpovAAJs0b0bP8SlrfbaANiSo6prGz/Ipa305ADYsgsaP8ilrXRiAGzZ/2r8IJc229XVEQGwZY9v/DCXNts7A2BbTmz8MJc22/MCYFtuVu1r/ECXNtPJAbBtH278QJc22rXVzQNg2/6w8UNd2mjvC4BJPLbxQ13aaM8PgEnctfFDXdpoDwyASRxYfaHxg12a11XN7mAJwETe0vjhLs3r7QEwqV9v/HCX5vXLATCpkxo/3KV53S0AJnWz6prGD3hpvf4hABbi3Y0f8tJ6/V4ALMRzGz/kpfVy+1+ABXlw44e8tFaXV0cGwEIc3ew+66OHvXTDXhMAC/Wexg976YY9PAAW6gWNH/bS9bu2OjYAFuaU3BJYu7PX5U0AwEI8vfFDXtpff1PdNgAm8x8bP9yljfTh6rgA2LYHVPsaP9iljXZmsydYArBFx1UXNX6gS5vtiQGwZS9u/CCXttJl1QkBsGnflIf/aLn7/QDYtJc2foBL2+nq/CoAYFOOqa5o/ACXttuvBsCGPbLxg1uaogsDYMNOb/zglqbqTgEw1wHV5xs/tKWpekwAzHXHxg9sacpeEgBzndz4gS1N2TsCYK6fb/zAlqbs7wNgrmc0fmBLU3ZlAMx1auMHtjR1hwbAfr2g8cNamrrDA2C/ntP4YS1NnccDA8zx1MYPa2nKLg2AuR7V+IEtTdnHAmCukxo/sKUpOysA5vr6xg9sacpeGgBzHVRd1fihLU3VUwJgQy5s/NCWpupHA2BDXt34oS1NlccBA2zQ0xs/tKUpuiz3AADYsAc1fnBLU3ROAGzY8Y0f3NIUnRoAm/KRxg9vabs9JAA25UWNH97SdtpX3SoANuWhjR/g0nZ6XwBs2nHVNY0f4tJWe1YAbMmZjR/i0lb7jgDYksc1fohLW+mT1QEBsCW3rK5s/DCXNpuP/wG26bTGD3NpM+2r7hgA23K/xg90aTO9MQAm8c7GD3Vpo90/ACbx4MYPdWkjufc/wMT+ovHDXZrXdwXApO5WXdv4AS+t1x8HwEI8u/FDXlqrz+S+/wALc0j1rsYPe+n67at+KAAW6rbV3zd+6Ev/0lMCYEfcpdlHrqMHv3RqAOyob64+3vgFoNVsX/WrATDEsdXpjV8GWq0+U50cAMOdXL2/8YtBe7vLmn3kf2wA7Cr3qZ5bvaO6pPELQ8vdvurD1Z9Uj6qOCYBd7+cbv0C03H0iAJbODzd+gWi5e3sALJ07N36BaLl7cQAsnUOraxq/RLS8PTEAltIFjV8iWt4eGABL6eWNXyJa3m4bAEvpiY1fIlrOLgqApXXfxi8SLWd/FgBL68jqqsYvEy1fTw+ApXZe45eJlq/7BcBSe1bjl4mWqy9VRwTAUvu+xi8ULVdnBcDSO6zZU9xGLxUtT08LgD3hdY1fKlqe7hUAe8KjG79UtBz9Y3VAAOwJxzd7tvvo5aLdnwcAAewxZzd+uWj39+AA2FN+ofHLRbu7S5p9aRSAPeRrq2sbv2S0e/ujANiT3tL4JaPdm8f/AuxRD2v8ktHu7DPVwQGwJx1ZfaHxy0a7rxcEwJ72Pxq/bLT7umsA7Gl3b/yy0e7q3QGwEjwiWNfv0QGwEk5p/NLR7uiS6qgAWAmHVP/Q+OWj8Z0aACvlKY1fPhrbtdXXB8BKuXn1xcYvIY3r1QGwkp7T+CWkcd07AFbS8dUVjV9E2vn+PABW2gsav4y0850UACvt+Oqyxi8k7VznBQDVsxu/lLRz/UAAUB1Tfa7xi0mL76wA4Hoe3/jlpMX37QHA9RxSXdj4BaXFdVoAsIYHNn5JaTFdUd0+AFjH6Y1fVpq+XwsA9uN2uUXwXuuj1eEBwByPa/zS0nR9fwCwAQdUb2384tL2e2kAsAknVBc3foFp632iOvqGBwsA8zyk8UtMW+ua6r43PlIA2BgPC1rOnrrWYQLARh1cvaXxC00b75XNvscBANtydPWBxi82ze+d1ZFrHyMAbN7x1QWNX3Bavw9Wt1jvAAFgq25Zndv4Racb947quPWPDgC257DqN6qrG7/0NPu2/3OqQ/d3aAAwlfc1fvlp9rE/AOwYbwB2Rx+Yd1AAMKX3Nn75qd4/76AAYEreAOyO3jvvoABgSn/V+OWnes+8gwKAKb2r8ctP9e55BwUAU/rLxi8/ze78BwA75rzGLz/NzgEAdsw5jV9+mt0BEAB2zJ83fvmp/mLeQQHAlM5q/PLT7I0YAOyYtzV++Wn2RgwAdsyZjV9+mp0DAOyYMxq//DQ7BwDYMW9u/PJTvWneQQHAlN7Y+OWnesO8gwKAKb2h8ctP3gAAsMO8AdgdeQMAwI56feOXn7wBAGCH+QRgd+QNAAA7ypcAd0dvnHdQADAlPwPcHb153kEBwJTcCXB35EZAAOyosxq//FRvnXNOADCpsxu//ORpgADssL9s/PJTnTvvoABgSu9p/PJT/dW8gwKAKX2o8ctP9cF5BwUAU/po45ef6sJ5BwUAU/qHxi8/1SfnHRQATOnixi8/1WfnHRQATOnKxi8/1RXzDgoApnJI4xefruug/R8XAEzj2MYvPV3X0fs/LgCYxu0bv/R0Xbfb72kBwETu0vilp+v61v0fFwBM48TGLz1d13ft/7gAYBo/3Pilp+t68P6PCwCm8YjGLz1d18P3f1wAMI0nNn7p6bp+cf/HBQDTeHbjl56u65n7Py4AmMZLGr/0dF0v3v9xAcA0Xtf4pafreu3+jwsAtu/w6qLGLz1d10XVYfs7NADYrkc3fuHpxj1qf4cGANtxYPXhxi873bgLqgPWPzoA2Lp/0/hFp/U7ef2jA4CtObB6Z+OXnNbvvHwKAMDEHtf4Baf5PWa9AwSAzbpNdUnjl5vm9/nq1msfIwBszqsbv9i08V6x9jECwMY9tPELTZvvIWsdJgBsxD2qyxq/zLT5Lq3ucuMjBYD9O776VOMXmbbe31W3DAA26LDq3MYvMG2/t1eHBABzHFq9qvGLS9N1WnVwALCOw/Kkv73aK/NJAABrOKJ6U+MXlRbX/8lTAwG4nqOrtzV+QWnxvam6aQCsvG+pLmz8YtLO9aHqjgGwsn6k+kLjF5J2vourBwTASjmweka1r/GLSOO6tnpyniAIsBK+oTqn8ctHu6czqxMCYE86oNkjfd3aV2t1SfVTAbCnnFCd0fglo93fa5rdBhqAJXZY9bT8q1+b65Lq8bl7IMBSenD1t41fJlrezq/uFwBL4U65na+m7eXV7QNgVzqheml1TeMXhvZeV1YvrG4VALvCLasXVF9q/JLQ3u/S6j83u300AAPcqnpm9cXGLwWtXv9UPTVvBAB2zAnVb1WXN34JSJdUz8qfBgAW5k7V71dXNX7oSzfs8mbfEbhdAEzi+5p9q999+7UMXV29rPq2ANi0w6pHVB9o/ECXttrZ1Y81e/gUAPtxm2ZP6buo8cNbmqqPVU+obh4AX+V7q1c2+/h09LCWFtXl1UuqewSwwo6ufq66oPGDWdrpzq1+otmfuwBWwrc3u2OfB/RI9dnqec1+5QKw59ys+tnqfY0fuNJu7W3VQ6tDA1hy39nsb56XNn64SsvSZ6rn5lMBYMkcW/1C9cHGD1Jp2Xt7s+8KHB7ALnRAs+em/3EeyiMtos81u9Pgvw5gF/ia6peqjzR+QEqr0rnNbpR1ZAA76MDqB5v9bt99+aVxXVL9dnX3ABbo+Oop1ccbP/gkfXXvrB6ZTwWAiRzQ7GE8f5p/7UvL0OebPS77zgFswbHVE/O3fWmZO7v6t7mvALAB92h2l77LGz+8JE3TP1a/3uxhWwBfcWh1SrNvFo8eVJIW19XVn1QnBqy0W1X/qdm/DkYPJkk72/urn8qfB2ClfGuz2/O6YY+k/1s9vbpFwJ50QPWA6ozGDxxJu6/LqxdV3xSwJxzU7FvAH2j8gJG0+9tXvaq6V8BSOqx6TPW3jR8okpazN1ffE7AUjqqeUH268cND0t7onOpBAbvSYdV/qC5q/LCQtDc7r9mdQYFd4JDqsdWnGj8cJK1Gb6vuHTDEgdW/qz7W+GEgaTV7fbO7hwI75P7NbuIx+sUvSfuqP6y+NmBhvrF6beNf8JJ0wy6tfqU6ImAyN69OzeN4Je3+Ptns3iPANj2i+mzjX9SStJnOru4csGl3rN7a+BexJG21K6tnNPuZMjDHIdXTqisa/+KVpCm6oPrugHV9R3V+41+skjR1+5o9bOjogK84uNnHZNc0/kUqSYvs49V9ArpDdW7jX5SStFNdU/1as6eVwkp6WPWFxr8YJWlE51S3D1bITauXNf7FJ0mju6R6aLACvqH6UONfdJK0m/qNZs84gT3p+6vPNf6FJkm7sdfnVwLsQb+Yb/lL0rz+prpTsAccVv1B419UkrQsfb46KVhiR1VvafyLSZKWraurU4IldPP8vl+SttO+6rHBEvma6v2Nf/FI0l7ol4IlcEJ1YeNfMJK0l3pmsIt9XfXJxr9QJGkv9vxgF7pl9eHGv0AkaS/35GAXuUn1rsa/MCRpFXpEsAscWp3R+BeEJK1K11QPDgY6sDqt8S8GSVq1Lq/uEwzyG41/EUjSqva56g7BDvuRxl/8krTq/VWzW67DjviGZveqHn3hS5Lqd4MdcHj1vsZf8JKk6/rJYMFe0vgLXZL01V1W3TlYkIc1/iKXJK3dBdURwcSOry5u/AUuSVq/ZwcT83t/Sdr9XV3dJZjIgxp/UUuSNtZ5zW7UBttyVPWJxl/QkqSN97hgm05t/IUsSdpcl1RfG2zRtzZ76MToC1mStPleFmzRqxp/AUuStta+Zv+Qg025W7OLZ/QFLEnaen8abNJrGn/hSpK2177qrsEG3bPxF60kaZpeHWzQnzX+gpUkTdfdgznu1fgLVZI0bT4FYC5P+5Okvdc11W2Cddy0urTxF6okafqeFqzjMY2/QCVJi+nj1QHBGt7d+AtUkrS4vj+4gbs3/sKUJC2204Ib+O3GX5iSpMV2ZXWL4MsOri5u/IUpSVp8HhXMV5zY+AtSkrQzvT74smc3/oKUJO1Ml1eHB9UHGn9BSpJ2rpNi5d228ReiJGlne2GsvEc1/kKUJO1sH4mV96rGX4iSpJ3vjrGyDqq+0PiLUJK08/37WFnf0vgLUJI0pv8ZK+uUxl+AkqQxvT9W1nMbfwFKksZ0VXVorKQzG38BSpLGdY9YSf/U+ItPkjSuR8bKOaHxF54kaWz/LVbODzf+wpMkje3sWDlPbfyFJ0ka2yWxcn6n8ReeJGl8N42V8prGX3SSpPHdKVbKuxp/0UmSxne/WCmfbvxFJ0ka3ymxMg6srmn8RSdJGt8TY2XcuvEXnCRpd3RqrIx7Nv6CkyTtjl4RK+Pe1bslSapeFAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAe9H/B/9m8LHj8WpnAAAAAElFTkSuQmCC',
    'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAgAElEQVR4nO3debRlZWGm8efWQAEKFNNisIViCo0CAiqGIQ4MMohGgZYoQoyRBmTIUjF0lFZDQnBg1khsaBe2A4gIiAIOCYKoiBoRBTQCMs8oUFQBFkXRf5wjQ9WtW/eec/Z+9/7281vrWa7lcqi79zdx637ngiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkiRJkgTLAesALwFeDmwHvBZ4PbBn/19f2//3X97/z63T/+9JkqQGmgZsDOwOHAp8HDgXuBq4BZg7Njb29KABc/v/O1f3/3c/3v//2b3//zut9q9YkqSOmQVsDxwBnAn8BJg/zAY/bMD8/p/jjP6fa/v+n1OSJA1oZeCN9P6p+wfAE8nNfgqHgif6f96PAXv1vw5JkjSBLYGjgSuAJ9Ob+YgOBAuAy4G/B7bIPVpJkpplW+Ak4Pb0Zl3TgeA24MT+1y1JUqe8BDge+F16Qw4fBm7uP4fNom9DkqQKrQAcCPwgvfE2MXo/N3Bg/zlJktR6GwCnAH9Ib7JtCHio/7w2iL41SZIG9Ep6d+cXpjfVNgYs7D+/V0bfoiRJk7QzcHl6Ay0percIXpd9rZIkjW974LL0ZllywGX0PrJYkqS4LYBL0ptjlwIuxs8UkCSFrA6cjn/HnzoELAT+FVgtOgokSZ0xAzgSf6q/EQG/p/d7CKZHR4UkqWjbANekNz0b9yDwc2Dr8PiQJBVmeXq/lKeIz+cvNeBJep8suHx0tEiSirA98Nv05mZTOgj8F94WkCQNaDrwEfwhv1ZG77sBH8afDZAkTcEc/Mz+IgKuBNbPDidJUhu8GXg4vXHZSA8BDwNvCo8rSVJDTQP+GViU3rCskkPAIuDY/nuWJAmAVYFL05uU1XIQuBiYHR5vkqQG2AS4Mb0xWa2HgN8CG4fHnSQpaAfgwfSGZJFDwAN4VVCSOmlf4PH0RmTRQ8DjwD7hcShJqtHh+MN+Njb2NPAUcFh4PEqSavCB9KZjzQs4Kj0wJUnV+Uh6o7HmRu+TAyVJhTkuvcFY8wOOSw9USdLofCi9sVh7Aj6UHrCSpOEdmd5QrH0BR6QHriRpcH+DP+1vA0Tvo4PfmR2+kqRB7Im/yteGCFgI7BEex5KkKdgKeDS9gVj7A+YCW4bHsyRpEl4E3JneOKycgDuAdcPjWpI0gRWBa9IbhpUX8J/ACuHxLUlaii+mNworN+Dz6QEuSVrS4ekNwsoPOCQ90CVJz9oOWJDeHKz8gD8C24bHuyQJWA24I70xWHcCbgdmh8e9JHXeV9MbgnUv4Oz0wJekLntneiOw7ga8Iz0BJKmLNgTmpjcB627AI8Cc7DSQpG4ZA65IbwBmwGXpySBJXXJQeuE3+1PAu9ITQpK6YG3gofSib/angD8Aa4XnhSQVz5/6t8YFnJOeGJJUstenF3qzpQXskp4gklSi6cD16UXebGkBv+yPU0nSCB2WXuDNlhX+rgBJGqnZwIPpxd1sWQH3A6uE54skFeMT6YXdbLIBx6cnjCSVYC1gfnpRN5tswDxgzfC8kaTWOzm9oJtNNeCE9MSRpDZbF3g8vZibTTXgMXofWiVJGsCp6YXcbNCAk9ITSJLaaFVgXnoRNxs0YC7eCJCkKfuH9AJuNmzAB9ITSZLaZCZwV3rxNhs24I7+eJYkTcIB6YXbbFQB+6cnlCS1xVXpRdtsVAE/TE8oSWqDzdMLttmoAzZLTyxJarpT0ou12agDTkxPLElqslnA79OLtdmoo/dLgvxhQElaiv+RXqjNqgp4S3qCSVJTnZdepM2qCjg7PcEkqYleADyWXqTNqgp4FFghPM8kqXH+Kr1Am1UdsE96oklS03wtvTibVR3wlfREk6QmmYW/+Mc6EPAI3gaQpGfskl6YzeoKeE16wklSU5yQXpTN6go4Pj3hJKkprksvymZ1BVyTnnCS1AQvSi/IZnUGLALWSk88SUrbL70gm9UdsHd64klS2qnpxdis7vCXA0kSP0svxmZ1B/w4PfEkKWlF4Mn0YmxWd8ACYPnw/JOkmL9IL8RmqYDt0xNQklIOTy/CZqmAQ9ITUJJSPptehM1SAZ9JT0BJSrkqvQibpQKuTE9ASUoYAx5NL8JmqYCH05NQkhJenF6AzdIB66QnoiTV7dXpxdcsHd4EkNRBB6YXX7N0wNvTE1GS6vbh9OJrlg74YHoiSlLdPpdefM3SAWekJ6Ik1e1b6cXXLB1wcXoiSlLdfppefM3SAVenJ6Ik1e2W9OJrlg64KT0RJaluc9OLr1k6/DAgSR0zM73wmjUlYEZ6QkpSXVZLL7pmTQlYNT0hJaku66QXXbOmBKydnpCSVJc56UXXrCkB66UnpCTV5c/Si65ZUwI2SU9ISarL5ulF16wpAS9NT0hJqsuW6UXXrCkBW6QnpCTV5SXpRdesKQH/PT0hJakum6QXXbOmBGyUnpCSVJcN0ouuWVPCWwCSOuS/pRdds6aEnwMgqUPWSC+6Zk0JPwlQUofMSi+6Zk0JmJ6ekJJUpz+mF16zdMC89ESUpLrdn158zdIBd6UnoiTV7ab04muWDrghPRElqW4/Sy++ZumAq9ITUZLqdml68TVLB1yYnoiSVLez0ouvWTrg39ITUZLq9rH04muWDvhoeiJKUt3em158zdIBh6QnoiTV7e3pxdcsHfDm9ESUpLq9Or34mqUDXp6eiJJUt/XSi69ZOmC19ESUpLpNAxakF2CzVMAj6UkoSSk3pxdhs1TAL9ITUJJS/iO9CJulAi5IT0BJSjkjvQibpQJOTE9ASUo5Kr0Im6UCDkpPQElKeUN6ETZLBeyQnoCSlLJhehE2SwWsmp6AkpQyDXg8vRCb1R1wT3rySVLatenF2KzugP9ITzxJSvtSejE2qzvg5PTEk6Q0bwJY5wIOSE88SUrbKb0Ym9Ud8JL0xJOktFXTi7FZnQHz6f0ArCR13q3pRdmsroAfpiecJDXF+elF2ayugNPSE06SmuLo9KJsVlfA29ITTpKa4i/Si7JZXQHrpSecJDXF8sCC9MJsVnXAHenJJklN85P04mxWdcA56YkmSU1zSnpxNqs64Ij0RJOkptk3vTibVR2wVXqiSVLTrAEsSi/QZlUFPACMheeZJDXSL9KLtFlVAeemJ5gkNdVJ6UXarKqA/5meYJLUVG9IL9JmVQVslJ5gktRUKwFPphdqs1EH3JKeXJLUdN9PL9Zmow44PT2xJKnp/L0AVlzAnumJJUlNt3l6sTYbZcB8eh93LUlahtvSi7bZqAK+np5QktQWp6cXbbNRBbw7PaEkqS28DmhFBCwC1klPKElqi1nA3PTibTZswJXpySRJbfPl9OJtNmzAkemJJElts3d68TYbJnrf/l83PZEkqW1WAOalF3GzQcNv/0vSwM5NL+JmgwYckZ5AktRW+6QXcbNBAhYCa6cnkCS11SzgofRibjbVgEvSk0eS2u6z6cXcbKoB+6UnjiS13Q7pxdxsKgEP4Wf/S9JI3Jxe1M0mG/DZ9ISRpFJ8NL2om002YPv0hJGkUqwPPJVe2M2WFXB9erJIUmkuSS/uZssK7/5L0si9Kb24m00UMA9YJT1RJKk004E70ou82dICzkhPEkkq1UfSi7zZ0gK2SU8QSSrVi4An0wu92eIBP05PDkkq3ZfTi73Z4gFvTU8MSSrdy9OLvdlzA26h9zMqkqSKfT+96Jv9KeDv0hNCkrrizelF32xsbOxp4A/AC9MTQpK6YhpwY3rxNwOOT08GSeqag9KLv3U74DFgrfREkKSuWQ64Pb0JWHcDTkpPAknqqsPSm4B1M+BxYO30BJCkrloeuDu9GVj3Ak5ND35J6rr3pjcD61bAE8C66YEvSV23In4XwGoM/+lfkhrjkPSmYN0IeARYIz3gJUk9M4DfpjcHKz/gmPRglyQ931vTm4OVHXAPvb9ykiQ1yBjws/QmYeUGHJwe5JKk8e2c3iSszIBf0/urJklSQ52f3iysvIBd0wNbkjSxOcBj6Q3Dygk4PzymJUmT9I/pTcPKiN4v/JkTHs+SpElaAbg1vXlY+wM+kh7MkqSp2Tu9eVi7A35H7/dNSJJa5sL0JmLtDdg5PYAlSYNZF3g4vZFY+wLOTA9eSdJwDk5vJtaugLuAVdIDV5I0nDHgivSmYu0J+Mv0oJUkjcYmwPz0xmLNDzg7PVglSaPlrwy2CQNuB2anB6okafQuSm8y1syAp4DXpAeoJKkaawL3pjcba17Av6QHpySpWnukNxtrVsBPgJnpgSlJqt7J6U3HmhHwMLBxekBKkuoxE7gyvflYfPNfBLwpPBYlSTVbB7gnvQlZ9ABwXHoQSpIyXg08md6ILLL5fweYFh5/kqSg96U3I6t9878VWD087iRJDXBmelOy2jb/R4DN0wNOktQMM4Dvpjcnq3zzfxLYNTzWJEkNswpwfXqTskoPAO9ODzJJUjPNwU8KLDLgY+GxJUlquG2Ah9Mblo108/88vV8LLUnShHYA5qU3LhvJ5n8uMD08niRJLbIz8ER6A7OhNv9v4Gf8S5IGsBewIL2R2UCb/78Ds8LjR5LUYm8B/pje0GzKm/8LwuNGklSA1wPz0xubTWrzvxD/yV+SNELbAw+lNzibcPP/Ar0PdZIkaaReBtyX3uhs3M3/03jVT5JUoY2AX6c3PHtm418EfDA8JiRJHbEK8O305tf1gHn0fkhTkqTaTAdOS2+CXQ24A9g6PAYkSR12MF4TrHvz/zGwTvi9S5LENsCN6Y2x9Oj9ff8n8dP9JEkNshLwxfQmWWrAA8Ce4XcsSdJSvRN/kdCoN//vAetmX6skScu2IfCd9MbZ9oBHgSOAadnXKUnS1BwIPJjeSNsY8E3gxeH3J0nSwNbEnw2YysZ/H/C28DuTJGlkdgB+lN5gmxrwOHA8vQ9ZkiSpOHsD/5XecJsS8BRwFn67X5LUATOAQ4Bb0xtwcONfBFxE7xcsSZLUKTPo/X33z9Mbco0b/x+BzwGbRZ+8JEkNsRNwCbAovUlXtPE/BHwc7/NLkjSu9ej9etvfpDftEWz6C4GLgbcCyycfqiRJbbIt8Gng7vRmPsWN/+fAUfgLeyRJGsoYsBXwv4DLgQXpTX6xDf9h4KvAu/Bb/JIkVWZlYC/gH+l9Yt49NW/4NwHn0Pun/B3p/TCjJEkKWBd4I71N+VPA14FrgD8MuMnfD/wUOA84ETgS2AWYHfnqJEnSlL2A3t/HbwRsAbwKeB2wR/9fXwVsTu+XGK0NrJD5Y0qSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSBjUGbAS8ATgI+ADwof6/HtT/9zfq/+ckSarc+sAhwEXA34T/LKVZCzgU+Cbw8NjY2NPLCnio/58/tP/f1+i8i944P5TeuJekznkF8E/ALxfbfL4R/nOVYjvgPODJyWz6ExwGngS+1v/f0/C+udjz/RVwHLAtfudFUqHGgO2Bk4DbJthw5gOzon/Sdnsp8K1hNv0J3s23+v/7GswsYP4Ez/cO4DTgNcC06J9UkkZga+CTwO1T2Gh2Df+Z22gmcCxD/hP/JN7Ngv7/z4zoV9tOr5/Cc74bOAV4VfjPLElT8iLgaOD6ATeZk8J//rZZF7iqyo1/nHd0Vf//V5N38oDP+kbgw8Cc7B9fksY3E9gbuBR4asjN5TfZL6VVXgrcUefm/5z3dCewefjrb5PfDPm8FwGXAW/HvyaT1ADr0fshpntHvLlsEP662mAL4IHE5v+c9/QgsGX4ObTBhiN+7r8HTgQ2CX9dkjrodcDXgYUVbSzvCX99Tbc+cE9y83/Ou7oXvz29LIdV9OwXAd8G9sRbBJIqNBM4EPhFDZuK1wGXbkXg2vTGv9j7urb/59L4vlnDO/gNvc/TWD78tUoqyAuB91Pj3zXjdcCJnJ7e8Jfyzv4t/WAaasLrfxW8h/uA/w2smv2yJbXZbHo/ffz70IbidcAlvS690S/jne2UfkANNOnrfyN+F3OB44E1w1+/pBZZmd7GP6mPjq1wAfM64PNNB65Lb/LLeGe/6v859ayBrv+N8J3MAz4GrBZ+DpIabHl6vxjmwfRG0l+4vA74fAek38kk39sB6QfVMENd/xvhe3mE3sH+heHnIalBpgHvZAqf1lfjouV1wGf9Kv0+JvnOrks/qAbZIP0+xnk/99L7ZUR+mqPUca8Ffp5elCZYrLwO2LNj+l1M8b3tmH5gDfGe9LuY4B3dAOyefkCS6rcecF56EZrEIuV1wJ5G/uT/BO/t9PQDa4hvpN/FJN7VxcBG6QclqXrLAR+kxmtJQy5OXgfsuSv9Lqb43u5KP7AGqPX635Dv6wl6v57bzxCQCrUjA/6CnvDi1PXrgJum38GA723T9IMLi1z/G/Kd3QjsnH5wkkZnJXrfkl2UXmAGXJS6fh1w//Q7GPC9vSP94MKi1/+GfHdn0fscEEkttitwW3pBGXIx6vp1wOPS72DA9/Yv6QcX1ojrf0O8v7uBN6YfoqSpWxH4THoRGeFi1OXrgF9IP/8B39kX0w8uaIP08x/he/y/9L6LKKkFXgn8Nr1wjHgR6vJ1wEvSz3/Ad/at9IMLauz1vwHf5e+A7dIPVdLSjQFHAwvSC0YFC1CXrwNeln7+A76zK9IPLqjx1/8GeJ9PAsfQ++AwSQ2yJvDt9CJR4eLT5euAl6ef/4Dv7AfpBxfSmut/A77Xy4C1ws9YUt8OwJ3phaGGhaer1wE9ALTLrulnX8O7vQd4TfpBS113OAV+y38pi05XrwN6AGiXk9LPvqb3uxB4X/phS100CzgrvQjUvOB09TqgB4B2afX1vwHe85eBFdIPXeqKtYGr0hM/tNh08TqgB4D22CD93EPv+qfAuumHL5XuZTTw1/bWuNB08TqgB4D2KOr63xTf913ANukXIJVqD2BueqKHF5kuXgf0ANAexV3/m+I7nwfslX4JUmn+FliYnuDp6OZ1QA8A7VD09b8pvPeFwMHhdyEV45j0pG5SdO86oAeAdij++t8U3/9H0y9EarMx4JT0RG5adO86oAeAdujE9b8pjoFP01vHJE3BdOBz6QncxIBfp19OzTwAtMOv08+8iQGfp7eeSZqEGcDZ6Ynb5OjWdUAPAM03J/28mxzwVXrrmqQJzATOS0/Ypke3rgN6AGi+Q9PPu+kB59Nb3ySNYwZwfnqitiG6dR3QA0Dzdfr63xTGxAX4nQBpCdOBr6QnaFuiW9cBPQA0m9f/pjYuzsWfCZCeMQb8v/TEbFt05zqgB4Bm8/rf1MfGF/B2gATAv6YnZBujO9cBPQA0m9f/Bhsfn0m/OCnt2PREbGt05zqgB4Bm8/rf4GPkn9MvT0rxJ4eHX0C6cB3QA0Bzef1v+HFyePolSnV7C/BUevK1PbpxHdADQHN5iB9+nDwF7JN+kVJd/hx4LD3xSohuXAf0ANBcF6WfcwkBjwPbpV+mVLUNgfvTE66U6MZ1QA8AzTQLmJd+zqUEPABsFH6nUmVWAW5IT7TSovzrgB4AmmmX9DMuLeAGeuukVJTpwKXpCVZilH8d0ANAM3n9r5px8238oCAV5oT0xCo1yr8O6AGgmbz+V93YKf1Qrw55R3pClR5lXwf0ANA8Xv+rfvwckH7J0rC2wp/4r2OxKPk6oAeA5vH6X/Xj53Fg6/SLlgY1G7g5PZG6EGVfB/QA0Dxe/6tnDP0OWDX9sqWpGsNfEVrnQlHydUAPAM3i9b96x9HF+IuD1DLvTU+crkW51wE9ADSL1//qH0vvT790abL+DHg8PWm6FuX+5LAHgGY5Mf1suxa9nwfYNP3ipcm4LD1huhjlXgf0ANAsfphXZjx9L/3ipWXZJz1RuhwwJz0AKuABoDnWTz/XLgfsmx4A0tLMAG5MT5IuR5nXAT0ANIfX/7Jj6kZgZnoQSON5d3qCdD3KvA7oAaA5vP6XH1cHpQeBtLjpeOc/HmVeB/QA0Axe/2tAwM34uwLUMPulJ4Y9s0CUdh3QA0AzeP2vIQH7pQeD9FxXpSeFPbM4lHYd0ANAM3j9ryEBV6cHg/Qnr0hPCHve4lDadUAPAM3g9b8GBbwiPSAkgDPTk8GWWBzmpAfFCHkAyFs//TxtifF1RnpQSCsCj6Yngy2xOJR0HdADQN4h6edpS4yvufTWXylm//REsHEXh5KuA3oAyPt6+nnauGNs//TAULddkp4ENu7CUNJ1QA8AWcvh9b9GRu83BUoRqwIL0pPAlro4lHId0ANAltf/GhqwgN46LNXur9MTwCZcHEq5DugBIMvrfw0O+Ov0AFE3XZAe/DbhwlDKdUAPAFle/2twwAXpAaLu8WNBWxBlXAf0AJCzfvo52jLH2Tx6P6ch1ca/F2xBlHEd0ANAjtf/WhCwS3qgqFs+kR70NqmFoYTrgB4Acrz+14KAT6YHirrlmvSgt0ktDCVcB/QAkLEcfshXKwKuSQ8WdcfqwKL0oLdJLw5tvw7oASBj5/QztEmPtUXAaukBo254c3rA25QWh7ZfB/QAkHFC+hnalMbbX6YHjLrBhaFF0f7rgB4AMrz+16KAT6QHjLrhh+nBblNeHOakB80QPADUb/3087Mpj7cr04NG5ZsBPJ4e7DblxaHN1wE9ANTP638tC3iM3vosVWbr9EC3gRaHNl8H9ABQP6//tTBgi/TAUdn+Nj3IbaCFoc3XAT0A1Mvrfy0Nfy+AKnZaepDbwItDW68DegCol9f/WhpwcnrwqGyXpQe5Dbw4tPU6oAeAennLp6UB300PHpXt3vQgt4EXh7ZeB/QAUK/r08/OBh5zd6cHj8o1Oz3AbegFYk56EA3AA0B91ks/Nxt63K2UHkQq0yvTg9uGXhwOTQ+iAXgAqM/B6edmQ4+7bdKDSGX6q/TgtqEXhzZeB/QAUB+v/7U8YN/0IFKZjk4Pbht6cWjjdUAPAPXw+l8BAUelB5LK9On04LaRLBBtuw7oAaAeXv8rIOCU9EBSmc5LD24byQLRtuuAHgDq4fW/AgK+kh5IKtOV6cFtI1kg2nYd0ANAPbz+V0DA99IDSWVygSgk2nUd0ANA9bz+V0jAtenBpDLdnh7cNrJFok3XAT0AVM/rf4UE3JoeTCrT/enBbSNbJNp0HdADQPUuTD8vG9m4uy89mFSme9KD20a2SLTpOqAHgGp5/a+ggDvTA0pluiM9uG2kC0VbrgN6AKjWTulnZSMdd7emB5TK5AGgoGjPdUAPANXy+l9B4QFAFfEAUFC05zqgB4BqebunoPAAoIrclR7cNvLFYk56UE2CB4DqeP2vsIDb04NKZfKHAAuLdlwH9ABQHa//FRb+EKAq4jXAwqId1wE9AFTH63+FBdyTHlQq04PpwW0jXyzacB3QA0A1vP5XYPg5AKqIB4ACo/nXAT0AVMPrfwUG3J8eWCqTB4ACo/nXAT0AVOOT6WdklYy7B9MDS2XyAFBgNP86oAeAalyXfkZWybjzAKBKeAAoNJp9HdADwOi9OP18rLJx5wFAlfAAUGg0+zqgB4DR8/pfoeEBQBXxAFBoNPs6oAeA0fP6X6HhAUAV8QBQaDT7OqAHgNHy+l/B4QFAFfEAUHA09zqgB4DR8vpfweEBQBXxAFBwNPc6oAeA0fL6X8HhAUAV8QBQcDT3OqAHgNHy+l/B4QFAFfEAUHjACulBNo7vp5/LgM/yR+kHN47l0s/FKh93HgBUCQ8AhQesmR5k47gm/VwGfJbXph/cOFZPPxerfNx5AFAlPAAUHrBlepCN4970cxnwWTbxM9k3Tz8Xq3zceQBQJTwAFB7w1vQgW8zs9DMZ8nmuln6Ai9k3/Uys8jHnAUCV8ABQeMAJ6UG2mN3Sz2TI57l7+gEuxhsAhYcHAFXEA0Dh0by/tz4h/UyGfJ4nph/gYq5NPxOrfMx5AFAlPAB0IGDT9EDrGwNuTT+PIZ/lrf2vowk2TT8Pq2XMeQBQJTwAdCCa80+trf72/3Oe5x7pB9nX6u+m2KTHmwcAVcIDQAcC5gKrpwcbLf0AoHGe5xXpB0nvfc5NPwurZbx5AFAlPAB0JODU8FjbK/0MRvw83xh+nqemn4HVNtY8AKgSHgA6ErAQ2DY0zlai5X/3P87zvBVYOfQ8twUWpp+B1TbWPACoEh4AOhRwEzA7MM7OTn/tFT3PcwLPcjZwU/prt1rHmQcAVcIDQMcCvkPv98fX5Zj011zx8zymxme5HPDd9NdstY8xDwCqhAeADgZcSD2HgPemv9aanuf7a3iWywEXpL9Wi4wvDwCqhAeAjgZcDqxR0biaDpyY/hprfp4n9b/uKqwJXJH+Gi02tjwAqBIeADoccCewy4jH1Ia09Nf9juB5fr//9Y/SrsCd6a/NouPKA4Aq4QHAngbOBjYeciytAhwLPJb+esLP8rH+c1hlyOe5MXBO+uuxfHgAUEU8ANjTY2PPXBM8D9gTmDmFMbQNcDLwSPpraFLAI8Ap/eczWTP7z/88vOZn/fAAoIp4ALAlovfJgZfQ+yfZA4HdgFcDOwP7AUcDX8ZvTU/2ed5J77ssR/ef387957lb//keC1yMn+xn44QHAFXEA4CZWYPDA4Aq4gHAzKzB4QFAFfEAYGbW4PAAoIp4ADAza3B4AFBFPACYmTU4PACoIh4AzMwaHB4AVBEPAGZmDQ4PAKqIBwAzswaHBwBVxAOAmVmDwwOAKnJfenCbmdnSA+5NbxQq0x3pwW1mZksPuC29UahMN6QHt5mZLT3guvRGoTJdmR7cZma29IDL0xuFyuTvGzcza3DAF9Mbhcp0fHpwm5nZ0gP+Ka01CrMAAAKhSURBVL1RqEwHpAe3mZktPeBt6Y1CZdoiPbjNzGzpAS9NbxQq0zTgkfQANzOzJQMeAsbC+4QKdml6kJuZ2ZIBF6U3CJXt79KD3MzMlgw4LL1BqGwbpAe5mZk9P2ARsF56g1D5fpIe7GZm9mzAVemNQd3wnvRgNzOzZwMOSW8M6oZVgHnpAW9mZmNPA48CK4f3BXXIp9KD3szMxp4GTk5vCOqW9YEF6YFvZtblgCeAF4f3A3XQ6enBb2bW5YBPpTcCddNawNz0BDAz62LAw8Ca4X1AHfa+9CQwM+tiwJHpDUDdNh34aXoimJl1KeBqer+fRYraDHgsPSHMzLoQMB/YNLzuS884KD0pzMy6EPCu9IIvLe7M9MQwMys54P+kF3ppPDOBy9ITxMysxIB/76+zUiOtAvxneqKYmZUU8DP8uF+1wBrAL9ITxsyshIBrgNXD67o0aasCP0pPHDOzNgf8AJgdXs+lKVse+Gp6ApmZtTHgK/11VGqlMeAfgIXpyWRm1oaAhcDfZ5duaXR2BG5NTywzsyYH3AJsH16vpZF7IXAa8FR6kpmZNSngKeDU/jopFWsr4PL0hDMza0LAZcDLwuuyVKtdgSvTk8/MLBFwBbBzeB2Wol4FnIW/UMjMCo/eL/I5C9g2uOZKjbMSsD/wNeCR9EQ1MxtFwMPAecDb++ucpAnMAP4cOAr4EvBLYH56IpuZTRQwr79efQl4f38dmxFaR6WirAFsRu+azE7AbsDuZmaBdqO3Dm1Pb11aA0mSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSJEmSVJT/D2NLZ66T3ap6AAAAAElFTkSuQmCC',
    'data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgAAAAIACAYAAAD0eNT6AAAYK0lEQVR4nO3de9z1+Vzv8dcMcxCjDMMwjHMOUw5D52ypFMmmaJuaKFTa6YBSm+hgt4lIOmt33nJKg8gWiYrHVDpK2zk1coxhNDOYw93+Y/VoYua+5z5c1/VZa/2ez8fj9b+xfuv9Xfd1rev3KwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA23rWrU6qTqxOr42f/5wAAR+rY6ubV3apvrn6o+uXqFdWbqwuqf7uCLqk+VL21em31gurp1fdUX13dojp67/4zAIBPdUx1p+ph1dOq367+rHpvta8rPuB3oo9Vf1E9s/qW6jbVUbv83woAi3WL6huqn6rObnUQ79Yhf6h9oHpuq582XHeX/vsBYOud1OpH7k+oXt7qx/LTh/zBdmn1J9V35cMAABzQcdW9Wv2e/p3NH+I71cXVi//9v813BwCgukb1gFY/Ov9o84f1bvf26uH5awMAFug61UOql1Yfb/5Qnuh9rf6q4Ngj/P8SANbaDavvrl7T6s/spg/gdemd1f0P//9WAFhP/6V6YasvxU0ftuvc71c3Pcz/jwFgLRxTfWP1l80frJvU+dW3Hsb/3wAw6trVY6t3N3+YbnLPa/XlSABYa7eufrG6sPnDc1v6u+rx1f+ovrfV/QS+vXpo9cDqjOp+1b2ru1bXv9JXCQB2yOdUL2t3b7mrg++8Vrcn/q1Wzz14QHWH6tP29wICwKE4ufq1HPyb0r5Wf23wzFY3I3IPAgAOybHVo1vGDXu2uQuqF7W6F4PbFANwQPdq9Xjc6cNLO9ulrR6q9JjqlADg331mq9/zTx9U2v0+Uf1SdbMAWKwTqp+oLmr+YNLedkn1rOq2AbAon9t2PY1Ph9e+6qzqTgGw9R6Zf/Xr8v1udYMA2DrXavXN8OmDRuvbudXXB8DW+LzqH5s/YLQZPbc6MQA22qPyI38deu+p7hkAG8eP/LUTPTO3GgbYGDev3tH84aHt6OxWHygBWGOntfrx7fShoe3qDa2eEQHAGrpz9cHmDwttZ2+vbhIAa+UurR4XO31IaLt7d+4gCLA2vrK6sPnDQcvog61+2gTAoPu1esjL9KGgZfXR6vQAGPFNrR7sMn0YaJmdU103APbUGa0e5jJ9CGjZ/Ul1TADsiS+oPtb8+Ev/Vv1iAOy6m1Tvb370pf/ctwfArrlm9cbmx1761C5q9aeoAOywq1Qvb37opf31/uqUANhRP9v8wEtX1gsDYMd8V/PDLh1s9w2AI3aP/K2/Nqt3VScEwGG7bvWB5gddOtSeEQCH7cXND7l0OF2a5wUAHJYHNz/i0pH0V63+egWAg3TjPNpX29EjA+CgHFX9YfPDLe1E/1JdPQCu1COaH21pJ/u+ADig2+QhP9q+3lddLQCu0FWr1zc/1tJu9N0BcIXc7U/b3D9XxwXAJ/n0Vl+Wmh5paTfzyGCAT/Hk5sdZ2u3+sTomAKrV3/z74p+W0jcHQFW/1fwoS3vV6wKgO1f7mh9laS+7VQAL95rmx1ja654cwILdp/khliZ6b6v7XgAszlWqNzc/xNJU9w5ggb6u+QGWJjsrgAU6u/kBlia7qDopgAX5wubHV1qHHhXAgvxO88MrrUNnB7AQN68ubX54pXXo0vwaAFiIn2l+dKV16psD2HLXqs5vfnCldeoFAWy5xzQ/ttK69dHq2AC21LHVe5ofW2kdu3sAW+prmx9ZaV376QC21FnNj6y0rv1DAFvoWtUnmh9ZaZ27bQBb5mHNj6u07j08gC3z2ubHVVr3nh3AFrlpta/5cZXWvXMC2CKPb35YpU3pRgFsibc0P6rSpnRGAFvgc5sfVGmT+tkAtsDTmx9UaZP66wC2wNubH1Rpk7qkOiGADXar5sdU2sS+IoAN9sjmh1TaxB4fwAZ7ZfNDKm1izw9gQ10j9/6XDrc3BbCh7tv8iEqb2iXV8QFsoF9qfkSlTe70ADbQu5ofUGmT+6YANsztmh9PadN7WgAb5tHNj6e06b0igA3zu82Pp7TpvTeADfMvzY+ntA1dJ4AN4fa/0s71xQFsiIc0P5rStvSgADbELzc/mtK29CMBbIg3NT+a0rb0mwFsgBOrfc2PprQtvTaADfDVzQ+mtE29J4AN8KTmB1PapvZVVwtgzb2m+cGUtq3bBrDmPtL8WErb1lcHsMZObX4opW3suwNYY74AKO1OPxHAGnts80MpbWPPCmCNPbf5oZS2sVcFsMb+vvmhlLax/xfAmjquurj5oZS2sXMDWFN3bH4kpW3u+ADW0Dc1P5DSNneTANbQU5sfSGmb+4IA1tDvNT+Q0jb3NQGsoTc3P5DSNvcdAayZo6tPND+Q0jb3hADWjGcASLvfzwawZu7W/DhK295vBbBmvqX5cZS2vZcFsGae1Pw4Stve2QGsmec3P47StveWANbMXzY/jtK294EA1sxHmh9Hadu7OIA1cmLzwygtpRMCWBO3b34UpaV0agBr4p7Nj6K0lG4fwJpwDwBp77pLAGvih5ofRWkp3SOANfGLzY+itJTuF8CaeEnzoygtpQcFsCbcBEjau74jgDXxvuZHUVpKjw5gDVy1urT5UZSW0o8EsAZu1PwgSkvqJwJYA3dufhClJfXzAayBezQ/iNKS+o0A1sCZzQ+itKReEMAa+J7mB1FaUi8JYA08oflBlJbUKwJYAz/X/CBKS+o1AayB5zU/iNKSOjuANfAHzQ+itKT+KoA18NfND6K0pN4YwBo4p/lBlJbU2wJYAxc0P4jSkvqnAIYd2/wYSkvrfQEMu3bzYygtrXMDGHbT5sdQWlrnBzDs9s2PobS0PhbAsLs0P4bS0ro4gGH3an4MpaW1L4BhZzQ/htISOyqAQd/W/BBKS+yYAAZ9X/NDKC2x4wMY9ITmh1BaYlcPYNBPNj+E0hK7ZgCDntn8EEpL7MQABv1m80MoLbGTAhj0guaHUFpi1wtg0O81P4TSEjs5gEGvbn4IpSV2/QAG/WnzQygtsRsEMOgNzQ+htMROCWDQ25ofQmmJ3TCAQe9ufgilJXajAAad2/wQSkvs1AAGXdj8EEpL7MYBDLq0+SGUlthNAhhyTPMjKC21mwYw5BrNj6C01HwAAMZcu/kRlJaaDwDAmBs0P4LSUvMBABhz0+ZHUFpqPgAAY27d/AhKS80HAGDM7ZsfQWmp+QAAjPnc5kdQWmo+AABjvrj5EZSWmg8AwJgva34EpaXmAwAw5p7Nj6C01HwAAMbcp/kRlJaaDwDAmK9rfgSlpeYDADDmzOZHUFpqPgAAYx7c/AhKS+1mAQx5WPMjKC01HwCAMd/Z/AhKS80HAGDMo5ofQWmp+QAAjPmB5kdQWmo3D2DIDzU/gtJS8wEAGPO/mh9Baan5AACM+YnmR1BaarcMYMgzmh9BaandKoAhv9j8CEpL7TYBDPnV5kdQWmqnBTDkWc2PoLTUPiuAIc9vfgSlpXa7AIa8qPkRlJbaHQIY8vLmR1BaaqcHMOQ1zY+gtNTuHMCQP2t+BKWl9rkBDPnb5kdQWmpfFMCQtzY/gtJS+5IAhpzT/AhKS+3uAQz5l+ZHUFpqXxXAkH9tfgSlpXafAIZc0vwISkvt/gEMOKb5AZSW3NcHMODE5gdQWnIPCmDAqc0PoLTkHhrAgNOaH0BpyX1nAAM+v/kBlJbc9wcw4O7ND6C05H44gAFf2/wASkvuyQEMeFDzAygtuZ8JYMDDmx9Aacn9cgADHtv8AEpL7tkBDHha8wMoLbkXBTDg15sfQGnJvTKAAS9tfgClJff6AAac3fwASkvu7QEMeGvzAygtuQ8FMOBDzQ+gtOQuqY4KYA9dpbq0+QGUlt41A9hD12l++CTVjQPYQ3dofvgkrd6LAHvm3s0Pn6T60gD20H9vfvgk1ZkB7KEnNj98kur7A9hD/6f54ZNUzwhgD72m+eGTVC8IYA+9o/nhk7S6JTfAnji6+njzwyep3hXAHrll86MnadXFrT6UA+y6+zQ/epIu60YB7IHHND94ki7rKwLYA89qfvAkXdYjAtgDf9X84Em6rGcGsMuOri5sfvAkXdYfB7DLbt782En65D4YwC57YPNjJ+nynRTALvrfzQ+dpMvnLwGAXfWW5odO0uX7sQB2yfWaHzlJV9wfBbBL7t/8yEm64j5WHRfALnhG8yMnaf99cQC74M3ND5yk/ffYAHbYHZsfN0kHzvcAgB33lObHTdKB25cnAwI76KjqnObHTdKV9/0B7JAvbn7UJB1cbwhgh/xc86Mm6eD77ACO0LWrf21+0CQdfE8P4Ag9ufkxk3Rofay6YQCH6aTq/ObHTNKh96sBHKanNj9ikg6vS6rTAjhEJ1cXND9ikg6/lwZwCI6qXt78eEk68r4vgIP0uOZHS9LOdGl13wCuxJe0+t3h9GhJ2rkuqE4PYD+uV723+bGStPP9QQD78eXNj5Sk3enPA9iPGzU/UpJ2p98M4AD+rvmhkrTzPSCAA/i25odK0s52TnVcAAdwlepvmh8sSTvXGQEchNvmCYDStvTrARyCe1SfaH68JB1+r6qODeAQfVWeByBtai+vrhbAYTq91ReIpsdM0sH3c9VVAzhCJ1Yvan7UJB24D+fP/YBd8A3VB5ofOUmX74XVDQLYJZ9RPaO6qPnBk1Rvru4ZwB65efXsVo8anR5AaYn9c6sbd/ldPzDi1tVv5CcC0l71juphubMfsCZOqZ5U/UvzAyltY39cfU11dABr6LjqzOo11b7mR1Pa5M6tfro6LYANcrPqR6u3Nj+k0qZ0UfXS6r/lx/zAFrhz9ZRWv7+cHlhp3bqo1Z37vqXVfTcAttLtq8dXr8+vCbTcPlw9t9WvzD4jgIU5ufqm6jn5AqG2u33VX1ZPrO6aP98D+A9HVXeovrd6SfWR5kdbOpLeXP1C9XXVSQFwUI6u7lh9d6sflb6r+UGX9tdF1Z9VP1Xdr7puAOyYG1ZfWz25enV1XvPDr2X2jla/unpU9UXV8QGwZ46qbtnqCWg/Xv3f6j3NHw7ani6q/q56VqtfT31pvqkPsLZOqu5WfVf1zOpP8iVDHbhLq7dVL271Rb0zq9tVxwbAxrtOdZfqoa1+jXBWq3/dXdD8AaS96f3V61o9w+IHq/tXn5Wb7gAs1smtfpf7wFb3KfiV6lXV26uPN39w6eA6t/qb6nern6keWd231f0nTggADsFRrb7VfafqH5s/5LTqqdWDq7tXt8kBD8AuemfzB59WfeaVvFYAsGM+1PzBp1W3v5LXCgB2zCXNH3xa9flX8loBwI64ZvOHni7rSw/8cgHAzrhx84eeLuurD/xyAcDOuFPzh54u6wEHfrkAYGd8ZfOHni7roQd+uQBgZ5zZ/KGny3rEgV8uANgZj2z+0NNlPf7ALxcA7IwnNX/o6bKeduCXCwB2xq80f+jpsn7twC8XAOyMlzR/6OmyXnLglwsAjtzxrR4lO33o6bLen8f4ArDLvq35A0+X71sP9KIBwJE4unpL84edLt+bWj2uGQB23H2bP+i0//7r/l86ADg8R1d/3vwhp/33p/kpAAA77OHNH3C68h62vxcQAA7VKdV5zR9uuvI+Ul3/il9GADg0L2z+YNPB9/wrfhkB4OCd0fyBpkPv/lf0YgLAwTi9uqD5w0yH3vnV7S7/kgLAgZ1cvav5g0yH3z9WJwUAB+m46uzmDzAdeX9UHRMAXIljq7OaP7i0cz2vumoAsB/HVS9t/sDSzvc7+UkAAFfgatXvN39Qafd6SZ4aCMB/8unVq5s/oLT7/X51QgAs3m2rtzZ/MGnv+vvqlgGwWF9TfbT5A0l734erewbAohxdPaHa1/xBpLkurR6TJwgCLMItqtc1f/hofXpVdWoAbKWjWj3S1619dUWdVz04ALbKqdUrmz9ktP69uNVtoAHYYMdVj8u/+nVonVc9MncPBNhI967e3vxhos3tjdXdAmAj3Cq389XO9tzqJgGwlk6tfrW6pPkDQ9vXJ6qfrq4bAGvhpOqnqo83f0ho+zu/+rFWt48GYMB1qydW/9r8oaDl9aHqB/NBAGDPnFr9THVh84eAdF71pPxqAGDX3Kr6teqi5kdf+tQubPUdgRsFwI748lbf6nfffm1CF1fPqT4nAA7ZcdVDqjc0P+jS4fba6n6tHj4FwAGc0uopfe9vfrylneofqu+trhUAn+RLq99p9ePT6bGWdqsLq1+pTg9gwT69+q7qTc0Ps7TXnV19Y6tfdwEswue1umOfB/RI9cHqaa3+ygVg61yz+o7qb5ofXGlde3V1RnVsABvuC1r9zvP85sdV2pQ+UD01PxUANsyJ1fdUf9f8kEqb3h+1+q7A8QGsoaNaPTf92Xkoj7QbndvqToOfHcAauF71A9Xbmh9IaSmd3epGWZ8WwB46uvrKVn+377780lznVT9f3TGAXXRy9djqnc0Pn6RP7s+rh+anAsAOOarVw3hekH/tS5vQR1o9Lvu0AA7DidWj87t9aZN7bfUNua8AcBBOb3WXvgubHy9JO9P7qv/Z6mFbAP/h2OrMVt8snh4qSbvXxdVvV3cNWLTrVj/c6l8H08MkaW/72+rB+fUALMpntbo9rxv2SHpv9fjqOgFb6ajqntUrmx8cSevXhdUvVbcO2ApXafUt4Dc0PzCS1r991VnVnQM20nHVw6q3Nz8okjazV1RfErARrl59b/Xu5sdD0nb0uupeAWvpuOoR1fubHwtJ29mftrozKLAGjqm+vXpX8+MgaRm9uvrCgBFHV99c/UPzYyBpmb2s1d1DgT3yZa1u4jH95pekfdVvVjcI2DWfWf1u8294SfrUzq9+qLpawI65VvX0PI5X0vp3Tqt7jwBH6CHVB5t/U0vSofTa6rSAQ3bL6g+bfxNL0uH2ieoJrf5MGbgSx1SPqz7W/JtXknaiN1V3Cdivz6/e2PybVZJ2un2tHjb06QH/4aqtfkx2SfNvUknazd5ZfVFAN6vObv5NKUl71SXVj7Z6Wiks0oOqjzb/ZpSkiV5X3SRYkBOq5zT/5pOk6c6rzggW4BbV3zf/ppOkdeoprZ5xAlvp7tW5zb/RJGkde1n+SoAt9Kh8y1+Srqw3V7cKtsBx1W80/6aSpE3pI9U9gg129eoPmn8zSdKmdXF1ZrCBrpW/75ekI2lf9e3BBrle9bfNv3kkaRv6gWADnFq9tfk3jCRtU08M1tiNq3Oaf6NI0jb2k8EaOql6S/NvEEna5h4TrJFrVK9v/o0hSUvoIcEaOLZ6ZfNvCElaSpdU9w4GHV09r/k3gyQtrQurLwqGPKX5N4EkLbVzq5sFe+xrmr/4JWnp/WWrW67DnrhFq3tVT1/4kqR6ZrAHjq/+pvkLXpJ0WQ8MdtmvNH+hS5I+uQuq04Jd8qDmL3JJ0hX3pupqwQ47ufpw8xe4JGn//Xiww/y9vyStfxdXtwt2yL2av6glSQfXn7a6URsckatX/9T8BS1JOvgeHhyhpzd/IUuSDq3zqhsEh+mzWj10YvpCliQdes8JDtNZzV/AkqTDa1+rf8jBIblDq4tn+gKWJB1+LwgO0Yubv3AlSUfWvur2wUG6U/MXrSRpZ3phcJB+r/kLVpK0c90xuBJ3bv5ClSTtbH4KwJXytD9J2r4uqU4J9uOE6vzmL1RJ0s73uGA/Htb8BSpJ2p3eWR0VXIG/aP4ClSTtXncPPsUdm78wJUm72/OCT/HzzV+YkqTd7RPVdYJ/d9Xqw81fmJKk3c+jgvkPd23+gpQk7U0vC/7djzd/QUqS9qYLq+OD6g3NX5CSpL3rHrF4N2z+QpQk7W0/HYv3rc1fiJKkve1tsXhnNX8hSpL2vlvGYl2l+mjzF6Ekae/7zlis2zZ/AUqSZvr1WKwzm78AJUkz/W0s1lObvwAlSTNdVB0bi/Sq5i9ASdJcp8cifaj5i0+SNNdDY3FObf7CkyTN9rOxOPdp/sKTJM322licH2z+wpMkzXZeLM4vNH/hSZLmOyEW5cXNX3SSpPluFYvy+uYvOknSfHeLRXl38xedJGm+M2Mxjq4uaf6ikyTN9+hYjOs3f8FJktajp8di3Kn5C06StB49PxbjC6u/kCSp+qUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAANhG/x9Vtnoh7buBgwAAAABJRU5ErkJggg==',
    'data:image/png;base64,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'
];
// end my data -----------------------------------------------------

require_once 'tcpdf/tcpdf.php';

$pdf = new TCPDF(PDF_PAGE_ORIENTATION, PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);	


// remove default header/footer
$pdf->setPrintHeader(false);
$pdf->setPrintFooter(false);

// set font
$pdf->SetFont('thsarabun', '', 13);

// add a page
$pdf->AddPage();

// -----------------------------------------------------------------------------

$tbl = '
<table cellpadding="2" cellspacing="2" >
    <tr style="background-color:#666666;color:#FFFFFF;font-size:1.5em;" align = "center">
        <th colspan="5" >ข้อมูลบัตรประชาชน</th>
    </tr>
    <tr style="background-color:#999999;color:#ffffff;font-size:1em; font-weight: bold;" align = "center">
        <td>ID</td>
        <td>NID</td>
        <td>Name</td>
        <td>surname</td>
        <td>Image</td>
    </tr>';
    

    foreach ($names as $id => $result) {
        // กำหนดภาพ
        if (isset($images[$id])) {
            // ทำตาม https://stackoverflow.com/a/48044631/128761 แนะนำ คือจับยัดลง stream.
            $imageContent = file_get_contents($images[$id]);
            $path = tempnam(sys_get_temp_dir(), 'prefix');
            file_put_contents ($path, $imageContent);
            
            $image = '<img src="' . $path . '" alt="">';
        } else {
            // ไม่มีภาพ
            $image = '-';
        }
        $tbl .= '<tr style="background-color:#ffffcc;color:#000000;font-size:1em;">
            <td>'.$result["id"].'</td>
            <td>'.$result["idnum"].'</td>
            <td>'.$result["nameT"].'</td>
            <td>'.$result["surnameT"].'</td>
            <td>' . $image . '</td>
        </tr>';
        unset($image);
    }// endforeach;
           
$tbl.='</table>';

// output the HTML content
$pdf->writeHTML($tbl, true, false, true, false, '');

//Close and output PDF document
$pdf->Output('ThaiIDCloud.pdf', 'I');


ผมได้เอาส่วนเชื่อมต่อ mysql ออก, เปลี่ยนจาก while เป็น foreach ทั้งหมดเพื่อทดสอบของผมเองโดยไม่ต้องไปขอข้อมูล db ของ จขกท มา. ก็ขอให้ลองไปเทียบเคียงเอาเองว่าอะไรควรจะแทนที่ด้วยอะไร ไม่น่าจะยากหรอกตรงนี้.

tcpdf ให้แน่ใจว่าโหลดจากตรงนี้ https://github.com/tecnickcom/TCPDF/releases เอารุ่นใหม่ๆเลย. จากที่ผมทดลอง ใช้ 6.2.26

tcpdf image


ประวัติการแก้ไข
2019-02-07 13:33:11
2019-02-07 13:33:38
2019-02-07 14:02:34
2019-02-07 14:07:25
2019-02-07 14:08:45
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-07 13:31:14 By : mr.v
 


 

No. 23



โพสกระทู้ ( 9,228 )
บทความ ( 2 )



สถานะออฟไลน์


ไม่รู้โหลด tcpdf รุ่นไหนมาใช้อีก รุ่นเก่าๆ บางทีก็ไม่ซัพพอร์ต css บางคำสั่ง
ซึ่งส่วนใหญ่ก็ใช้ได้ แบบ mini css
ขนาด colspan rowspan บางรุ่นก็ใช้ไม่ได้อีกเหมือนกัน ก็ต้องลองเองถีงจะรู้ข้อจำกัดของมััน

การใช้คำสั่ง ของ tcpdf เองก็มีข้อดีข้อด้อย คือมัน สามารถ write ลงยังตำแหน่งที่ต้องการของ กระดาษได้เลย
แต่ข้อเสียคือ มันไม่เป็น dynamic ซึ่งผู้ใช้ต้องมีจินตภาพพอสมควร เพื่อที่จะเขียนสูตรคำนวณตำแหน่งเองได้

ที่นี้พอมาใช้ html ก็มีข้อจำกัดเรื่องการใช้คำสั่ง style sheet เพราะมันใช้ไม่ได้หมดทุกรายการ ก็ต้องเลือกคำสั่งที่ใช้งานได้
และซัพพอร์ตกับแต่ละรุ่น แบบใช้รุ่นไหนก็ให้ใช้กันแบบยาวๆ ไปเลย

ส่วนการเขียนภาพ ที่ดีที่สุด ก็คือการทำให้เป็น base64 เพราะเมื่อใช้งาน ไฟล์ pdf ถ้าเป็น ออฟไลน์ มันไม่สามารถ ลิงค์ออก internet ได้
และถีงแม้จะลิงค์ออก internet ได้ url ที่ใส่ในลิงค์ ก็ต้องใส่เต็มรูปแบบ เช่น http://yourdomain/yourpath/youfile.ext ไม่สามารถใส่ แบบ relation ได้

สิ่งสำคัญที่จขกทต้องทำ เพื่อที่จะได้ปรับการเขียนให้ได้ตามต้องการ คือการหา document ของมันมาอ่าน ข้อจำกัดของมัน
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-07 14:04:22 By : Chaidhanan
 


 

No. 24



โพสกระทู้ ( 4,538 )
บทความ ( 8 )



สถานะออฟไลน์


หายไปเลย ตกลงทำได้หรือไม่ได้?
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-07 19:48:08 By : mr.v
 


 

No. 25



โพสกระทู้ ( 25 )
บทความ ( 0 )



สถานะออฟไลน์


tcpdf4

ตอนนี้ได้แล้วค่า เหลือแค่จัดรูปแบบให้สวยงาม

ขอกราบขอบพระคุณทุกคนมากๆค่ะ
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-08 13:44:10 By : yanikanaja
 


 

No. 26



โพสกระทู้ ( 9,228 )
บทความ ( 2 )



สถานะออฟไลน์


ได้แล้วเอาโค๊ดมาบอกคนอื่นเขาบ้างก็ดีนะครับ คนที่ไม่รู้จะได้รู้ว่าแก้ได้แบบไหนบ้าง
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-08 15:26:23 By : Chaidhanan
 


 

No. 27



โพสกระทู้ ( 4,538 )
บทความ ( 8 )



สถานะออฟไลน์


เออ ผมลืมดูตรงนี้ด้วย ส่วนของการล้างไฟล์ temp ใน stream. เขาบอกว่างี้.

Quote:
This function's behavior changed in 4.0.3. The temporary file is also created to avoid a race condition where the file might appear in the filesystem between the time the string was generated and before the script gets around to creating the file. Note, that you need to remove the file in case you need it no more, it is not done automatically.


ไฟล์ที่สร้างโดยฟังก์ชั่น tempnam() ต้องลบด้วยตัวเอง ไม่งั้นมันจะกองพะเนินเทินทึกใน folder temp แล้วกินพื้นที่เยอะ.

ก็จะเป็นอย่างนี้. (แกะโค้ดเอาเองนะ ตัดมาแค่บางส่วนให้มันเบาๆหน้าเว็บหน่อย).

Code (PHP)
$tbl = '
<table cellpadding="2" cellspacing="2" >
    <tr style="background-color:#666666;color:#FFFFFF;font-size:1.5em;" align = "center">
        <th colspan="5" >ข้อมูลบัตรประชาชน</th>
    </tr>
    <tr style="background-color:#999999;color:#ffffff;font-size:1em; font-weight: bold;" align = "center">
        <td>ID</td>
        <td>NID</td>
        <td>Name</td>
        <td>surname</td>
        <td>Image</td>
    </tr>';
    
// เพิ่ม
$tempFiles = [];
	
foreach ($names as $id => $result) {
	if (isset($images[$id])) {
		$imageContent = file_get_contents($images[$id]);
		$path = tempnam(sys_get_temp_dir(), 'prefix');
		file_put_contents ($path, $imageContent);
		$tempFiles[] = $path; // เพิ่ม
		
		$image = '<img src="' . $path . '" alt="">';
	} else {
		$image = '-';
	}
	$tbl .= '<tr style="background-color:#ffffcc;color:#000000;font-size:1em;">
		<td>'.$result["id"].'</td>
		<td>'.$result["idnum"].'</td>
		<td>'.$result["nameT"].'</td>
		<td>'.$result["surnameT"].'</td>
		<td>' . $image . '</td>
	</tr>';
	unset($image);
}// endforeach;
           
$tbl.='</table>';

// output the HTML content
$pdf->writeHTML($tbl, true, false, true, false, '');

//Close and output PDF document
$pdf->Output('ThaiIDCloud.pdf', 'I');

// เสร็จงานแล้วล้างไฟล์ temp.
if (is_array($tempFiles)) {
	foreach ($tempFiles as $tempFile) {
		unlink($tempFile);
	}// endforeach;
}// endif;



ประวัติการแก้ไข
2019-02-08 21:57:48
แสดงความคิดเห็นโดยอ้างถึง ความคิดเห็นนี้
Date : 2019-02-08 21:56:42 By : mr.v
 

   

ค้นหาข้อมูล


   
 

แสดงความคิดเห็น
Re : การนำภาพที่เป็น base64 มาใส่ใน TCPDF ใส่เท่าไรก็ไม่ได้สักที
 
 
รายละเอียด
 
ตัวหนา ตัวเอียง ตัวขีดเส้นใต้ ตัวมีขีดกลาง| ตัวเรืองแสง ตัวมีเงา ตัวอักษรวิ่ง| จัดย่อหน้าอิสระ จัดย่อหน้าชิดซ้าย จัดย่อหน้ากึ่งกลาง จัดย่อหน้าชิดขวา| เส้นขวาง| ขนาดตัวอักษร แบบตัวอักษร
ใส่แฟลช ใส่รูป ใส่ไฮเปอร์ลิ้งค์ ใส่อีเมล์ ใส่ลิ้งค์ FTP| ใส่แถวของตาราง ใส่คอลัมน์ตาราง| ตัวยก ตัวห้อย ตัวพิมพ์ดีด| ใส่โค้ด ใส่การอ้างถึงคำพูด| ใส่ลีสต์
smiley for :lol: smiley for :ken: smiley for :D smiley for :) smiley for ;) smiley for :eek: smiley for :geek: smiley for :roll: smiley for :erm: smiley for :cool: smiley for :blank: smiley for :idea: smiley for :ehh: smiley for :aargh: smiley for :evil:
Insert PHP Code
Insert ASP Code
Insert VB.NET Code Insert C#.NET Code Insert JavaScript Code Insert C#.NET Code
Insert Java Code
Insert Android Code
Insert Objective-C Code
Insert XML Code
Insert SQL Code
Insert Code
เพื่อความเรียบร้อยของข้อความ ควรจัดรูปแบบให้พอดีกับขนาดของหน้าจอ เพื่อง่ายต่อการอ่านและสบายตา และตรวจสอบภาษาไทยให้ถูกต้อง

อัพโหลดแทรกรูปภาพ

Notice

เพื่อความปลอดภัยของเว็บบอร์ด ไม่อนุญาติให้แทรก แท็ก [img]....[/img] โดยการอัพโหลดไฟล์รูปจากที่อื่น เช่นเว็บไซต์ ฟรีอัพโหลดต่าง ๆ
อัพโหลดแทรกรูปภาพ ให้ใช้บริการอัพโหลดไฟล์ของไทยครีเอท และตัดรูปภาพให้พอดีกับสกรีน เพื่อความโหลดเร็วและไฟล์ไม่ถูกลบทิ้ง

   
  เพื่อความปลอดภัยและการตรวจสอบ กระทู้ที่แทรกไฟล์อัพโหลดไฟล์จากที่อื่น อาจจะถูกลบทิ้ง
 
โดย
อีเมล์
บวกค่าให้ถูก
<= ตัวเลขฮินดูอารบิก เช่น 123 (หรือล็อกอินเข้าระบบสมาชิกเพื่อไม่ต้องกรอก)







Exchange: Voake, Comcube, รับทำเว็บไซต์ รับเขียนโปรแกรม , pangpond.com , pangpond.co.th , สำนักงานบัญชี.com , รถมือสอง

Load balance : Server 01
ThaiCreate.Com Logo
© www.ThaiCreate.Com. 2003-2022 All Rights Reserved.
ไทยครีเอทบริการ จัดทำดูแลแก้ไข Web Application ทุกรูปแบบ (PHP, .Net Application, VB.Net, C#)
[Conditions Privacy Statement] ติดต่อโฆษณา 081-987-6107 อัตราราคา คลิกที่นี่