Sto cercando di scoprire se è possibile leggere i dati del modulo PDF (moduli compilati e salvati con il modulo) utilizzando iTextSharp. Come posso fare questo?Come leggere i dati del modulo PDF usando iTextSharp?
risposta
Dovresti trovare i nomi dei campi nel modulo PDF. Prendi i campi e poi leggi il loro valore.
string pdfTemplate = "my.pdf";
PdfReader pdfReader = new PdfReader(pdfTemplate);
AcroFields fields = pdfReader.AcroFields.Fields;
string val = fields.GetField("fieldname");
Ovviamente nel codice precedente, nome di campo è il nome del campo modulo PDF e il metodo GetField restituisce una rappresentazione di stringa di tale valore. Here è un articolo con codice di esempio che probabilmente potresti usare. Mostra come puoi leggere e scrivere i campi dei moduli usando iTextSharp.
Se si utilizza PowerShell, il codice di scoperta per i campi è:
Add-Type -Path C:\Users\Micah\Desktop\PDF_Test\itextsharp.dll
$MyPDF = "C:\Users\Micah\Desktop\PDF_Test\something_important.pdf"
$PDFDoc = New-Object iTextSharp.text.pdf.pdfreader -ArgumentList $MyPDF
$PDFDoc.AcroFields.Fields
Quel codice vi darà i nomi di tutti i campi del documento PDF, "something_important.pdf".
Questo è il modo per accedere ogni campo una volta che si conosce il nome del campo:
$PDFDoc.AcroFields.GetField("Name of the field here")
Questo ha funzionato per me! Annota i parametri quando definisci il timbro! '\ 0', vero
string TempFilename = Path.GetTempFileName();
PdfReader pdfReader = new PdfReader(FileName);
//PdfStamper stamper = new PdfStamper(pdfReader, new FileStream(TempFilename, FileMode.Create));
PdfStamper stamper = new PdfStamper(pdfReader, new FileStream(TempFilename, FileMode.Create), '\0', true);
AcroFields fields = stamper.AcroFields;
AcroFields pdfFormFields = pdfReader.AcroFields;
foreach (KeyValuePair<string, AcroFields.Item> kvp in fields.Fields)
{
string FieldValue = GetXMLNode(XMLFile, kvp.Key);
if (FieldValue != "")
{
fields.SetField(kvp.Key, FieldValue);
}
}
stamper.FormFlattening = false;
stamper.Close();
pdfReader.Close()
L'OP voleva solo * leggere i dati del modulo PDF * (e ottenere una buona risposta per questo). Il tuo codice mostra come * modificare i dati del modulo PDF. * – mkl
Spiacente, in realtà ho postato la risposta nel thread sbagliato ...Questo voleva essere una spiegazione su come spingere i valori nei campi e preservare la modifica del modulo quando il file viene riaperto ... – Serg
Forse la libreria iTextSharp è stata modificata di recente ma non sono riuscito a far funzionare la risposta accettata. Qui è la mia soluzione:
var pdf_filename = "pdf2read.pdf";
using (var reader = new PdfReader(pdf_filename))
{
var fields = reader.AcroFields.Fields;
foreach (var key in fields.Keys)
{
var value = reader.AcroFields.GetField(key);
Console.WriteLine(key + " : " + value);
}
}
Una differenza molto sottile, a causa di reader.AcroFields.Fields che restituiscono un'IDictionary invece di un oggetto AcroFields.
funziona, ma è molto lento, impiega più di un minuto a leggere ~ 3000 campi. Qualcuno sa un modo più veloce per enumerare questi? Ho provato a farlo in parallelo, ma questo non sembra essere d'aiuto. – DLeh
Il nome PDF è "report.pdf" ..
Il campo di dati da leggere in TextBox1 è "TextField25" nel PDF ..
Dim pdf As String = "report.pdf"
Dim reader As New PdfReader(pdf)
Dim fields As AcroFields = reader.AcroFields
TextBox1.Text = fields.GetField("TextField25")
Nota importante: Può essere utilizzato SOLO SE il PDF non è appiattito (significa che i campi devono essere modificabili) mentre è stato creato utilizzando iTextSharp ..
cioè
pdfStamper.FormFlattening = False
Questo è molto semplice .. E funziona come un fascino .. :)
- 1. Come leggere i file PDF usando Java?
- 2. Come posso esportare i dati del modulo HTML in PDF?
- 3. Rotazione PDF in C# usando iTextSharp
- 4. Come convertire pdf Byte [] Array in file scaricabili usando iTextSharp
- 5. Estrai immagini usando iTextSharp
- 6. Lettura/modifica dei metadati PDF utilizzando iTextSharp
- 7. iTextSharp eccezione: PDF firma intestazione non trovato
- 8. ITextSharp HTML in PDF?
- 9. È possibile convertire la pagina PDF in Immagine usando itextSharp?
- 10. iTextSharp per PDF - come aggiungere file allegati?
- 11. facendo due file PDF utilizzando identici iTextSharp
- 12. Estrazione del testo Itextsharp
- 13. Come leggere i dati da Firebase ONCE usando java/android?
- 14. Imposta i margini della pagina con iTextSharp
- 15. Usando itextsharp (o qualsiasi libreria pdf C#), come aprire un PDF, sostituire del testo e salvarlo di nuovo?
- 16. Converti pagine Pdf in immagini con itextsharp
- 17. Realizza PDF/A conforme a PDF con le sole immagini usando iTextSharp
- 18. Come leggere riga per riga nel file pdf usando PyPdf?
- 19. iTextSharp - Converti word doc/docx in pdf
- 20. Utilizzare iText (iTextSharp) per compilare i campi modulo XFA in PDF?
- 21. iTextSharp HTML a PDF immagine src
- 22. CGPDFDocument impossibile leggere pdf
- 23. come accedere ai dati del modulo usando il pallone?
- 24. Come convertire PDF in file di testo in iTextSharp
- 25. come determinare il tipo di file PDF utilizzando iTextSharp
- 26. Leggere il contenuto PDF con itextsharp dll in VB.NET o C#
- 27. Come leggere i dati da NSDocumentDirectory
- 28. Come leggere i dati formattati in C++?
- 29. Come calcolare la dimensione dell'immagine corretta in out pdf usando itextsharp?
- 30. Leggere il testo da PDF in .NET
questo funziona come un fascino ... Mi chiedo perché non ho guardato in questa funzione .. quando Ho provato ogni altra funzione :). Grazie mille ... hai salvato il mio weekend. – Bhuvan
Annuncio di servizio pubblico: il seguente codice non ti darà quello che vuoi: 'pdfReader.AcroFields.Fields [" fieldName "]. Value'. Ho perso un paio d'ore prima di trovare questo post. –
Ciao. Penso che ci sia un errore nella terza riga del tuo esempio. Il modulo corretto sarebbe: 'Campi AcroField = pdfReader.AcroFields;' – cesAR