PDF de remplissage de formulaire avec PDFBox ne fonctionne pas
J'ai un fichier PDF avec certains champs du formulaire que je dois remplir à partir du code Java. J'utilise PDFBox bibliothèque pour le présent, et le présent code:
PDDocument pdfDoc = PDDocument.load("C:\\Users\\igor\\Desktop\\test.pdf");
PDDocumentCatalog docCatalog = pdfDoc.getDocumentCatalog();
PDAcroForm acroForm = docCatalog.getAcroForm();
PDField field = acroForm.getField("applicationPrepaid[0].#pageSet[0].Pagina1[0].txtFirstName[0]");
if (field != null) {
field.setValue("Milan");
} else {
System.err.println("No field found with name:" + "applicationPrepaid[0].#pageSet[0].Pagina1[0].txtFirstName[0]");
}
pdfDoc.save("C:\\Users\\igor\\Desktop\\testout.pdf");
pdfDoc.close();
Le PDF n'est pas créé par moi, donc je ne sais pas quel type de formulaire dans le fichier (si je comprends bien, il y a DFF et formulaires XFA). Depuis le PDF n'est pas créé par moi, j'ai utilisé cet outil http://support.persits.com/pdf/demo_formfields.asp pour trouver les noms des champs du formulaire, et il m'a donné ceci:
applicationPrepaid[0].#pageSet[0].Pagina1[0].txtFirstName[0]
Lorsque j'utilise ce long champ nom, je n'ai aucune erreur, mais le fichier PDF résultant ne contient pas la valeur que j'ai mis dans le champ. J'ai pensé que peut-être il y avait quelque chose de mal avec le nom de champ, j'ai donc utilisé Pdftk outil qui m'a donné tout txtFirstName
pour le nom du champ. Mais quand j'utilise juste que, j'ai l' No field found with name: txtFirstName
erreur. De l'aide?
OriginalL'auteur stojke | 2012-11-19
Vous devez vous connecter pour publier un commentaire.
Bien je me rends compte que cette question est très vieux maintenant, mais je suis tombé sur ça et je pensais que je dois poster ma solution.
Vous pouvez trouver les id des champs dans le formulaire PDF à l'aide de PDFBox. Il a un très riche API, il suffit, malheureusement, nécessite beaucoup de lecture pour comprendre ce que vous avez à faire.
Pour obtenir le nom du champ du formulaire, vous souhaitez utiliser
getFullyQualifiedName
qui fait partie de laPDField
classe.Malheureusement, vous ne pouvez pas obtenir tous les noms de fichiers en une seule fois (que je peux dire) de la
PDAcroform
classe, de sorte que vous pouvez simplement créer un tableau de la forme des noms et ensuite une boucle sur chacun d'eux.par exemple
Espère que cela aide quelqu'un.
Acclamations
OriginalL'auteur sam9046