منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب
[كود] اريد كود إرسال البيانات من الفيجوال بيسك إلىPDF - نسخة قابلة للطباعة

+- منتدى فيجوال بيسك لكل العرب | منتدى المبرمجين العرب (http://vb4arb.com/vb)
+-- قسم : قسم لغة الفيجوال بيسك VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=182)
+--- قسم : قسم اسئلة VB.NET (http://vb4arb.com/vb/forumdisplay.php?fid=183)
+--- الموضوع : [كود] اريد كود إرسال البيانات من الفيجوال بيسك إلىPDF (/showthread.php?tid=24788)

الصفحات: 1 2


اريد كود إرسال البيانات من الفيجوال بيسك إلىPDF - issamsaidd - 03-05-18

السلام عليكم ورحمه الله وبركاته 
شكرا لكم لهذا المنتدى الرئع الذى استفدت منه كثير 
 
ولكن بدى طلب طريقة تصدير ملفات الفورم الى PDF 
بتنسيق معين 
وجدت شرح على يوتيوب ولكن التصدير كان 
للورد وبه بعض العيوب 
https://www.youtube.com/watch?v=andDjzYHHC4&feature=share

اريد طريقة مشابة ولكن لل PDF 
ويارت يكون شرح مبسط جدا جدا حتى يستفيد الاعضاء 
والزوار 
صورة البرنامج ورابط التحميل 
http://www.mediafire.com/file/2i8oquzc9mlwdod/DR.AYESH.rar
واذا فى اى تعديل حابين تعدلوه على البرنامج عدلوه كما تشوفه

ملاحظه عند خروج ملف PDF للروشتة يكون نصف ورقة A4  الروتشة مرفقة مع البرنامج


RE: اريد كود إرسال البيانات من الفيجوال بيسك إلىPDF - عبدالله الدوسري - 03-05-18

أولاً يجب أن تفهم أن الـ Net. لا تحتوي على أي ( محلل أو فك ترميز ) يستطيع قراءة ملفات PDF أو عرضها أو طباعته.

لذلك يجب أن تستخدم تطبيقًا تابعًا لجهة خارجية ، القصد ( مكتبة طرفية ثالثة - ملفات DLL ) أو ( مولد PDF ) أو ( محلل مخصص )  لكي تتمكن من إرسال الصفحات وعرضها أو إرسالها للطباعة.


الأكيد أنك لا تستطيع إنشاء ملف PDF من الصفر بواسطة الـ NET. فقط.  * يجب أن تستخدم ( Thrid party library ) *

أغلب الـ ( Thrid party library ) لعرض وطباعة ملفات الـ PDF فقط , أما الإنشاء من الصفر فهذ يحتاج إلى خبرة , لأنها عبارة عن رسم بالأكواد ورياضيات بحتة وأعمال جرافيكس.

حتى أن أغلب الأمثلة في إنشاء ملف PDF من الصفر , تجد المثال عبارة عن كود بسيط لرسم بعض النصوص في منتصف الصفحة ويقول لك يالله أن أنشاءة لك ملف PDF.
أما أنك تصل إلى درجة أن تنشئ ملف PDF بتصميم مشابة للذي يخرج من ملفات الوورد مثلاُ ، من تنظيم النصوص والجداول وتقسيم الحقول وتوزيع المسافات ومعرفة متى تنتقل للصفحة الأخرى ومتى تنقل النص أو باقي الرسم للصفحة التالية ورأس وتذييل وترقيم ومسافات جانبية وحدود الطباعة , فهذ أمر يحتاج إلى شخص خارق في علوم الجرافيكس والرياضيات.
أبداً أبداً الموضوع ليس سهل نهائياً ختى على اكبر المحترفين.

بدلاً عن ذلك , هناك خيار متاح أماك وسهل جداً , هو إستخدام مايكرو سوفت أوفيس وورد , تصمم النموذج الذي تريد كما تحب , وتملأه بالبيانات عن طريق البرنامج , ثم ترسل أمر للوورد بتحويل الملف إلى PDF , الآن لديك ملف PDF بكامل تنسيقاتة وبكل إحترافية , بعدها يمكنك التصرف بهذا الملف , أم تعرضة على  ( Thrid party library ) أو عن طريق متصفح الإنترنت , 
أو حتى عن طريق ( Adobe  Acrobat Reader )  تقوم بإدراج ( Adobe  Acrobat Reader ) داخل مشروعك , وتستعرض الملفات فيه , ولكن تذكر أنك يجب أن تستخدم MS Word لإنشاء الملفات أولاً.


RE: اريد كود إرسال البيانات من الفيجوال بيسك إلىPDF - tarek - 03-05-18

اعمل reportviewer ومن خلاله حتلاقي تصدير لوورد واكسيل وpdf


RE: اريد كود إرسال البيانات من الفيجوال بيسك إلىPDF - issamsaidd - 03-05-18

اها طيب ما فى طريقة عند الضغط على طباعه تخرج نافذه مباشره pdf بتنسيقات الورد وشكرا لك


RE: اريد كود إرسال البيانات من الفيجوال بيسك إلىPDF - عبدالله الدوسري - 03-05-18

راجع هذا الموضوع :  [مشروع] الطباعة من خلال الوورد MS Word ، تقارير ، كشوفات ، والكثير
ستجد فية مثال يعرض الوثائق بصيغة PDF




    
النتيجة عند الطباعة  :
    
















    
النتيجة عند الطباعة  
    


RE: اريد كود إرسال البيانات من الفيجوال بيسك إلىPDF - وهج الصحراء - 04-06-18

اتمنى من الاستاذ عبد الله يلخص الموضوع السابق وشرحها في فيديو او اثنين بدلا من السبع الاجزاء السابقة .. اهم شي الفكرة
شي جميل جدا ... نسأل الله لك التوفيق وشكرا


RE: اريد كود إرسال البيانات من الفيجوال بيسك إلىPDF - mrnooo2000 - 05-06-18

هناك مكتبة رائعة تعطيك القدرة على التعامل مع ملفات Pdf 
بكل سهولة و يسر 
و هى مكتبة itextsharp
ان شاء الله بعد الافطار اعمل لك مثال عليها 


RE: اريد كود إرسال البيانات من الفيجوال بيسك إلىPDF - وهج الصحراء - 05-06-18

(05-06-18, 03:53 PM)mrnooo2000 كتب : هناك مكتبة رائعة تعطيك القدرة على التعامل مع ملفات Pdf 
بكل سهولة و يسر 
و هى مكتبة itextsharp
ان شاء الله بعد الافطار اعمل لك مثال عليها 

نتمنى ان يكون شرح مفصل .... جزاك الله خيرا


RE: اريد كود إرسال البيانات من الفيجوال بيسك إلىPDF - mrnooo2000 - 06-06-18

بسم الله نبدأ


أولا عليك تحميل ملفات المكتبة من المرفقات و هما عبارة عن ملفى dll

ثانيا قم باضافة مراجع للملفات فى Referances بالمشروع

ثالثا فى النموذج الخاص بك أضف هذه الادوات:- 
1- مربع نص باسم txtname يحتوى على اسم المريض
2- مربع نص باسم txtage يحتوى على عمر المريض
3- مربع نص باسم txtdrug1 يحتوى على الدواء الاول
4- مربع نص باسم txtdrug2 يحتوى على الدواء الثانى
5- مربع نص باسم txtdrug3 يحتوى على الدواء الثالث
6- مربع نص باسم txtdrug4 يحتوى على الدواء الرابع
7- مربع نص باسم txtdrug5 يحتوى على الدواء الخامس
8- زر 


رابعا ضع صورة الروشتة التى أرسلتها أنت من قبل فى نفس مجلد البرنامج   debug فى المشروع

و نأتى الى الأكواد
==========

مبدأيا و حتى تكون الفكرة واضحة سأقوم بعمل جدول بحجم الجزء الخالى من الروشتة ثم نقوم بإضافة البيانات اليه على شكل صفوف (خلايا)
و ذلك حتى نتمكن من التحكم فى اتجاه النص لكى لا يسبب مشاكل مع النصوص العربية 

أولا هذه دالة تعطى خلية بالموصفات التى أحددها (و تظهر فى النهاية كسطر )
كود :
   Private Function CellData(TheText As String, TheFont As Font, Optional TheColor As BaseColor = Nothing, Optional TheTopDistance As Integer = 0, Optional TheStartDistance As Integer = 0, Optional theAlignment As Integer = 0) As PdfPCell
       Dim CellFont As Font = New Font(TheFont)
       CellFont.Color = If(TheColor Is Nothing, BaseColor.BLACK, TheColor)

       Dim C As PdfPCell = New PdfPCell(New Phrase(0, TheText, CellFont))
       C.Border = BorderStyle.None
       C.PaddingTop = TheTopDistance
       C.HorizontalAlignment = theAlignment    '1 center   2    left     0  right >>>> default
       If theAlignment = 2 Then
           C.PaddingLeft = TheStartDistance
       Else
           C.PaddingRight = TheStartDistance
       End If
       Return C
   End Function

وثانيا هذا الاجراء يقوم بتكوين الملف بالاسم المحدد ثم يضيف الخلايا اليه و بعد ذلك يفتح الملف بعد حفظه 
كود :
   Private Sub WritPrescription(ByVal pdfdocument_path As String)
       Dim Prescription As New Document(PageSize.A5.Rotate, 0, 0, 0, 0)
       Dim writer As PdfWriter = PdfWriter.GetInstance(Prescription, New FileStream(pdfdocument_path, FileMode.Create))
       Prescription.Open()

       'Create a PDF image object from our physical image
       Dim ThisImage = itextsharp.text.Image.GetInstance("n.jpg")
       'Scale the image
       Dim NewW, NewH As Single
       NewW = Prescription.PageSize.Width
       NewH = Prescription.PageSize.Height
       ThisImage.ScaleToFit(NewW, NewH)
       'Add the image to the document under text
       ThisImage.SetAbsolutePosition(0, 2)
       Dim under As PdfContentByte = writer.DirectContentUnder
       under.AddImage(ThisImage)

       'add font to Write arabic letters
       Dim fontpath As String = Environment.GetEnvironmentVariable("SystemRoot") + "\\fonts\\times.ttf"
       Dim BaseFont As BaseFont = BaseFont.CreateFont(fontpath, BaseFont.IDENTITY_H, BaseFont.EMBEDDED)
       Dim arabicfont As Font = New Font(BaseFont, 12, itextsharp.text.Font.BOLD, BaseColor.BLACK)

       Dim tbl As PdfPTable = New PdfPTable(1)
       'resize table to Writing part
       tbl.TotalWidth = 360.0F
       'set writing direction
       tbl.RunDirection = PdfWriter.RUN_DIRECTION_RTL

       'write name
       tbl.AddCell(CellData(txtname.Text, arabicfont, BaseColor.BLACK, 41, 70, 0))
       'write age and date
       tbl.AddCell(CellData(Today.Date & Space(40) & txtage.Text, arabicfont, BaseColor.BLACK, 10, 80, 0))
       'write drugs
       tbl.AddCell(CellData(txtdrug1.Text & " - ", arabicfont, BaseColor.BLUE, 30, 20, 2))
       tbl.AddCell(CellData(txtdrug2.Text & " - ", arabicfont, BaseColor.BLUE, 20, 20, 2))
       tbl.AddCell(CellData(txtdrug3.Text & " - ", arabicfont, BaseColor.BLUE, 20, 20, 2))
       tbl.AddCell(CellData(txtdrug4.Text & " - ", arabicfont, BaseColor.BLUE, 20, 20, 2))
       tbl.AddCell(CellData(txtdrug5.Text & " - ", arabicfont, BaseColor.BLUE, 20, 20, 2))

       ' ádd data table to Prescription
       tbl.WriteSelectedRows(0, -1, Prescription.Left + 182, Prescription.Top, writer.DirectContent)
       Prescription.Close()
       'open Prescription
       Process.Start(pdfdocument_path)
   End Sub

ؤ فى النهاية ضع هذا الكود فى حدث ضغط الزر 

كود :
       WritPrescription("Prescription.pdf")

الكود سهل و واضح و أعتقد لا يحتاج شرح و لقد وضعت وصف لكل جزئية بالكود 
و بالتوفيق للجميع

بالمرفقات ملفات المكتبة و الملف  الناتج و صورة الروشتة التى أرسلتها من قبل


RE: اريد كود إرسال البيانات من الفيجوال بيسك إلىPDF - issamsaidd - 06-06-18

يا اخوان شكرا كتير الكم بس لو شرح فديو ويرفعو على اليتيوب بيكون احسن لان اليتيوب مش موجد به اى شرح لموضوع pdf