Caselle di controllo in un PDF con iText7 in .NET

voti
0

Ho un pdf di esempio, che io sono la compilazione di codice in quanto tale (utilizzando iText7): -

string name = TextBox1.Text.ToString();
string pdfTemplate = @..\WebApplication1\Sample.pdf;
string newFile = @..\WebApplication1\completed_sample.pdf;

PdfDocument pdf = new PdfDocument(new PdfReader(pdfTemplate).SetUnethicalReading(true), new PdfWriter(newFile));
PdfAcroForm form = PdfAcroForm.GetAcroForm(pdf, true);
IDictionary<String, PdfFormField> fields = form.GetFormFields();
PdfFormField toSet;

// This doesn't work //
fields.TryGetValue(TypeofApplication.1, out toSet);
toSet.SetValue(/On);

// This works //
fields.TryGetValue(FullName, out toSet);
toSet.SetValue(name);

form.FlattenFields();
pdf.Close(); 

Sono in grado di compilare le caselle di testo in pdf, ma non compilare la radio pulsanti / caselle di controllo.

Tipo di applicazione ha due opzioni a mia cshtmlpagina:

@Html.RadioButton(Application_Type, New) New 
@Html.RadioButton(Application_Type, Renew) Renewal 

e quando guardo attraverso dictionary i miei valori, vedo che ci sono 3 opzioni:

  1. Tipo di applicazione
  2. TypeofApplication.1
  3. TypeofApplication.2

Come faccio a impostare le caselle di controllo come checked = true.

La mia logica è la seguente:

if(dr.Application_Type == New){
    fields.TryGetValue(TypeofApplication.1, out toSet);
    toSet.SetValue(/On);}

Ma questo ovviamente non funziona.

È pubblicato 13/02/2020 alle 23:53
fonte dall'utente
In altre lingue...                            


1 risposte

voti
0

Quindi il modo ho capito questo: -

1) ho aperto il pdf, impostare la casella di controllo come controllato e salvato nella mia cartella di lavoro.
2) Poi, ho aperto il file di programmazione e ispezionato il valore di campo in quanto tale: -

            string pdfTemplate = @"..\WebApplication1\Sample.pdf";
            string newFile = @"..\WebApplication1\completed_sample.pdf";

            PdfDocument pdf = new PdfDocument(new PdfReader(pdfTemplate).SetUnethicalReading(true), new PdfWriter(newFile));
            PdfAcroForm form = PdfAcroForm.GetAcroForm(pdf, true);
            IDictionary<String, PdfFormField> fields = form.GetFormFields();
            PdfFormField toSet;
            fields.TryGetValue("TypeofApplication", out toSet);
            var x = toSet.GetValueAsString();

Ora, so che il valore di x, che è il campo controllato. (Nuovo o rinnovare). Ho usato questa tecnica per trovare tutti i possibili valori per qualsiasi casella di controllo, elenco radiobutton, eccetera.

Risposto il 14/02/2020 a 02:15
fonte dall'utente

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more