none
למלא pdf דינאמית,עם נתונים מSQLserver RRS feed

  • שאלה

  • יש לי דף aspx עם עשרות טפסי pdf שונים,

    אני צריכה למלא את הטופס שעליו לחץ המשתמש,

    מנתונים מה SQLserver.

    לצורך כך יש לי SQLQuery בן 500 שורות.

    ובאמצעותו יצרתי dataset עם כל הנתונים.

    אני רוצה למלאת את טופס הpdf באמצעות ה ItextSharp.

    הבעיה שלי שאני לא יודעת בידיוק את השדות,אך הם נמצאים ב SQLQuery .

    איך אני מקשרת את ה SQLQuery ל ItextSharp?

        Public Sub FillAcroFields(ByVal sourcePDFPath As String, ByVal outputPDFPath As String, ByVal values As DataSet)
            Dim pdfReader As New PdfReader(sourcePDFPath)
            Dim stamper As New PdfStamper(pdfReader, New FileStream(outputPDFPath, FileMode.Create))
            Dim fields As AcroFields = stamper.AcroFields
            Dim pdfFormFields As AcroFields = pdfReader.AcroFields
            Dim fdf As iTextSharp.text.pdf.FdfReader
            For Each key As String In dsPDFdoc.Tables(0).Rows
                fields.setfield (????????????????)
            Next
            stamper.FormFlattening = True
            stamper.Close()
        End Sub

    איך אני ממלאה את השורה הזו:

    fields.setfield (????????????????) עם dataset או עם SQLQuery ??

    מחכה בדחיפות לתשובה,

    תודה רבה מראש!


    miritmann

    יום שישי 08 מרץ 2013 07:45

תשובות

  • כפי שה ERROR כותב לך

    ב

     pdfReader.AcroFields.Fields

    יש אובייקטים מסוג 

    KeyValuePair

    ולא

    DictionaryEntry

    כך שהשורה צריכה להראות ככה:

    For Each de As KeyValuePair In pdfReader.AcroFields.Fields

    • סומן כתשובה על-ידי miritmann יום רביעי 13 מרץ 2013 09:51
    יום שני 11 מרץ 2013 12:16

כל התגובות

    • הוצע כתשובה על-ידי tetitu יום ראשון 10 מרץ 2013 08:07
    יום שישי 08 מרץ 2013 15:14
    מנחה דיון
  • הי,

    דבר ראשון תודה על התגובה,

    האמת היא שראיתי את הפוסט הזה קודם

    אבל אחרי שהפנית אותי שוב לשם,התעמקתי בו יותר ואני מנסה באמת עכשיו לעבוד לפיו.

    המרתי את הקוד מ c# ל vb.net:

    וקיבלתי את הפונקציה הבאה:

    Private Sub ListFieldNames()
     Dim pdfTemplate As String = "c:\Temp\PDF\fw4.pdf"
     ' title the form
     Me.Text += " - " & pdfTemplate
     ' create a new PDF reader based on the PDF template document
     Dim pdfReader As New PdfReader(pdfTemplate)
     ' create and populate a string builder with each of the 
     ' field names available in the subject PDF
     Dim sb As New StringBuilder()
     For Each de As DictionaryEntry In pdfReader.AcroFields.Fields
      sb.Append(de.Key.ToString() + Environment.NewLine)
     Next
     ' Write the string builder's content to the form's textbox
     textBox1.Text = sb.ToString()
     textBox1.SelectionStart = 0
    End Sub

    הבעיה היא שבשורה הבאה:

    For Each de As DictionaryEntry In pdfReader.AcroFields.Fields

    אני מקבלת את השגיאה:

    {"Specified cast is not valid."}

    או:

    Error 58 Value of type 'System.Collections.Generic.KeyValuePair(Of String, iTextSharp.text.pdf.AcroFields.Item)' cannot be converted to 'System.Collections.DictionaryEntry'.

    אתה יכול לעזור לי עם זה?

    תודה,

    (נ.ב. סליחה שלא הגבתי עד עכשיו,אני פשוט לא עובדת ביום ראשון.)


    miritmann


    • נערך על-ידי miritmann יום שני 11 מרץ 2013 07:48
    יום שני 11 מרץ 2013 07:29
  • כפי שה ERROR כותב לך

    ב

     pdfReader.AcroFields.Fields

    יש אובייקטים מסוג 

    KeyValuePair

    ולא

    DictionaryEntry

    כך שהשורה צריכה להראות ככה:

    For Each de As KeyValuePair In pdfReader.AcroFields.Fields

    • סומן כתשובה על-ידי miritmann יום רביעי 13 מרץ 2013 09:51
    יום שני 11 מרץ 2013 12:16
  • תודה רבה לך!

    פתרת לי את הבעיה!


    miritmann

    יום רביעי 13 מרץ 2013 09:50