Das Snippet liest Felder aus PDF Formularen aus und schreibt die Feldnamen und Werte in eine Textdatei.
Das Snippet ist in .NET 6.0 geschrieben
Achtung: Es ist ein sehr einfaches Beispiel. Es wird weder geprüft, ob die übergebene Datei tatsächlich eine PDF-Datei ist, noch werden Exceptions abgefangen usw. Außerdem gilt zu beachten, dass die gewählte Ausgabe als Text/CSV Datei ohne weitere Behandlung Probleme mit Zeilenumbrüchen in den Feldern bekommt. Hier geht es rein um das Auslesen der Formularfelder.
Lizenz von iText: iText kann als AGPLv3 oder kommerzielle Lizenz erworben werden, um die Limitierungen der AGPLv3 aufzuheben.
using iText;
using iText.Kernel.Pdf;
using iText.Forms;
using iText.Forms.Fields;
WriteFieldValuesFromPdfToCSV(args[0]);
static void WriteFieldValuesFromPdfToCSV(string file)
{
var reader = new PdfReader(file);
var pdfDoc = new PdfDocument(reader);
var aform = PdfAcroForm.GetAcroForm(pdfDoc, true);
var afields = aform.GetFormFields();
Console.WriteLine($"\r\n------------------\r\n{file}\r\n-----------------");
using (var sr = new StreamWriter($"{file.Replace(".pdf", "_parameter.csv")}", false, System.Text.Encoding.UTF8))
{
sr.WriteLine("Feld/Checkbox;Wert");
foreach (var field in afields)
{
Console.WriteLine($"{field.Key,-30}:{field.Value.GetValue()}");
sr.WriteLine($"{field.Key};{field.Value.GetValue()?.ToString()}");
}
sr.Close();
}
pdfDoc.Close();
}
Kommentare zum Snippet