السلام عليكم وشهر مبارك علينا وعليكم
احبتي في المنتدى العربي , اليوم سأتكلم عن طريقة لملئ فرغات موجودة في ملف PDF عن طريق صفحة ASP.net.
الحقيقة اني كنت ابحث من فتره طويله عن طريقة لتحوييل صفحتي الى PDF او طريقة لانشاء ملف PDF من الاساس, ولكن لسوء الحظ اغلب الامثلة والطرق الموجوده في الانترنت كان فيها مشاكل خصوصا مسألة التحويل المباشرة.
عموما انا لقيت طريقة اتمنى انها تعجبكم وتفيدكم .. واذا كان احد منكم عنده طريقة اكيده ومجربة فياليت مايبخل علينا.
راح ابداء بالمتطلبات اللي لازم تتوفر لنا:
- برنامج لكتابة ملفات الPDF انصح باستخدام(CutePDF )
طبعا بعد انشائنا للملف الPDF ومثلا خلونا نسمية test.pdf بالشكل التالي:

نقوم بوضع Text Boxes ونعطيها اسم مختلف كما هو واضح *
ثم نحفظ الملف في السيرفير اللي موجود فيه الموقع.
الان نروح للاهم وهو الكود
طبعا اول شي لازم تحطه ببالك هو اني استخدم اداة اسمها iTextSharp *وهذي الاداة حقيقة اداة جدا ممتازه يتم من خلالها التحويل الى الPDF بطرق كثيره لكنها للاسف غير منظمه من ناحية الامثلة وايضا ماعندهم مثال واضح تقدر تسويلة تحميل وتجربه . عموما هذا موقعوهم ادخلوه ونزلو الdll الخاصه فيه وحاولوا تلقون امثله اخرى.
في الحقيقة هذا هو السبب اللي خلاني اكتب فيه موضوع.
على اي حال .
بعد ما نضيف ال itextsharp.dll
نبداء بالخطوه الاولى :
1 - راح تكون صفحتنا بالشكل التالي:

2 - راح نضيف الدالة التالية واللي تقوم بارسال ال Absolute Path الخاص بملف ال pdf:
Protected Function GetAbsolutePath() As String
Dim virtualPath As String = Request.CurrentExecutionFilePath.Substring(0, Request.CurrentExecutionFilePath.LastIndexOf("/") + 1)
Dim port As String = Request.ServerVariables("SERVER_PORT")
If port Is Nothing OrElse port = "80" OrElse port = "443" Then
port = ""
Else
port = ":" + port
End If
Dim protocol As String = Request.ServerVariables("SERVER_PORT_SECURE")
If protocol Is Nothing OrElse protocol = "0" Then
protocol = "http://"
Else
protocol = "https://"
End If
Return [String].Concat(protocol, Request.ServerVariables("SERVER_NAME"), port, virtualPath)
End Functionاهم شي قبل لا انسى لازم نضيف القيمة التالية على مستوى الكلاس اي ان جميع الدوال تتمكن من رؤتها الا وهي :
Private ReadOnly pdfFormFileName As String = "test.pdf"
بعد كذا نقوم بالاتي:
في الحدث الخاص بالbutton اللي انا سميته btnGetPDF راح نقوم بالتالي:
Response.Clear()
Response.ContentType = "application/vnd.pdf"
Dim fdfWriter As New FdfWriter()
fdfWriter.File = GetAbsolutePath() + pdfFormFileName
fdfWriter.SetFieldAsName("txtName", txtName.Text)
fdfWriter.SetFieldAsName("txtAge", txtAge.Text)
fdfWriter.SetFieldAsName("txtSex", txtSex.Text)
Response.AddHeader("Content-disposition", "inline; filename=FlatPDFForm.fdf")
fdfWriter.WriteTo(Response.OutputStream)
Response.[End]()وبس!
وبكذا نكون عبينا الفرغات الموجوده في الملف الPDF عن طريق صفحة ال ASP.net
ارجو اني اكون وفقت في اصال المعلومات وانا مستعد على الرد على اي استفسار
ورجائي اذا كان فيه احد عنده معلومات افضل ان لا يبخل علينا فيها وشكرا لكم مجددا
*اضافة الTextBoxes للملف ال PDF تحتاج احد برامج الكتابة على على ال PDF مثل ال CutePDF
* ITextSharp اداة مجانية يمكنكم الحصول عليها عن طريق هذا الرابط
وشكرا لكم