在Java中使用iText创建注释或文本字段存在一些问题。本质上我试图创建一个页面并在其底部放置一个文本字段,以允许用户添加注释。然后添加另一个页面,并将其再次添加到第二页。
我可以让它工作,以便第一页有文本字段,但我不能让它在第二页上工作。因此,第一页显示注释,我可以输入文本,但第二页从不显示注释
有什么想法吗?
继承我的代码:
import java.awt.BasicStroke;
import java.awt.Color;
import java.awt.GradientPaint;
import java.io.FileOutputStream;
import java.io.IOException;
import java.net.MalformedURLException;
import java.sql.SQLException;
import java.util.Random;
import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.axis.*;
import org.jfree.chart.labels.StandardCategoryToolTipGenerator;
import org.jfree.chart.plot.*;
import org.jfree.chart.renderer.category.BarRenderer;
import org.jfree.chart.renderer.category.LineAndShapeRenderer;
import org.jfree.data.category.DefaultCategoryDataset;
import org.jfree.data.xy.XYSeries;
import org.jfree.data.xy.XYSeriesCollection;
import org.jfree.ui.RectangleEdge;
import org.jfree.util.ShapeUtilities;
import com.itextpdf.text.*;
import com.itextpdf.text.pdf.*;
public static final String FILE = "Report.pdf";
public static void main(String[] args) throws DocumentException, IOException
{
System.out.println("Building Report");
new mainv2().createPdf(FILE);
System.out.println("Built");
}
public void createPdf(String filename)
throws DocumentException, IOException {
//Setup Document
Document document = new Document();
PdfWriter writer = PdfWriter.getInstance(document, new FileOutputStream(FILE));
//Begin creation
document.open();
writer.setPageEmpty(false);
//Get Main Layer to draw/write on
PdfContentByte canvas = writer.getDirectContent();
// //Sub heading
// createText(canvas, BaseColor.BLACK, 40, PageSize.A4.getHeight() - 100, "Test Report 1");
// drawLine(canvas, 40, PageSize.A4.getHeight() - 105, 555, PageSize.A4.getHeight() - 105);
//First Text field/annotation
TextField name = new TextField(writer, new Rectangle(45, 200, 550, 60), "Type notes here");
name.setOptions( TextField.MULTILINE );
name.setBorderColor(new GrayColor(0.2f));
name.setBackgroundColor(BaseColor.WHITE);
PdfFormField namefield = name.getTextField();
name.setFontSize(6);
namefield.setFlags(PdfFormField.FF_MULTILINE);
writer.addAnnotation(namefield);
//Make second page
document.newPage();
writer.setPageEmpty(false);
//Second Text Field/annotation
TextField name2 = new TextField(writer, new Rectangle(45, 200, 550, 60), "Type notes here");
name2.setOptions( TextField.MULTILINE );
name2.setBorderColor(new GrayColor(0.2f));
name2.setBackgroundColor(BaseColor.WHITE);
PdfFormField namefield2 = name2.getTextField();
name2.setFontSize(6);
namefield2.setFlags(PdfFormField.FF_MULTILINE);
writer.addAnnotation(namefield2);
document.close();
}