itext
Vormen: iText 5 versus iText 7
Zoeken…
Opmerkingen
iText 5 is een bibliotheek die organisch is gegroeid. Veel ontwikkelaars hebben code bijgedragen. Bijvoorbeeld: een ontwikkelaar heeft code bijgedragen om formuliervelden helemaal opnieuw te maken, met behulp van klassen zoals TextField
en PdfFormField
; een andere ontwikkelaar heeft code bijgedragen om bestaande formuliervelden te wijzigen, met behulp van de klasse AcroField
en een reeks methoden setFieldProperty()
.
In iText 5 kunnen de klassen die worden gebruikt om formuliervelden te maken niet worden gebruikt om formuliervelden te wijzigen, en omgekeerd. Er is geen enkele relatie tussen de twee klassen. Dat is verwarrend voor veel gebruikers. Bijvoorbeeld: sommige gebruikers ontdekken de TextField
en nemen aan dat ze die klasse kunnen gebruiken om de eigenschappen van een bestaand tekstveld te wijzigen. Dit is niet het geval, ze moeten in plaats daarvan de klasse AcroFields
gebruiken.
Dit alles is opgelost in iText 7. We hebben een nieuwe set klassen gemaakt, zoals PdfFormField
en de subklasse PdfTextField
die kunnen worden gebruikt om een nieuw veld te maken en om een bestaand formulierveld bij te werken.
De iText 7-formulierveldmethoden kunnen worden gekoppeld om uw code compacter te maken en ze zijn veel intuïtiever dan de overeenkomstige methoden in iText 5. Het eleganter maken van de formulierfunctionaliteit was een van de belangrijkste redenen om iText helemaal opnieuw te schrijven.
FormCreation.java (iText 5)
In dit iText 5-voorbeeld maken we een tekstveld en voegen we het toe aan een PDF:
public void manipulatePdf(String src, String dest) throws DocumentException, IOException {
PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
TextField tf = new TextField(stamper.getWriter(),
new Rectangle(110, 780, 180, 806), "text");
tf.setBorderColor(BaseColor.BLUE);
tf.setBorderWidth(2);
tf.setTextColor(BaseColor.RED);
tf.setFontSize(12);
tf.setText("Text field");
PdfFormField field = tf.getTextField();
stamper.addAnnotation(field, 1);
stamper.close();
reader.close();
}
Bron: developers.itextpdf.com
FormCreation.java (iText 7)
In dit iText 7-voorbeeld maken we een tekstveld en voegen we het toe aan een PDF:
public void manipulatePdf(String src, String dest) throws IOException {
PdfReader reader = new PdfReader(src);
PdfDocument pdf = new PdfDocument(reader, new PdfWriter(dest));
PdfAcroForm form = PdfAcroForm.getAcroForm(pdf, true);
PdfFormField tf = PdfTextFormField.createText(
pdf, new Rectangle(110, 780, 70, 26), "text", "Text Field")
.setBorderColor(Color.BLUE)
.setBorderWidth(2)
.setColor(Color.RED)
.setFontSize(12);
form.addField(tf);
pdf.close();
}
Bron: developers.itextpdf.com
FormFilling.java (iText 5)
In dit iText 5-voorbeeld zullen we de eigenschappen en de waarde van een tekstveld wijzigen:
public void manipulatePdf(String src, String dest) throws DocumentException, IOException {
PdfReader reader = new PdfReader(src);
PdfStamper stamper = new PdfStamper(reader, new FileOutputStream(dest));
AcroFields fields = stamper.getAcroFields();
fields.setFieldProperty("text", "textcolor", BaseColor.BLUE, null);
fields.setFieldProperty("text", "bordercolor", BaseColor.RED, null);
fields.setFieldProperty("text", "fontsize", 14, null);
fields.setField("text", "Field Text");
stamper.close();
reader.close();
}
Bron: developers.itextpdf.com
FormFilling.java (iText 7)
In dit iText 7-voorbeeld zullen we de eigenschappen en de waarde van een tekstveld wijzigen:
public void manipulatePdf(String src, String dest) throws IOException {
PdfReader reader = new PdfReader(src);
PdfDocument pdf = new PdfDocument(reader, new PdfWriter(dest));
PdfAcroForm form = PdfAcroForm.getAcroForm(pdf, true);
PdfFormField tf = form.getFormFields().get("text");
tf.setBorderColor(Color.RED)
.setColor(Color.BLUE)
.setFontSize(14)
.setValue("Field Text");
pdf.close();
}
Bron: developers.itextpdf.com