เครื่องมือ :
- Visual Stodio 2010 (2005->2015 คิดว่าได้หมด)
- iTextSharp Library
- ไฟล์ font THSarabun.ttf
- ไฟล์ pdf ที่ต้องการเขียนข้อความลงไป (cert.pdf)
วิธีการ :
- download iTextsharp lib จาก http://sourceforge.net/projects/itextsharp/
- แตกไฟล์ หาไฟล์ชื่อว่า iTextsharp.dll
- เปิด VS สร้างโปรเจค vb web เปล่า และนำเข้าไฟล์ pdf ที่จะ insert ข้อความ(cert.pdf)
- นำเข้าใฟล์ iTextsharp.dll ไว้ในโฟลเดอร์ bin ของโปรเจค
- นำเข้าใฟล์ Font THSarabun.ttf ไว้ในโฟลเดอร์ fonts ภาษาไทยใช้ font แห่งชาติ จะไม่มีปัญหาสระซ้อน
- Add Reference เลือกไฟล์ /bin/iTextsharp.dll
- add new WebForm1
- ก็อบ sub InsertTextToPdf() ข้างล่างวางในส่วน Code ของ WebForm1
- เรียก InsertTextToPdf() ใน Form Load ของ WebForm1
- สร้าง iFrame วางใน WebForm1 ดังนี้
ส่วน import
Imports System
Imports System.IO
Imports System.Xml
Imports iTextSharp
Imports iTextSharp.text
Imports iTextSharp.text.pdf
Imports iTextSharp.text.xml
Private Sub InsertTextToPdf()
'ไฟล์ที่จะ insert ข้อวาม
Dim oldFile As String = Server.MapPath("~/cert.pdf")
'ไฟล์ใหม่
Dim newFile As String = Server.MapPath("~/certificate.pdf")
Using pdfStream As Stream = New FileStream(oldFile, FileMode.Open)
Using newpdfStream As Stream = New FileStream(newFile, FileMode.Create, FileAccess.ReadWrite)
Dim pdfReader As New PdfReader(pdfStream)
Dim pdfStamper As New PdfStamper(pdfReader, newpdfStream)
Dim pdfContentByte__1 As PdfContentByte = pdfStamper.GetOverContent(1)
'กำหนด Font สีและขนาด
Dim baseFont__2 As BaseFont = BaseFont.CreateFont(Server.MapPath("/fonts/THSarabun.ttf"), BaseFont.IDENTITY_H, BaseFont.EMBEDDED)
pdfContentByte__1.SetColorFill(BaseColor.BLACK)
pdfContentByte__1.SetFontAndSize(baseFont__2, 16)
pdfContentByte__1.BeginText()
'ข้อความและตำแหน่งที่จะเขียน
pdfContentByte__1.ShowTextAligned(PdfContentByte.ALIGN_CENTER, "Kevin Cheng - A Hong Kong actor", 200, 600, 0)
pdfContentByte__1.EndText()
pdfStamper.Close()
End Using
End Using
End Sub
Run โปรแกรมก็จะเห็น ข้อความในไฟล์ pdf ตัว pdf แสดงฝังอยู่ในหน้าเว็บ
การประยุกต์ใช้
- พิมพ์ใบประกาศนียบัตร ต่าง ๆ เอาข้อความหรือชื่อมาจากฐานข้อมูล
- พิมพ์ข้อความจากฐานข้อมูลลงบนแบบฟอร์ม ที่มีอยู่แล้ว ใบเสร็จรับเงิน , invoice ฯ
สรุป
ใช้ object Stream แบบ FileStream เก็บไฟล์เข้าหน่วยความจำ แล้วอ่านไฟล์จาก stream ด้วย pdfReader แล้วใช้ pdfstumper เขียนไฟล์
มี Code ตัวอย่างการใช้ iTextSharp lib จากการ googling จำนวนมากต้องใช้เวลาพอสมควร ที่เจอตรงกับความต้องการ Code ส่วนใหญ่เป็น C# แต่ก็สามารถแปลงเป็น vb มีหลายเว็บที่แปลงได้เช่น http://converter.telerik.com/
ตัวอย่าง การใข้งาน iTextSharp
http://www.codeproject.com/Articles/686994/Create-Read-Advance-PDF-Report-using-iTextSharp-in
http://www.mikesdotnetting.com/article/80/create-pdfs-in-asp-net-getting-started-with-itextsharp
http://www.4guysfromrolla.com/articles/030911-1.aspx
http://www.itextpdf.com/book/chapter.php?id=1
http://www.c-sharpcorner.com/UploadFile/f2e803/basic-pdf-creation-using-itextsharp-part-i/
https://simpledotnetsolutions.wordpress.com/2012/04/08/itextsharp-few-c-examples/
ไม่มีความคิดเห็น:
แสดงความคิดเห็น