پی دی اف به زبان های اسکریپتی آن هم خروجی برای فارسی زبان ها یا عرب ها همیشه معضل بوده
دو تا فایل میزارم اینجا که از کتابخانه jspdf کمک گرفتم
فایل های js رو خودتون با یه سرچ ساده پیدا کنید

فرم اول :
یک فرم اچ تی ام ال را در ابتدا تبدیل به عکس میکنیم و base64 ان را میگیرم ارسال میکنیم به فرم دوم
کد HTML:
<!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>