2017-05-26 3 views
3

En essayant d'écrire sur un fichier PDF existant en utilisant la matrice java pdf, il y a une certaine case à cocher dans le pdf que le texte semble dessiner sous .Java PDF Ecriture de texte en-dessous de la case à cocher

code

pour la lecture pdf:

PdfReader reader = new PdfReader(Testing.getImagePath() + "form.pdf"); 
File dir = new File(Testing.getResourcePath() + id + "/"); 
String destination = Testing.getResourcePath() + id + "form" + id + ".pdf"; 
File exist = new File(destination); 

dir.mkdirs(); 
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(destination)); 
stamper.setFormFlattening(true); 
PdfContentByte over; 
over = stamper.getOverContent(1); 

code pour le texte Dessin:

over.beginText(); 
over.setFontAndSize(bf, 11); 
over.setTextMatrix(169, 322); 
over.showText("X"); 
over.endText(); 
+0

D'où venez-vous? – Jan

+0

Code mis à jour. Faites-moi savoir si j'ai besoin d'ajouter un autre code. – King

+0

regardant bien jusqu'à présent. Placer un X à l'emplacement de la case à cocher (seulement il apparaît sous) ressemble beaucoup à ce que vous voulez sélectionner cette case à cocher? – Jan

Répondre

1

Tout d'abord:

itérer sur les FormFields dans votre PDF et découvrez les valeurs valides pour définir :

 AcroFields form = stamper.getAcroFields(); 
     for(Entry<String, Item> field : form.getFields().entrySet()) { 
      System.out.println(field.getKey() + ": " + field.getValue()); 
      String[] values = form.getAppearanceStates(field.getKey()); 
      StringJoiner sb = new StringJoiner(","); 
      for (String value : values) { 
       sb.add(value); 
      } 
      System.out.println("Possible Options: " + sb.toString()); 
     } 

Maintenant, vous devriez être en mesure de sélectionner la case à cocher en définissant sa valeur autorisée:

 form.setField("myCheckbox", "myYesValue"); 
+0

Obtenir l'erreur - "Cette instance AcroFields est en lecture seule." – King

+1

D'où avez-vous obtenu votre AcroFields? De la Stamper/l'écrivain ou du lecteur (auquel cas ils seraient en lecture seule). Partager le code dans une modification à votre question? – Jan

+0

ouais j'ai utilisé un code différent pour sortir les identifiants du pdf, et lisais du lecteur au lieu du stamper. Je l'ai au travail, merci! – King