package tutorial;
import java.io.StringReader;
import java.io.File;
import org.apache.commons.csv.CSVFormat;
import org.apache.pdfbox.pdmodel.PDDocument;
import org.apache.pdfbox.pdmodel.PDPage;
import org.apache.pdfbox.pdmodel.PDResources;
import org.apache.pdfbox.pdmodel.common.PDRectangle;
import org.apache.pdfbox.pdmodel.font.PDType1Font;
import org.apache.pdfbox.pdmodel.font.Standard14Fonts;
import org.apache.pdfbox.pdmodel.interactive.form.PDAcroForm;
import org.apache.pdfbox.pdmodel.interactive.form.PDTextField;
import org.apache.pdfbox.cos.COSName;
public class Main {
  public static void main(String[] args) throws Exception {
    var format = CSVFormat.DEFAULT.builder().setHeader().setSkipHeaderRecord(true).get();
    try (var csv = format.parse(new StringReader("name\nAda\n"));
         var document = new PDDocument()) {
      var page = new PDPage(); document.addPage(page);
      var form = new PDAcroForm(document);
      document.getDocumentCatalog().setAcroForm(form);
      var resources = new PDResources();
      resources.put(COSName.getPDFName("Helv"), new PDType1Font(Standard14Fonts.FontName.HELVETICA));
      form.setDefaultResources(resources); form.setDefaultAppearance("/Helv 12 Tf 0 g");
      var field = new PDTextField(form); field.setPartialName("recipient");
      var widget = field.getWidgets().getFirst();
      widget.setRectangle(new PDRectangle(40, 700, 250, 30)); widget.setPage(page);
      page.getAnnotations().add(widget); form.getFields().add(field);
      field.setValue(csv.iterator().next().get("name"));
      document.save(new File("result.pdf"));
      System.out.println("result.pdf: recipient = Ada");
    }
  }
}
