NK-Inc.com
PDF Programming Tutorials

PDF Programming Tutorials

Programming Dynamic PDF forms using FDFToolkit.net

Categories: PDF Programming Posted by NicK on 9/17/2010 4:32 AM | Comments (0)
Private Sub ImageFieldManipulations()
		' INSERTS IMAGE IN IMAGE FIELD ON LIVECYCLE FORMS
		Dim cFDFApp As New FDFApp.FDFApp_Class()
		Dim cFDFDoc As New FDFApp.FDFDoc_Class()
		cFDFDoc = cFDFApp.FDFCreate
		' ADD XDP FORM
		cFDFDoc.XDPAddForm("subform1", Server.MapPath("test_livecycle-image1.pdf"))
		' ADD DUMMY FIELD
		cFDFDoc.XDPAddField("FullName", "Test Image Field", "subform1", Global.FDFApp.FDFDoc_Class.FieldType.FldTextual)
		' ADD IMAGE FIELD
		cFDFDoc.XDP_Add_ImageField("Image1", "subform1", Server.MapPath("Signature_01_Small.jpg"), True)
		Response.Clear()

		' WRITE XDP DATA TO BUFFER
		'Response.ContentType = cFDFApp.MimeXDP
		'Response.BinaryWrite(cFDFDoc.FDFSavetoBuf(Global.FDFApp.FDFDoc_Class.FDFType.XDP, True))

		' WRITE MERGED XDP/PDF TO BUFFER
		Response.ContentType = cFDFApp.MimePDF
		Response.BinaryWrite(cFDFDoc.PDFMergeXDP2Buf(Server.MapPath("test_livecycle-image1.pdf"), False, ""))

		' WRITE MERGED XDP/PDF TO FILE
		'cFDFDoc.PDFMergeXDP2File(Server.MapPath("test_livecycle-image-MERGED.pdf"), Server.MapPath("test_livecycle-image1.pdf"), False, "")

		Response.End()
End Sub
Tags: , , | Categories: PDF Programming Posted by NicK on 4/27/2010 3:47 PM | Comments (0)
This code example demonstrates how to populate a LiveCycle PDF (XFA) form with XDP data.

Imports FDFApp
Imports FDFApp.FDFApp_Class
Imports FDFApp.FDFDoc_Class
Partial Public Class populate_pdf_xdp_data
    Inherits System.Web.UI.Page

    Private PDFPath As String = Server.MapPath("/MyData/myPDFFile.pdf")
    Private XDPPath As String = Server.MapPath("/MyData/myXDPFile.xdp")
    Private cFDFDoc As New FDFApp.FDFDoc_Class
    Private cFDFApp As New FDFApp.FDFApp_Class
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        Try
	  ' OPEN XDP FROM BUFFER
	  'cFDFDoc = cFDFApp.FDFOpenFromStream(Request.InputStream, True, True)

	  ' CREATE A BLANK CLASS
	  'cFDFDoc = cFDFApp.FDFCreate

	  ' OPEN FROM FILE
	  cFDFDoc = cFDFApp.FDFOpenFromFile(XDPPath, True, True)
	  ' POPULATE A PDF WITH XDP DATA
	  Populate_PDF_XDP_Data()
        Catch Ex As Exception
	  Response.Write("Error: " & Ex.Message)
	  Response.End()
        End Try
    End Sub
    Public Sub Populate_PDF_XDP_Data()
        Try
	  cFDFDoc.PDFData = cFDFDoc.PDFMergeXDP2Buf(PDFPath, False, "")
	  ' CLEAR
	  Response.Clear()
	  ' MIME
	  Response.ContentType = cFDFApp.MimePDF
	  ' BUFFER
	  Response.BinaryWrite(cFDFDoc.PDFData)
        Catch ex As Exception
	  Throw ex
        End Try
        ' CALL OUTSIDE OF TRY{}
        ' END STREAM ENSURES NO HTML DATA IS WRITTEN
        Response.End()
    End Sub

End Class

Tags: , | Categories: PDF Programming Posted by NicK on 4/26/2010 3:36 AM | Comments (0)
This method demonstrates how to save a MS Access database record from a PDF form submission using FDF Toolkit .net and VB.net.
Imports FDFApp
Imports FDFApp.FDFApp_Class
Imports FDFApp.FDFDoc_Class
Partial Public Class save_pdf_form_submission_to_database
    Inherits System.Web.UI.Page

    Private URLPath As String = ""
    Private cFDFDoc As New FDFApp.FDFDoc_Class
    Private cFDFApp As New FDFApp.FDFApp_Class
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

        cFDFDoc = cFDFApp.FDFOpenFromStream(Request.InputStream, True, True)
        Try
	  Save_New_Record_AUTOMATIC()
        Catch Ex As Exception
	  Response.Write("Error: " & Ex.Message)
	  Response.End()
        End Try
    End Sub
    Public Sub Save_New_Record_AUTOMATIC()
        ' SET TABLE NAME
        Dim strTableName As String = "TABLENAME"
        Dim myDA As New OleDb.OleDbDataAdapter("SELECT * FROM [" & strTableName & "];", "PROVIDER=MICROSOFT.JET.OLEDB.4.0; DATA SOURCE=" & Server.MapPath("/APP_DATA/myDATABASE.mdb") & ";")
        ' CREATE COMMAND BUILDER
        Dim cmd As New OleDb.OleDbCommandBuilder(myDA)
        Dim myDS As New DataSet
        ' FILL DATASET
        myDA.Fill(myDS, strTableName)
        ' NEW RECORD
        Dim myDR As DataRow = myDS.Tables(0).NewRow
        Try
	  ' SETS DATAROW VALUES FROM FDF - EXLUDING Autoincremental [ID] Field
	  myDR = cFDFDoc.FDFSetDataRowFromValues(myDR, "ID")
	  ' ADD NEW RECORD TO DATASET
	  myDS.Tables(strTableName).Rows.Add(myDR)
	  ' UPDATE DATASET
	  myDA.Update(myDS, strTableName)
        Catch ex As Exception
	  Throw ex
        End Try
        Return
    End Sub
    Public Sub Save_New_Record_MANUAL()
        ' SET TABLE NAME
        Dim strTableName As String = "TABLENAME"
        Dim myDA As New OleDb.OleDbDataAdapter("SELECT * FROM [" & strTableName & "];", "PROVIDER=MICROSOFT.JET.OLEDB.4.0; DATA SOURCE=" & Server.MapPath("/APP_DATA/myDATABASE.mdb") & ";")
        ' CREATE COMMAND BUILDER
        Dim cmd As New OleDb.OleDbCommandBuilder(myDA)
        Dim myDS As New DataSet
        ' FILL DATASET
        myDA.Fill(myDS, strTableName)
        ' NEW RECORD
        Dim myDR As DataRow = myDS.Tables(0).NewRow
        Try
	  ' SETS DATAROW VALUES FROM FDF - EXLUDING Autoincremental [ID] Field
	  myDR("FIELD_A") = cFDFDoc.FDFGetValue("FIELD_A", False)
	  myDR("FIELD_B") = cFDFDoc.FDFGetValue("FIELD_A", False) & " " & cFDFDoc.FDFGetValue("FIELD_C", False)
	  myDR("FIELD_D") = cFDFDoc.FDFGetValue("FIELD_D", False)
	  ' ADD NEW RECORD TO DATASET
	  myDS.Tables(strTableName).Rows.Add(myDR)
	  ' UPDATE DATASET

	  myDA.Update(myDS, strTableName)
        Catch ex As Exception
	  Throw ex
        End Try
        Return
    End Sub

End Class
Tags: | Categories: PDF Programming Posted by NicK on 1/28/2010 8:54 AM | Comments (0)
This method demonstrates how to populate an image field in a LiveCycle form using FDF Toolkit .net and VB.net.
Private Sub ImageFieldManipulations()
        ' INSERTS IMAGE IN IMAGE FIELD ON LIVECYCLE FORMS
        Dim cFDFApp As New FDFApp_Class()
        Dim cFDFDoc As New FDFDoc_Class()
        cFDFDoc = cFDFApp.FDFCreate
        cFDFDoc.XDPAddForm("subform1", Server.MapPath("test_livecycle-image1.pdf"))
        cFDFDoc.XDPAddField("FullName", "Bo Duke", "subform1", FDFDoc_Class.FieldType.FldTextual)
        cFDFDoc.XDP_Add_ImageField("Image1", "subform1", Server.MapPath("Signature_01_Small.jpg"), True)
        Response.Clear()

        ' WRITE XDP DATA TO BUFFER
        Response.ContentType = cFDFApp.MimeXDP
        Response.BinaryWrite(cFDFDoc.FDFSavetoBuf(FDFDoc_Class.FDFType.XDP, True))

        ' WRITE MERGED XDP/PDF TO BUFFER
        'Response.ContentType = cFDFApp.MimePDF
        'Response.BinaryWrite(cFDFDoc.PDFMergeXDP2Buf(Server.MapPath("test_livecycle-image1.pdf"), False, ""))

        ' WRITE MERGED XDP/PDF TO FILE
        'cFDFDoc.PDFMergeXDP2File(Server.MapPath("test_livecycle-image-MERGED.pdf"), Server.MapPath("test_livecycle-image1.pdf"), False, "")

        Response.End()
    End Sub
Categories: PDF Programming Posted by NicK on 10/21/2009 9:30 AM | Comments (0)
        Dim cFDFApp As New FDFApp.FDFApp_Class
        Dim cFDFDoc As New FDFApp.FDFDoc_Class
        cFDFDoc = cFDFApp.FDFCreate
        'cFDFDoc.XDPAddForm("subform1", Request.Url.AbsoluteUri.Substring(0, Request.Url.AbsoluteUri.LastIndexOf("/") + 1) & "test_livecycle.pdf")
        ' !IMPORTANT ADD FORM (IF SINGLE PAGE THEN JUST ENTER "subform1"),PATH TO BLANK PDF
        cFDFDoc.XDPAddForm("subform1", Server.MapPath("test_livecycle.pdf"))
        ' ADD FIELDS
	  'cFDFDoc.XDPSetValue(FieldName, FieldValue)
        cFDFDoc.XDPSetValue("FullName", "Nick")
        cFDFDoc.XDPSetValue("Email", "no-reply@nk-inc.com")
        cFDFDoc.XDPSetValue("StreetAddress", "111 Easy Street")
        cFDFDoc.XDPSetValue("City", "Clinton Township")
        cFDFDoc.XDPSetValue("State", "MI")
        cFDFDoc.XDPSetValue("Country", "United States")
        cFDFDoc.XDPSetValue("PhoneNumber", "(586)-555-1111")
        cFDFDoc.XDPSetValue("FaxNumber", "(586)-555-1212")
        cFDFDoc.XDPSetValue("ZipCode", "48000")
        ' CLEAR RESPONSE (HTML CODE)
        Response.Clear()
        ' SET MIME BEFORE SENDING TO BUFFER
        Response.ContentType = cFDFApp.MimePDF
        'sends pdf to buffer (Flattens = False)
        'Response.BinaryWrite(cFDFDoc.PDFMergeXDP2Buf(Server.MapPath("test_livecycle.pdf"), False, ""))

        'merges to fil
        'cFDFDoc.PDFMergeXDP2File(Server.MapPath("test_livecycle_new.pdf"), Server.MapPath("test_livecycle.pdf"), False, "")
        'sends pdf to buffer (Flattens = True)
        'Response.BinaryWrite(cFDFDoc.PDFMergeXDP2Buf(Server.MapPath("test_livecycle.pdf"), True, ""))
        'sends xdp to buffer
        'Response.BinaryWrite(cFDFDoc.FDFSavetoBuf(FDFDoc_Class.FDFType.XDP, True))
        Response.End()
Categories: PDF Programming Posted by NicK on 10/21/2009 9:30 AM | Comments (0)

        Dim cFDFApp As New FDFApp.FDFApp_Class
        Dim cFDFDoc As New FDFApp.FDFDoc_Class
        cFDFDoc = cFDFApp.FDFCreate
        'cFDFDoc.XDPAddForm("subform1", Request.Url.AbsoluteUri.Substring(0, Request.Url.AbsoluteUri.LastIndexOf("/") + 1) & "test_livecycle.pdf")
        ' !IMPORTANT ADD FORM (IF SINGLE PAGE THEN JUST ENTER "subform1"),PATH TO BLANK PDF
        cFDFDoc.XDPAddForm("subform1", Server.MapPath("test_livecycle.pdf"))
        ' ADD FIELDS
	  'cFDFDoc.XDPSetValue(FieldName, FieldValue)
        cFDFDoc.XDPSetValue("FullName", "Nick")
        cFDFDoc.XDPSetValue("Email", "no-reply@nk-inc.com")
        cFDFDoc.XDPSetValue("StreetAddress", "111 Easy Street")
        cFDFDoc.XDPSetValue("City", "Clinton Township")
        cFDFDoc.XDPSetValue("State", "MI")
        cFDFDoc.XDPSetValue("Country", "United States")
        cFDFDoc.XDPSetValue("PhoneNumber", "(586)-555-1111")
        cFDFDoc.XDPSetValue("FaxNumber", "(586)-555-1212")
        cFDFDoc.XDPSetValue("ZipCode", "48000")
        ' CLEAR RESPONSE (HTML CODE)
        Response.Clear()
        ' SET MIME BEFORE SENDING TO BUFFER
        Response.ContentType = cFDFApp.MimePDF
        'sends pdf to buffer (Flattens = False)
        Response.BinaryWrite(cFDFDoc.PDFMergeFDF2Buf(Server.MapPath("test_livecycle.pdf"), False, ""))

        'merges to fil
        'cFDFDoc.PDFMergeXDP2File(Server.MapPath("test_livecycle_new.pdf"), Server.MapPath("test_livecycle.pdf"), False, "")
        'sends pdf to buffer (Flattens = Tru)
        'Response.BinaryWrite(cFDFDoc.PDFMergeFDF2Buf(Server.MapPath("test_livecycle.pdf"), True, ""))
        'sends xdp to buffer
        'Response.BinaryWrite(cFDFDoc.FDFSavetoBuf(FDFDoc_Class.FDFType.XDP, True))
        Response.End()
Categories: PDF Programming Posted by NicK on 3/27/2009 4:43 PM | Comments (0)

LiveCycle Setup Part I

Here are the setting in order to parse LiveCycle Form data (XDP) with FDF Toolkit .net.

  1. Select "Button"
  2. Select "Submit"
  3. Click "Button" Tab
  4. Provide URL to script
  5. Select XDP Data Package
  6. Uncheck Annotations
  7. Uncheck PDF
  8. Select UTF-8
LiveCycle Setup

LiveCycle Setup Part II

Here are the setting to use when saving LiveCycle Forms to in order to merge XDP data with LiveCycle forms using FDF Toolkit .net.

  1. Select Acrobat 6,7,8 "Static"
LiveCycle Setup: SaveAs - Static Only
 
Categories: PDF Programming Posted by NicK on 7/27/2008 12:40 PM | Comments (0)

Principles to Loading an Adobe Acrobat PDF Form with XML Data with FDF Toolkit .net with ASP.net

Rules: Make sure when posting FDF Data to a buffer, write "Response.Clear()" before you post any FDF Data to remove any HTML in your ASPX pages, and then write your "Response.ContentType=" line.

Imports FDFApp
Imports FDFApp.FDFApp_Class
Imports FDFApp.FDFDoc_Class

Public Class loadform
        Inherits System.Web.UI.Page
Private URLPath as String = ""
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        URLPath = Request.Url.AbsoluteUri.ToString & ""
URLPath = URLPath.SubString( 0, URLPath.LastIndexOf("/")+1 ) & ""
    Try
        Import_XML()
    Catch Ex as Exception
        Response.Write("Error: " & Ex.Message)
        Response.End
    End Try
End Sub

Public Sub Import_XML()        
     ' INITIALIZE THE COMPONENTS
     Dim FDFApp As New FDFApp.FDFApp_Class
     Dim FDFDoc As New FDFApp.FDFDoc_Class        
     ' IMPORT XML DATA
     FDFDoc = FDFApp.FDFOpenFromURL(URLPath & "report.xml", True, True)        
     ' SET THE MIME TYPE TO FDF
Response.Clear()
     Response.ContentType = FDFApp.MimeFDF        
     ' SET THE URL TO THE PDF FILE         
     FDFDoc.FDFSetFile(URLPath & "PDFs/sample_report.pdf")        
     ' WRITE CONTENTS TO BUFFER
     Response.BinaryWrite(FDFDoc.FDFSavetoBuf(FDFDoc.FDFType.FDF, False))
End Sub 
End Class 
Tags: | Categories: PDF Programming Posted by NicK on 7/27/2008 12:39 PM | Comments (0)

Basic Principles of programming. How to send an email from a PDF form submission. Send either Flattened PDF, Editable PDF, or FDF Data to any recipient using ASP.net and the FDF Toolkit .net component.

Rules: Make sure when posting PDF Data to a buffer, do not post any HTML along with PDF Data. Remove any header information by Declaring Response.Clear() before posting any PDF or PDF Data MIME type.

Notes: Flattening the pdf form can be set with the true or false switch in the FDFDoc.PDFMergeFDF2Buf function FDF Toolkit .net component.

Imports FDFApp
Imports FDFApp.FDFApp_Class
Imports FDFApp.FDFDoc_Class
Imports FDFApp.Mail
Imports System.Web.Mail
Imports System.Web.Mail.MailFormat
Imports System.Web.Mail.SmtpMail

Private URLPath As String = Request.Url.ToString
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Put user code to initialize the page here
        Dim action As String = Request("act") & ""
        Select Case action.ToLower
            Case "fdf"
                Send_Email(1)
            Case "pdflat"
                Send_Email(2)
            Case "pdfedit"
                Send_Email(3)
            Case else
                Send_Email(1)
        End Select
End Sub
Private Function Send_Email(Optional ByVal AttachmentType As Integer = 1, Optional ByVal Use_Remote_SMTP As Boolean = False) As Boolean
        Try
            Dim FDFApp As New FDFApp.FDFApp_Class
            Dim FDFDoc As New FDFApp.FDFDoc_Class
            Dim FDFMail As New FDFApp.Mail.MailMessage
            Dim FDFSMTP As New FDFApp.Mail.SMTPServer
            Dim FDFEmail As New FDFApp.Mail
            FDFMail.Add_Recipient("user@domain.com", "A. Recipient")
            Dim strSubj As String = "", strBody As String = "", strFrom As String = "", strTo As String = ""
            strSubj = "FDF Attachment"
            strBody = "Dear User," & Chr(10) & Chr(10) & _
                       "See attachment for details." & Chr(10) & Chr(10) & _
                       "You may need Adobe Reader to view this file." & Chr(10) & _
                       "http://www.adobe.com/reader/" & Chr(10) & Chr(10) & _
                       "Regards," & Chr(10) & Chr(10) & "Webmaster@domain.com"
            FDFMail.mBody = strBody
            FDFMail.mSubject = strSubj
            FDFMail.mBodyFormat = Mail.MailFormat.Text
            FDFMail.mFrom = "Webmaster (webmaster@domain.com)"
            FDFSMTP.SMTPConnectionTimeOut = 100
            Dim dr As DataRow
            If Use_Remote_SMTP Then
                FDFSMTP.SMTPPassword = "password"
                FDFSMTP.SMTPUserName = "webmaster@domain.com"
                FDFSMTP.SMTPServerName = "smtp.domain.com"
                FDFSMTP.SMTPUseAuthentication = FDFSMTP.SMTPAuthenticate.cdoBasic
                FDFSMTP.SMTPServerPort = 25
            Else
                FDFSMTP.SMTPServerName = "localhost"
                FDFSMTP.SMTPServerPort = 25
                FDFSMTP.SMTPUseAuthentication = FDFSMTP.SMTPAuthenticate.cdoNone
            End If
            FDFDoc = FDFApp.FDFCreate
            'FDFDoc.FDFSetValuesFromDataRow(CType(Session("drData"), DataRow))            FDFDoc = FDFApp.FDFOpenFromStream(Request.InputStream)            'FDFDoc.FDFSetFile(URLPath & "PDFs/filename.pdf")
            Select Case AttachmentType
                Case 1 ' FDF
                    FDFDoc.FDFSetTargetFrame = "_self" 'Request("target") & ""
                    If FDFSMTP.FDFSendEmail(FDFMail, FDFDoc, Server.MapPath("Data/"), True, FDFSMTP.FDFType.FDF) = True Then
                        FDFDoc.FDFSetStatus("Thank you, your email was sent.") 
                    Else
                        FDFDoc.FDFSetStatus("Sorry, your email not was sent.") 
                    End If
                Case 2 ' PDF Flattened
                    FDFDoc.PDFData = FDFDoc.PDFMergeFDF2Buf(URLPath & "PDFs/filename.pdf", True)
                    If FDFSMTP.PDFSendEmail(FDFMail, FDFDoc.PDFData, Server.MapPath("Data/"), True, FDFSMTP.FDFType.PDF) = True Then
                        FDFDoc.FDFSetStatus("Thank you, your email was sent.")
                     Else
                        FDFDoc.FDFSetStatus("Sorry, your email not was sent.") 
                    End If
                Case 3 ' PDF Editable
                    FDFDoc.PDFData = FDFDoc.PDFMergeFDF2Buf(URLPath & "PDFs/filename.pdf", False)
                    If FDFSMTP.PDFSendEmail(FDFMail, FDFDoc.PDFData, Server.MapPath("Data/"), True, FDFSMTP.FDFType.PDF) = True Then
                        FDFDoc.FDFSetStatus("Thank you, your email was sent.")
                     Else
                        FDFDoc.FDFSetStatus("Sorry, your email not was sent.") 
                    End If
                Case Else
                        FDFDoc.FDFSetStatus("Sorry, your email not was sent.")
             End Select
            Exit Function
        Catch ex As Exception
                        FDFDoc.FDFSetStatus("Sorry, your email not was sent.") 
        End Try
    Response.Clear()
        Response.ContentType = FDFApp.MIMEFDF
        Response.BinaryWrite(FDFDoc.FDFSavetoBuf)

End Function 

 

Tags: | Categories: PDF Programming Posted by NicK on 7/27/2008 12:39 PM | Comments (0)
ASP.net 2.0

Principles of Sending Email with a Editable or Flattened PDF or FDF Attachment with ASP.net and the FDF Toolkit .net component.

Rules: Make sure when posting PDF Data to a buffer, do not post any HTML along with PDF Data. Remove any header information by declaring "Response.Clear()" before posting any PDF or PDF data MIME content.

Notes: Flattening the pdf form can be set with the true or false switch in the FDFDoc.PDFMergeFDF2Buf function in the FDF Toolkit .net component.

Imports FDFApp
Imports FDFApp.FDFApp_Class
Imports FDFApp.FDFDoc_Class
Imports FDFApp.Mail
Imports System.Net.Mail
Imports System.Net.Mail.SmtpClient

Partial Public Class sendmail_01

    Inherits System.Web.UI.Page
    Private URLPath As String = Request.Url.ToString
    Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
        'Put user code to initialize the page here
        Dim action As String = Request("act") & ""
        Select Case action.ToLower
	  Case "fdf"
	      Send_Email(1)
	  Case "pdflat"
	      Send_Email(2)
	  Case "pdfedit"
	      Send_Email(3)
	  Case Else
	      Send_Email(1)
        End Select
    End Sub
    Private Function Send_Email(Optional ByVal AttachmentType As Integer = 1, Optional ByVal Use_Remote_SMTP As Boolean = False) As Boolean
        Try
	  Dim FDFApp As New FDFApp.FDFApp_Class
	  Dim FDFDoc As New FDFApp.FDFDoc_Class
	  Dim FDFMail As New FDFApp.Mail.MailMessage
	  Dim FDFSMTP As New FDFApp.Mail.SMTPServer
	  Dim FDFEmail As New FDFApp.Mail
	  FDFMail.Add_Recipient("user@domain.com", "A. Recipient")
	  Dim strSubj As String = "", strBody As String = "", strFrom As String = "", strTo As String = ""
	  strSubj = "FDF Attachment"
	  strBody = "Dear User," & Chr(10) & Chr(10) & _
	    "See attachment for details." & Chr(10) & Chr(10) & _
	    "You may need Adobe Reader to view this file." & Chr(10) & _
	    "http://www.adobe.com/reader/" & Chr(10) & Chr(10) & _
	    "Regards," & Chr(10) & Chr(10) & "Webmaster@domain.com"
	  FDFMail.msgBody = strBody
	  FDFMail.msgSubject = strSubj
	  'FDFMail.mCc = "User2 (user2@domain.com), User3 (user3@domain.com)"
	  'FDFMail.mCc = "User4 (user4@domain.com),User5 (user5@domain.com)"
	  FDFMail.msgBodyFormatIsHTML = False
	  FDFMail.msgFromAddress = New Net.Mail.MailAddress("webmaster@domain.com", "Webmaster")
	  FDFSMTP.SMTPConnectionTimeOut = 100
	  Dim dr As DataRow
	  If Use_Remote_SMTP Then
	      FDFSMTP.SMTPPassword = "password"
	      FDFSMTP.SMTPUserName = "webmaster@domain.com"
	      FDFSMTP.SMTPServerName = "smtp.domain.com"
	      FDFSMTP.SMTPServerPort = 25
	  Else
	      FDFSMTP.SMTPServerName = "localhost"
	      FDFSMTP.SMTPServerPort = 25
	  End If
	  FDFDoc = FDFApp.FDFCreate
	  'FDFDoc.FDFSetValuesFromDataRow(CType(Session("drData"), DataRow))
	  FDFDoc.FDFSetValue("Field_01", "Field_Value_A")
	  FDFDoc.FDFSetValue("Field_02", "Field_Value_B")
	  FDFDoc.FDFSetFile(URLPath & "PDFs/filename.pdf")
	  Select Case AttachmentType
	      Case 1 ' FDF
		FDFDoc.FDFSetTargetFrame = "_self" 'Request("target") & ""
		If FDFSMTP.PDFSendEmail(FDFMail.msgMailMessage, FDFDoc.PDFData, "PDFAttachment.fdf", SMTPServer.FDFType.FDF, False) = True Then
		    Return True
		Else
		    Return False
		    Exit Function
		End If
	      Case 2 ' PDF Flattened
		FDFDoc.PDFData = FDFDoc.PDFMergeFDF2Buf(URLPath & "PDFs/filename.pdf", True)
		If FDFSMTP.PDFSendEmail(FDFMail.msgMailMessage, FDFDoc.PDFData, "PDFAttachment.pdf", SMTPServer.FDFType.PDF, True) = True Then
		    Return True
		Else
		    Return False
		    Exit Function
		End If
	      Case 3 ' PDF Editable
		FDFDoc.PDFData = FDFDoc.PDFMergeFDF2Buf(URLPath & "PDFs/filename.pdf", False)
		If FDFSMTP.PDFSendEmail(FDFMail.msgMailMessage, FDFDoc.PDFData, "PDFAttachment.[df", SMTPServer.FDFType.PDF, False) = True Then
		    Return True
		Else
		    Return False
		    Exit Function
		End If
	      Case Else
		Return False
	  End Select
	  Exit Function
        Catch ex As Exception
	  Return False
        End Try
    End Function

End Class