PDA

View Full Version : خروجی پی دی اف فارسی pdf arabic or persian



_elhfarzan
شنبه 18 اسفند 1397, 08:24 صبح
پی دی اف به زبان های اسکریپتی آن هم خروجی برای فارسی زبان ها یا عرب ها همیشه معضل بوده
دو تا فایل میزارم اینجا که از کتابخانه jspdf کمک گرفتم
فایل های js رو خودتون با یه سرچ ساده پیدا کنید

فرم اول :
یک فرم اچ تی ام ال را در ابتدا تبدیل به عکس میکنیم و base64 ان را میگیرم ارسال میکنیم به فرم دوم


<!DOCTYPE html><html dir="rtl" >
<head> <meta http-equiv="Content-type" content="text/html; charset=utf-8" /> <title>تبدیل PDF</title> <script language="javascript" type="text/javascript" src="html2canvas.js"></script> <script language="javascript" type="text/javascript" src="jquery.min.js"></script> <script type="text/javascript"> function ConvertNumberToPersion() { persian = { 0: '۰', 1: '۱', 2: '۲', 3: '۳', 4: '۴', 5: '۵', 6: '۶', 7: '۷', 8: '۸', 9: '۹' }; function traverse(el) { if (el.nodeType == 3) { var list = el.data.match(/[0-9]/g); if (list != null && list.length != 0) { for (var i = 0; i < list.length; i++) el.data = el.data.replace(list[i], persian
[list[i]]); } } for (var i = 0; i < el.childNodes.length; i++) { traverse(el.childNodes[i]); } } traverse(document.body); }
</script> <style type="text/css" > body { font-family: tahoma; text-align: right; direction: rtl; } .widget { display: inline-block; background-color: white; width :790px; height :1090px; border:1px solid #ececec; padding:3px; }
</style></head>
<body onload="ConvertNumberToPersion();" ><input type="button" id="btnSave" value="تبدیل به Pdf"/>
<p><!-- متن یا فرم مورد نظر در این اسپن گزاشته شود --> </p> <span id="widget" class="widget" > <div> <div>به نام خدا</div> <p>سلام</p> <table border="1" > <tr><td>من هنوز هستم</td></tr> <tr><td>سلام بر همه</td></tr> <tr><td>درووود خدا بر تو باد</td></tr> <tr><td>من نیز همچنان ساعت 2 ظهر روز پنجشنبه عین آدم های بیکار در حال کد نویسی</td></tr> </table> </div> </span>

<form method="POST" action="HtmlToPdf2.asp" style="display:none;" > <input type="text" id="bas" name="bas" > <input type="submit" value="هدایت به صفحه دانلود" id="MyClick" ></form>
</body><script type="text/javascript">$(function() { $("#btnSave").click(function() { html2canvas($("#widget"), { onrendered: function(canvas) { theCanvas = canvas; //document.body.appendChild(canvas); document.getElementById("bas").value=canvas.toDataURL('image/jpeg'); document.getElementById("MyClick").click(); } }); });}); </script></html>

_elhfarzan
شنبه 18 اسفند 1397, 08:26 صبح
فرم دوم :
base64 گرفته شده در صفحه قبل را میگیریم و با کمک از کتابخانه jspdf تبدیل به base64 pdf میکنیم سپس ذخیره
البته در ie ورژن پایین خروجی نهایی خوب جواب نمیده


<!DOCTYPE html>
<html>


<head>
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title>دانلود فایل PDF</title>
<script type="text/javascript" src="jspdf.debug.js" ></script>
</head>


<body onload=" ConvertToPdf()" >

<center style="font-family:tahoma" >
<br /><br />
<b><a id="dwnldLnk" download='tostas.pdf' href="" > >> Pdf Download << </a> </b>
<br /><br /><h3>
در صورتی که فایل پی دی اف بصورت اتوماتیک دانلود نشد ، بروی لینک بالا کلیک نمایید
</h3>
<br /><br />
<img src="<%=Request("bas")%>" id="canvas" >
</center>

</body>
<script type="text/javascript">


function ConvertToPdf(){
var canvas=document.getElementById("canvas");
//var doc = new jsPDF('p', 'pt', 'a4', false);
var doc = new jsPDF('p', 'pt', [ 800, 1100]);//سایز پی دی اف اینجا مشخص میشود
doc.addImage(canvas.src, 'JPEG', 1, 1, canvas.width , canvas.height );
document.getElementById("dwnldLnk").href=doc.output('datauristring');
//IEWorker(doc.output('datauristring'));
document.getElementById("dwnldLnk").click();
}

</script>
</html>