หลังจาก download มาลงที่เครื่องเรียบร้อยก็ลองทดสอบกันเลย เริ่มจาก Add Reference ใน ASP.net โปรเจคก่อน และทำการ Import Namespace ให้เรียบร้อย ขั้นตอนการทำงานก็คือ ผมสร้าง Web Form ขึ้นมาโดยให้รับค่า Location ของ pdf file ที่จะทำการเปิดให้ user ผ่าน QueryString จากนั้นก็ไปตรวจสอบสิทธิ์ของ user ว่าจะให้ซ่อนหน้าไหนบ้าง แล้วจึงใช้ iTextSharp.PdfCopy ทำการสร้างเอกสาร pdf ขึ้นมาใหม่ และ copy หน้าที่ user มีสิทธิเห็นไปใส่ในเอกสารใหม่ลองดูโค้ดกันครับ
Public intIgnorePages As List(Of Integer)
Protected Sub frmMain_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles frmMain.Load
Dim strLocation As String = Server.UrlDecode(Request("Location"))
Dim fileName As String = "OUTPUT/" & _userCredential.EmployeeID & "/" & fileInfo.Name
Dim reader As New PdfReader(strLocation)
Dim document As New iTextSharp.text.Document(reader.GetPageSizeWithRotation(1))
Dim fs As New FileStream(Server.MapPath(fileName), FileMode.Create)
Dim page As PdfImportedPage = Nothing
Dim copy As New PdfCopy(document, fs)
If File.Exists(fileName) Then File.Delete(fileName)
intIgnorePages = ValidateUserPermission
document.Open()
For i As Integer = 1 To reader.NumberOfPages
Dim ipage As Integer = i
If intIgnorePages Is Nothing OrElse intIgnorePages.Find(Function(c) c = ipage) = 0 Then
copy.AddPage(copy.GetImportedPage(reader, ipage))
End If
Next
document.Close()
reader.Close()
copy.Close()
fs.Close()
fs.Dispose()
Response.Redirect(fileName)
End Sub
สำหรับโค้ดด้านบนเป็นโค้ดที่ผมใช้ทดสอบโปรแกรมยังไม่ใช่โค้ดที่ใช้งานจริง แต่สำหรับผลลัพธ์เป็นที่น่าพอใจมาก สุดยอดจริงๆครับ
Reference:
iTextSharpby blowagie, geraldhenson, psoares33
๓ ความคิดเห็น:
รบกวนอธิบายการทำงานแต่ละบรรทัดหน่อยได้ไม๊อ่ะคะ
พอดีจะใช้งานเหมือนกันอ่ะคะ
แต่ดู Code แล้วงง ๆ อยู่เลย
เผื่อจะได้นำไปใช้งานได้ถูกนะคะ
ขอบคุณคะ ^^
ตามมาจากบอร์ด GreatFriends เดี๋ยวจะลองนำไปปรับใช้ดูนะค่ะ ขอบคุณค่ะ แต่ยังงงๆอยู่บ้าง
ลองดูบทความใหม่เกี่ยวกับ iTextSharp ครับ ผมใส่ comment ไว้ด้วย
http://jnithi.blogspot.com/2009/10/aspnet-crystal-report-2-pdf-itexsharp.html
แสดงความคิดเห็น