[RISOLTO]ITextsharp Compilare FORM

di il
6 risposte

[RISOLTO]ITextsharp Compilare FORM

Ciao Ragazzi,
ho scritto questo programma per compilare un modulo form in pdf e salvare i file prendendo i dati da un file Excel.
Il programma funziona, ma volevo utilizzare l'opzione FormFlattening = True, ma ricevo un eccezione "Field flattening is not supported in append mode"

non riesco a capire dove sbaglio?
Grazie Stefano

Module mainModule

    Sub Main()
        Dim excel As New X.Application()

        Dim int_Lotto As Integer = 0
        Dim str_Titolo1 As String = ""
        Dim str_Titolo2 As String = ""
        Dim strNomeFile As String = ""
        Dim str_Titolo3 As String = ""


        Dim workbook As X.Workbook = excel.Workbooks.Open("C:\_Lavori\_Pini\14_Cartigli_Chiara\elenco_cartigli.xlsx")
        Dim worksheet As X.Worksheet = TryCast(workbook.ActiveSheet, X.Worksheet)
        Dim init_row As Excel.Range = DirectCast(worksheet.Cells(1, 1), Excel.Range)
        Dim fin_row As Excel.Range = DirectCast(worksheet.Cells(1, 2), Excel.Range)
        For r = init_row.Value To fin_row.Value
            Dim pdfTemp As String = ""
            Dim newFile As String = ""

            Dim lotto As Excel.Range = DirectCast(worksheet.Cells(r, 1), Excel.Range)
            int_Lotto = lotto.Value

            Dim titolo1 As Excel.Range = DirectCast(worksheet.Cells(r, 2), Excel.Range)
            str_Titolo1 = titolo1.Value

            Dim titolo2 As Excel.Range = DirectCast(worksheet.Cells(r, 3), Excel.Range)
            str_Titolo2 = titolo2.Value
            Dim titolo3 As Excel.Range = DirectCast(worksheet.Cells(r, 4), Excel.Range)
            str_Titolo3 = titolo3.Value
            Dim nomefile As Excel.Range = DirectCast(worksheet.Cells(r, 5), Excel.Range)
            strNomeFile = nomefile.Value
            Select Case int_Lotto
                Case 1

                    pdfTemp = "C:\_Lavori\_Pini\14_Cartigli_Chiara\PDF\1.pdf"
                    newFile = "C:\_Lavori\_Pini\14_Cartigli_Chiara\PDF\" & int_Lotto & "\" & strNomeFile & ".PDF"

                Case 2
                    pdfTemp = "C:\_Lavori\_Pini\14_Cartigli_Chiara\PDF\2.pdf"

                    newFile = "C:\_Lavori\_Pini\14_Cartigli_Chiara\PDF\" & int_Lotto & "\" & strNomeFile & ".PDF"
                Case 3
                    pdfTemp = "C:\_Lavori\_Pini\14_Cartigli_Chiara\PDF\3.pdf"
                    newFile = "C:\_Lavori\_Pini\14_Cartigli_Chiara\PDF\" & int_Lotto & "\" & strNomeFile & ".PDF"

                Case 4

                    pdfTemp = "C:\_Lavori\_Pini\14_Cartigli_Chiara\PDF\4.pdf"

                    newFile = "C:\_Lavori\_Pini\14_Cartigli_Chiara\PDF\" & int_Lotto & "\" & strNomeFile & ".PDF"

                Case 8

                    pdfTemp = "C:\_Lavori\_Pini\14_Cartigli_Chiara\PDF\8.pdf"

                    newFile = "C:\_Lavori\_Pini\14_Cartigli_Chiara\PDF\" & int_Lotto & "\" & strNomeFile & ".PDF"

            End Select

            Dim pdfReader As New PdfReader(pdfTemp)
            Dim pdfStamper As New PdfStamper(pdfReader, New FileStream(newFile, FileMode.Create), "\6c", True)
            Dim memStream = New MemoryStream()
            Dim pdfFormFields As AcroFields = pdfStamper.AcroFields

            pdfStamper.FormFlattening = True

            pdfFormFields.SetField("TITOLO1", str_Titolo1)
            pdfFormFields.SetField("TITOLO2", str_Titolo2)
            pdfFormFields.SetField("TITOLO3", str_Titolo3)
            pdfStamper.Close()

        Next
        workbook.Close()
        excel.Quit()
    End Sub

6 Risposte

  • Re: [RISOLTO]ITextsharp Compilare FORM

    hantrax ha scritto:


    Il programma funziona, ma volevo utilizzare l'opzione FormFlattening = True, ma ricevo un eccezione "Field flattening is not supported in append mode"
    Cercando in rete, qualcuno suggerisce di abilitare anche l'opzione GenerateAppearances:
    
    pdfStamper.FormFlattening = true;
    pdfStamper.AcroFields.GenerateAppearances = true;
    
    Prova a vedere se risolve il tuo problema.

    Ciao!
  • Re: [RISOLTO]ITextsharp Compilare FORM

    Grazie..purtroppo da lo stesso errore
  • Re: [RISOLTO]ITextsharp Compilare FORM

    Hai provato a passare false invece che true in questa chiamata:
    Dim pdfStamper As New PdfStamper(pdfReader, New FileStream(newFile, FileMode.Create), "\6c", True)  
    ?

    il messaggio di errore lo trovi alla riga 788 del file https://github.com/WolfeReiter/iTextSharp/blob/master/iTextSharp/text/pdf/PdfStamperImp.cs
  • Re: [RISOLTO]ITextsharp Compilare FORM

    Grazie..quando hai scritto "Hai provato a passare false invece che true in questa chiamata:" intendevi dire il contrario? perchè leggendo la tua risposta ho provato a cambiare da
    Dim pdfStamper As New PdfStamper(pdfReader, New FileStream(newFile, FileMode.Create), "\6c", True)
    a:
    Dim pdfStamper As New PdfStamper(pdfReader, New FileStream(newFile, FileMode.Create), "\6c", False)
    ed ha funzionato...
  • Re: [RISOLTO]ITextsharp Compilare FORM

    Intendevo di provare a mettere false perchè il sorgente alla riga 787 se trova true ti solleva un eccezione ,
  • Re: [RISOLTO]ITextsharp Compilare FORM

    Grazie mille ..
    non avevo visto il tuo punto interrogativo

    ha funzionato
Devi accedere o registrarti per scrivere nel forum
6 risposte